From 75b9d13a88cb94142441adcc0889cf937edba57b Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Wed, 16 Aug 2006 16:50:52 +0000 Subject: [PATCH 001/234] Initial move from Spirit CVS [SVN r34896] --- .gitattributes | 96 ++++++ include/boost/fusion/algorithm.hpp | 15 + include/boost/fusion/algorithm/iteration.hpp | 15 + .../fusion/algorithm/iteration/accumulate.hpp | 66 ++++ .../algorithm/iteration/detail/fold.hpp | 99 ++++++ .../algorithm/iteration/detail/for_each.hpp | 35 ++ .../boost/fusion/algorithm/iteration/fold.hpp | 67 ++++ .../fusion/algorithm/iteration/for_each.hpp | 55 +++ include/boost/fusion/algorithm/query.hpp | 19 ++ include/boost/fusion/algorithm/query/all.hpp | 42 +++ include/boost/fusion/algorithm/query/any.hpp | 43 +++ .../boost/fusion/algorithm/query/count.hpp | 46 +++ .../boost/fusion/algorithm/query/count_if.hpp | 42 +++ .../algorithm/query/detail/Attic/none.hpp | 40 +++ .../fusion/algorithm/query/detail/all.hpp | 40 +++ .../fusion/algorithm/query/detail/any.hpp | 41 +++ .../algorithm/query/detail/assoc_find.hpp | 36 ++ .../fusion/algorithm/query/detail/count.hpp | 69 ++++ .../algorithm/query/detail/count_if.hpp | 43 +++ .../fusion/algorithm/query/detail/find_if.hpp | 119 +++++++ .../fusion/algorithm/query/detail/none.hpp | 40 +++ include/boost/fusion/algorithm/query/find.hpp | 76 +++++ .../boost/fusion/algorithm/query/find_if.hpp | 70 ++++ include/boost/fusion/algorithm/query/none.hpp | 42 +++ .../boost/fusion/algorithm/transformation.hpp | 29 ++ .../fusion/algorithm/transformation/clear.hpp | 33 ++ .../transformation/detail/replace.hpp | 69 ++++ .../transformation/detail/replace_if.hpp | 69 ++++ .../fusion/algorithm/transformation/erase.hpp | 108 ++++++ .../algorithm/transformation/erase_key.hpp | 38 +++ .../algorithm/transformation/filter.hpp | 35 ++ .../algorithm/transformation/filter_if.hpp | 33 ++ .../algorithm/transformation/insert.hpp | 63 ++++ .../algorithm/transformation/insert_range.hpp | 55 +++ .../fusion/algorithm/transformation/join.hpp | 34 ++ .../algorithm/transformation/pop_back.hpp | 44 +++ .../algorithm/transformation/pop_front.hpp | 44 +++ .../algorithm/transformation/push_back.hpp | 40 +++ .../algorithm/transformation/push_front.hpp | 40 +++ .../algorithm/transformation/remove.hpp | 36 ++ .../algorithm/transformation/remove_if.hpp | 36 ++ .../algorithm/transformation/replace.hpp | 36 ++ .../algorithm/transformation/replace_if.hpp | 38 +++ .../algorithm/transformation/reverse.hpp | 33 ++ .../algorithm/transformation/transform.hpp | 48 +++ .../fusion/algorithm/transformation/zip.hpp | 80 +++++ include/boost/fusion/iterator.hpp | 20 ++ include/boost/fusion/iterator/advance.hpp | 72 ++++ include/boost/fusion/iterator/deref.hpp | 52 +++ .../iterator/detail/adapt_deref_traits.hpp | 35 ++ .../iterator/detail/adapt_value_traits.hpp | 29 ++ .../boost/fusion/iterator/detail/advance.hpp | 103 ++++++ .../boost/fusion/iterator/detail/distance.hpp | 66 ++++ include/boost/fusion/iterator/distance.hpp | 58 ++++ include/boost/fusion/iterator/equal_to.hpp | 72 ++++ include/boost/fusion/iterator/mpl.hpp | 14 + .../fusion/iterator/mpl/convert_iterator.hpp | 57 ++++ .../fusion/iterator/mpl/fusion_iterator.hpp | 56 +++ include/boost/fusion/iterator/next.hpp | 42 +++ include/boost/fusion/iterator/prior.hpp | 42 +++ include/boost/fusion/iterator/value_of.hpp | 36 ++ include/boost/fusion/sequence.hpp | 21 ++ include/boost/fusion/sequence/adapted.hpp | 16 + .../boost/fusion/sequence/adapted/array.hpp | 23 ++ .../sequence/adapted/array/array_iterator.hpp | 56 +++ .../adapted/array/detail/advance_impl.hpp | 44 +++ .../sequence/adapted/array/detail/at_impl.hpp | 46 +++ .../adapted/array/detail/begin_impl.hpp | 41 +++ .../adapted/array/detail/category_of_impl.hpp | 36 ++ .../adapted/array/detail/deref_impl.hpp | 49 +++ .../adapted/array/detail/distance_impl.hpp | 44 +++ .../adapted/array/detail/end_impl.hpp | 41 +++ .../adapted/array/detail/equal_to_impl.hpp | 40 +++ .../adapted/array/detail/is_sequence_impl.hpp | 32 ++ .../adapted/array/detail/is_view_impl.hpp | 33 ++ .../adapted/array/detail/next_impl.hpp | 47 +++ .../adapted/array/detail/prior_impl.hpp | 45 +++ .../adapted/array/detail/size_impl.hpp | 30 ++ .../adapted/array/detail/value_at_impl.hpp | 33 ++ .../adapted/array/detail/value_of_impl.hpp | 34 ++ .../fusion/sequence/adapted/array/tag_of.hpp | 36 ++ include/boost/fusion/sequence/adapted/mpl.hpp | 23 ++ .../adapted/mpl/detail/advance_impl.hpp | 46 +++ .../sequence/adapted/mpl/detail/at_impl.hpp | 41 +++ .../adapted/mpl/detail/begin_impl.hpp | 46 +++ .../adapted/mpl/detail/category_of_impl.hpp | 58 ++++ .../adapted/mpl/detail/deref_impl.hpp | 44 +++ .../adapted/mpl/detail/distance_impl.hpp | 48 +++ .../adapted/mpl/detail/empty_impl.hpp | 29 ++ .../sequence/adapted/mpl/detail/end_impl.hpp | 46 +++ .../adapted/mpl/detail/equal_to_impl.hpp | 41 +++ .../adapted/mpl/detail/has_key_impl.hpp | 32 ++ .../adapted/mpl/detail/is_sequence_impl.hpp | 32 ++ .../adapted/mpl/detail/is_view_impl.hpp | 33 ++ .../sequence/adapted/mpl/detail/next_impl.hpp | 47 +++ .../adapted/mpl/detail/prior_impl.hpp | 48 +++ .../sequence/adapted/mpl/detail/size_impl.hpp | 32 ++ .../adapted/mpl/detail/value_at_impl.hpp | 32 ++ .../adapted/mpl/detail/value_of_impl.hpp | 38 +++ .../sequence/adapted/mpl/mpl_iterator.hpp | 40 +++ .../fusion/sequence/adapted/mpl/tag_of.hpp | 30 ++ .../fusion/sequence/adapted/std_pair.hpp | 22 ++ .../std_pair/Attic/std_pair_iterator.hpp | 49 +++ .../adapted/std_pair/Attic/tag_of.hpp | 30 ++ .../adapted/std_pair/detail/Attic/at_impl.hpp | 71 ++++ .../std_pair/detail/Attic/begin_impl.hpp | 41 +++ .../detail/Attic/category_of_impl.hpp | 36 ++ .../std_pair/detail/Attic/end_impl.hpp | 41 +++ .../detail/Attic/is_sequence_impl.hpp | 32 ++ .../std_pair/detail/Attic/is_view_impl.hpp | 33 ++ .../std_pair/detail/Attic/size_impl.hpp | 32 ++ .../std_pair/detail/Attic/value_at_impl.hpp | 44 +++ .../adapted/std_pair/detail/advance_impl.hpp | 47 +++ .../adapted/std_pair/detail/at_impl.hpp | 71 ++++ .../adapted/std_pair/detail/begin_impl.hpp | 41 +++ .../std_pair/detail/category_of_impl.hpp | 36 ++ .../adapted/std_pair/detail/deref_impl.hpp | 74 ++++ .../adapted/std_pair/detail/distance_impl.hpp | 42 +++ .../adapted/std_pair/detail/end_impl.hpp | 41 +++ .../adapted/std_pair/detail/equal_to_impl.hpp | 40 +++ .../std_pair/detail/is_sequence_impl.hpp | 32 ++ .../adapted/std_pair/detail/is_view_impl.hpp | 33 ++ .../adapted/std_pair/detail/next_impl.hpp | 46 +++ .../adapted/std_pair/detail/prior_impl.hpp | 46 +++ .../adapted/std_pair/detail/size_impl.hpp | 32 ++ .../adapted/std_pair/detail/value_at_impl.hpp | 44 +++ .../adapted/std_pair/detail/value_of_impl.hpp | 46 +++ .../adapted/std_pair/std_pair_iterator.hpp | 49 +++ .../sequence/adapted/std_pair/tag_of.hpp | 30 ++ include/boost/fusion/sequence/comparison.hpp | 18 + .../comparison/detail/enable_comparison.hpp | 35 ++ .../sequence/comparison/detail/equal_to.hpp | 61 ++++ .../sequence/comparison/detail/greater.hpp | 51 +++ .../comparison/detail/greater_equal.hpp | 50 +++ .../sequence/comparison/detail/less.hpp | 51 +++ .../sequence/comparison/detail/less_equal.hpp | 50 +++ .../comparison/detail/not_equal_to.hpp | 61 ++++ .../fusion/sequence/comparison/equal_to.hpp | 41 +++ .../fusion/sequence/comparison/greater.hpp | 44 +++ .../sequence/comparison/greater_equal.hpp | 44 +++ .../boost/fusion/sequence/comparison/less.hpp | 34 ++ .../fusion/sequence/comparison/less_equal.hpp | 44 +++ .../sequence/comparison/not_equal_to.hpp | 52 +++ include/boost/fusion/sequence/container.hpp | 16 + .../boost/fusion/sequence/container/list.hpp | 17 + .../fusion/sequence/container/list/cons.hpp | 136 ++++++++ .../sequence/container/list/cons_iterator.hpp | 86 +++++ .../container/list/detail/at_impl.hpp | 80 +++++ .../container/list/detail/begin_impl.hpp | 50 +++ .../container/list/detail/deref_impl.hpp | 53 +++ .../container/list/detail/end_impl.hpp | 52 +++ .../container/list/detail/equal_to_impl.hpp | 40 +++ .../list/detail/list_forward_ctor.hpp | 48 +++ .../container/list/detail/list_to_cons.hpp | 50 +++ .../list/detail/list_to_cons_call.hpp | 44 +++ .../container/list/detail/next_impl.hpp | 60 ++++ .../container/list/detail/value_at_impl.hpp | 43 +++ .../container/list/detail/value_of_impl.hpp | 37 ++ .../fusion/sequence/container/list/limits.hpp | 20 ++ .../fusion/sequence/container/list/list.hpp | 69 ++++ .../sequence/container/list/list_fwd.hpp | 25 ++ .../boost/fusion/sequence/container/map.hpp | 15 + .../container/map/detail/at_key_impl.hpp | 50 +++ .../container/map/detail/begin_impl.hpp | 57 ++++ .../container/map/detail/end_impl.hpp | 54 +++ .../map/detail/is_associative_impl.hpp | 33 ++ .../container/map/detail/lookup_key.hpp | 100 ++++++ .../container/map/detail/map_forward_ctor.hpp | 39 +++ .../container/map/detail/map_lookup.hpp | 124 +++++++ .../map/detail/value_at_key_impl.hpp | 34 ++ .../fusion/sequence/container/map/limits.hpp | 26 ++ .../fusion/sequence/container/map/map.hpp | 73 ++++ .../fusion/sequence/container/map/map_fwd.hpp | 25 ++ .../boost/fusion/sequence/container/set.hpp | 15 + .../container/set/detail/at_key_impl.hpp | 50 +++ .../container/set/detail/begin_impl.hpp | 57 ++++ .../container/set/detail/end_impl.hpp | 54 +++ .../set/detail/is_associative_impl.hpp | 33 ++ .../container/set/detail/lookup_key.hpp | 94 ++++++ .../container/set/detail/set_forward_ctor.hpp | 40 +++ .../container/set/detail/set_lookup.hpp | 124 +++++++ .../set/detail/value_at_key_impl.hpp | 36 ++ .../fusion/sequence/container/set/limits.hpp | 26 ++ .../fusion/sequence/container/set/set.hpp | 72 ++++ .../fusion/sequence/container/set/set_fwd.hpp | 25 ++ .../fusion/sequence/container/vector.hpp | 21 ++ .../container/vector/detail/advance_impl.hpp | 43 +++ .../container/vector/detail/at_impl.hpp | 50 +++ .../container/vector/detail/begin_impl.hpp | 40 +++ .../container/vector/detail/deref_impl.hpp | 54 +++ .../container/vector/detail/distance_impl.hpp | 42 +++ .../container/vector/detail/end_impl.hpp | 41 +++ .../container/vector/detail/equal_to_impl.hpp | 40 +++ .../container/vector/detail/next_impl.hpp | 44 +++ .../container/vector/detail/prior_impl.hpp | 44 +++ .../container/vector/detail/value_at_impl.hpp | 34 ++ .../container/vector/detail/value_of_impl.hpp | 38 +++ .../vector/detail/vector_forward_ctor.hpp | 40 +++ .../container/vector/detail/vector_n.hpp | 143 ++++++++ .../vector/detail/vector_n_chooser.hpp | 100 ++++++ .../sequence/container/vector/limits.hpp | 20 ++ .../sequence/container/vector/vector.hpp | 129 +++++++ .../sequence/container/vector/vector10.hpp | 61 ++++ .../sequence/container/vector/vector20.hpp | 51 +++ .../sequence/container/vector/vector30.hpp | 51 +++ .../sequence/container/vector/vector40.hpp | 51 +++ .../sequence/container/vector/vector50.hpp | 51 +++ .../sequence/container/vector/vector_fwd.hpp | 26 ++ .../container/vector/vector_iterator.hpp | 47 +++ include/boost/fusion/sequence/conversion.hpp | 16 + .../fusion/sequence/conversion/as_list.hpp | 56 +++ .../fusion/sequence/conversion/as_map.hpp | 47 +++ .../fusion/sequence/conversion/as_set.hpp | 47 +++ .../fusion/sequence/conversion/as_vector.hpp | 47 +++ .../sequence/conversion/detail/as_map.hpp | 102 ++++++ .../sequence/conversion/detail/as_set.hpp | 102 ++++++ .../sequence/conversion/detail/as_vector.hpp | 102 ++++++ .../sequence/conversion/detail/build_cons.hpp | 58 ++++ include/boost/fusion/sequence/generation.hpp | 21 ++ .../fusion/sequence/generation/cons_tie.hpp | 44 +++ .../fusion/sequence/generation/ignore.hpp | 33 ++ .../fusion/sequence/generation/list_tie.hpp | 73 ++++ .../fusion/sequence/generation/make_cons.hpp | 44 +++ .../fusion/sequence/generation/make_list.hpp | 85 +++++ .../fusion/sequence/generation/make_map.hpp | 100 ++++++ .../fusion/sequence/generation/make_set.hpp | 87 +++++ .../sequence/generation/make_vector.hpp | 85 +++++ .../fusion/sequence/generation/map_tie.hpp | 102 ++++++ .../fusion/sequence/generation/pair_tie.hpp | 44 +++ .../fusion/sequence/generation/vector_tie.hpp | 72 ++++ include/boost/fusion/sequence/intrinsic.hpp | 24 ++ .../boost/fusion/sequence/intrinsic/at.hpp | 81 +++++ .../fusion/sequence/intrinsic/at_key.hpp | 56 +++ .../boost/fusion/sequence/intrinsic/back.hpp | 43 +++ .../boost/fusion/sequence/intrinsic/begin.hpp | 51 +++ .../boost/fusion/sequence/intrinsic/empty.hpp | 49 +++ .../boost/fusion/sequence/intrinsic/end.hpp | 51 +++ .../boost/fusion/sequence/intrinsic/front.hpp | 42 +++ .../fusion/sequence/intrinsic/has_key.hpp | 52 +++ .../boost/fusion/sequence/intrinsic/mpl.hpp | 29 ++ .../fusion/sequence/intrinsic/mpl/at.hpp | 34 ++ .../fusion/sequence/intrinsic/mpl/back.hpp | 33 ++ .../fusion/sequence/intrinsic/mpl/begin.hpp | 32 ++ .../fusion/sequence/intrinsic/mpl/clear.hpp | 34 ++ .../sequence/intrinsic/mpl/detail/as.hpp | 56 +++ .../sequence/intrinsic/mpl/detail/clear.hpp | 32 ++ .../fusion/sequence/intrinsic/mpl/empty.hpp | 27 ++ .../fusion/sequence/intrinsic/mpl/end.hpp | 32 ++ .../fusion/sequence/intrinsic/mpl/erase.hpp | 39 +++ .../sequence/intrinsic/mpl/erase_key.hpp | 39 +++ .../fusion/sequence/intrinsic/mpl/front.hpp | 29 ++ .../fusion/sequence/intrinsic/mpl/has_key.hpp | 28 ++ .../fusion/sequence/intrinsic/mpl/insert.hpp | 39 +++ .../sequence/intrinsic/mpl/insert_range.hpp | 39 +++ .../sequence/intrinsic/mpl/pop_back.hpp | 39 +++ .../sequence/intrinsic/mpl/pop_front.hpp | 39 +++ .../sequence/intrinsic/mpl/push_back.hpp | 39 +++ .../sequence/intrinsic/mpl/push_front.hpp | 39 +++ .../fusion/sequence/intrinsic/mpl/size.hpp | 27 ++ .../boost/fusion/sequence/intrinsic/size.hpp | 46 +++ .../fusion/sequence/intrinsic/value_at.hpp | 42 +++ .../sequence/intrinsic/value_at_key.hpp | 38 +++ include/boost/fusion/sequence/io.hpp | 14 + .../boost/fusion/sequence/io/detail/in.hpp | 86 +++++ .../boost/fusion/sequence/io/detail/manip.hpp | 318 ++++++++++++++++++ .../boost/fusion/sequence/io/detail/out.hpp | 86 +++++ include/boost/fusion/sequence/io/in.hpp | 34 ++ include/boost/fusion/sequence/io/out.hpp | 34 ++ include/boost/fusion/sequence/utility.hpp | 14 + .../boost/fusion/sequence/utility/limits.hpp | 16 + .../fusion/sequence/utility/unpack_args.hpp | 164 +++++++++ include/boost/fusion/sequence/view.hpp | 18 + .../fusion/sequence/view/filter_view.hpp | 14 + .../view/filter_view/detail/begin_impl.hpp | 46 +++ .../view/filter_view/detail/deref_impl.hpp | 30 ++ .../view/filter_view/detail/end_impl.hpp | 45 +++ .../view/filter_view/detail/equal_to_impl.hpp | 35 ++ .../view/filter_view/detail/next_impl.hpp | 65 ++++ .../view/filter_view/detail/size_impl.hpp | 39 +++ .../view/filter_view/detail/value_of_impl.hpp | 30 ++ .../sequence/view/filter_view/filter_view.hpp | 52 +++ .../view/filter_view/filter_view_iterator.hpp | 48 +++ .../fusion/sequence/view/iterator_range.hpp | 13 + .../view/iterator_range/detail/begin_impl.hpp | 40 +++ .../view/iterator_range/detail/end_impl.hpp | 40 +++ .../view/iterator_range/iterator_range.hpp | 53 +++ .../boost/fusion/sequence/view/joint_view.hpp | 14 + .../view/joint_view/detail/begin_impl.hpp | 67 ++++ .../view/joint_view/detail/deref_impl.hpp | 30 ++ .../view/joint_view/detail/end_impl.hpp | 41 +++ .../view/joint_view/detail/next_impl.hpp | 71 ++++ .../view/joint_view/detail/value_of_impl.hpp | 30 ++ .../sequence/view/joint_view/joint_view.hpp | 62 ++++ .../view/joint_view/joint_view_iterator.hpp | 52 +++ .../fusion/sequence/view/reverse_view.hpp | 14 + .../view/reverse_view/detail/advance_impl.hpp | 48 +++ .../view/reverse_view/detail/begin_impl.hpp | 43 +++ .../view/reverse_view/detail/deref_impl.hpp | 49 +++ .../reverse_view/detail/distance_impl.hpp | 46 +++ .../view/reverse_view/detail/end_impl.hpp | 43 +++ .../view/reverse_view/detail/next_impl.hpp | 48 +++ .../view/reverse_view/detail/prior_impl.hpp | 48 +++ .../reverse_view/detail/value_of_impl.hpp | 43 +++ .../view/reverse_view/reverse_view.hpp | 59 ++++ .../reverse_view/reverse_view_iterator.hpp | 49 +++ .../fusion/sequence/view/single_view.hpp | 14 + .../view/single_view/detail/begin_impl.hpp | 43 +++ .../view/single_view/detail/deref_impl.hpp | 44 +++ .../view/single_view/detail/end_impl.hpp | 43 +++ .../view/single_view/detail/next_impl.hpp | 48 +++ .../view/single_view/detail/value_of_impl.hpp | 35 ++ .../sequence/view/single_view/single_view.hpp | 55 +++ .../view/single_view/single_view_iterator.hpp | 48 +++ .../fusion/sequence/view/transform_view.hpp | 14 + .../transform_view/detail/advance_impl.hpp | 76 +++++ .../detail/apply_transform_result.hpp | 37 ++ .../view/transform_view/detail/begin_impl.hpp | 69 ++++ .../view/transform_view/detail/deref_impl.hpp | 76 +++++ .../transform_view/detail/distance_impl.hpp | 64 ++++ .../view/transform_view/detail/end_impl.hpp | 69 ++++ .../view/transform_view/detail/next_impl.hpp | 75 +++++ .../view/transform_view/detail/prior_impl.hpp | 74 ++++ .../transform_view/detail/value_of_impl.hpp | 64 ++++ .../view/transform_view/transform_view.hpp | 95 ++++++ .../transform_view/transform_view_fwd.hpp | 23 ++ .../transform_view_iterator.hpp | 68 ++++ .../boost/fusion/sequence/view/zip_view.hpp | 15 + .../view/zip_view/detail/advance_impl.hpp | 64 ++++ .../sequence/view/zip_view/detail/at_impl.hpp | 78 +++++ .../view/zip_view/detail/begin_impl.hpp | 80 +++++ .../view/zip_view/detail/deref_impl.hpp | 64 ++++ .../view/zip_view/detail/distance_impl.hpp | 83 +++++ .../view/zip_view/detail/end_impl.hpp | 80 +++++ .../view/zip_view/detail/equal_to_impl.hpp | 63 ++++ .../view/zip_view/detail/next_impl.hpp | 64 ++++ .../view/zip_view/detail/prior_impl.hpp | 65 ++++ .../view/zip_view/detail/size_impl.hpp | 64 ++++ .../zip_view/detail/strictest_traversal.hpp | 64 ++++ .../view/zip_view/detail/value_at_impl.hpp | 53 +++ .../view/zip_view/detail/value_of_impl.hpp | 53 +++ .../sequence/view/zip_view/zip_view.hpp | 88 +++++ .../view/zip_view/zip_view_iterator.hpp | 48 +++ .../view/zip_view/zip_view_iterator_fwd.hpp | 23 ++ include/boost/fusion/support.hpp | 21 ++ include/boost/fusion/support/category_of.hpp | 38 +++ .../boost/fusion/support/detail/access.hpp | 56 +++ .../support/detail/as_fusion_element.hpp | 48 +++ .../fusion/support/detail/category_of.hpp | 20 ++ .../fusion/support/detail/compiler_config.hpp | 18 + .../fusion/support/detail/is_mpl_sequence.hpp | 54 +++ .../boost/fusion/support/detail/is_view.hpp | 20 ++ .../detail/iterator_to_sequence_category.hpp | 62 ++++ .../support/detail/mpl_iterator_category.hpp | 49 +++ .../fusion/support/detail/unknown_key.hpp | 17 + .../boost/fusion/support/is_associative.hpp | 36 ++ include/boost/fusion/support/is_iterator.hpp | 21 ++ include/boost/fusion/support/is_sequence.hpp | 51 +++ include/boost/fusion/support/is_view.hpp | 37 ++ .../boost/fusion/support/iterator_base.hpp | 34 ++ include/boost/fusion/support/pair.hpp | 81 +++++ .../boost/fusion/support/sequence_base.hpp | 34 ++ include/boost/fusion/support/tag_of.hpp | 48 +++ include/boost/fusion/support/tag_of_fwd.hpp | 21 ++ include/boost/fusion/support/tags.hpp | 47 +++ include/boost/fusion/tuple.hpp | 16 + .../tuple/detail/tuple_forward_ctor.hpp | 40 +++ include/boost/fusion/tuple/make_tuple.hpp | 57 ++++ include/boost/fusion/tuple/tuple.hpp | 73 ++++ include/boost/fusion/tuple/tuple_fwd.hpp | 25 ++ include/boost/fusion/tuple/tuple_tie.hpp | 50 +++ 370 files changed, 17939 insertions(+) create mode 100644 .gitattributes create mode 100644 include/boost/fusion/algorithm.hpp create mode 100644 include/boost/fusion/algorithm/iteration.hpp create mode 100644 include/boost/fusion/algorithm/iteration/accumulate.hpp create mode 100644 include/boost/fusion/algorithm/iteration/detail/fold.hpp create mode 100644 include/boost/fusion/algorithm/iteration/detail/for_each.hpp create mode 100644 include/boost/fusion/algorithm/iteration/fold.hpp create mode 100644 include/boost/fusion/algorithm/iteration/for_each.hpp create mode 100644 include/boost/fusion/algorithm/query.hpp create mode 100644 include/boost/fusion/algorithm/query/all.hpp create mode 100644 include/boost/fusion/algorithm/query/any.hpp create mode 100644 include/boost/fusion/algorithm/query/count.hpp create mode 100644 include/boost/fusion/algorithm/query/count_if.hpp create mode 100644 include/boost/fusion/algorithm/query/detail/Attic/none.hpp create mode 100644 include/boost/fusion/algorithm/query/detail/all.hpp create mode 100644 include/boost/fusion/algorithm/query/detail/any.hpp create mode 100644 include/boost/fusion/algorithm/query/detail/assoc_find.hpp create mode 100644 include/boost/fusion/algorithm/query/detail/count.hpp create mode 100644 include/boost/fusion/algorithm/query/detail/count_if.hpp create mode 100644 include/boost/fusion/algorithm/query/detail/find_if.hpp create mode 100644 include/boost/fusion/algorithm/query/detail/none.hpp create mode 100644 include/boost/fusion/algorithm/query/find.hpp create mode 100644 include/boost/fusion/algorithm/query/find_if.hpp create mode 100644 include/boost/fusion/algorithm/query/none.hpp create mode 100644 include/boost/fusion/algorithm/transformation.hpp create mode 100644 include/boost/fusion/algorithm/transformation/clear.hpp create mode 100644 include/boost/fusion/algorithm/transformation/detail/replace.hpp create mode 100644 include/boost/fusion/algorithm/transformation/detail/replace_if.hpp create mode 100644 include/boost/fusion/algorithm/transformation/erase.hpp create mode 100644 include/boost/fusion/algorithm/transformation/erase_key.hpp create mode 100644 include/boost/fusion/algorithm/transformation/filter.hpp create mode 100644 include/boost/fusion/algorithm/transformation/filter_if.hpp create mode 100644 include/boost/fusion/algorithm/transformation/insert.hpp create mode 100644 include/boost/fusion/algorithm/transformation/insert_range.hpp create mode 100644 include/boost/fusion/algorithm/transformation/join.hpp create mode 100644 include/boost/fusion/algorithm/transformation/pop_back.hpp create mode 100644 include/boost/fusion/algorithm/transformation/pop_front.hpp create mode 100644 include/boost/fusion/algorithm/transformation/push_back.hpp create mode 100644 include/boost/fusion/algorithm/transformation/push_front.hpp create mode 100644 include/boost/fusion/algorithm/transformation/remove.hpp create mode 100644 include/boost/fusion/algorithm/transformation/remove_if.hpp create mode 100644 include/boost/fusion/algorithm/transformation/replace.hpp create mode 100644 include/boost/fusion/algorithm/transformation/replace_if.hpp create mode 100644 include/boost/fusion/algorithm/transformation/reverse.hpp create mode 100644 include/boost/fusion/algorithm/transformation/transform.hpp create mode 100644 include/boost/fusion/algorithm/transformation/zip.hpp create mode 100644 include/boost/fusion/iterator.hpp create mode 100644 include/boost/fusion/iterator/advance.hpp create mode 100644 include/boost/fusion/iterator/deref.hpp create mode 100644 include/boost/fusion/iterator/detail/adapt_deref_traits.hpp create mode 100644 include/boost/fusion/iterator/detail/adapt_value_traits.hpp create mode 100644 include/boost/fusion/iterator/detail/advance.hpp create mode 100644 include/boost/fusion/iterator/detail/distance.hpp create mode 100644 include/boost/fusion/iterator/distance.hpp create mode 100644 include/boost/fusion/iterator/equal_to.hpp create mode 100644 include/boost/fusion/iterator/mpl.hpp create mode 100644 include/boost/fusion/iterator/mpl/convert_iterator.hpp create mode 100644 include/boost/fusion/iterator/mpl/fusion_iterator.hpp create mode 100644 include/boost/fusion/iterator/next.hpp create mode 100644 include/boost/fusion/iterator/prior.hpp create mode 100644 include/boost/fusion/iterator/value_of.hpp create mode 100644 include/boost/fusion/sequence.hpp create mode 100644 include/boost/fusion/sequence/adapted.hpp create mode 100644 include/boost/fusion/sequence/adapted/array.hpp create mode 100644 include/boost/fusion/sequence/adapted/array/array_iterator.hpp create mode 100644 include/boost/fusion/sequence/adapted/array/detail/advance_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/array/detail/at_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/array/detail/begin_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/array/detail/category_of_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/array/detail/deref_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/array/detail/distance_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/array/detail/end_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/array/detail/equal_to_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/array/detail/is_sequence_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/array/detail/is_view_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/array/detail/next_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/array/detail/prior_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/array/detail/size_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/array/detail/value_at_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/array/detail/value_of_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/array/tag_of.hpp create mode 100644 include/boost/fusion/sequence/adapted/mpl.hpp create mode 100644 include/boost/fusion/sequence/adapted/mpl/detail/advance_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/mpl/detail/at_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/mpl/detail/begin_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/mpl/detail/category_of_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/mpl/detail/deref_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/mpl/detail/distance_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/mpl/detail/empty_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/mpl/detail/end_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/mpl/detail/equal_to_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/mpl/detail/has_key_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/mpl/detail/is_sequence_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/mpl/detail/is_view_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/mpl/detail/next_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/mpl/detail/prior_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/mpl/detail/size_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/mpl/detail/value_at_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/mpl/detail/value_of_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/mpl/mpl_iterator.hpp create mode 100644 include/boost/fusion/sequence/adapted/mpl/tag_of.hpp create mode 100644 include/boost/fusion/sequence/adapted/std_pair.hpp create mode 100644 include/boost/fusion/sequence/adapted/std_pair/Attic/std_pair_iterator.hpp create mode 100644 include/boost/fusion/sequence/adapted/std_pair/Attic/tag_of.hpp create mode 100644 include/boost/fusion/sequence/adapted/std_pair/detail/Attic/at_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/std_pair/detail/Attic/begin_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/std_pair/detail/Attic/category_of_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/std_pair/detail/Attic/end_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/std_pair/detail/Attic/is_sequence_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/std_pair/detail/Attic/is_view_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/std_pair/detail/Attic/size_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/std_pair/detail/Attic/value_at_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/std_pair/detail/advance_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/std_pair/detail/at_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/std_pair/detail/begin_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/std_pair/detail/category_of_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/std_pair/detail/deref_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/std_pair/detail/distance_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/std_pair/detail/end_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/std_pair/detail/equal_to_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/std_pair/detail/is_sequence_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/std_pair/detail/is_view_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/std_pair/detail/next_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/std_pair/detail/prior_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/std_pair/detail/size_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/std_pair/detail/value_at_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/std_pair/detail/value_of_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/std_pair/std_pair_iterator.hpp create mode 100644 include/boost/fusion/sequence/adapted/std_pair/tag_of.hpp create mode 100644 include/boost/fusion/sequence/comparison.hpp create mode 100644 include/boost/fusion/sequence/comparison/detail/enable_comparison.hpp create mode 100644 include/boost/fusion/sequence/comparison/detail/equal_to.hpp create mode 100644 include/boost/fusion/sequence/comparison/detail/greater.hpp create mode 100644 include/boost/fusion/sequence/comparison/detail/greater_equal.hpp create mode 100644 include/boost/fusion/sequence/comparison/detail/less.hpp create mode 100644 include/boost/fusion/sequence/comparison/detail/less_equal.hpp create mode 100644 include/boost/fusion/sequence/comparison/detail/not_equal_to.hpp create mode 100644 include/boost/fusion/sequence/comparison/equal_to.hpp create mode 100644 include/boost/fusion/sequence/comparison/greater.hpp create mode 100644 include/boost/fusion/sequence/comparison/greater_equal.hpp create mode 100644 include/boost/fusion/sequence/comparison/less.hpp create mode 100644 include/boost/fusion/sequence/comparison/less_equal.hpp create mode 100644 include/boost/fusion/sequence/comparison/not_equal_to.hpp create mode 100644 include/boost/fusion/sequence/container.hpp create mode 100644 include/boost/fusion/sequence/container/list.hpp create mode 100644 include/boost/fusion/sequence/container/list/cons.hpp create mode 100644 include/boost/fusion/sequence/container/list/cons_iterator.hpp create mode 100644 include/boost/fusion/sequence/container/list/detail/at_impl.hpp create mode 100644 include/boost/fusion/sequence/container/list/detail/begin_impl.hpp create mode 100644 include/boost/fusion/sequence/container/list/detail/deref_impl.hpp create mode 100644 include/boost/fusion/sequence/container/list/detail/end_impl.hpp create mode 100644 include/boost/fusion/sequence/container/list/detail/equal_to_impl.hpp create mode 100644 include/boost/fusion/sequence/container/list/detail/list_forward_ctor.hpp create mode 100644 include/boost/fusion/sequence/container/list/detail/list_to_cons.hpp create mode 100644 include/boost/fusion/sequence/container/list/detail/list_to_cons_call.hpp create mode 100644 include/boost/fusion/sequence/container/list/detail/next_impl.hpp create mode 100644 include/boost/fusion/sequence/container/list/detail/value_at_impl.hpp create mode 100644 include/boost/fusion/sequence/container/list/detail/value_of_impl.hpp create mode 100644 include/boost/fusion/sequence/container/list/limits.hpp create mode 100644 include/boost/fusion/sequence/container/list/list.hpp create mode 100644 include/boost/fusion/sequence/container/list/list_fwd.hpp create mode 100644 include/boost/fusion/sequence/container/map.hpp create mode 100644 include/boost/fusion/sequence/container/map/detail/at_key_impl.hpp create mode 100644 include/boost/fusion/sequence/container/map/detail/begin_impl.hpp create mode 100644 include/boost/fusion/sequence/container/map/detail/end_impl.hpp create mode 100644 include/boost/fusion/sequence/container/map/detail/is_associative_impl.hpp create mode 100644 include/boost/fusion/sequence/container/map/detail/lookup_key.hpp create mode 100644 include/boost/fusion/sequence/container/map/detail/map_forward_ctor.hpp create mode 100644 include/boost/fusion/sequence/container/map/detail/map_lookup.hpp create mode 100644 include/boost/fusion/sequence/container/map/detail/value_at_key_impl.hpp create mode 100644 include/boost/fusion/sequence/container/map/limits.hpp create mode 100644 include/boost/fusion/sequence/container/map/map.hpp create mode 100644 include/boost/fusion/sequence/container/map/map_fwd.hpp create mode 100644 include/boost/fusion/sequence/container/set.hpp create mode 100644 include/boost/fusion/sequence/container/set/detail/at_key_impl.hpp create mode 100644 include/boost/fusion/sequence/container/set/detail/begin_impl.hpp create mode 100644 include/boost/fusion/sequence/container/set/detail/end_impl.hpp create mode 100644 include/boost/fusion/sequence/container/set/detail/is_associative_impl.hpp create mode 100644 include/boost/fusion/sequence/container/set/detail/lookup_key.hpp create mode 100644 include/boost/fusion/sequence/container/set/detail/set_forward_ctor.hpp create mode 100644 include/boost/fusion/sequence/container/set/detail/set_lookup.hpp create mode 100644 include/boost/fusion/sequence/container/set/detail/value_at_key_impl.hpp create mode 100644 include/boost/fusion/sequence/container/set/limits.hpp create mode 100644 include/boost/fusion/sequence/container/set/set.hpp create mode 100644 include/boost/fusion/sequence/container/set/set_fwd.hpp create mode 100644 include/boost/fusion/sequence/container/vector.hpp create mode 100644 include/boost/fusion/sequence/container/vector/detail/advance_impl.hpp create mode 100644 include/boost/fusion/sequence/container/vector/detail/at_impl.hpp create mode 100644 include/boost/fusion/sequence/container/vector/detail/begin_impl.hpp create mode 100644 include/boost/fusion/sequence/container/vector/detail/deref_impl.hpp create mode 100644 include/boost/fusion/sequence/container/vector/detail/distance_impl.hpp create mode 100644 include/boost/fusion/sequence/container/vector/detail/end_impl.hpp create mode 100644 include/boost/fusion/sequence/container/vector/detail/equal_to_impl.hpp create mode 100644 include/boost/fusion/sequence/container/vector/detail/next_impl.hpp create mode 100644 include/boost/fusion/sequence/container/vector/detail/prior_impl.hpp create mode 100644 include/boost/fusion/sequence/container/vector/detail/value_at_impl.hpp create mode 100644 include/boost/fusion/sequence/container/vector/detail/value_of_impl.hpp create mode 100644 include/boost/fusion/sequence/container/vector/detail/vector_forward_ctor.hpp create mode 100644 include/boost/fusion/sequence/container/vector/detail/vector_n.hpp create mode 100644 include/boost/fusion/sequence/container/vector/detail/vector_n_chooser.hpp create mode 100644 include/boost/fusion/sequence/container/vector/limits.hpp create mode 100644 include/boost/fusion/sequence/container/vector/vector.hpp create mode 100644 include/boost/fusion/sequence/container/vector/vector10.hpp create mode 100644 include/boost/fusion/sequence/container/vector/vector20.hpp create mode 100644 include/boost/fusion/sequence/container/vector/vector30.hpp create mode 100644 include/boost/fusion/sequence/container/vector/vector40.hpp create mode 100644 include/boost/fusion/sequence/container/vector/vector50.hpp create mode 100644 include/boost/fusion/sequence/container/vector/vector_fwd.hpp create mode 100644 include/boost/fusion/sequence/container/vector/vector_iterator.hpp create mode 100644 include/boost/fusion/sequence/conversion.hpp create mode 100644 include/boost/fusion/sequence/conversion/as_list.hpp create mode 100644 include/boost/fusion/sequence/conversion/as_map.hpp create mode 100644 include/boost/fusion/sequence/conversion/as_set.hpp create mode 100644 include/boost/fusion/sequence/conversion/as_vector.hpp create mode 100644 include/boost/fusion/sequence/conversion/detail/as_map.hpp create mode 100644 include/boost/fusion/sequence/conversion/detail/as_set.hpp create mode 100644 include/boost/fusion/sequence/conversion/detail/as_vector.hpp create mode 100644 include/boost/fusion/sequence/conversion/detail/build_cons.hpp create mode 100644 include/boost/fusion/sequence/generation.hpp create mode 100644 include/boost/fusion/sequence/generation/cons_tie.hpp create mode 100644 include/boost/fusion/sequence/generation/ignore.hpp create mode 100644 include/boost/fusion/sequence/generation/list_tie.hpp create mode 100644 include/boost/fusion/sequence/generation/make_cons.hpp create mode 100644 include/boost/fusion/sequence/generation/make_list.hpp create mode 100644 include/boost/fusion/sequence/generation/make_map.hpp create mode 100644 include/boost/fusion/sequence/generation/make_set.hpp create mode 100644 include/boost/fusion/sequence/generation/make_vector.hpp create mode 100644 include/boost/fusion/sequence/generation/map_tie.hpp create mode 100644 include/boost/fusion/sequence/generation/pair_tie.hpp create mode 100644 include/boost/fusion/sequence/generation/vector_tie.hpp create mode 100644 include/boost/fusion/sequence/intrinsic.hpp create mode 100644 include/boost/fusion/sequence/intrinsic/at.hpp create mode 100644 include/boost/fusion/sequence/intrinsic/at_key.hpp create mode 100644 include/boost/fusion/sequence/intrinsic/back.hpp create mode 100644 include/boost/fusion/sequence/intrinsic/begin.hpp create mode 100644 include/boost/fusion/sequence/intrinsic/empty.hpp create mode 100644 include/boost/fusion/sequence/intrinsic/end.hpp create mode 100644 include/boost/fusion/sequence/intrinsic/front.hpp create mode 100644 include/boost/fusion/sequence/intrinsic/has_key.hpp create mode 100644 include/boost/fusion/sequence/intrinsic/mpl.hpp create mode 100644 include/boost/fusion/sequence/intrinsic/mpl/at.hpp create mode 100644 include/boost/fusion/sequence/intrinsic/mpl/back.hpp create mode 100644 include/boost/fusion/sequence/intrinsic/mpl/begin.hpp create mode 100644 include/boost/fusion/sequence/intrinsic/mpl/clear.hpp create mode 100644 include/boost/fusion/sequence/intrinsic/mpl/detail/as.hpp create mode 100644 include/boost/fusion/sequence/intrinsic/mpl/detail/clear.hpp create mode 100644 include/boost/fusion/sequence/intrinsic/mpl/empty.hpp create mode 100644 include/boost/fusion/sequence/intrinsic/mpl/end.hpp create mode 100644 include/boost/fusion/sequence/intrinsic/mpl/erase.hpp create mode 100644 include/boost/fusion/sequence/intrinsic/mpl/erase_key.hpp create mode 100644 include/boost/fusion/sequence/intrinsic/mpl/front.hpp create mode 100644 include/boost/fusion/sequence/intrinsic/mpl/has_key.hpp create mode 100644 include/boost/fusion/sequence/intrinsic/mpl/insert.hpp create mode 100644 include/boost/fusion/sequence/intrinsic/mpl/insert_range.hpp create mode 100644 include/boost/fusion/sequence/intrinsic/mpl/pop_back.hpp create mode 100644 include/boost/fusion/sequence/intrinsic/mpl/pop_front.hpp create mode 100644 include/boost/fusion/sequence/intrinsic/mpl/push_back.hpp create mode 100644 include/boost/fusion/sequence/intrinsic/mpl/push_front.hpp create mode 100644 include/boost/fusion/sequence/intrinsic/mpl/size.hpp create mode 100644 include/boost/fusion/sequence/intrinsic/size.hpp create mode 100644 include/boost/fusion/sequence/intrinsic/value_at.hpp create mode 100644 include/boost/fusion/sequence/intrinsic/value_at_key.hpp create mode 100644 include/boost/fusion/sequence/io.hpp create mode 100644 include/boost/fusion/sequence/io/detail/in.hpp create mode 100644 include/boost/fusion/sequence/io/detail/manip.hpp create mode 100644 include/boost/fusion/sequence/io/detail/out.hpp create mode 100644 include/boost/fusion/sequence/io/in.hpp create mode 100644 include/boost/fusion/sequence/io/out.hpp create mode 100644 include/boost/fusion/sequence/utility.hpp create mode 100644 include/boost/fusion/sequence/utility/limits.hpp create mode 100644 include/boost/fusion/sequence/utility/unpack_args.hpp create mode 100644 include/boost/fusion/sequence/view.hpp create mode 100644 include/boost/fusion/sequence/view/filter_view.hpp create mode 100644 include/boost/fusion/sequence/view/filter_view/detail/begin_impl.hpp create mode 100644 include/boost/fusion/sequence/view/filter_view/detail/deref_impl.hpp create mode 100644 include/boost/fusion/sequence/view/filter_view/detail/end_impl.hpp create mode 100644 include/boost/fusion/sequence/view/filter_view/detail/equal_to_impl.hpp create mode 100644 include/boost/fusion/sequence/view/filter_view/detail/next_impl.hpp create mode 100644 include/boost/fusion/sequence/view/filter_view/detail/size_impl.hpp create mode 100644 include/boost/fusion/sequence/view/filter_view/detail/value_of_impl.hpp create mode 100644 include/boost/fusion/sequence/view/filter_view/filter_view.hpp create mode 100644 include/boost/fusion/sequence/view/filter_view/filter_view_iterator.hpp create mode 100644 include/boost/fusion/sequence/view/iterator_range.hpp create mode 100644 include/boost/fusion/sequence/view/iterator_range/detail/begin_impl.hpp create mode 100644 include/boost/fusion/sequence/view/iterator_range/detail/end_impl.hpp create mode 100644 include/boost/fusion/sequence/view/iterator_range/iterator_range.hpp create mode 100644 include/boost/fusion/sequence/view/joint_view.hpp create mode 100644 include/boost/fusion/sequence/view/joint_view/detail/begin_impl.hpp create mode 100644 include/boost/fusion/sequence/view/joint_view/detail/deref_impl.hpp create mode 100644 include/boost/fusion/sequence/view/joint_view/detail/end_impl.hpp create mode 100644 include/boost/fusion/sequence/view/joint_view/detail/next_impl.hpp create mode 100644 include/boost/fusion/sequence/view/joint_view/detail/value_of_impl.hpp create mode 100644 include/boost/fusion/sequence/view/joint_view/joint_view.hpp create mode 100644 include/boost/fusion/sequence/view/joint_view/joint_view_iterator.hpp create mode 100644 include/boost/fusion/sequence/view/reverse_view.hpp create mode 100644 include/boost/fusion/sequence/view/reverse_view/detail/advance_impl.hpp create mode 100644 include/boost/fusion/sequence/view/reverse_view/detail/begin_impl.hpp create mode 100644 include/boost/fusion/sequence/view/reverse_view/detail/deref_impl.hpp create mode 100644 include/boost/fusion/sequence/view/reverse_view/detail/distance_impl.hpp create mode 100644 include/boost/fusion/sequence/view/reverse_view/detail/end_impl.hpp create mode 100644 include/boost/fusion/sequence/view/reverse_view/detail/next_impl.hpp create mode 100644 include/boost/fusion/sequence/view/reverse_view/detail/prior_impl.hpp create mode 100644 include/boost/fusion/sequence/view/reverse_view/detail/value_of_impl.hpp create mode 100644 include/boost/fusion/sequence/view/reverse_view/reverse_view.hpp create mode 100644 include/boost/fusion/sequence/view/reverse_view/reverse_view_iterator.hpp create mode 100644 include/boost/fusion/sequence/view/single_view.hpp create mode 100644 include/boost/fusion/sequence/view/single_view/detail/begin_impl.hpp create mode 100644 include/boost/fusion/sequence/view/single_view/detail/deref_impl.hpp create mode 100644 include/boost/fusion/sequence/view/single_view/detail/end_impl.hpp create mode 100644 include/boost/fusion/sequence/view/single_view/detail/next_impl.hpp create mode 100644 include/boost/fusion/sequence/view/single_view/detail/value_of_impl.hpp create mode 100644 include/boost/fusion/sequence/view/single_view/single_view.hpp create mode 100644 include/boost/fusion/sequence/view/single_view/single_view_iterator.hpp create mode 100644 include/boost/fusion/sequence/view/transform_view.hpp create mode 100644 include/boost/fusion/sequence/view/transform_view/detail/advance_impl.hpp create mode 100644 include/boost/fusion/sequence/view/transform_view/detail/apply_transform_result.hpp create mode 100644 include/boost/fusion/sequence/view/transform_view/detail/begin_impl.hpp create mode 100644 include/boost/fusion/sequence/view/transform_view/detail/deref_impl.hpp create mode 100644 include/boost/fusion/sequence/view/transform_view/detail/distance_impl.hpp create mode 100644 include/boost/fusion/sequence/view/transform_view/detail/end_impl.hpp create mode 100644 include/boost/fusion/sequence/view/transform_view/detail/next_impl.hpp create mode 100644 include/boost/fusion/sequence/view/transform_view/detail/prior_impl.hpp create mode 100644 include/boost/fusion/sequence/view/transform_view/detail/value_of_impl.hpp create mode 100644 include/boost/fusion/sequence/view/transform_view/transform_view.hpp create mode 100644 include/boost/fusion/sequence/view/transform_view/transform_view_fwd.hpp create mode 100644 include/boost/fusion/sequence/view/transform_view/transform_view_iterator.hpp create mode 100644 include/boost/fusion/sequence/view/zip_view.hpp create mode 100644 include/boost/fusion/sequence/view/zip_view/detail/advance_impl.hpp create mode 100644 include/boost/fusion/sequence/view/zip_view/detail/at_impl.hpp create mode 100644 include/boost/fusion/sequence/view/zip_view/detail/begin_impl.hpp create mode 100644 include/boost/fusion/sequence/view/zip_view/detail/deref_impl.hpp create mode 100644 include/boost/fusion/sequence/view/zip_view/detail/distance_impl.hpp create mode 100644 include/boost/fusion/sequence/view/zip_view/detail/end_impl.hpp create mode 100644 include/boost/fusion/sequence/view/zip_view/detail/equal_to_impl.hpp create mode 100644 include/boost/fusion/sequence/view/zip_view/detail/next_impl.hpp create mode 100644 include/boost/fusion/sequence/view/zip_view/detail/prior_impl.hpp create mode 100644 include/boost/fusion/sequence/view/zip_view/detail/size_impl.hpp create mode 100644 include/boost/fusion/sequence/view/zip_view/detail/strictest_traversal.hpp create mode 100644 include/boost/fusion/sequence/view/zip_view/detail/value_at_impl.hpp create mode 100644 include/boost/fusion/sequence/view/zip_view/detail/value_of_impl.hpp create mode 100644 include/boost/fusion/sequence/view/zip_view/zip_view.hpp create mode 100644 include/boost/fusion/sequence/view/zip_view/zip_view_iterator.hpp create mode 100644 include/boost/fusion/sequence/view/zip_view/zip_view_iterator_fwd.hpp create mode 100644 include/boost/fusion/support.hpp create mode 100644 include/boost/fusion/support/category_of.hpp create mode 100644 include/boost/fusion/support/detail/access.hpp create mode 100644 include/boost/fusion/support/detail/as_fusion_element.hpp create mode 100644 include/boost/fusion/support/detail/category_of.hpp create mode 100644 include/boost/fusion/support/detail/compiler_config.hpp create mode 100644 include/boost/fusion/support/detail/is_mpl_sequence.hpp create mode 100644 include/boost/fusion/support/detail/is_view.hpp create mode 100644 include/boost/fusion/support/detail/iterator_to_sequence_category.hpp create mode 100644 include/boost/fusion/support/detail/mpl_iterator_category.hpp create mode 100644 include/boost/fusion/support/detail/unknown_key.hpp create mode 100644 include/boost/fusion/support/is_associative.hpp create mode 100644 include/boost/fusion/support/is_iterator.hpp create mode 100644 include/boost/fusion/support/is_sequence.hpp create mode 100644 include/boost/fusion/support/is_view.hpp create mode 100644 include/boost/fusion/support/iterator_base.hpp create mode 100644 include/boost/fusion/support/pair.hpp create mode 100644 include/boost/fusion/support/sequence_base.hpp create mode 100644 include/boost/fusion/support/tag_of.hpp create mode 100644 include/boost/fusion/support/tag_of_fwd.hpp create mode 100644 include/boost/fusion/support/tags.hpp create mode 100644 include/boost/fusion/tuple.hpp create mode 100644 include/boost/fusion/tuple/detail/tuple_forward_ctor.hpp create mode 100644 include/boost/fusion/tuple/make_tuple.hpp create mode 100644 include/boost/fusion/tuple/tuple.hpp create mode 100644 include/boost/fusion/tuple/tuple_fwd.hpp create mode 100644 include/boost/fusion/tuple/tuple_tie.hpp diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..3e84d7c7 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,96 @@ +* text=auto !eol svneol=native#text/plain +*.gitattributes text svneol=native#text/plain + +# Scriptish formats +*.bat text svneol=native#text/plain +*.bsh text svneol=native#text/x-beanshell +*.cgi text svneol=native#text/plain +*.cmd text svneol=native#text/plain +*.js text svneol=native#text/javascript +*.php text svneol=native#text/x-php +*.pl text svneol=native#text/x-perl +*.pm text svneol=native#text/x-perl +*.py text svneol=native#text/x-python +*.sh eol=lf svneol=LF#text/x-sh +configure eol=lf svneol=LF#text/x-sh + +# Image formats +*.bmp binary svneol=unset#image/bmp +*.gif binary svneol=unset#image/gif +*.ico binary svneol=unset#image/ico +*.jpeg binary svneol=unset#image/jpeg +*.jpg binary svneol=unset#image/jpeg +*.png binary svneol=unset#image/png +*.tif binary svneol=unset#image/tiff +*.tiff binary svneol=unset#image/tiff +*.svg text svneol=native#image/svg%2Bxml + +# Data formats +*.pdf binary svneol=unset#application/pdf +*.avi binary svneol=unset#video/avi +*.doc binary svneol=unset#application/msword +*.dsp text svneol=crlf#text/plain +*.dsw text svneol=crlf#text/plain +*.eps binary svneol=unset#application/postscript +*.gz binary svneol=unset#application/gzip +*.mov binary svneol=unset#video/quicktime +*.mp3 binary svneol=unset#audio/mpeg +*.ppt binary svneol=unset#application/vnd.ms-powerpoint +*.ps binary svneol=unset#application/postscript +*.psd binary svneol=unset#application/photoshop +*.rdf binary svneol=unset#text/rdf +*.rss text svneol=unset#text/xml +*.rtf binary svneol=unset#text/rtf +*.sln text svneol=native#text/plain +*.swf binary svneol=unset#application/x-shockwave-flash +*.tgz binary svneol=unset#application/gzip +*.vcproj text svneol=native#text/xml +*.vcxproj text svneol=native#text/xml +*.vsprops text svneol=native#text/xml +*.wav binary svneol=unset#audio/wav +*.xls binary svneol=unset#application/vnd.ms-excel +*.zip binary svneol=unset#application/zip + +# Text formats +.htaccess text svneol=native#text/plain +*.bbk text svneol=native#text/xml +*.cmake text svneol=native#text/plain +*.css text svneol=native#text/css +*.dtd text svneol=native#text/xml +*.htm text svneol=native#text/html +*.html text svneol=native#text/html +*.ini text svneol=native#text/plain +*.log text svneol=native#text/plain +*.mak text svneol=native#text/plain +*.qbk text svneol=native#text/plain +*.rst text svneol=native#text/plain +*.sql text svneol=native#text/x-sql +*.txt text svneol=native#text/plain +*.xhtml text svneol=native#text/xhtml%2Bxml +*.xml text svneol=native#text/xml +*.xsd text svneol=native#text/xml +*.xsl text svneol=native#text/xml +*.xslt text svneol=native#text/xml +*.xul text svneol=native#text/xul +*.yml text svneol=native#text/plain +boost-no-inspect text svneol=native#text/plain +CHANGES text svneol=native#text/plain +COPYING text svneol=native#text/plain +INSTALL text svneol=native#text/plain +Jamfile text svneol=native#text/plain +Jamroot text svneol=native#text/plain +Jamfile.v2 text svneol=native#text/plain +Jamrules text svneol=native#text/plain +Makefile* text svneol=native#text/plain +README text svneol=native#text/plain +TODO text svneol=native#text/plain + +# Code formats +*.c text svneol=native#text/plain +*.cpp text svneol=native#text/plain +*.h text svneol=native#text/plain +*.hpp text svneol=native#text/plain +*.ipp text svneol=native#text/plain +*.tpp text svneol=native#text/plain +*.jam text svneol=native#text/plain +*.java text svneol=native#text/plain diff --git a/include/boost/fusion/algorithm.hpp b/include/boost/fusion/algorithm.hpp new file mode 100644 index 00000000..4f822b63 --- /dev/null +++ b/include/boost/fusion/algorithm.hpp @@ -0,0 +1,15 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_ALGORITHM_10022005_0549) +#define FUSION_ALGORITHM_10022005_0549 + +#include +#include +#include + +#endif diff --git a/include/boost/fusion/algorithm/iteration.hpp b/include/boost/fusion/algorithm/iteration.hpp new file mode 100644 index 00000000..9adf406c --- /dev/null +++ b/include/boost/fusion/algorithm/iteration.hpp @@ -0,0 +1,15 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_ALGORITHM_ITERATION_10022005_0549) +#define FUSION_ALGORITHM_ITERATION_10022005_0549 + +#include +#include +#include + +#endif diff --git a/include/boost/fusion/algorithm/iteration/accumulate.hpp b/include/boost/fusion/algorithm/iteration/accumulate.hpp new file mode 100644 index 00000000..2b5cb12d --- /dev/null +++ b/include/boost/fusion/algorithm/iteration/accumulate.hpp @@ -0,0 +1,66 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_ACCUMULATE_09172005_1032) +#define FUSION_ACCUMULATE_09172005_1032 + +#include +#include + +namespace boost { namespace fusion +{ + struct void_; + + namespace result_of + { + template + struct accumulate + { + typedef typename + detail::static_fold< + typename result_of::begin::type + , typename result_of::end::type + , State + , F + >::type + type; + }; + } + + template + inline typename result_of::accumulate::type + accumulate(Sequence& seq, State const& state, F const& f) + { + return detail::fold( + fusion::begin(seq) + , fusion::end(seq) + , state + , f + , is_same< + typename result_of::begin::type + , typename result_of::end::type>() + ); + } + + template + inline typename result_of::accumulate::type + accumulate(Sequence const& seq, State const& state, F const& f) + { + return detail::fold( + fusion::begin(seq) + , fusion::end(seq) + , state + , f + , is_same< + typename result_of::begin::type + , typename result_of::end::type>() + ); + } +}} + +#endif + diff --git a/include/boost/fusion/algorithm/iteration/detail/fold.hpp b/include/boost/fusion/algorithm/iteration/detail/fold.hpp new file mode 100644 index 00000000..ecf23115 --- /dev/null +++ b/include/boost/fusion/algorithm/iteration/detail/fold.hpp @@ -0,0 +1,99 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_FOLD_05052005_1211) +#define FUSION_FOLD_05052005_1211 + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion { namespace detail +{ + // Unary arguments version + + template + struct apply_fold_result + { + template + struct apply + { + typedef typename F::template result::type type; + }; + }; + + template + struct fold_apply + : mpl::apply, typename result_of::value_of::type, State> + {}; + + 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; + }; + + // terminal case + template + inline State const& + fold(First const&, Last const&, State const& state, F const&, mpl::true_) + { + return state; + } + + // non-terminal case + template + inline typename static_fold::type + fold( + First const& first + , Last const& last + , State const& state + , F const& f + , mpl::false_) + { + return detail::fold( + fusion::next(first) + , last + , f(*first, state) + , f + , result_of::equal_to::type, Last>() + ); + } +}}} + +#endif + diff --git a/include/boost/fusion/algorithm/iteration/detail/for_each.hpp b/include/boost/fusion/algorithm/iteration/detail/for_each.hpp new file mode 100644 index 00000000..5271517e --- /dev/null +++ b/include/boost/fusion/algorithm/iteration/detail/for_each.hpp @@ -0,0 +1,35 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_FOR_EACH_05052005_1028) +#define FUSION_FOR_EACH_05052005_1028 + +#include +#include +#include +#include + +namespace boost { namespace fusion { namespace detail +{ + template + inline void + for_each(First const&, Last const&, F const&, mpl::true_) + { + } + + template + inline void + for_each(First const& first, Last const& last, F const& f, mpl::false_) + { + f(*first); + detail::for_each(fusion::next(first), last, f + , result_of::equal_to::type, Last>()); + } +}}} + +#endif + diff --git a/include/boost/fusion/algorithm/iteration/fold.hpp b/include/boost/fusion/algorithm/iteration/fold.hpp new file mode 100644 index 00000000..2189203b --- /dev/null +++ b/include/boost/fusion/algorithm/iteration/fold.hpp @@ -0,0 +1,67 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_FOLD_05052005_1214) +#define FUSION_FOLD_05052005_1214 + +#include +#include +#include + +namespace boost { namespace fusion +{ + struct void_; + + namespace result_of + { + template + struct fold + { + typedef typename + detail::static_fold< + typename result_of::begin::type + , typename result_of::end::type + , State + , F + >::type + type; + }; + } + + template + inline typename result_of::fold::type + fold(Sequence& seq, State const& state, F const& f) + { + return detail::fold( + fusion::begin(seq) + , fusion::end(seq) + , state + , f + , is_same< + typename result_of::begin::type + , typename result_of::end::type>() + ); + } + + template + inline typename result_of::fold::type + fold(Sequence const& seq, State const& state, F const& f) + { + return detail::fold( + fusion::begin(seq) + , fusion::end(seq) + , state + , f + , is_same< + typename result_of::begin::type + , typename result_of::end::type>() + ); + } +}} + +#endif + diff --git a/include/boost/fusion/algorithm/iteration/for_each.hpp b/include/boost/fusion/algorithm/iteration/for_each.hpp new file mode 100644 index 00000000..4609bd2b --- /dev/null +++ b/include/boost/fusion/algorithm/iteration/for_each.hpp @@ -0,0 +1,55 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_FOR_EACH_05052005_1027) +#define FUSION_FOR_EACH_05052005_1027 + +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + namespace result_of + { + template + struct for_each + { + typedef void type; + }; + } + + template + inline void + for_each(Sequence& seq, F const& f) + { + detail::for_each( + fusion::begin(seq) + , fusion::end(seq) + , f + , result_of::equal_to< + typename result_of::begin::type + , typename result_of::end::type>()); + } + + template + inline void + for_each(Sequence const& seq, F const& f) + { + detail::for_each( + fusion::begin(seq) + , fusion::end(seq) + , f + , result_of::equal_to< + typename result_of::begin::type + , typename result_of::end::type>()); + } +}} + +#endif + diff --git a/include/boost/fusion/algorithm/query.hpp b/include/boost/fusion/algorithm/query.hpp new file mode 100644 index 00000000..7b826f6f --- /dev/null +++ b/include/boost/fusion/algorithm/query.hpp @@ -0,0 +1,19 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_ALGORITHM_QUERY_10022005_0549) +#define FUSION_ALGORITHM_QUERY_10022005_0549 + +#include +#include +#include +#include +#include +#include +#include + +#endif diff --git a/include/boost/fusion/algorithm/query/all.hpp b/include/boost/fusion/algorithm/query/all.hpp new file mode 100644 index 00000000..bd974f99 --- /dev/null +++ b/include/boost/fusion/algorithm/query/all.hpp @@ -0,0 +1,42 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_ALL_05052005_1238) +#define FUSION_ALL_05052005_1238 + +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + namespace result_of + { + template + struct all + { + typedef bool type; + }; + } + + template + inline bool + all(Sequence const& seq, F f) + { + return detail::all( + fusion::begin(seq) + , fusion::end(seq) + , f + , result_of::equal_to< + typename result_of::begin::type + , typename result_of::end::type>()); + } +}} + +#endif + diff --git a/include/boost/fusion/algorithm/query/any.hpp b/include/boost/fusion/algorithm/query/any.hpp new file mode 100644 index 00000000..fed72a58 --- /dev/null +++ b/include/boost/fusion/algorithm/query/any.hpp @@ -0,0 +1,43 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005 Eric Niebler + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_ANY_05052005_1230) +#define FUSION_ANY_05052005_1230 + +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + namespace result_of + { + template + struct any + { + typedef bool type; + }; + } + + template + inline bool + any(Sequence const& seq, F f) + { + return detail::any( + fusion::begin(seq) + , fusion::end(seq) + , f + , result_of::equal_to< + typename result_of::begin::type + , typename result_of::end::type>()); + } +}} + +#endif + diff --git a/include/boost/fusion/algorithm/query/count.hpp b/include/boost/fusion/algorithm/query/count.hpp new file mode 100644 index 00000000..19ca5766 --- /dev/null +++ b/include/boost/fusion/algorithm/query/count.hpp @@ -0,0 +1,46 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_COUNT_09162005_0150) +#define FUSION_COUNT_09162005_0150 + +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + namespace result_of + { + template + struct count + { + typedef int type; + }; + } + + template + inline int + count(Sequence const& seq, T const& x) + { + detail::count_compare f(x); + return detail::count_if( + fusion::begin(seq) + , fusion::end(seq) + , f + , result_of::equal_to< + typename result_of::begin::type + , typename result_of::end::type>()); + } +}} + +#endif + diff --git a/include/boost/fusion/algorithm/query/count_if.hpp b/include/boost/fusion/algorithm/query/count_if.hpp new file mode 100644 index 00000000..6c1221c4 --- /dev/null +++ b/include/boost/fusion/algorithm/query/count_if.hpp @@ -0,0 +1,42 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_COUNT_IF_09162005_0137) +#define FUSION_COUNT_IF_09162005_0137 + +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + namespace result_of + { + template + struct count_if + { + typedef int type; + }; + } + + template + inline int + count_if(Sequence const& seq, F f) + { + return detail::count_if( + fusion::begin(seq) + , fusion::end(seq) + , f + , result_of::equal_to< + typename result_of::begin::type + , typename result_of::end::type>()); + } +}} + +#endif + diff --git a/include/boost/fusion/algorithm/query/detail/Attic/none.hpp b/include/boost/fusion/algorithm/query/detail/Attic/none.hpp new file mode 100644 index 00000000..dfe2d1d3 --- /dev/null +++ b/include/boost/fusion/algorithm/query/detail/Attic/none.hpp @@ -0,0 +1,40 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_NONE_07062005_1126) +#define FUSION_NONE_07062005_1126 + +#include +#include +#include +#include + +namespace boost { namespace fusion { namespace detail +{ + template + inline bool + none(First const&, Last const&, F const&, mpl::true_) + { + return true; + } + + template + inline bool + none(First const& first, Last const& last, F& f, mpl::false_) + { + typename result_of::deref::type x = *first; + return !f(x) && + detail::none( + fusion::next(first) + , last + , f + , result_of::equal_to::type, Last>()); + } +}}} + +#endif + diff --git a/include/boost/fusion/algorithm/query/detail/all.hpp b/include/boost/fusion/algorithm/query/detail/all.hpp new file mode 100644 index 00000000..96101027 --- /dev/null +++ b/include/boost/fusion/algorithm/query/detail/all.hpp @@ -0,0 +1,40 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_ALL_05052005_1237) +#define FUSION_ALL_05052005_1237 + +#include +#include +#include +#include + +namespace boost { namespace fusion { namespace detail +{ + template + inline bool + all(First const&, Last const&, F const&, mpl::true_) + { + return true; + } + + template + inline bool + all(First const& first, Last const& last, F& f, mpl::false_) + { + typename result_of::deref::type x = *first; + return f(x) && + detail::all( + fusion::next(first) + , last + , f + , result_of::equal_to::type, Last>()); + } +}}} + +#endif + diff --git a/include/boost/fusion/algorithm/query/detail/any.hpp b/include/boost/fusion/algorithm/query/detail/any.hpp new file mode 100644 index 00000000..2cbdcdd6 --- /dev/null +++ b/include/boost/fusion/algorithm/query/detail/any.hpp @@ -0,0 +1,41 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005 Eric Niebler + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_ANY_05052005_1229) +#define FUSION_ANY_05052005_1229 + +#include +#include +#include +#include + +namespace boost { namespace fusion { namespace detail +{ + template + inline bool + any(First const&, Last const&, F const&, mpl::true_) + { + return false; + } + + template + inline bool + any(First const& first, Last const& last, F& f, mpl::false_) + { + typename result_of::deref::type x = *first; + return f(x) || + detail::any( + fusion::next(first) + , last + , f + , result_of::equal_to::type, Last>()); + } +}}} + +#endif + diff --git a/include/boost/fusion/algorithm/query/detail/assoc_find.hpp b/include/boost/fusion/algorithm/query/detail/assoc_find.hpp new file mode 100644 index 00000000..8e4e4920 --- /dev/null +++ b/include/boost/fusion/algorithm/query/detail/assoc_find.hpp @@ -0,0 +1,36 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_ASSOC_FIND_09242005_1133) +#define FUSION_ASSOC_FIND_09242005_1133 + +#include +#include +#include + +namespace boost { namespace fusion { namespace detail +{ + template + struct assoc_find + { + typedef typename + mpl::if_< + is_const + , typename Sequence::template meta_find_impl_const::type + , typename Sequence::template meta_find_impl::type + >::type + type; + + static type + call(Sequence& s) + { + return s.find_impl(mpl::identity()); + } + }; +}}} + +#endif diff --git a/include/boost/fusion/algorithm/query/detail/count.hpp b/include/boost/fusion/algorithm/query/detail/count.hpp new file mode 100644 index 00000000..e9060044 --- /dev/null +++ b/include/boost/fusion/algorithm/query/detail/count.hpp @@ -0,0 +1,69 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_COUNT_09162005_0158) +#define FUSION_COUNT_09162005_0158 + +#include +#include +#include + +namespace boost { namespace fusion { namespace detail +{ + template + struct compare_convertible; + + // T1 is convertible to T2 or vice versa + template <> + struct compare_convertible + { + template + static bool + call(T1 const& x, T2 const& y) + { + return x == y; + } + }; + + // T1 is NOT convertible to T2 NOR vice versa + template <> + struct compare_convertible + { + template + static bool + call(T1 const&, T2 const&) + { + return false; + } + }; + + template + struct count_compare + { + typedef typename detail::call_param::type param; + count_compare(param x) + : x(x) {} + + template + bool + operator()(T2 const& y) + { + return + compare_convertible< + mpl::or_< + is_convertible + , is_convertible + >::value + >::call(x, y); + } + + param x; + }; +}}} + +#endif + diff --git a/include/boost/fusion/algorithm/query/detail/count_if.hpp b/include/boost/fusion/algorithm/query/detail/count_if.hpp new file mode 100644 index 00000000..bd9fdf44 --- /dev/null +++ b/include/boost/fusion/algorithm/query/detail/count_if.hpp @@ -0,0 +1,43 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_COUNT_IF_09162005_0141) +#define FUSION_COUNT_IF_09162005_0141 + +#include +#include +#include +#include + +namespace boost { namespace fusion { namespace detail +{ + template + inline int + count_if(First const&, Last const&, F const&, mpl::true_) + { + return 0; + } + + template + inline int + count_if(First const& first, Last const& last, F& f, mpl::false_) + { + typename result_of::deref::type x = *first; + int n = + detail::count_if( + fusion::next(first) + , last + , f + , result_of::equal_to::type, Last>()); + if (f(x)) + ++n; + return n; + } +}}} + +#endif + diff --git a/include/boost/fusion/algorithm/query/detail/find_if.hpp b/include/boost/fusion/algorithm/query/detail/find_if.hpp new file mode 100644 index 00000000..1707b37d --- /dev/null +++ b/include/boost/fusion/algorithm/query/detail/find_if.hpp @@ -0,0 +1,119 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_FIND_IF_05052005_1107) +#define FUSION_FIND_IF_05052005_1107 + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion { namespace detail +{ + template + struct apply_filter + { + typedef typename + mpl::apply1< + Pred + , typename result_of::value_of::type + >::type + type; + }; + + template + struct main_find_if; + + template + struct recursive_find_if + { + typedef typename + main_find_if< + typename result_of::next::type, Last, Pred + >::type + type; + }; + + template + struct main_find_if + { + typedef mpl::or_< + result_of::equal_to + , apply_filter > + filter; + + typedef typename + mpl::eval_if< + filter + , mpl::identity + , recursive_find_if + >::type + type; + }; + + template + struct static_find_if + { + typedef typename + main_find_if< + First + , Last + , typename mpl::lambda::type + >::type + type; + + template + static type + call(Iterator const& iter, mpl::true_) + { + return iter; + } + + template + static type + call(Iterator const& iter, mpl::false_) + { + return call(fusion::next(iter)); + } + + template + static type + call(Iterator const& iter) + { + typedef result_of::equal_to found; + return call(iter, found()); + } + }; + + template + struct static_seq_find_if : static_find_if + { + typedef typename static_find_if::type type; + + template + static type + call(Sequence const& seq) + { + return static_find_if::call(fusion::begin(seq)); + } + + template + static type + call(Sequence& seq) + { + return static_find_if::call(fusion::begin(seq)); + } + }; +}}} + +#endif diff --git a/include/boost/fusion/algorithm/query/detail/none.hpp b/include/boost/fusion/algorithm/query/detail/none.hpp new file mode 100644 index 00000000..dfe2d1d3 --- /dev/null +++ b/include/boost/fusion/algorithm/query/detail/none.hpp @@ -0,0 +1,40 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_NONE_07062005_1126) +#define FUSION_NONE_07062005_1126 + +#include +#include +#include +#include + +namespace boost { namespace fusion { namespace detail +{ + template + inline bool + none(First const&, Last const&, F const&, mpl::true_) + { + return true; + } + + template + inline bool + none(First const& first, Last const& last, F& f, mpl::false_) + { + typename result_of::deref::type x = *first; + return !f(x) && + detail::none( + fusion::next(first) + , last + , f + , result_of::equal_to::type, Last>()); + } +}}} + +#endif + diff --git a/include/boost/fusion/algorithm/query/find.hpp b/include/boost/fusion/algorithm/query/find.hpp new file mode 100644 index 00000000..7bb74413 --- /dev/null +++ b/include/boost/fusion/algorithm/query/find.hpp @@ -0,0 +1,76 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_FIND_05052005_1107) +#define FUSION_FIND_05052005_1107 + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct associative_sequence_tag; + + namespace result_of + { + template < + typename Sequence + , typename T + , bool is_associative_sequence = traits::is_associative::value > + struct find; + + template + struct find + { + typedef + detail::static_seq_find_if< + typename result_of::begin::type + , typename result_of::end::type + , is_same + > + filter; + + typedef typename filter::type type; + }; + + template + struct find + { + typedef detail::assoc_find filter; + typedef typename filter::type type; + }; + } + + template + inline typename + lazy_disable_if< + is_const + , result_of::find + >::type + find(Sequence& seq) + { + typedef typename result_of::find::filter filter; + return filter::call(seq); + } + + template + inline typename result_of::find::type + find(Sequence const& seq) + { + typedef typename result_of::find::filter filter; + return filter::call(seq); + } +}} + +#endif + diff --git a/include/boost/fusion/algorithm/query/find_if.hpp b/include/boost/fusion/algorithm/query/find_if.hpp new file mode 100644 index 00000000..05da4bfb --- /dev/null +++ b/include/boost/fusion/algorithm/query/find_if.hpp @@ -0,0 +1,70 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_FIND_IF_05052005_1108) +#define FUSION_FIND_IF_05052005_1108 + +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + namespace result_of + { + template + struct find_if + { + typedef typename + detail::static_find_if< + typename result_of::begin::type + , typename result_of::end::type + , Pred + >::type + type; + }; + } + + template + inline typename + lazy_disable_if< + is_const + , result_of::find_if + >::type + find_if(Sequence& seq) + { + typedef + detail::static_find_if< + typename result_of::begin::type + , typename result_of::end::type + , Pred + > + filter; + + return filter::call(fusion::begin(seq)); + } + + template + inline typename result_of::find_if::type + find_if(Sequence const& seq) + { + typedef + detail::static_find_if< + typename result_of::begin::type + , typename result_of::end::type + , Pred + > + filter; + + return filter::call(fusion::begin(seq)); + } +}} + +#endif + diff --git a/include/boost/fusion/algorithm/query/none.hpp b/include/boost/fusion/algorithm/query/none.hpp new file mode 100644 index 00000000..15483d36 --- /dev/null +++ b/include/boost/fusion/algorithm/query/none.hpp @@ -0,0 +1,42 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_NONE_07062005_1128) +#define FUSION_NONE_07062005_1128 + +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + namespace result_of + { + template + struct none + { + typedef bool type; + }; + } + + template + inline bool + none(Sequence const& seq, F f) + { + return detail::none( + fusion::begin(seq) + , fusion::end(seq) + , f + , result_of::equal_to< + typename result_of::begin::type + , typename result_of::end::type>()); + } +}} + +#endif + diff --git a/include/boost/fusion/algorithm/transformation.hpp b/include/boost/fusion/algorithm/transformation.hpp new file mode 100644 index 00000000..da76e995 --- /dev/null +++ b/include/boost/fusion/algorithm/transformation.hpp @@ -0,0 +1,29 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_ALGORITHM_TRANSFORMATION_10022005_0551) +#define FUSION_ALGORITHM_TRANSFORMATION_10022005_0551 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#endif diff --git a/include/boost/fusion/algorithm/transformation/clear.hpp b/include/boost/fusion/algorithm/transformation/clear.hpp new file mode 100644 index 00000000..f35232cc --- /dev/null +++ b/include/boost/fusion/algorithm/transformation/clear.hpp @@ -0,0 +1,33 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_CLEAR_09172005_1127) +#define FUSION_CLEAR_09172005_1127 + +#include + +namespace boost { namespace fusion +{ + namespace result_of + { + template + struct clear + { + typedef vector0 type; + }; + } + + template + inline typename result_of::clear::type + clear(Sequence const& seq) + { + return vector0(); + } +}} + +#endif + diff --git a/include/boost/fusion/algorithm/transformation/detail/replace.hpp b/include/boost/fusion/algorithm/transformation/detail/replace.hpp new file mode 100644 index 00000000..816ca027 --- /dev/null +++ b/include/boost/fusion/algorithm/transformation/detail/replace.hpp @@ -0,0 +1,69 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_REPLACE_08182005_0841) +#define FUSION_REPLACE_08182005_0841 + +#include +#include + +namespace boost { namespace fusion { namespace detail +{ + template + struct replacer_helper; + + template <> + struct replacer_helper + { + template + static U& + call(U& x, T const&, T const&) + { + return x; + } + }; + + template <> + struct replacer_helper + { + template + static U + call(U& x, T const& old_value, T const& new_value) + { + return (x == old_value) ? new_value : x; + } + }; + + template + struct replacer + { + replacer(T const& old_value, T const& new_value) + : old_value(old_value), new_value(new_value) {} + + template + struct result + { + typedef typename + mpl::if_, U, U const&>::type + type; + }; + + template + typename result::type + operator()(U const& x) const + { + return replacer_helper::value>:: + call(x, old_value, new_value); + } + + T old_value; + T new_value; + }; +}}} + +#endif + diff --git a/include/boost/fusion/algorithm/transformation/detail/replace_if.hpp b/include/boost/fusion/algorithm/transformation/detail/replace_if.hpp new file mode 100644 index 00000000..9bd616d8 --- /dev/null +++ b/include/boost/fusion/algorithm/transformation/detail/replace_if.hpp @@ -0,0 +1,69 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_REPLACE_IF_08182005_0946) +#define FUSION_REPLACE_IF_08182005_0946 + +#include +#include + +namespace boost { namespace fusion { namespace detail +{ + template + struct replacer_if_helper; + + template <> + struct replacer_if_helper + { + template + static U& + call(U& x, F&, T const&) + { + return x; + } + }; + + template <> + struct replacer_if_helper + { + template + static U + call(U& x, F& f, T const& new_value) + { + return f(x) ? new_value : x; + } + }; + + template + struct replacer_if + { + replacer_if(F f, T const& new_value) + : f(f), new_value(new_value) {} + + template + struct result + { + typedef typename + mpl::if_, U, U const&>::type + type; + }; + + template + typename result::type + operator()(U const& x) const + { + return replacer_if_helper::value>:: + call(x, f, new_value); + } + + F f; + T new_value; + }; +}}} + +#endif + diff --git a/include/boost/fusion/algorithm/transformation/erase.hpp b/include/boost/fusion/algorithm/transformation/erase.hpp new file mode 100644 index 00000000..091c63b4 --- /dev/null +++ b/include/boost/fusion/algorithm/transformation/erase.hpp @@ -0,0 +1,108 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_ERASE_07232005_0534) +#define FUSION_ERASE_07232005_0534 + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + namespace result_of + { + template + struct compute_erase_last // put this in detail!!! + { + typedef typename result_of::end::type seq_last_type; + typedef typename convert_iterator::type first_type; + typedef typename + mpl::if_< + result_of::equal_to + , first_type + , typename result_of::next::type + >::type + type; + + static type + call(First const& first, mpl::false_) + { + return fusion::next(convert_iterator::call(first)); + } + + static type + call(First const& first, mpl::true_) + { + return convert_iterator::call(first); + } + + static type + call(First const& first) + { + return call(first, result_of::equal_to()); + } + }; + + template < + typename Sequence + , typename First + , typename Last = typename compute_erase_last::type> + struct erase + { + typedef typename result_of::begin::type seq_first_type; + typedef typename result_of::end::type seq_last_type; + BOOST_STATIC_ASSERT((!result_of::equal_to::value)); + + typedef typename convert_iterator::type first_type; + typedef typename convert_iterator::type last_type; + typedef iterator_range left_type; + typedef iterator_range right_type; + typedef joint_view type; + }; + } + + template + typename result_of::erase::type + erase(Sequence const& seq, First const& first) + { + typedef result_of::erase result_of; + typedef typename result_of::left_type left_type; + typedef typename result_of::right_type right_type; + typedef typename result_of::type result_type; + + left_type left( + fusion::begin(seq) + , convert_iterator::call(first)); + right_type right( + fusion::result_of::compute_erase_last::call(first) + , fusion::end(seq)); + return result_type(left, right); + } + + template + typename result_of::erase::type + erase(Sequence const& seq, First const& first, Last const& last) + { + typedef result_of::erase result_of; + typedef typename result_of::left_type left_type; + typedef typename result_of::right_type right_type; + typedef typename result_of::type result_type; + + left_type left(fusion::begin(seq), first); + right_type right(last, fusion::end(seq)); + return result_type(left, right); + } +}} + +#endif + diff --git a/include/boost/fusion/algorithm/transformation/erase_key.hpp b/include/boost/fusion/algorithm/transformation/erase_key.hpp new file mode 100644 index 00000000..ee9ec508 --- /dev/null +++ b/include/boost/fusion/algorithm/transformation/erase_key.hpp @@ -0,0 +1,38 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_ERASE_KEY_10022005_1851) +#define FUSION_ERASE_KEY_10022005_1851 + +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + namespace result_of + { + template + struct erase_key + { + typedef detail::assoc_find filter; + typedef typename erase::type type; + }; + } + + template + inline typename result_of::erase_key::type + erase_key(Sequence const& seq) + { + typedef typename result_of::erase_key::filter filter; + return erase(seq, filter::call(seq)); + } +}} + +#endif + diff --git a/include/boost/fusion/algorithm/transformation/filter.hpp b/include/boost/fusion/algorithm/transformation/filter.hpp new file mode 100644 index 00000000..235c2e9b --- /dev/null +++ b/include/boost/fusion/algorithm/transformation/filter.hpp @@ -0,0 +1,35 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_FILTER_02122005_1839) +#define FUSION_FILTER_02122005_1839 + +#include +#include + +namespace boost { namespace fusion +{ + namespace result_of + { + template + struct filter + { + typedef filter_view > type; + }; + } + + template + inline typename result_of::filter::type + filter(Sequence const& seq) + { + return filter_view >(seq); + } +}} + +#endif + diff --git a/include/boost/fusion/algorithm/transformation/filter_if.hpp b/include/boost/fusion/algorithm/transformation/filter_if.hpp new file mode 100644 index 00000000..1f9f9325 --- /dev/null +++ b/include/boost/fusion/algorithm/transformation/filter_if.hpp @@ -0,0 +1,33 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_FILTER_IF_07172005_0818) +#define FUSION_FILTER_IF_07172005_0818 + +#include + +namespace boost { namespace fusion +{ + namespace result_of + { + template + struct filter_if + { + typedef filter_view type; + }; + } + + template + inline typename result_of::filter_if::type + filter_if(Sequence const& seq) + { + return filter_view(seq); + } +}} + +#endif + diff --git a/include/boost/fusion/algorithm/transformation/insert.hpp b/include/boost/fusion/algorithm/transformation/insert.hpp new file mode 100644 index 00000000..b91e459d --- /dev/null +++ b/include/boost/fusion/algorithm/transformation/insert.hpp @@ -0,0 +1,63 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_INSERT_07222005_0730) +#define FUSION_INSERT_07222005_0730 + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + namespace result_of + { + template + struct insert + { + typedef typename detail::as_fusion_element::type element_type; + typedef typename convert_iterator::type pos_type; + typedef typename result_of::begin::type first_type; + typedef typename result_of::end::type last_type; + + typedef iterator_range left_type; + typedef iterator_range right_type; + typedef single_view single_view; + typedef joint_view left_insert_type; + typedef joint_view type; + }; + } + + template + inline typename result_of::insert< + Sequence const, Position, T>::type + insert(Sequence const& seq, Position const& pos, T const& x) + { + typedef result_of::insert< + Sequence const, Position, T> + result_of; + typedef typename result_of::left_type left_type; + typedef typename result_of::right_type right_type; + typedef typename result_of::single_view single_view; + typedef typename result_of::left_insert_type left_insert_type; + typedef typename result_of::type result; + + left_type left(fusion::begin(seq), convert_iterator::call(pos)); + right_type right(convert_iterator::call(pos), fusion::end(seq)); + single_view insert(x); + left_insert_type left_insert(left, insert); + return result(left_insert, right); + } +}} + +#endif + diff --git a/include/boost/fusion/algorithm/transformation/insert_range.hpp b/include/boost/fusion/algorithm/transformation/insert_range.hpp new file mode 100644 index 00000000..735b8857 --- /dev/null +++ b/include/boost/fusion/algorithm/transformation/insert_range.hpp @@ -0,0 +1,55 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_INSERT_RANGE_009172005_1147) +#define FUSION_INSERT_RANGE_009172005_1147 + +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + namespace result_of + { + template + struct insert_range + { + typedef typename convert_iterator::type pos_type; + typedef typename result_of::begin::type first_type; + typedef typename result_of::end::type last_type; + + typedef iterator_range left_type; + typedef iterator_range right_type; + typedef joint_view left_insert_type; + typedef joint_view type; + }; + } + + template + inline typename result_of::insert_range::type + insert_range(Sequence const& seq, Position const& pos, Range const& range) + { + typedef result_of::insert_range result_of; + typedef typename result_of::left_type left_type; + typedef typename result_of::right_type right_type; + typedef typename result_of::left_insert_type left_insert_type; + typedef typename result_of::type result; + + left_type left(fusion::begin(seq), convert_iterator::call(pos)); + right_type right(convert_iterator::call(pos), fusion::end(seq)); + left_insert_type left_insert(left, range); + return result(left_insert, right); + } +}} + +#endif + diff --git a/include/boost/fusion/algorithm/transformation/join.hpp b/include/boost/fusion/algorithm/transformation/join.hpp new file mode 100644 index 00000000..4228a77f --- /dev/null +++ b/include/boost/fusion/algorithm/transformation/join.hpp @@ -0,0 +1,34 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_JOIN_200601222109) +#define FUSION_JOIN_200601222109 + +#include + +namespace boost { namespace fusion { + + namespace result_of + { + template + struct join + { + typedef joint_view type; + }; + } + + template + inline typename result_of::join::type + join(LhSequence const& lhs, RhSequence const& rhs) + { + return typename result_of::join::type( + lhs, rhs); + } +}} + +#endif diff --git a/include/boost/fusion/algorithm/transformation/pop_back.hpp b/include/boost/fusion/algorithm/transformation/pop_back.hpp new file mode 100644 index 00000000..688c36cd --- /dev/null +++ b/include/boost/fusion/algorithm/transformation/pop_back.hpp @@ -0,0 +1,44 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_POP_BACK_09172005_1038) +#define FUSION_POP_BACK_09172005_1038 + +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + namespace result_of + { + template + struct pop_back + { + typedef + iterator_range< + typename begin::type + , typename prior< + typename end::type + >::type + > + type; + }; + } + + template + inline typename result_of::pop_back::type + pop_back(Sequence const& seq) + { + typedef typename result_of::pop_back::type result; + return result(fusion::begin(seq), fusion::prior(fusion::end(seq))); + } +}} + +#endif + diff --git a/include/boost/fusion/algorithm/transformation/pop_front.hpp b/include/boost/fusion/algorithm/transformation/pop_front.hpp new file mode 100644 index 00000000..e9a16d77 --- /dev/null +++ b/include/boost/fusion/algorithm/transformation/pop_front.hpp @@ -0,0 +1,44 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_POP_FRONT_09172005_1115) +#define FUSION_POP_FRONT_09172005_1115 + +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + namespace result_of + { + template + struct pop_front + { + typedef + iterator_range< + typename next< + typename begin::type + >::type + , typename end::type + > + type; + }; + } + + template + inline typename result_of::pop_front::type + pop_front(Sequence const& seq) + { + typedef typename result_of::pop_front::type result; + return result(fusion::next(fusion::begin(seq)), fusion::end(seq)); + } +}} + +#endif + diff --git a/include/boost/fusion/algorithm/transformation/push_back.hpp b/include/boost/fusion/algorithm/transformation/push_back.hpp new file mode 100644 index 00000000..9312b52a --- /dev/null +++ b/include/boost/fusion/algorithm/transformation/push_back.hpp @@ -0,0 +1,40 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_PUSH_BACK_07162005_0235) +#define FUSION_PUSH_BACK_07162005_0235 + +#include +#include +#include + +namespace boost { namespace fusion +{ + namespace result_of + { + template + struct push_back + { + typedef single_view::type> single_view; + typedef joint_view type; + }; + } + + template + inline typename result_of::push_back::type + push_back(Sequence const& seq, T const& x) + { + typedef typename result_of::push_back push_back; + typedef typename push_back::single_view single_view; + typedef typename push_back::type result; + single_view x_(x); + return result(seq, x_); + } +}} + +#endif + diff --git a/include/boost/fusion/algorithm/transformation/push_front.hpp b/include/boost/fusion/algorithm/transformation/push_front.hpp new file mode 100644 index 00000000..1a0a343c --- /dev/null +++ b/include/boost/fusion/algorithm/transformation/push_front.hpp @@ -0,0 +1,40 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_PUSH_FRONT_07162005_0749) +#define FUSION_PUSH_FRONT_07162005_0749 + +#include +#include +#include + +namespace boost { namespace fusion +{ + namespace result_of + { + template + struct push_front + { + typedef single_view::type> single_view; + typedef joint_view type; + }; + } + + template + inline typename result_of::push_front::type + push_front(Sequence const& seq, T const& x) + { + typedef typename result_of::push_front push_front; + typedef typename push_front::single_view single_view; + typedef typename push_front::type result; + single_view x_(x); + return result(x_, seq); + } +}} + +#endif + diff --git a/include/boost/fusion/algorithm/transformation/remove.hpp b/include/boost/fusion/algorithm/transformation/remove.hpp new file mode 100644 index 00000000..fce97b70 --- /dev/null +++ b/include/boost/fusion/algorithm/transformation/remove.hpp @@ -0,0 +1,36 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_REMOVE_07162005_0818) +#define FUSION_REMOVE_07162005_0818 + +#include +#include +#include + +namespace boost { namespace fusion +{ + namespace result_of + { + template + struct remove + { + typedef filter_view > > type; + }; + } + + template + inline typename result_of::remove::type + remove(Sequence const& seq) + { + typedef typename result_of::remove::type result_type; + return result_type(seq); + } +}} + +#endif + diff --git a/include/boost/fusion/algorithm/transformation/remove_if.hpp b/include/boost/fusion/algorithm/transformation/remove_if.hpp new file mode 100644 index 00000000..9660acd6 --- /dev/null +++ b/include/boost/fusion/algorithm/transformation/remove_if.hpp @@ -0,0 +1,36 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_REMOVE_IF_07162005_0818) +#define FUSION_REMOVE_IF_07162005_0818 + +#include +#include +#include + +namespace boost { namespace fusion +{ + namespace result_of + { + template + struct remove_if + { + typedef filter_view > type; + }; + } + + template + inline typename result_of::remove_if::type + remove_if(Sequence const& seq) + { + typedef typename result_of::remove_if::type result_type; + return result_type(seq); + } +}} + +#endif + diff --git a/include/boost/fusion/algorithm/transformation/replace.hpp b/include/boost/fusion/algorithm/transformation/replace.hpp new file mode 100644 index 00000000..59a851e6 --- /dev/null +++ b/include/boost/fusion/algorithm/transformation/replace.hpp @@ -0,0 +1,36 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_REPLACE_08182005_0830) +#define FUSION_REPLACE_08182005_0830 + +#include +#include + +namespace boost { namespace fusion +{ + namespace result_of + { + template + struct replace + { + typedef transform_view > type; + }; + } + + template + inline typename result_of::replace::type + replace(Sequence const& seq, T const& old_value, T const& new_value) + { + typedef typename result_of::replace::type result; + detail::replacer f(old_value, new_value); + return result(seq, f); + } +}} + +#endif + diff --git a/include/boost/fusion/algorithm/transformation/replace_if.hpp b/include/boost/fusion/algorithm/transformation/replace_if.hpp new file mode 100644 index 00000000..090f4dbe --- /dev/null +++ b/include/boost/fusion/algorithm/transformation/replace_if.hpp @@ -0,0 +1,38 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_REPLACE_IF_08182005_0939) +#define FUSION_REPLACE_IF_08182005_0939 + +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + namespace result_of + { + template + struct replace_if + { + typedef transform_view > type; + }; + } + + template + inline typename result_of::replace_if::type + replace_if(Sequence const& seq, F pred, T const& new_value) + { + typedef typename result_of::replace_if::type result; + detail::replacer_if f(pred, new_value); + return result(seq, f); + } +}} + +#endif + diff --git a/include/boost/fusion/algorithm/transformation/reverse.hpp b/include/boost/fusion/algorithm/transformation/reverse.hpp new file mode 100644 index 00000000..75ecfe6a --- /dev/null +++ b/include/boost/fusion/algorithm/transformation/reverse.hpp @@ -0,0 +1,33 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_REVERSE_07212005_1230) +#define FUSION_REVERSE_07212005_1230 + +#include + +namespace boost { namespace fusion +{ + namespace result_of + { + template + struct reverse + { + typedef reverse_view type; + }; + } + + template + inline reverse_view + reverse(Sequence const& view) + { + return reverse_view(view); + } +}} + +#endif + diff --git a/include/boost/fusion/algorithm/transformation/transform.hpp b/include/boost/fusion/algorithm/transformation/transform.hpp new file mode 100644 index 00000000..c1d56e6b --- /dev/null +++ b/include/boost/fusion/algorithm/transformation/transform.hpp @@ -0,0 +1,48 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_TRANSFORM_07052005_1057) +#define FUSION_TRANSFORM_07052005_1057 + +#include + +namespace boost { namespace fusion +{ + struct void_; + + namespace result_of + { + template + struct transform + { + typedef transform_view type; + }; + + template + struct transform + { + typedef transform_view type; + }; + } + + template + inline typename result_of::transform::type + transform(Sequence const& seq, F f) + { + return transform_view(seq, f); + } + + template + inline typename result_of::transform::type + transform(Sequence1 const& seq1, Sequence2 const& seq2, F f) + { + return transform_view(seq1, seq2, f); + } +}} + +#endif + diff --git a/include/boost/fusion/algorithm/transformation/zip.hpp b/include/boost/fusion/algorithm/transformation/zip.hpp new file mode 100644 index 00000000..a20a6cc3 --- /dev/null +++ b/include/boost/fusion/algorithm/transformation/zip.hpp @@ -0,0 +1,80 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#ifndef BOOST_PP_IS_ITERATING +#if !defined(FUSION_ZIP_HPP_20060125_2058) +#define FUSION_ZIP_HPP_20060125_2058 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if !defined(FUSION_MAX_ZIP_SEQUENCES) +#define FUSION_MAX_ZIP_SEQUENCES 10 +#endif + +namespace boost { namespace fusion { + + struct void_; + + namespace result_of + { + template + struct zip; + } + +#define BOOST_PP_FILENAME_1 \ + +#define BOOST_PP_ITERATION_LIMITS (2, FUSION_MAX_ZIP_SEQUENCES) +#include BOOST_PP_ITERATE() + +}} + +#endif + +#else + +#define ZIP_ITERATION BOOST_PP_ITERATION() + + namespace result_of + { + template< BOOST_PP_ENUM_PARAMS(ZIP_ITERATION, typename T) > + struct zip< BOOST_PP_ENUM_PARAMS(ZIP_ITERATION, T) > + { + typedef mpl::vector< BOOST_PP_ENUM_PARAMS(ZIP_ITERATION, T) > sequences; + typedef typename mpl::transform >::type ref_params; + typedef zip_view::type> type; + }; + } + +#define FUSION_REF_PARAM(z, n, data) const T ## n& + + template + inline typename result_of::zip::type + zip(BOOST_PP_ENUM_BINARY_PARAMS(ZIP_ITERATION, T, const& t)) + { + fusion::vector seqs( + BOOST_PP_ENUM_PARAMS(ZIP_ITERATION, t)); + return typename result_of::zip::type( + seqs); + } + +#undef FUSION_REF_PARAM +#undef ZIP_ITERATION + +#endif diff --git a/include/boost/fusion/iterator.hpp b/include/boost/fusion/iterator.hpp new file mode 100644 index 00000000..48083ddf --- /dev/null +++ b/include/boost/fusion/iterator.hpp @@ -0,0 +1,20 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_ITERATOR_10022005_0559) +#define FUSION_ITERATOR_10022005_0559 + +#include +#include +#include +#include +#include +#include +#include +#include + +#endif diff --git a/include/boost/fusion/iterator/advance.hpp b/include/boost/fusion/iterator/advance.hpp new file mode 100644 index 00000000..8cde48db --- /dev/null +++ b/include/boost/fusion/iterator/advance.hpp @@ -0,0 +1,72 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_ADVANCE_09172005_1146) +#define FUSION_ADVANCE_09172005_1146 + +#include +#include + +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct random_access_traversal_tag; + + namespace extension + { + template + struct advance_impl + { + // default implementation + template + struct apply : + mpl::if_c< + (N::value > 0) + , advance_detail::forward + , advance_detail::backward + >::type + { + typedef typename traits::category_of::type category; + BOOST_MPL_ASSERT_NOT((is_same)); + }; + }; + } + + namespace result_of + { + template + struct advance_c + : extension::advance_impl::type>::template apply > + {}; + + template + struct advance + : extension::advance_impl::type>::template apply + {}; + } + + template + inline typename result_of::advance_c::type + advance_c(Iterator const& i) + { + return result_of::advance_c::call(i); + } + + template + inline typename result_of::advance::type + advance(Iterator const& i) + { + return result_of::advance::call(i); + } + +}} // namespace boost::fusion + +#endif diff --git a/include/boost/fusion/iterator/deref.hpp b/include/boost/fusion/iterator/deref.hpp new file mode 100644 index 00000000..9819e034 --- /dev/null +++ b/include/boost/fusion/iterator/deref.hpp @@ -0,0 +1,52 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_DEREF_05042005_1019) +#define FUSION_DEREF_05042005_1019 + +#include +#include + +namespace boost { namespace fusion +{ + namespace extension + { + template + struct deref_impl + { + template + struct apply {}; + }; + } + + namespace result_of + { + template + struct deref + : extension::deref_impl::type>:: + template apply + {}; + } + + template + typename result_of::deref::type + deref(Iterator const& i) + { + typedef result_of::deref deref_meta; + typename deref_meta::type result(deref_meta::call(i)); + return result; + } + + template + typename result_of::deref::type + operator*(iterator_base const& i) + { + return fusion::deref(i.cast()); + } +}} + +#endif diff --git a/include/boost/fusion/iterator/detail/adapt_deref_traits.hpp b/include/boost/fusion/iterator/detail/adapt_deref_traits.hpp new file mode 100644 index 00000000..1bfe5d63 --- /dev/null +++ b/include/boost/fusion/iterator/detail/adapt_deref_traits.hpp @@ -0,0 +1,35 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_ADAPT_DEREF_TRAITS_05062005_0900) +#define FUSION_ADAPT_DEREF_TRAITS_05062005_0900 + +#include + +namespace boost { namespace fusion { namespace detail +{ + struct adapt_deref_traits + { + template + struct apply + { + typedef typename + result_of::deref::type + type; + + static type + call(Iterator const& i) + { + return *i.first; + } + }; + }; +}}} + +#endif + + diff --git a/include/boost/fusion/iterator/detail/adapt_value_traits.hpp b/include/boost/fusion/iterator/detail/adapt_value_traits.hpp new file mode 100644 index 00000000..60bf9cd3 --- /dev/null +++ b/include/boost/fusion/iterator/detail/adapt_value_traits.hpp @@ -0,0 +1,29 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_ADAPT_VALUE_TRAITS_05062005_0859) +#define FUSION_ADAPT_VALUE_TRAITS_05062005_0859 + +#include + +namespace boost { namespace fusion { namespace detail +{ + struct adapt_value_traits + { + template + struct apply + { + typedef typename + result_of::value_of::type + type; + }; + }; +}}} + +#endif + + diff --git a/include/boost/fusion/iterator/detail/advance.hpp b/include/boost/fusion/iterator/detail/advance.hpp new file mode 100644 index 00000000..37792371 --- /dev/null +++ b/include/boost/fusion/iterator/detail/advance.hpp @@ -0,0 +1,103 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_ADVANCE_09172005_1149) +#define FUSION_ADVANCE_09172005_1149 + +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion { namespace advance_detail +{ + // Default advance implementation, perform next(i) + // or prior(i) N times. + + template + struct forward; + + template + struct next_forward + { + typedef typename + forward< + typename result_of::next::type + , N-1 + >::type + type; + }; + + template + struct forward + { + typedef typename + mpl::eval_if_c< + (N == 0) + , mpl::identity + , next_forward + >::type + type; + + static type const& + call(type const& i) + { + return i; + } + + template + static type + call(I const& i) + { + return call(fusion::next(i)); + } + }; + + template + struct backward; + + template + struct next_backward + { + typedef typename + backward< + typename result_of::prior::type + , N+1 + >::type + type; + }; + + template + struct backward + { + typedef typename + mpl::eval_if_c< + (N == 0) + , mpl::identity + , next_backward + >::type + type; + + static type const& + call(type const& i) + { + return i; + } + + template + static type + call(I const& i) + { + return call(fusion::prior(i)); + } + }; + +}}} + +#endif diff --git a/include/boost/fusion/iterator/detail/distance.hpp b/include/boost/fusion/iterator/detail/distance.hpp new file mode 100644 index 00000000..d41d4c2e --- /dev/null +++ b/include/boost/fusion/iterator/detail/distance.hpp @@ -0,0 +1,66 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_DISTANCE_09172005_0730) +#define FUSION_DISTANCE_09172005_0730 + +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion { namespace distance_detail +{ + // Default distance implementation, linear + // search for the Last iterator. + + template + struct linear_distance; + + template + struct next_distance + { + typedef typename + mpl::next< + typename linear_distance< + typename result_of::next::type + , Last + >::type + >::type + type; + }; + + template + struct linear_distance + : mpl::eval_if< + result_of::equal_to + , mpl::identity > + , next_distance + >::type + { + typedef typename + mpl::eval_if< + result_of::equal_to + , mpl::identity > + , next_distance + >::type + type; + + static type + call(First const&, Last const&) + { + static type result; + return result; + } + }; + +}}} + +#endif diff --git a/include/boost/fusion/iterator/distance.hpp b/include/boost/fusion/iterator/distance.hpp new file mode 100644 index 00000000..c77a28ab --- /dev/null +++ b/include/boost/fusion/iterator/distance.hpp @@ -0,0 +1,58 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_DISTANCE_09172005_0721) +#define FUSION_DISTANCE_09172005_0721 + +#include +#include + +#include +#include +#include + +#include + +namespace boost { namespace fusion +{ + struct random_access_traversal_tag; + + namespace extension + { + template + struct distance_impl + { + // default implementation + template + struct apply : distance_detail::linear_distance + { + typedef typename traits::category_of::type first_category; + typedef typename traits::category_of::type last_category; + BOOST_MPL_ASSERT((is_same)); + BOOST_MPL_ASSERT_NOT((is_same)); + }; + }; + } + + namespace result_of + { + template + struct distance + : extension::distance_impl::type>:: + template apply + {}; + } + + template + inline typename result_of::distance::type + distance(First const& a, Last const& b) + { + return result_of::distance::call(a,b); + } +}} + +#endif diff --git a/include/boost/fusion/iterator/equal_to.hpp b/include/boost/fusion/iterator/equal_to.hpp new file mode 100644 index 00000000..1a559e22 --- /dev/null +++ b/include/boost/fusion/iterator/equal_to.hpp @@ -0,0 +1,72 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_EQUAL_TO_05052005_1208) +#define FUSION_EQUAL_TO_05052005_1208 + +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + namespace extension + { + template + struct equal_to_impl + { + // default implementation + template + struct apply + : is_same::type, typename add_const::type> + {}; + }; + } + + namespace result_of + { + template + struct equal_to + : extension::equal_to_impl::type>:: + template apply + {}; + } + + namespace iterator_operators + { + template + inline typename + enable_if< + mpl::and_, is_fusion_iterator > + , bool + >::type + operator==(Iter1 const&, Iter2 const&) + { + return result_of::equal_to::value; + } + + template + inline typename + enable_if< + mpl::and_, is_fusion_iterator > + , bool + >::type + operator!=(Iter1 const&, Iter2 const&) + { + return !result_of::equal_to::value; + } + } + + using iterator_operators::operator==; + using iterator_operators::operator!=; +}} + +#endif + diff --git a/include/boost/fusion/iterator/mpl.hpp b/include/boost/fusion/iterator/mpl.hpp new file mode 100644 index 00000000..670a2879 --- /dev/null +++ b/include/boost/fusion/iterator/mpl.hpp @@ -0,0 +1,14 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_ITERATOR_MPL_10022005_0557) +#define FUSION_ITERATOR_MPL_10022005_0557 + +#include +#include + +#endif diff --git a/include/boost/fusion/iterator/mpl/convert_iterator.hpp b/include/boost/fusion/iterator/mpl/convert_iterator.hpp new file mode 100644 index 00000000..fac72e9c --- /dev/null +++ b/include/boost/fusion/iterator/mpl/convert_iterator.hpp @@ -0,0 +1,57 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_CONVERT_ITERATOR_05062005_1218) +#define FUSION_CONVERT_ITERATOR_05062005_1218 + +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + // Test T. If it is a fusion iterator, return a reference to it. + // else, assume it is an mpl iterator. + + template + struct convert_iterator + { + typedef typename + mpl::if_< + is_fusion_iterator + , T + , mpl_iterator + >::type + type; + + static T const& + call(T const& x, mpl::true_) + { + return x; + } + + static mpl_iterator + call(T const& x, mpl::false_) + { + return mpl_iterator(); + } + + static typename + mpl::if_< + is_fusion_iterator + , T const& + , mpl_iterator + >::type + call(T const& x) + { + return call(x, is_fusion_iterator()); + } + }; +}} + +#endif diff --git a/include/boost/fusion/iterator/mpl/fusion_iterator.hpp b/include/boost/fusion/iterator/mpl/fusion_iterator.hpp new file mode 100644 index 00000000..5c655d47 --- /dev/null +++ b/include/boost/fusion/iterator/mpl/fusion_iterator.hpp @@ -0,0 +1,56 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_FUSION_ITERATOR_10012005_1551) +#define FUSION_FUSION_ITERATOR_10012005_1551 + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace mpl +{ + template + struct fusion_iterator + { + typedef typename fusion::result_of::value_of::type type; + typedef Iterator iterator; + }; + + template + struct next > + { + typedef fusion_iterator::type> type; + }; + + template + struct prior > + { + typedef fusion_iterator::type> type; + }; + + template + struct advance, N> + { + typedef fusion_iterator::type> type; + }; + + template + struct distance, fusion_iterator > + : fusion::result_of::distance + {}; + +}} + +#endif + + diff --git a/include/boost/fusion/iterator/next.hpp b/include/boost/fusion/iterator/next.hpp new file mode 100644 index 00000000..5cefb9d2 --- /dev/null +++ b/include/boost/fusion/iterator/next.hpp @@ -0,0 +1,42 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_NEXT_05042005_1101) +#define FUSION_NEXT_05042005_1101 + +#include + +namespace boost { namespace fusion +{ + namespace extension + { + template + struct next_impl + { + template + struct apply {}; + }; + } + + namespace result_of + { + template + struct next + : extension::next_impl::type>:: + template apply + {}; + } + + template + typename result_of::next::type + next(Iterator const& i) + { + return result_of::next::call(i); + } +}} + +#endif diff --git a/include/boost/fusion/iterator/prior.hpp b/include/boost/fusion/iterator/prior.hpp new file mode 100644 index 00000000..ddfb15ca --- /dev/null +++ b/include/boost/fusion/iterator/prior.hpp @@ -0,0 +1,42 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_PRIOR_05042005_1144) +#define FUSION_PRIOR_05042005_1144 + +#include + +namespace boost { namespace fusion +{ + namespace extension + { + template + struct prior_impl + { + template + struct apply {}; + }; + } + + namespace result_of + { + template + struct prior + : extension::prior_impl::type>:: + template apply + {}; + } + + template + typename result_of::prior::type + prior(Iterator const& i) + { + return result_of::prior::call(i); + } +}} + +#endif diff --git a/include/boost/fusion/iterator/value_of.hpp b/include/boost/fusion/iterator/value_of.hpp new file mode 100644 index 00000000..15d2f812 --- /dev/null +++ b/include/boost/fusion/iterator/value_of.hpp @@ -0,0 +1,36 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_VALUE_OF_05052005_1126) +#define FUSION_VALUE_OF_05052005_1126 + +#include +#include + +namespace boost { namespace fusion +{ + namespace extension + { + template + struct value_of_impl + { + template + struct apply {}; + }; + } + + namespace result_of + { + template + struct value_of + : extension::value_of_impl::type>:: + template apply + {}; + } +}} + +#endif diff --git a/include/boost/fusion/sequence.hpp b/include/boost/fusion/sequence.hpp new file mode 100644 index 00000000..5b6763c6 --- /dev/null +++ b/include/boost/fusion/sequence.hpp @@ -0,0 +1,21 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_SEQUENCE_10022005_0559) +#define FUSION_ITERATOR_10022005_0559 + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#endif diff --git a/include/boost/fusion/sequence/adapted.hpp b/include/boost/fusion/sequence/adapted.hpp new file mode 100644 index 00000000..c7181e0d --- /dev/null +++ b/include/boost/fusion/sequence/adapted.hpp @@ -0,0 +1,16 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_ADAPTED_30122005_1420) +#define BOOST_FUSION_ADAPTED_30122005_1420 + +#include +#include +#include + +#endif diff --git a/include/boost/fusion/sequence/adapted/array.hpp b/include/boost/fusion/sequence/adapted/array.hpp new file mode 100644 index 00000000..5b535ce5 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/array.hpp @@ -0,0 +1,23 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_ARRAY_27122005_1035) +#define BOOST_FUSION_ARRAY_27122005_1035 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#endif diff --git a/include/boost/fusion/sequence/adapted/array/array_iterator.hpp b/include/boost/fusion/sequence/adapted/array/array_iterator.hpp new file mode 100644 index 00000000..aa6e16a6 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/array/array_iterator.hpp @@ -0,0 +1,56 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_ARRAY_ITERATOR_26122005_2250) +#define BOOST_FUSION_ARRAY_ITERATOR_26122005_2250 + +#include + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion { + + struct array_iterator_tag; + struct random_access_traversal_tag; + + template + struct array_iterator + : iterator_base > + { + BOOST_MPL_ASSERT_RELATION(Pos,>=,0); + BOOST_MPL_ASSERT_RELATION(Pos,<=,std::size_t(Array::static_size)); + + typedef mpl::size_t index; + typedef array_iterator_tag ftag; + typedef random_access_traversal_tag category; + typedef Array array_type; + typedef array_iterator< + typename add_const::type, Pos> identity; + + array_iterator(Array& a) + : array(a) {} + + Array& array; + private: + array_iterator operator=(const array_iterator&); + }; +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/array/detail/advance_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/advance_impl.hpp new file mode 100644 index 00000000..c93133da --- /dev/null +++ b/include/boost/fusion/sequence/adapted/array/detail/advance_impl.hpp @@ -0,0 +1,44 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_ADVANCE_IMPL_27122005_0938) +#define BOOST_FUSION_ADVANCE_IMPL_27122005_0938 + +namespace boost { namespace fusion { + + struct array_iterator_tag; + + template + struct array_iterator; + + namespace extension + { + template + struct advance_impl; + + template<> + struct advance_impl + { + template + struct apply + { + typedef typename Iterator::index index; + typedef typename Iterator::array_type array_type; + typedef array_iterator type; + + static type + call(Iterator const& i) + { + return type(i.array); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/array/detail/at_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/at_impl.hpp new file mode 100644 index 00000000..a51e25f9 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/array/detail/at_impl.hpp @@ -0,0 +1,46 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_AT_IMPL_27122005_1241) +#define BOOST_FUSION_AT_IMPL_27122005_1241 + +#include + +#include + +namespace boost { namespace fusion { + + struct array_tag; + + namespace extension + { + template + struct at_impl; + + template<> + struct at_impl + { + template + struct apply + { + typedef typename mpl::if_< + is_const, + typename Sequence::const_reference, + typename Sequence::reference>::type type; + + static type + call(Sequence& seq) + { + return seq[N::value]; + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/array/detail/begin_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/begin_impl.hpp new file mode 100644 index 00000000..52f4b784 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/array/detail/begin_impl.hpp @@ -0,0 +1,41 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_BEGIN_IMPL_27122005_1117) +#define BOOST_FUSION_BEGIN_IMPL_27122005_1117 + +#include + +namespace boost { namespace fusion { + + struct array_tag; + + namespace extension + { + template + struct begin_impl; + + template <> + struct begin_impl + { + template + struct apply + { + typedef array_iterator type; + + static type + call(Sequence& v) + { + return type(v); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/array/detail/category_of_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/category_of_impl.hpp new file mode 100644 index 00000000..f5069a9e --- /dev/null +++ b/include/boost/fusion/sequence/adapted/array/detail/category_of_impl.hpp @@ -0,0 +1,36 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_27122005_1044) +#define BOOST_FUSION_CATEGORY_OF_IMPL_27122005_1044 + +#include + +namespace boost { namespace fusion { + + struct array_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/sequence/adapted/array/detail/deref_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/deref_impl.hpp new file mode 100644 index 00000000..012d1aaf --- /dev/null +++ b/include/boost/fusion/sequence/adapted/array/detail/deref_impl.hpp @@ -0,0 +1,49 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_DEREF_IMPL_27122005_0951) +#define BOOST_FUSION_DEREF_IMPL_27122005_0951 + +#include +#include + +namespace boost { namespace fusion { + + struct array_iterator_tag; + + template + struct array_iterator; + + namespace extension + { + template + struct deref_impl; + + template<> + struct deref_impl + { + template + struct apply + { + typedef typename Iterator::array_type array_type; + typedef typename mpl::if_< + is_const, + typename array_type::const_reference, + typename array_type::reference>::type type; + + static type + call(Iterator const & it) + { + return it.array[Iterator::index::value]; + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/array/detail/distance_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/distance_impl.hpp new file mode 100644 index 00000000..1383e92a --- /dev/null +++ b/include/boost/fusion/sequence/adapted/array/detail/distance_impl.hpp @@ -0,0 +1,44 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_DISTANCE_IMPL_27122005_1016) +#define BOOST_FUSION_DISTANCE_IMPL_27122005_1016 + +#include + +namespace boost { namespace fusion +{ + struct array_iterator_tag; + + namespace extension + { + template + struct distance_impl; + + template <> + struct distance_impl + { + template + struct apply : mpl::minus + { + static typename mpl::minus< + typename Last::index, typename First::index>::type + + call(First const&, Last const&) + { + static typename mpl::minus< + typename Last::index, typename First::index>::type + result; + return result; + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/array/detail/end_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/end_impl.hpp new file mode 100644 index 00000000..233a64ce --- /dev/null +++ b/include/boost/fusion/sequence/adapted/array/detail/end_impl.hpp @@ -0,0 +1,41 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_END_IMPL_27122005_1120) +#define BOOST_FUSION_END_IMPL_27122005_1120 + +#include + +namespace boost { namespace fusion { + + struct array_tag; + + namespace extension + { + template + struct end_impl; + + template <> + struct end_impl + { + template + struct apply + { + typedef array_iterator type; + + static type + call(Sequence& v) + { + return type(v); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/array/detail/equal_to_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/equal_to_impl.hpp new file mode 100644 index 00000000..f395ba5d --- /dev/null +++ b/include/boost/fusion/sequence/adapted/array/detail/equal_to_impl.hpp @@ -0,0 +1,40 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_EQUAL_TO_IMPL_27122005_1020) +#define BOOST_FUSION_EQUAL_TO_IMPL_27122005_1020 + +#include +#include +#include + +namespace boost { namespace fusion +{ + struct array_iterator_tag; + + namespace extension + { + template + struct equal_to_impl; + + template <> + struct equal_to_impl + { + template + struct apply + : is_same< + typename I1::identity + , typename I2::identity + > + {}; + }; + } +}} + +#endif + diff --git a/include/boost/fusion/sequence/adapted/array/detail/is_sequence_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/is_sequence_impl.hpp new file mode 100644 index 00000000..5a53f775 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/array/detail/is_sequence_impl.hpp @@ -0,0 +1,32 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_IS_SEQUENCE_IMPL_27122005_1648) +#define BOOST_FUSION_IS_SEQUENCE_IMPL_27122005_1648 + +#include + +namespace boost { namespace fusion { + + struct array_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/sequence/adapted/array/detail/is_view_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/is_view_impl.hpp new file mode 100644 index 00000000..fe2c5523 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/array/detail/is_view_impl.hpp @@ -0,0 +1,33 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_IS_VIEW_IMPL_27042006_2221) +#define BOOST_FUSION_IS_VIEW_IMPL_27042006_2221 + +#include + +namespace boost { namespace fusion +{ + struct array_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/sequence/adapted/array/detail/next_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/next_impl.hpp new file mode 100644 index 00000000..3f6d1df2 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/array/detail/next_impl.hpp @@ -0,0 +1,47 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_NEXT_IMPL_27122005_0927) +#define FUSION_NEXT_IMPL_27122005_0927 + +#include + +namespace boost { namespace fusion { + + struct array_iterator_tag; + + template + struct array_iterator; + + namespace extension + { + template + struct next_impl; + + template<> + struct next_impl + { + template + struct apply + { + typedef typename Iterator::array_type array_type; + typedef typename Iterator::index index; + static int const index_val = index::value; + typedef array_iterator type; + + static type + call(Iterator const& i) + { + return type(i.array); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/array/detail/prior_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/prior_impl.hpp new file mode 100644 index 00000000..27f4d2e5 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/array/detail/prior_impl.hpp @@ -0,0 +1,45 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_PRIOR_IMPL_27122005_0935) +#define FUSION_PRIOR_IMPL_27122005_0935 + +namespace boost { namespace fusion { + + struct array_iterator_tag; + + template + struct array_iterator; + + namespace extension + { + template + struct prior_impl; + + template<> + struct prior_impl + { + template + struct apply + { + typedef typename Iterator::array_type array_type; + typedef typename Iterator::index index; + static int const index_val = index::value; + typedef array_iterator type; + + static type + call(Iterator const& i) + { + return type(i.array); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/array/detail/size_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/size_impl.hpp new file mode 100644 index 00000000..69064da7 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/array/detail/size_impl.hpp @@ -0,0 +1,30 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_SIZE_IMPL_27122005_1251) +#define BOOST_FUSION_SIZE_IMPL_27122005_1251 + +namespace boost { namespace fusion { + + struct array_tag; + + namespace extension + { + template + struct size_impl; + + template<> + struct size_impl + { + template + struct apply : mpl::int_ {}; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/array/detail/value_at_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/value_at_impl.hpp new file mode 100644 index 00000000..b70a01c1 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/array/detail/value_at_impl.hpp @@ -0,0 +1,33 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_VALUE_AT_IMPL_27122005_1256) +#define BOOST_FUSION_VALUE_AT_IMPL_27122005_1256 + +namespace boost { namespace fusion { + + struct array_tag; + + namespace extension + { + template + struct value_at_impl; + + template <> + struct value_at_impl + { + template + struct apply + { + typedef typename Sequence::value_type type; + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/array/detail/value_of_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/value_of_impl.hpp new file mode 100644 index 00000000..5056ac8b --- /dev/null +++ b/include/boost/fusion/sequence/adapted/array/detail/value_of_impl.hpp @@ -0,0 +1,34 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_VALUE_OF_IMPL_27122005_1011) +#define BOOST_FUSION_VALUE_OF_IMPL_27122005_1011 + +namespace boost { namespace fusion +{ + struct array_iterator_tag; + + namespace extension + { + template + struct value_of_impl; + + template <> + struct value_of_impl + { + template + struct apply + { + typedef typename Iterator::array_type array_type; + typedef typename array_type::value_type type; + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/array/tag_of.hpp b/include/boost/fusion/sequence/adapted/array/tag_of.hpp new file mode 100644 index 00000000..6e4b1661 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/array/tag_of.hpp @@ -0,0 +1,36 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_SEQUENCE_TAG_OF_27122005_1030) +#define FUSION_SEQUENCE_TAG_OF_27122005_1030 + +#include + +#include + +namespace boost +{ + template + class array; +} + +namespace boost { namespace fusion +{ + struct array_tag; + + namespace traits + { + template + struct tag_of > + { + typedef array_tag type; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/mpl.hpp b/include/boost/fusion/sequence/adapted/mpl.hpp new file mode 100644 index 00000000..151fe717 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/mpl.hpp @@ -0,0 +1,23 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_MPL_31122005_1152) +#define BOOST_FUSION_MPL_31122005_1152 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#endif diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/advance_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/advance_impl.hpp new file mode 100644 index 00000000..5e2c3c06 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/mpl/detail/advance_impl.hpp @@ -0,0 +1,46 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_ADVANCE_IMPL_09232005_2324) +#define FUSION_ADVANCE_IMPL_09232005_2324 + +#include + +namespace boost { namespace fusion +{ + struct mpl_iterator_tag; + + template + struct mpl_iterator; + + namespace extension + { + template + struct advance_impl; + + template <> + struct advance_impl + { + template + struct apply + { + typedef mpl_iterator< + typename mpl::advance::type> + type; + + static type + call(Iterator const& i) + { + static type result; + return result; + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/at_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/at_impl.hpp new file mode 100644 index 00000000..cf3a7c8c --- /dev/null +++ b/include/boost/fusion/sequence/adapted/mpl/detail/at_impl.hpp @@ -0,0 +1,41 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_AT_IMPL_31122005_1642) +#define BOOST_FUSION_AT_IMPL_31122005_1642 + +#include + +namespace boost { namespace fusion +{ + struct mpl_sequence_tag; + + namespace extension + { + template + struct at_impl; + + template <> + struct at_impl + { + template + struct apply + { + typedef typename mpl::at::type type; + + static type + call(Sequence) + { + return type(); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/begin_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/begin_impl.hpp new file mode 100644 index 00000000..5afea50b --- /dev/null +++ b/include/boost/fusion/sequence/adapted/mpl/detail/begin_impl.hpp @@ -0,0 +1,46 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_BEGIN_IMPL_31122005_1209) +#define BOOST_FUSION_BEGIN_IMPL_31122005_1209 + +#include +#include +#include + +namespace boost { namespace fusion { + + struct mpl_sequence_tag; + + namespace extension + { + template + struct begin_impl; + + template <> + struct begin_impl + { + template + struct apply + { + typedef typename mpl::begin< + typename remove_const::type + >::type iterator; + typedef mpl_iterator type; + + static type + call(Sequence) + { + return type(); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/category_of_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/category_of_impl.hpp new file mode 100644 index 00000000..1cba8043 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/mpl/detail/category_of_impl.hpp @@ -0,0 +1,58 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_20060217_2141) +#define BOOST_FUSION_CATEGORY_OF_IMPL_20060217_2141 + +#include +#include +#include +#include +#include + +namespace boost { namespace fusion { + + namespace detail + { + template + struct mpl_sequence_category_of + { + // assumes T is an mpl sequence + // there should be no way this will ever be + // called where T is an mpl iterator + + BOOST_STATIC_ASSERT(mpl::is_sequence::value); + typedef typename + iterator_to_sequence_category< + typename mpl_iterator_category< + typename mpl::begin::type::category + >::type + >::type + type; + }; + } + + struct mpl_sequence_tag; + + namespace extension + { + template + struct category_of_impl; + + template<> + struct category_of_impl + { + template + struct apply + : detail::mpl_sequence_category_of + {}; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/deref_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/deref_impl.hpp new file mode 100644 index 00000000..e692c93b --- /dev/null +++ b/include/boost/fusion/sequence/adapted/mpl/detail/deref_impl.hpp @@ -0,0 +1,44 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_DEREF_IMPL_05052005_0733) +#define FUSION_DEREF_IMPL_05052005_0733 + +#include + +namespace boost { namespace fusion +{ + struct mpl_iterator_tag; + + namespace extension + { + template + struct deref_impl; + + template <> + struct deref_impl + { + template + struct apply + { + typedef typename mpl::deref< + typename Iterator::iterator_type>::type + type; + + static type + call(Iterator) + { + return type(); + } + }; + }; + } +}} + +#endif + + diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/distance_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/distance_impl.hpp new file mode 100644 index 00000000..efe963fd --- /dev/null +++ b/include/boost/fusion/sequence/adapted/mpl/detail/distance_impl.hpp @@ -0,0 +1,48 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_DISTANCE_IMPL_09232005_2303) +#define FUSION_DISTANCE_IMPL_09232005_2303 + +#include +#include + +namespace boost { namespace fusion +{ + struct mpl_iterator_tag; + + namespace extension + { + template + struct distance_impl; + + template <> + struct distance_impl + { + template + struct apply + : mpl::distance< + typename First::iterator_type + , typename Last::iterator_type> + { + static typename mpl::distance< + typename First::iterator_type + , typename Last::iterator_type>::type + call(First const&, Last const&) + { + static typename mpl::distance< + typename First::iterator_type + , typename Last::iterator_type>::type + result; + return result; + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/empty_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/empty_impl.hpp new file mode 100644 index 00000000..9b8e1098 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/mpl/detail/empty_impl.hpp @@ -0,0 +1,29 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_EMPTY_IMPL_31122005_1554) +#define BOOST_FUSION_EMPTY_IMPL_31122005_1554 + +#include + +namespace boost { namespace fusion +{ + struct mpl_sequence_tag; + + namespace extension + { + template <> + struct empty_impl + { + template + struct apply : mpl::empty {}; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/end_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/end_impl.hpp new file mode 100644 index 00000000..ee286dc2 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/mpl/detail/end_impl.hpp @@ -0,0 +1,46 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_END_IMPL_31122005_1237) +#define BOOST_FUSION_END_IMPL_31122005_1237 + +#include +#include +#include + +namespace boost { namespace fusion +{ + struct mpl_sequence_tag; + + namespace extension + { + template + struct end_impl; + + template <> + struct end_impl + { + template + struct apply + { + typedef typename mpl::end< + typename remove_const::type + >::type iterator; + typedef mpl_iterator type; + + static type + call(Sequence) + { + return type(); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/equal_to_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/equal_to_impl.hpp new file mode 100644 index 00000000..25a3e886 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/mpl/detail/equal_to_impl.hpp @@ -0,0 +1,41 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_EQUAL_TO_IMPL_05232005_0621) +#define FUSION_EQUAL_TO_IMPL_05232005_0621 + +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct mpl_iterator_tag; + + namespace extension + { + template + struct equal_to_impl; + + template <> + struct equal_to_impl + { + template + struct apply + : is_same< + typename remove_const::type + , typename remove_const::type + > + { + }; + }; + } +}} + +#endif + diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/has_key_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/has_key_impl.hpp new file mode 100644 index 00000000..5a7c2955 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/mpl/detail/has_key_impl.hpp @@ -0,0 +1,32 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_HAS_KEY_IMPL_31122005_1647) +#define BOOST_FUSION_HAS_KEY_IMPL_31122005_1647 + +#include + +namespace boost { namespace fusion +{ + struct mpl_sequence_tag; + + namespace extension + { + template + struct has_key_impl; + + template <> + struct has_key_impl + { + template + struct apply : mpl::has_key {}; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/is_sequence_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/is_sequence_impl.hpp new file mode 100644 index 00000000..6e2ce7da --- /dev/null +++ b/include/boost/fusion/sequence/adapted/mpl/detail/is_sequence_impl.hpp @@ -0,0 +1,32 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_IS_SEQUENCE_IMPL_31122005_1505) +#define BOOST_FUSION_IS_SEQUENCE_IMPL_31122005_1505 + +#include + +namespace boost { namespace fusion +{ + struct mpl_sequence_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/sequence/adapted/mpl/detail/is_view_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/is_view_impl.hpp new file mode 100644 index 00000000..14bc9dd0 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/mpl/detail/is_view_impl.hpp @@ -0,0 +1,33 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_IS_VIEW_IMPL_03202006_0048) +#define BOOST_FUSION_IS_VIEW_IMPL_03202006_0048 + +#include + +namespace boost { namespace fusion +{ + struct mpl_sequence_tag; + + namespace extension + { + template + struct is_view_impl; + + template<> + struct is_view_impl + { + template + struct apply : mpl::true_ + {}; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/next_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/next_impl.hpp new file mode 100644 index 00000000..6427e283 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/mpl/detail/next_impl.hpp @@ -0,0 +1,47 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_NEXT_IMPL_05052005_0733) +#define FUSION_NEXT_IMPL_05052005_0733 + +#include + +namespace boost { namespace fusion +{ + struct mpl_iterator_tag; + + template + struct mpl_iterator; + + namespace extension + { + template + struct next_impl; + + template <> + struct next_impl + { + template + struct apply + { + typedef mpl_iterator< + typename mpl::next::type + > type; + + static type + call(Iterator) + { + return type(); + } + }; + }; + } +}} + +#endif + + diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/prior_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/prior_impl.hpp new file mode 100644 index 00000000..1626b009 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/mpl/detail/prior_impl.hpp @@ -0,0 +1,48 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_PRIOR_IMPL_05202005_0930) +#define FUSION_PRIOR_IMPL_05202005_0930 + +#include + +namespace boost { namespace fusion +{ + struct mpl_iterator_tag; + + template + struct mpl_iterator; + + namespace extension + { + template + struct prior_impl; + + template <> + struct prior_impl + { + template + struct apply + { + typedef mpl_iterator< + typename mpl::prior::type + > type; + + static type + call(Iterator) + { + static type result; + return result; + } + }; + }; + } +}} + +#endif + + diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/size_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/size_impl.hpp new file mode 100644 index 00000000..63213e07 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/mpl/detail/size_impl.hpp @@ -0,0 +1,32 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_SIZE_IMPL_31122005_1508) +#define BOOST_FUSION_SIZE_IMPL_31122005_1508 + +#include + +namespace boost { namespace fusion +{ + struct mpl_sequence_tag; + + namespace extension + { + template + struct size_impl; + + template <> + struct size_impl + { + template + struct apply : mpl::size {}; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/value_at_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/value_at_impl.hpp new file mode 100644 index 00000000..d43982fd --- /dev/null +++ b/include/boost/fusion/sequence/adapted/mpl/detail/value_at_impl.hpp @@ -0,0 +1,32 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_VALUE_AT_IMPL_31122005_1621) +#define BOOST_FUSION_VALUE_AT_IMPL_31122005_1621 + +#include + +namespace boost { namespace fusion +{ + struct mpl_sequence_tag; + + namespace extension + { + template + struct value_at_impl; + + template <> + struct value_at_impl + { + template + struct apply : mpl::at {}; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/value_of_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/value_of_impl.hpp new file mode 100644 index 00000000..3d7c9fff --- /dev/null +++ b/include/boost/fusion/sequence/adapted/mpl/detail/value_of_impl.hpp @@ -0,0 +1,38 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_VALUE_OF_TRAITS_05052005_0734) +#define FUSION_VALUE_OF_TRAITS_05052005_0734 + +#include + +namespace boost { namespace fusion +{ + struct mpl_iterator_tag; + + namespace extension + { + template + struct value_of_impl; + + template <> + struct value_of_impl + { + template + struct apply + { + typedef typename mpl::deref< + typename Iterator::iterator_type>::type + type; + }; + }; + } +}} + +#endif + + diff --git a/include/boost/fusion/sequence/adapted/mpl/mpl_iterator.hpp b/include/boost/fusion/sequence/adapted/mpl/mpl_iterator.hpp new file mode 100644 index 00000000..43e589c3 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/mpl/mpl_iterator.hpp @@ -0,0 +1,40 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_MPL_ITERATOR_05052005_0731) +#define FUSION_MPL_ITERATOR_05052005_0731 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct mpl_iterator_tag; + + template + struct mpl_iterator + : iterator_base > + { + typedef mpl_iterator_tag ftag; + typedef typename detail::mpl_iterator_category< + typename Iterator::category>::type + category; + typedef typename remove_const::type iterator_type; + }; +}} + +#endif + + diff --git a/include/boost/fusion/sequence/adapted/mpl/tag_of.hpp b/include/boost/fusion/sequence/adapted/mpl/tag_of.hpp new file mode 100644 index 00000000..d987c5c2 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/mpl/tag_of.hpp @@ -0,0 +1,30 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_TAG_OF_31122005_1153) +#define BOOST_FUSION_TAG_OF_31122005_1153 + +#include +#include +#include + +namespace boost { namespace fusion +{ + struct mpl_sequence_tag; + + namespace traits + { + template + struct tag_of >::type> + { + typedef mpl_sequence_tag type; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/std_pair.hpp b/include/boost/fusion/sequence/adapted/std_pair.hpp new file mode 100644 index 00000000..4b5edb52 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/std_pair.hpp @@ -0,0 +1,22 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_STD_PAIR_24122005_1744) +#define BOOST_FUSION_STD_PAIR_24122005_1744 + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#endif diff --git a/include/boost/fusion/sequence/adapted/std_pair/Attic/std_pair_iterator.hpp b/include/boost/fusion/sequence/adapted/std_pair/Attic/std_pair_iterator.hpp new file mode 100644 index 00000000..0a5a1c92 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/std_pair/Attic/std_pair_iterator.hpp @@ -0,0 +1,49 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_STD_PAIR_ITERATOR_09262005_0934) +#define FUSION_STD_PAIR_ITERATOR_09262005_0934 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct std_pair_iterator_tag; + struct random_access_traversal_tag; + + template + struct std_pair_iterator_identity; + + template + struct std_pair_iterator + : iterator_base > + { + typedef mpl::int_ index; + typedef std_pair_iterator_tag ftag; + typedef random_access_traversal_tag category; + typedef std_pair_iterator_identity< + typename add_const::type, N> identity; + typedef Pair pair_type; + + std_pair_iterator(Pair& pair) + : pair(pair) {} + Pair& pair; + }; +}} + +#endif + + diff --git a/include/boost/fusion/sequence/adapted/std_pair/Attic/tag_of.hpp b/include/boost/fusion/sequence/adapted/std_pair/Attic/tag_of.hpp new file mode 100644 index 00000000..98b5fa8c --- /dev/null +++ b/include/boost/fusion/sequence/adapted/std_pair/Attic/tag_of.hpp @@ -0,0 +1,30 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_TAG_OF_24122005_1722) +#define BOOST_FUSION_TAG_OF_24122005_1722 + +#include + +#include + +namespace boost { namespace fusion { + + struct std_pair_tag; + + namespace traits + { + template + struct tag_of > + { + typedef std_pair_tag type; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/at_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/at_impl.hpp new file mode 100644 index 00000000..dce5f86c --- /dev/null +++ b/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/at_impl.hpp @@ -0,0 +1,71 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_AT_IMPL_24122005_1807) +#define BOOST_FUSION_AT_IMPL_24122005_1807 + +#include +#include +#include + +namespace boost { namespace fusion { + + struct std_pair_tag; + + namespace extension + { + template + struct at_impl; + + template <> + struct at_impl + { + template + struct apply + { + static int const n_value = N::value; + BOOST_STATIC_ASSERT((n_value >= 0 && n_value < 2)); + typedef typename + mpl::if_c< + (n_value == 0) + , typename Sequence::first_type + , typename Sequence::second_type + > + element; + + typedef typename + mpl::eval_if< + is_const + , detail::cref_result + , detail::ref_result + >::type + type; + + template + static RT get(Sequence& p, mpl::int_<0>) + { + return p.first; + } + + template + static RT get(Sequence& p, mpl::int_<1>) + { + return p.second; + } + + static type + call(Sequence& p) + { + return get(p, N()); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/begin_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/begin_impl.hpp new file mode 100644 index 00000000..493f3f45 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/begin_impl.hpp @@ -0,0 +1,41 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_BEGIN_IMPL_24122005_1752) +#define BOOST_FUSION_BEGIN_IMPL_24122005_1752 + +#include + +namespace boost { namespace fusion { + + struct std_pair_tag; + + namespace extension + { + template + struct begin_impl; + + template <> + struct begin_impl + { + template + struct apply + { + typedef std_pair_iterator type; + + static type + call(Sequence& v) + { + return type(v); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/category_of_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/category_of_impl.hpp new file mode 100644 index 00000000..d1c353d3 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/category_of_impl.hpp @@ -0,0 +1,36 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_24122005_1731) +#define BOOST_FUSION_CATEGORY_OF_IMPL_24122005_1731 + +#include + +namespace boost { namespace fusion { + + struct std_pair_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/sequence/adapted/std_pair/detail/Attic/end_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/end_impl.hpp new file mode 100644 index 00000000..5e311a28 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/end_impl.hpp @@ -0,0 +1,41 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_END_IMPL_24122005_1755) +#define BOOST_FUSION_END_IMPL_24122005_1755 + +#include + +namespace boost { namespace fusion { + + struct std_pair_tag; + + namespace extension + { + template + struct end_impl; + + template <> + struct end_impl + { + template + struct apply + { + typedef std_pair_iterator type; + + static type + call(Sequence& v) + { + return type(v); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/is_sequence_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/is_sequence_impl.hpp new file mode 100644 index 00000000..d36180f8 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/is_sequence_impl.hpp @@ -0,0 +1,32 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_IS_SEQUENCE_IMPL_27122005_1651) +#define BOOST_FUSION_IS_SEQUENCE_IMPL_27122005_1651 + +#include + +namespace boost { namespace fusion { + + struct std_pair_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/sequence/adapted/std_pair/detail/Attic/is_view_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/is_view_impl.hpp new file mode 100644 index 00000000..f03fb7eb --- /dev/null +++ b/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/is_view_impl.hpp @@ -0,0 +1,33 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_IS_VIEW_IMPL_27042006_2219) +#define BOOST_FUSION_IS_VIEW_IMPL_27042006_2219 + +#include + +namespace boost { namespace fusion +{ + struct std_pair_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/sequence/adapted/std_pair/detail/Attic/size_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/size_impl.hpp new file mode 100644 index 00000000..618408be --- /dev/null +++ b/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/size_impl.hpp @@ -0,0 +1,32 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_SIZE_IMPL_24122005_1759) +#define BOOST_FUSION_SIZE_IMPL_24122005_1759 + +#include + +namespace boost { namespace fusion { + + struct std_pair_tag; + + namespace extension + { + template + struct size_impl; + + template <> + struct size_impl + { + template + struct apply : mpl::int_<2> {}; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/value_at_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/value_at_impl.hpp new file mode 100644 index 00000000..5944ca09 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/value_at_impl.hpp @@ -0,0 +1,44 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_VALUE_AT_IMPL_24122005_1917) +#define BOOST_FUSION_VALUE_AT_IMPL_24122005_1917 + +#include +#include + +namespace boost { namespace fusion { + + struct std_pair_tag; + + namespace extension + { + template + struct value_at_impl; + + template <> + struct value_at_impl + { + template + struct apply + { + static int const n_value = N::value; + BOOST_STATIC_ASSERT((n_value >= 0 && n_value < 2)); + typedef typename + mpl::if_c< + (n_value == 0) + , typename Sequence::first_type + , typename Sequence::second_type + >::type + type; + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/advance_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/advance_impl.hpp new file mode 100644 index 00000000..6a883994 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/std_pair/detail/advance_impl.hpp @@ -0,0 +1,47 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_ADVANCE_IMPL_09302005_1847) +#define FUSION_ADVANCE_IMPL_09302005_1847 + +#include + +namespace boost { namespace fusion +{ + struct std_pair_iterator_tag; + + template + struct std_pair_iterator; + + namespace extension + { + template + struct advance_impl; + + template <> + struct advance_impl + { + template + struct apply + { + typedef typename Iterator::index index; + typedef typename Iterator::pair_type pair_type; + typedef std_pair_iterator type; + BOOST_STATIC_ASSERT( + (index::value+N::value) >= 0 &&(index::value+N::value) < 2); + + static type + call(Iterator const& i) + { + return type(i.vec); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/at_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/at_impl.hpp new file mode 100644 index 00000000..dce5f86c --- /dev/null +++ b/include/boost/fusion/sequence/adapted/std_pair/detail/at_impl.hpp @@ -0,0 +1,71 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_AT_IMPL_24122005_1807) +#define BOOST_FUSION_AT_IMPL_24122005_1807 + +#include +#include +#include + +namespace boost { namespace fusion { + + struct std_pair_tag; + + namespace extension + { + template + struct at_impl; + + template <> + struct at_impl + { + template + struct apply + { + static int const n_value = N::value; + BOOST_STATIC_ASSERT((n_value >= 0 && n_value < 2)); + typedef typename + mpl::if_c< + (n_value == 0) + , typename Sequence::first_type + , typename Sequence::second_type + > + element; + + typedef typename + mpl::eval_if< + is_const + , detail::cref_result + , detail::ref_result + >::type + type; + + template + static RT get(Sequence& p, mpl::int_<0>) + { + return p.first; + } + + template + static RT get(Sequence& p, mpl::int_<1>) + { + return p.second; + } + + static type + call(Sequence& p) + { + return get(p, N()); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/begin_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/begin_impl.hpp new file mode 100644 index 00000000..493f3f45 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/std_pair/detail/begin_impl.hpp @@ -0,0 +1,41 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_BEGIN_IMPL_24122005_1752) +#define BOOST_FUSION_BEGIN_IMPL_24122005_1752 + +#include + +namespace boost { namespace fusion { + + struct std_pair_tag; + + namespace extension + { + template + struct begin_impl; + + template <> + struct begin_impl + { + template + struct apply + { + typedef std_pair_iterator type; + + static type + call(Sequence& v) + { + return type(v); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/category_of_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/category_of_impl.hpp new file mode 100644 index 00000000..d1c353d3 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/std_pair/detail/category_of_impl.hpp @@ -0,0 +1,36 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_24122005_1731) +#define BOOST_FUSION_CATEGORY_OF_IMPL_24122005_1731 + +#include + +namespace boost { namespace fusion { + + struct std_pair_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/sequence/adapted/std_pair/detail/deref_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/deref_impl.hpp new file mode 100644 index 00000000..371cf2ce --- /dev/null +++ b/include/boost/fusion/sequence/adapted/std_pair/detail/deref_impl.hpp @@ -0,0 +1,74 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_DEREF_IMPL_09302005_1846) +#define FUSION_DEREF_IMPL_09302005_1846 + +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct std_pair_iterator_tag; + + namespace extension + { + template + struct deref_impl; + + template <> + struct deref_impl + { + template + struct apply + { + typedef typename Iterator::pair_type pair_type; + typedef typename Iterator::index index; + static int const index_val = index::value; + + BOOST_STATIC_ASSERT(index_val >= 0 && index_val <= 2); + typedef typename + mpl::if_c< + (index::value == 0) + , typename pair_type::first_type + , typename pair_type::second_type + > + element; + + typedef typename + mpl::eval_if< + is_const + , fusion::detail::cref_result + , fusion::detail::ref_result + >::type + type; + + template + static RT get(pair_type& p, mpl::int_<0>) + { + return p.first; + } + + template + static RT get(pair_type& p, mpl::int_<1>) + { + return p.second; + } + + static type + call(Iterator const& iter) + { + return get(iter.pair, index()); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/distance_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/distance_impl.hpp new file mode 100644 index 00000000..abd873a5 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/std_pair/detail/distance_impl.hpp @@ -0,0 +1,42 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_DISTANCE_IMPL_09302005_1846) +#define FUSION_DISTANCE_IMPL_09302005_1846 + +#include + +namespace boost { namespace fusion +{ + struct std_pair_iterator_tag; + + namespace extension + { + template + struct distance_impl; + + template <> + struct distance_impl + { + template + struct apply : mpl::minus + { + static typename mpl::minus< + typename Last::index, typename First::index>::type + call(First const&, Last const&) + { + static typename mpl::minus< + typename Last::index, typename First::index>::type + result; + return result; + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/end_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/end_impl.hpp new file mode 100644 index 00000000..5e311a28 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/std_pair/detail/end_impl.hpp @@ -0,0 +1,41 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_END_IMPL_24122005_1755) +#define BOOST_FUSION_END_IMPL_24122005_1755 + +#include + +namespace boost { namespace fusion { + + struct std_pair_tag; + + namespace extension + { + template + struct end_impl; + + template <> + struct end_impl + { + template + struct apply + { + typedef std_pair_iterator type; + + static type + call(Sequence& v) + { + return type(v); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/equal_to_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/equal_to_impl.hpp new file mode 100644 index 00000000..85088280 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/std_pair/detail/equal_to_impl.hpp @@ -0,0 +1,40 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_EQUAL_TO_IMPL_09302005_1847) +#define FUSION_EQUAL_TO_IMPL_09302005_1847 + +#include +#include +#include + +namespace boost { namespace fusion +{ + struct std_pair_iterator_tag; + + namespace extension + { + template + struct equal_to_impl; + + template <> + struct equal_to_impl + { + template + struct apply + : is_same< + typename I1::identity + , typename I2::identity + > + { + }; + }; + } +}} + +#endif + diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/is_sequence_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/is_sequence_impl.hpp new file mode 100644 index 00000000..d36180f8 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/std_pair/detail/is_sequence_impl.hpp @@ -0,0 +1,32 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_IS_SEQUENCE_IMPL_27122005_1651) +#define BOOST_FUSION_IS_SEQUENCE_IMPL_27122005_1651 + +#include + +namespace boost { namespace fusion { + + struct std_pair_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/sequence/adapted/std_pair/detail/is_view_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/is_view_impl.hpp new file mode 100644 index 00000000..f03fb7eb --- /dev/null +++ b/include/boost/fusion/sequence/adapted/std_pair/detail/is_view_impl.hpp @@ -0,0 +1,33 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_IS_VIEW_IMPL_27042006_2219) +#define BOOST_FUSION_IS_VIEW_IMPL_27042006_2219 + +#include + +namespace boost { namespace fusion +{ + struct std_pair_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/sequence/adapted/std_pair/detail/next_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/next_impl.hpp new file mode 100644 index 00000000..dc320903 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/std_pair/detail/next_impl.hpp @@ -0,0 +1,46 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_NEXT_IMPL_09302005_1847) +#define FUSION_NEXT_IMPL_09302005_1847 + +#include + +namespace boost { namespace fusion +{ + struct std_pair_iterator_tag; + template + struct std_pair_iterator; + + namespace extension + { + template + struct next_impl; + + template <> + struct next_impl + { + template + struct apply + { + typedef typename Iterator::pair_type pair_type; + typedef typename Iterator::index index; + static int const index_val = index::value; + typedef std_pair_iterator type; + BOOST_STATIC_ASSERT((index_val+1) >= 0 &&(index_val+1) <= 2); + + static type + call(Iterator const& i) + { + return type(i.pair); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/prior_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/prior_impl.hpp new file mode 100644 index 00000000..fe243185 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/std_pair/detail/prior_impl.hpp @@ -0,0 +1,46 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_PRIOR_IMPL_09302005_1847) +#define FUSION_PRIOR_IMPL_09302005_1847 + +#include + +namespace boost { namespace fusion +{ + struct std_pair_iterator_tag; + template + struct std_pair_iterator; + + namespace extension + { + template + struct prior_impl; + + template <> + struct prior_impl + { + template + struct apply + { + typedef typename Iterator::pair_type pair_type; + typedef typename Iterator::index index; + static int const index_val = index::value; + typedef std_pair_iterator type; + BOOST_STATIC_ASSERT((index_val-1) >= 0 &&(index_val-1) <= 2); + + static type + call(Iterator const& i) + { + return type(i.pair); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/size_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/size_impl.hpp new file mode 100644 index 00000000..618408be --- /dev/null +++ b/include/boost/fusion/sequence/adapted/std_pair/detail/size_impl.hpp @@ -0,0 +1,32 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_SIZE_IMPL_24122005_1759) +#define BOOST_FUSION_SIZE_IMPL_24122005_1759 + +#include + +namespace boost { namespace fusion { + + struct std_pair_tag; + + namespace extension + { + template + struct size_impl; + + template <> + struct size_impl + { + template + struct apply : mpl::int_<2> {}; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/value_at_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/value_at_impl.hpp new file mode 100644 index 00000000..5944ca09 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/std_pair/detail/value_at_impl.hpp @@ -0,0 +1,44 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_VALUE_AT_IMPL_24122005_1917) +#define BOOST_FUSION_VALUE_AT_IMPL_24122005_1917 + +#include +#include + +namespace boost { namespace fusion { + + struct std_pair_tag; + + namespace extension + { + template + struct value_at_impl; + + template <> + struct value_at_impl + { + template + struct apply + { + static int const n_value = N::value; + BOOST_STATIC_ASSERT((n_value >= 0 && n_value < 2)); + typedef typename + mpl::if_c< + (n_value == 0) + , typename Sequence::first_type + , typename Sequence::second_type + >::type + type; + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/value_of_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/value_of_impl.hpp new file mode 100644 index 00000000..240b56e9 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/std_pair/detail/value_of_impl.hpp @@ -0,0 +1,46 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_VALUE_OF_IMPL_09302005_1847) +#define FUSION_VALUE_OF_IMPL_09302005_1847 + +#include +#include + +namespace boost { namespace fusion +{ + struct std_pair_iterator_tag; + + namespace extension + { + template + struct value_of_impl; + + template <> + struct value_of_impl + { + template + struct apply + { + typedef typename Iterator::pair_type pair_type; + typedef typename Iterator::index index; + static int const index_value = index::value; + + BOOST_STATIC_ASSERT(index_value >= 0 && index_value <= 2); + typedef typename + mpl::if_c< + (index_value == 0) + , typename pair_type::first_type + , typename pair_type::second_type + >::type + type; + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/std_pair/std_pair_iterator.hpp b/include/boost/fusion/sequence/adapted/std_pair/std_pair_iterator.hpp new file mode 100644 index 00000000..0a5a1c92 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/std_pair/std_pair_iterator.hpp @@ -0,0 +1,49 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_STD_PAIR_ITERATOR_09262005_0934) +#define FUSION_STD_PAIR_ITERATOR_09262005_0934 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct std_pair_iterator_tag; + struct random_access_traversal_tag; + + template + struct std_pair_iterator_identity; + + template + struct std_pair_iterator + : iterator_base > + { + typedef mpl::int_ index; + typedef std_pair_iterator_tag ftag; + typedef random_access_traversal_tag category; + typedef std_pair_iterator_identity< + typename add_const::type, N> identity; + typedef Pair pair_type; + + std_pair_iterator(Pair& pair) + : pair(pair) {} + Pair& pair; + }; +}} + +#endif + + diff --git a/include/boost/fusion/sequence/adapted/std_pair/tag_of.hpp b/include/boost/fusion/sequence/adapted/std_pair/tag_of.hpp new file mode 100644 index 00000000..98b5fa8c --- /dev/null +++ b/include/boost/fusion/sequence/adapted/std_pair/tag_of.hpp @@ -0,0 +1,30 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_TAG_OF_24122005_1722) +#define BOOST_FUSION_TAG_OF_24122005_1722 + +#include + +#include + +namespace boost { namespace fusion { + + struct std_pair_tag; + + namespace traits + { + template + struct tag_of > + { + typedef std_pair_tag type; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/comparison.hpp b/include/boost/fusion/sequence/comparison.hpp new file mode 100644 index 00000000..e4a6b5d7 --- /dev/null +++ b/include/boost/fusion/sequence/comparison.hpp @@ -0,0 +1,18 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_SEQUENCE_COMPARISON_10022005_0615) +#define FUSION_SEQUENCE_COMPARISON_10022005_0615 + +#include +#include +#include +#include +#include +#include + +#endif diff --git a/include/boost/fusion/sequence/comparison/detail/enable_comparison.hpp b/include/boost/fusion/sequence/comparison/detail/enable_comparison.hpp new file mode 100644 index 00000000..29797ef3 --- /dev/null +++ b/include/boost/fusion/sequence/comparison/detail/enable_comparison.hpp @@ -0,0 +1,35 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_ENABLE_COMPARISON_09232005_1958) +#define FUSION_ENABLE_COMPARISON_09232005_1958 + +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion { namespace detail +{ + template + struct enable_equality + : mpl::or_, fusion::traits::is_sequence > + {}; + + template + struct enable_comparison + : mpl::and_< + mpl::or_, fusion::traits::is_sequence >, + mpl::equal_to, result_of::size > > + {}; + +}}} + +#endif diff --git a/include/boost/fusion/sequence/comparison/detail/equal_to.hpp b/include/boost/fusion/sequence/comparison/detail/equal_to.hpp new file mode 100644 index 00000000..0b1f4df8 --- /dev/null +++ b/include/boost/fusion/sequence/comparison/detail/equal_to.hpp @@ -0,0 +1,61 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_EQUAL_TO_05052005_1142) +#define FUSION_EQUAL_TO_05052005_1142 + +#include +#include +#include +#include + +namespace boost { namespace fusion { namespace detail +{ + template + struct sequence_equal_to + { + typedef typename result_of::end::type end1_type; + typedef typename result_of::end::type end2_type; + + template + static bool + call(I1 const&, I2 const&, mpl::true_) + { + return true; + } + + template + static bool + call(I1 const& a, I2 const& b, mpl::false_) + { + return *a == *b + && call(fusion::next(a), fusion::next(b)); + } + + template + static bool + call(I1 const& a, I2 const& b) + { + typename result_of::equal_to::type eq; + return call(a, b, eq); + } + }; + + template + struct sequence_equal_to + { + template + static bool + call(I1 const& a, I2 const& b) + { + return false; + } + }; +}}} + +#endif diff --git a/include/boost/fusion/sequence/comparison/detail/greater.hpp b/include/boost/fusion/sequence/comparison/detail/greater.hpp new file mode 100644 index 00000000..1f071b73 --- /dev/null +++ b/include/boost/fusion/sequence/comparison/detail/greater.hpp @@ -0,0 +1,51 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_GREATER_05052005_1142) +#define FUSION_GREATER_05052005_1142 + +#include +#include +#include +#include + +namespace boost { namespace fusion { namespace detail +{ + template + struct sequence_greater + { + typedef typename result_of::end::type end1_type; + typedef typename result_of::end::type end2_type; + + template + static bool + call(I1 const&, I2 const&, mpl::true_) + { + return false; + } + + template + static bool + call(I1 const& a, I2 const& b, mpl::false_) + { + return *a > *b + || !(*b > *a) + && call(fusion::next(a), fusion::next(b)); + } + + template + static bool + call(I1 const& a, I2 const& b) + { + typename result_of::equal_to::type eq; + return call(a, b, eq); + } + }; +}}} + +#endif diff --git a/include/boost/fusion/sequence/comparison/detail/greater_equal.hpp b/include/boost/fusion/sequence/comparison/detail/greater_equal.hpp new file mode 100644 index 00000000..28bb7cc8 --- /dev/null +++ b/include/boost/fusion/sequence/comparison/detail/greater_equal.hpp @@ -0,0 +1,50 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_GREATER_EQUAL_05052005_1142) +#define FUSION_GREATER_EQUAL_05052005_1142 + +#include +#include +#include +#include + +namespace boost { namespace fusion { namespace detail +{ + template + struct sequence_greater_equal + { + typedef typename result_of::end::type end1_type; + typedef typename result_of::end::type end2_type; + + template + static bool + call(I1 const&, I2 const&, mpl::true_) + { + return true; + } + + template + static bool + call(I1 const& a, I2 const& b, mpl::false_) + { + return *a >= *b + && (!(*b >= *a) || call(fusion::next(a), fusion::next(b))); + } + + template + static bool + call(I1 const& a, I2 const& b) + { + typename result_of::equal_to::type eq; + return call(a, b, eq); + } + }; +}}} + +#endif diff --git a/include/boost/fusion/sequence/comparison/detail/less.hpp b/include/boost/fusion/sequence/comparison/detail/less.hpp new file mode 100644 index 00000000..15db31cb --- /dev/null +++ b/include/boost/fusion/sequence/comparison/detail/less.hpp @@ -0,0 +1,51 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_LESS_05052005_1141) +#define FUSION_LESS_05052005_1141 + +#include +#include +#include +#include + +namespace boost { namespace fusion { namespace detail +{ + template + struct sequence_less + { + typedef typename result_of::end::type end1_type; + typedef typename result_of::end::type end2_type; + + template + static bool + call(I1 const&, I2 const&, mpl::true_) + { + return false; + } + + template + static bool + call(I1 const& a, I2 const& b, mpl::false_) + { + return *a < *b + || !(*b < *a) + && call(fusion::next(a), fusion::next(b)); + } + + template + static bool + call(I1 const& a, I2 const& b) + { + typename result_of::equal_to::type eq; + return call(a, b, eq); + } + }; +}}} + +#endif diff --git a/include/boost/fusion/sequence/comparison/detail/less_equal.hpp b/include/boost/fusion/sequence/comparison/detail/less_equal.hpp new file mode 100644 index 00000000..2eff087d --- /dev/null +++ b/include/boost/fusion/sequence/comparison/detail/less_equal.hpp @@ -0,0 +1,50 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_LESS_EQUAL_05052005_1141) +#define FUSION_LESS_EQUAL_05052005_1141 + +#include +#include +#include +#include + +namespace boost { namespace fusion { namespace detail +{ + template + struct sequence_less_equal + { + typedef typename result_of::end::type end1_type; + typedef typename result_of::end::type end2_type; + + template + static bool + call(I1 const&, I2 const&, mpl::true_) + { + return true; + } + + template + static bool + call(I1 const& a, I2 const& b, mpl::false_) + { + return *a <= *b + && (!(*b <= *a) || call(fusion::next(a), fusion::next(b))); + } + + template + static bool + call(I1 const& a, I2 const& b) + { + typename result_of::equal_to::type eq; + return call(a, b, eq); + } + }; +}}} + +#endif diff --git a/include/boost/fusion/sequence/comparison/detail/not_equal_to.hpp b/include/boost/fusion/sequence/comparison/detail/not_equal_to.hpp new file mode 100644 index 00000000..65c124c2 --- /dev/null +++ b/include/boost/fusion/sequence/comparison/detail/not_equal_to.hpp @@ -0,0 +1,61 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_NOT_EQUAL_TO_05052005_1141) +#define FUSION_NOT_EQUAL_TO_05052005_1141 + +#include +#include +#include +#include + +namespace boost { namespace fusion { namespace detail +{ + template + struct sequence_not_equal_to + { + typedef typename result_of::end::type end1_type; + typedef typename result_of::end::type end2_type; + + template + static bool + call(I1 const&, I2 const&, mpl::true_) + { + return false; + } + + template + static bool + call(I1 const& a, I2 const& b, mpl::false_) + { + return *a != *b + || call(fusion::next(a), fusion::next(b)); + } + + template + static bool + call(I1 const& a, I2 const& b) + { + typename result_of::equal_to::type eq; + return call(a, b, eq); + } + }; + + template + struct sequence_not_equal_to + { + template + static bool + call(I1 const& a, I2 const& b) + { + return true; + } + }; +}}} + +#endif diff --git a/include/boost/fusion/sequence/comparison/equal_to.hpp b/include/boost/fusion/sequence/comparison/equal_to.hpp new file mode 100644 index 00000000..ee04a24f --- /dev/null +++ b/include/boost/fusion/sequence/comparison/equal_to.hpp @@ -0,0 +1,41 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_EQUAL_TO_05052005_0431) +#define FUSION_EQUAL_TO_05052005_0431 + +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + namespace sequence_operators + { + template + inline typename + enable_if< + detail::enable_equality + , bool + >::type + operator==(Seq1 const& a, Seq2 const& b) + { + return result_of::size::value == result_of::size::value + && detail::sequence_equal_to< + Seq1 const, Seq2 const + , result_of::size::value == result_of::size::value>:: + call(fusion::begin(a), fusion::begin(b)); + } + } + using sequence_operators::operator==; +}} + +#endif diff --git a/include/boost/fusion/sequence/comparison/greater.hpp b/include/boost/fusion/sequence/comparison/greater.hpp new file mode 100644 index 00000000..becd6767 --- /dev/null +++ b/include/boost/fusion/sequence/comparison/greater.hpp @@ -0,0 +1,44 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_GREATER_05052005_0432) +#define FUSION_GREATER_05052005_0432 + +#include +#include +#include + +#if defined(FUSION_DIRECT_OPERATOR_USAGE) +#include +#else +#include +#endif + +#include +#include + +namespace boost { namespace fusion +{ + template + inline typename + enable_if< + detail::enable_comparison + , bool + >::type + operator>(Seq1 const& a, Seq2 const& b) + { +#if defined(FUSION_DIRECT_OPERATOR_USAGE) + return detail::sequence_greater:: + call(fusion::begin(a), fusion::begin(b)); +#else + return (b < a); +#endif + } +}} + +#endif diff --git a/include/boost/fusion/sequence/comparison/greater_equal.hpp b/include/boost/fusion/sequence/comparison/greater_equal.hpp new file mode 100644 index 00000000..f73ee64f --- /dev/null +++ b/include/boost/fusion/sequence/comparison/greater_equal.hpp @@ -0,0 +1,44 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_GREATER_EQUAL_05052005_0432) +#define FUSION_GREATER_EQUAL_05052005_0432 + +#include +#include +#include + +#if defined(FUSION_DIRECT_OPERATOR_USAGE) +#include +#else +#include +#endif + +#include +#include + +namespace boost { namespace fusion +{ + template + inline typename + enable_if< + detail::enable_comparison + , bool + >::type + operator>=(Seq1 const& a, Seq2 const& b) + { +#if defined(FUSION_DIRECT_OPERATOR_USAGE) + return detail::sequence_greater_equal:: + call(fusion::begin(a), fusion::begin(b)); +#else + return !(a < b); +#endif + } +}} + +#endif diff --git a/include/boost/fusion/sequence/comparison/less.hpp b/include/boost/fusion/sequence/comparison/less.hpp new file mode 100644 index 00000000..96d13d41 --- /dev/null +++ b/include/boost/fusion/sequence/comparison/less.hpp @@ -0,0 +1,34 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_LESS_05052005_0432) +#define FUSION_LESS_05052005_0432 + +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + template + inline typename + enable_if< + detail::enable_comparison + , bool + >::type + operator<(Seq1 const& a, Seq2 const& b) + { + return detail::sequence_less:: + call(fusion::begin(a), fusion::begin(b)); + } +}} + +#endif diff --git a/include/boost/fusion/sequence/comparison/less_equal.hpp b/include/boost/fusion/sequence/comparison/less_equal.hpp new file mode 100644 index 00000000..d4b45b2d --- /dev/null +++ b/include/boost/fusion/sequence/comparison/less_equal.hpp @@ -0,0 +1,44 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_LESS_EQUAL_05052005_0432) +#define FUSION_LESS_EQUAL_05052005_0432 + +#include +#include +#include + +#if defined(FUSION_DIRECT_OPERATOR_USAGE) +#include +#else +#include +#endif + +#include +#include + +namespace boost { namespace fusion +{ + template + inline typename + enable_if< + detail::enable_comparison + , bool + >::type + operator<=(Seq1 const& a, Seq2 const& b) + { +#if defined(FUSION_DIRECT_OPERATOR_USAGE) + return detail::sequence_less_equal:: + call(fusion::begin(a), fusion::begin(b)); +#else + return !(b < a); +#endif + } +}} + +#endif diff --git a/include/boost/fusion/sequence/comparison/not_equal_to.hpp b/include/boost/fusion/sequence/comparison/not_equal_to.hpp new file mode 100644 index 00000000..1464d023 --- /dev/null +++ b/include/boost/fusion/sequence/comparison/not_equal_to.hpp @@ -0,0 +1,52 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_NOT_EQUAL_TO_05052005_0431) +#define FUSION_NOT_EQUAL_TO_05052005_0431 + +#include +#include +#include + +#if defined(FUSION_DIRECT_OPERATOR_USAGE) +#include +#else +#include +#endif + +#include +#include + +namespace boost { namespace fusion +{ + namespace sequence_operators + { + template + inline typename + enable_if< + detail::enable_equality + , bool + >::type + operator!=(Seq1 const& a, Seq2 const& b) + { +#if defined(FUSION_DIRECT_OPERATOR_USAGE) + return result_of::size::value != result_of::size::value + || detail::sequence_not_equal_to< + Seq1 const, Seq2 const + , result_of::size::value == result_of::size::value>:: + call(fusion::begin(a), fusion::begin(b)); +#else + return !(a == b); +#endif + } + } + + using sequence_operators::operator!=; +}} + +#endif diff --git a/include/boost/fusion/sequence/container.hpp b/include/boost/fusion/sequence/container.hpp new file mode 100644 index 00000000..c34fc492 --- /dev/null +++ b/include/boost/fusion/sequence/container.hpp @@ -0,0 +1,16 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_SEQUENCE_CLASS_10022005_0614) +#define FUSION_SEQUENCE_CLASS_10022005_0614 + +#include +#include +#include +#include + +#endif diff --git a/include/boost/fusion/sequence/container/list.hpp b/include/boost/fusion/sequence/container/list.hpp new file mode 100644 index 00000000..77426691 --- /dev/null +++ b/include/boost/fusion/sequence/container/list.hpp @@ -0,0 +1,17 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_SEQUENCE_CLASS_LIST_10022005_0605) +#define FUSION_SEQUENCE_CLASS_LIST_10022005_0605 + +#include +#include +#include +#include +#include + +#endif diff --git a/include/boost/fusion/sequence/container/list/cons.hpp b/include/boost/fusion/sequence/container/list/cons.hpp new file mode 100644 index 00000000..d79c379f --- /dev/null +++ b/include/boost/fusion/sequence/container/list/cons.hpp @@ -0,0 +1,136 @@ +/*============================================================================= + Copyright (c) 2005 Joel de Guzman + Copyright (c) 2005 Eric Niebler + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_CONS_07172005_0843) +#define FUSION_CONS_07172005_0843 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct void_; + struct cons_tag; + struct forward_sequence_tag; + struct fusion_sequence_tag; + + struct nil : sequence_base + { + typedef mpl::int_<0> size; + typedef cons_tag ftag; + typedef fusion_sequence_tag tag; // this gets picked up by MPL + typedef mpl::false_ is_view; + typedef forward_sequence_tag category; + typedef void_ car_type; + typedef void_ cdr_type; + + nil() {} + + template + nil(Iterator const& iter, mpl::true_ /*this_is_an_iterator*/) + {} + + template + void assign_from_iter(Iterator const& iter) + { + } + }; + + template + struct cons : sequence_base > + { + typedef mpl::int_ size; + typedef cons_tag ftag; + typedef fusion_sequence_tag tag; // this gets picked up by MPL + typedef mpl::false_ is_view; + typedef forward_sequence_tag category; + typedef Car car_type; + typedef Cdr cdr_type; + + cons() + : car(), cdr() {} + + explicit cons(typename detail::call_param::type car) + : car(car), cdr() {} + + cons( + typename detail::call_param::type car + , typename detail::call_param::type cdr) + : car(car), cdr(cdr) {} + + template + cons(cons const& rhs) + : car(rhs.car), cdr(rhs.cdr) {} + + cons(cons const& rhs) + : car(rhs.car), cdr(rhs.cdr) {} + + template + explicit cons( + Sequence const& seq + , typename disable_if >::type* dummy = 0) + : car(*fusion::begin(seq)) + , cdr(fusion::next(fusion::begin(seq)), mpl::true_()) {} + + template + cons(Iterator const& iter, mpl::true_ /*this_is_an_iterator*/) + : car(*iter) + , cdr(fusion::next(iter), mpl::true_()) {} + + template + cons& operator=(cons const& rhs) + { + car = rhs.car; + cdr = rhs.cdr; + return *this; + } + + cons& operator=(cons const& rhs) + { + car = rhs.car; + cdr = rhs.cdr; + return *this; + } + + template + typename disable_if, cons&>::type + operator=(Sequence const& seq) + { + typedef typename result_of::begin::type Iterator; + Iterator iter = fusion::begin(seq); + this->assign_from_iter(iter); + return *this; + } + + template + void assign_from_iter(Iterator const& iter) + { + car = *iter; + cdr.assign_from_iter(fusion::next(iter)); + } + + car_type car; + cdr_type cdr; + }; +}} + +#endif + diff --git a/include/boost/fusion/sequence/container/list/cons_iterator.hpp b/include/boost/fusion/sequence/container/list/cons_iterator.hpp new file mode 100644 index 00000000..48a5179a --- /dev/null +++ b/include/boost/fusion/sequence/container/list/cons_iterator.hpp @@ -0,0 +1,86 @@ +/*============================================================================= + Copyright (c) 2005 Joel de Guzman + Copyright (c) 2005 Eric Niebler + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_CONS_ITERATOR_07172005_0849) +#define FUSION_CONS_ITERATOR_07172005_0849 + +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct nil; + struct cons_iterator_tag; + struct forward_traversal_tag; + + template + struct cons_iterator_identity; + + template + struct cons_iterator : iterator_base > + { + typedef cons_iterator_tag ftag; + typedef forward_traversal_tag category; + typedef Cons cons_type; + typedef cons_iterator_identity< + typename add_const::type> + identity; + + explicit cons_iterator(cons_type& cons) + : cons(cons) {} + + cons_type& cons; + }; + + struct nil_iterator : iterator_base + { + typedef forward_traversal_tag category; + typedef cons_iterator_tag ftag; + typedef nil cons_type; + typedef cons_iterator_identity< + add_const::type> + identity; + nil_iterator() {} + explicit nil_iterator(nil const&) {} + }; + + template <> + struct cons_iterator : nil_iterator + { + cons_iterator() {} + explicit cons_iterator(nil const&) {} + }; + + template <> + struct cons_iterator : nil_iterator + { + cons_iterator() {} + explicit cons_iterator(nil const&) {} + }; + + template <> + struct cons_iterator > : nil_iterator + { + cons_iterator() {} + explicit cons_iterator(nil const&) {} + }; + + template <> + struct cons_iterator const> : nil_iterator + { + cons_iterator() {} + explicit cons_iterator(nil const&) {} + }; +}} + +#endif diff --git a/include/boost/fusion/sequence/container/list/detail/at_impl.hpp b/include/boost/fusion/sequence/container/list/detail/at_impl.hpp new file mode 100644 index 00000000..aae026ad --- /dev/null +++ b/include/boost/fusion/sequence/container/list/detail/at_impl.hpp @@ -0,0 +1,80 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_AT_IMPL_07172005_0726) +#define FUSION_AT_IMPL_07172005_0726 + +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct cons_tag; + + namespace extension + { + template + struct at_impl; + + template <> + struct at_impl + { + template + struct apply + { + typedef typename + mpl::eval_if< + is_const + , add_const + , mpl::identity + >::type + cdr_type; + + typedef typename + mpl::eval_if< + mpl::bool_ + , mpl::identity + , apply > + > + element; + + typedef typename + mpl::eval_if< + is_const + , detail::cref_result + , detail::ref_result + >::type + type; + + template + static type + call(Cons& s, mpl::int_) + { + return call(s.cdr, mpl::int_()); + } + + template + static type + call(Cons& s, mpl::int_<0>) + { + return s.car; + } + + static type + call(Sequence& s) + { + return call(s, mpl::int_()); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/container/list/detail/begin_impl.hpp b/include/boost/fusion/sequence/container/list/detail/begin_impl.hpp new file mode 100644 index 00000000..72384c93 --- /dev/null +++ b/include/boost/fusion/sequence/container/list/detail/begin_impl.hpp @@ -0,0 +1,50 @@ +/*============================================================================= + Copyright (c) 2005 Joel de Guzman + Copyright (c) 2005 Eric Niebler + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_BEGIN_IMPL_07172005_0824) +#define FUSION_BEGIN_IMPL_07172005_0824 + +#include +#include + +namespace boost { namespace fusion +{ + struct nil; + + struct cons_tag; + + template + struct cons; + + template + struct cons_iterator; + + namespace extension + { + template + struct begin_impl; + + template <> + struct begin_impl + { + template + struct apply + { + typedef cons_iterator type; + + static type + call(Sequence& t) + { + return type(t); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/container/list/detail/deref_impl.hpp b/include/boost/fusion/sequence/container/list/detail/deref_impl.hpp new file mode 100644 index 00000000..d374a8c0 --- /dev/null +++ b/include/boost/fusion/sequence/container/list/detail/deref_impl.hpp @@ -0,0 +1,53 @@ +/*============================================================================= + Copyright (c) 2005 Joel de Guzman + Copyright (c) 2005 Eric Niebler + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_DEREF_IMPL_07172005_0831) +#define FUSION_DEREF_IMPL_07172005_0831 + +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct cons_iterator_tag; + + namespace extension + { + template + struct deref_impl; + + template <> + struct deref_impl + { + template + struct apply + { + typedef typename Iterator::cons_type cons_type; + typedef typename cons_type::car_type value_type; + + typedef typename mpl::eval_if< + is_const + , add_reference::type> + , add_reference >::type + type; + + static type + call(Iterator const& i) + { + return i.cons.car; + } + }; + }; + } +}} + +#endif + + diff --git a/include/boost/fusion/sequence/container/list/detail/end_impl.hpp b/include/boost/fusion/sequence/container/list/detail/end_impl.hpp new file mode 100644 index 00000000..0aaeaac4 --- /dev/null +++ b/include/boost/fusion/sequence/container/list/detail/end_impl.hpp @@ -0,0 +1,52 @@ +/*============================================================================= + Copyright (c) 2005 Joel de Guzman + Copyright (c) 2005 Eric Niebler + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_END_IMPL_07172005_0828) +#define FUSION_END_IMPL_07172005_0828 + +#include +#include + +namespace boost { namespace fusion +{ + struct nil; + + struct cons_tag; + + template + struct cons; + + template + struct cons_iterator; + + namespace extension + { + template + struct end_impl; + + template <> + struct end_impl + { + template + struct apply + { + typedef cons_iterator< + typename mpl::if_, nil const, nil>::type> + type; + + static type + call(Sequence& t) + { + return type(); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/container/list/detail/equal_to_impl.hpp b/include/boost/fusion/sequence/container/list/detail/equal_to_impl.hpp new file mode 100644 index 00000000..9c64a47f --- /dev/null +++ b/include/boost/fusion/sequence/container/list/detail/equal_to_impl.hpp @@ -0,0 +1,40 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_EQUAL_TO_IMPL_09172005_1120) +#define FUSION_EQUAL_TO_IMPL_09172005_1120 + +#include +#include +#include + +namespace boost { namespace fusion +{ + struct cons_iterator_tag; + + namespace extension + { + template + struct equal_to_impl; + + template <> + struct equal_to_impl + { + template + struct apply + : is_same< + typename I1::identity + , typename I2::identity + > + { + }; + }; + } +}} + +#endif + diff --git a/include/boost/fusion/sequence/container/list/detail/list_forward_ctor.hpp b/include/boost/fusion/sequence/container/list/detail/list_forward_ctor.hpp new file mode 100644 index 00000000..541b7513 --- /dev/null +++ b/include/boost/fusion/sequence/container/list/detail/list_forward_ctor.hpp @@ -0,0 +1,48 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#ifndef BOOST_PP_IS_ITERATING +#if !defined(FUSION_LIST_FORWARD_CTOR_07172005_0113) +#define FUSION_LIST_FORWARD_CTOR_07172005_0113 + +#include +#include +#include +#include +#include + +#define FUSION_LIST_CTOR_MAKE_CONS(z, n, type) tie_cons(BOOST_PP_CAT(_, n) +#define FUSION_LIST_CL_PAREN(z, n, type) ) + +#define BOOST_PP_FILENAME_1 \ + +#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_LIST_SIZE) +#include BOOST_PP_ITERATE() + +#undef FUSION_LIST_CTOR_MAKE_CONS +#undef FUSION_LIST_CL_PAREN + +#endif +#else // defined(BOOST_PP_IS_ITERATING) +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// +#define N BOOST_PP_ITERATION() + +#if N == 1 + explicit +#endif + list(BOOST_PP_ENUM_BINARY_PARAMS( + N, typename detail::call_param::type _)) + : inherited_type(list_to_cons::call(BOOST_PP_ENUM_PARAMS(N, _))) + {} + +#undef N +#endif // defined(BOOST_PP_IS_ITERATING) + diff --git a/include/boost/fusion/sequence/container/list/detail/list_to_cons.hpp b/include/boost/fusion/sequence/container/list/detail/list_to_cons.hpp new file mode 100644 index 00000000..eba36539 --- /dev/null +++ b/include/boost/fusion/sequence/container/list/detail/list_to_cons.hpp @@ -0,0 +1,50 @@ +/*============================================================================= + Copyright (c) 2005 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_LIST_TO_CONS_07172005_1041) +#define FUSION_LIST_TO_CONS_07172005_1041 + +#include +#include +#include +#include +#include +#include + +#define FUSION_VOID(z, n, _) void_ + +namespace boost { namespace fusion +{ + struct nil; + struct void_; +}} + +namespace boost { namespace fusion { namespace detail +{ + template + struct list_to_cons + { + typedef T0 head_type; + typedef list_to_cons< + BOOST_PP_ENUM_SHIFTED_PARAMS(FUSION_MAX_LIST_SIZE, T), void_> + tail_list_to_cons; + typedef typename tail_list_to_cons::type tail_type; + + typedef cons type; + + #include + }; + + template <> + struct list_to_cons + { + typedef nil type; + }; +}}} + +#undef FUSION_VOID +#endif diff --git a/include/boost/fusion/sequence/container/list/detail/list_to_cons_call.hpp b/include/boost/fusion/sequence/container/list/detail/list_to_cons_call.hpp new file mode 100644 index 00000000..d0cc1821 --- /dev/null +++ b/include/boost/fusion/sequence/container/list/detail/list_to_cons_call.hpp @@ -0,0 +1,44 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#ifndef BOOST_PP_IS_ITERATING +#if !defined(FUSION_LIST_TO_CONS_CALL_07192005_0138) +#define FUSION_LIST_TO_CONS_CALL_07192005_0138 + +#include +#include +#include + +#define BOOST_PP_FILENAME_1 \ + +#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_LIST_SIZE) +#include BOOST_PP_ITERATE() + +#endif +#else // defined(BOOST_PP_IS_ITERATING) +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// +#define N BOOST_PP_ITERATION() + + static type + call(BOOST_PP_ENUM_BINARY_PARAMS( + N, typename detail::call_param::type _)) + { + return type(_0 +#if N > 1 + , tail_list_to_cons::call(BOOST_PP_ENUM_SHIFTED_PARAMS(N, _))); +#else + ); +#endif + } + +#undef N +#endif // defined(BOOST_PP_IS_ITERATING) + diff --git a/include/boost/fusion/sequence/container/list/detail/next_impl.hpp b/include/boost/fusion/sequence/container/list/detail/next_impl.hpp new file mode 100644 index 00000000..92e5c5bd --- /dev/null +++ b/include/boost/fusion/sequence/container/list/detail/next_impl.hpp @@ -0,0 +1,60 @@ +/*============================================================================= + Copyright (c) 2005 Joel de Guzman + Copyright (c) 2005 Eric Niebler + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_NEXT_IMPL_07172005_0836) +#define FUSION_NEXT_IMPL_07172005_0836 + +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct cons_iterator_tag; + + template + struct cons_iterator; + + namespace extension + { + template + struct next_impl; + + template <> + struct next_impl + { + template + struct apply + { + typedef typename Iterator::cons_type cons_type; + typedef typename cons_type::cdr_type cdr_type; + + typedef cons_iterator< + typename mpl::eval_if< + is_const + , add_const + , mpl::identity + >::type> + type; + + static type + call(Iterator const& i) + { + return type(i.cons.cdr); + } + }; + }; + } +}} + +#endif + + diff --git a/include/boost/fusion/sequence/container/list/detail/value_at_impl.hpp b/include/boost/fusion/sequence/container/list/detail/value_at_impl.hpp new file mode 100644 index 00000000..28fd7650 --- /dev/null +++ b/include/boost/fusion/sequence/container/list/detail/value_at_impl.hpp @@ -0,0 +1,43 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_VALUE_AT_IMPL_07172005_0952) +#define FUSION_VALUE_AT_IMPL_07172005_0952 + +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct cons_tag; + + namespace extension + { + template + struct value_at_impl; + + template <> + struct value_at_impl + { + template + struct apply + { + typedef typename + mpl::eval_if< + mpl::bool_ + , mpl::identity + , apply > + >::type + type; + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/container/list/detail/value_of_impl.hpp b/include/boost/fusion/sequence/container/list/detail/value_of_impl.hpp new file mode 100644 index 00000000..b73c73b4 --- /dev/null +++ b/include/boost/fusion/sequence/container/list/detail/value_of_impl.hpp @@ -0,0 +1,37 @@ +/*============================================================================= + Copyright (c) 2005 Joel de Guzman + Copyright (c) 2005 Eric Niebler + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_VALUE_OF_IMPL_07172005_0838) +#define FUSION_VALUE_OF_IMPL_07172005_0838 + +namespace boost { namespace fusion +{ + struct cons_iterator_tag; + + namespace extension + { + template + struct value_of_impl; + + template <> + struct value_of_impl + { + template + struct apply + { + typedef typename Iterator::cons_type cons_type; + typedef typename cons_type::car_type type; + }; + }; + } + +}} + +#endif + + diff --git a/include/boost/fusion/sequence/container/list/limits.hpp b/include/boost/fusion/sequence/container/list/limits.hpp new file mode 100644 index 00000000..0d591098 --- /dev/null +++ b/include/boost/fusion/sequence/container/list/limits.hpp @@ -0,0 +1,20 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_LIST_LIMITS_07172005_0112) +#define FUSION_LIST_LIMITS_07172005_0112 + +#if !defined(FUSION_MAX_LIST_SIZE) +# define FUSION_MAX_LIST_SIZE 10 +#else +# if FUSION_MAX_LIST_SIZE < 3 +# undef FUSION_MAX_LIST_SIZE +# define FUSION_MAX_LIST_SIZE 10 +# endif +#endif + +#endif diff --git a/include/boost/fusion/sequence/container/list/list.hpp b/include/boost/fusion/sequence/container/list/list.hpp new file mode 100644 index 00000000..d3743d10 --- /dev/null +++ b/include/boost/fusion/sequence/container/list/list.hpp @@ -0,0 +1,69 @@ +/*============================================================================= + Copyright (c) 2005 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_LIST_07172005_1153) +#define FUSION_LIST_07172005_1153 + +#include +#include + +namespace boost { namespace fusion +{ + struct nil; + struct void_; + + template + struct list + : detail::list_to_cons::type + { + private: + typedef + detail::list_to_cons + list_to_cons; + + public: + typedef typename list_to_cons::type inherited_type; + + list() + : inherited_type() {} + + template + list(list const& rhs) + : inherited_type(rhs) {} + + template + explicit list(T const& rhs) + : inherited_type(rhs) {} + + // Expand a couple of forwarding constructors for arguments + // of type (T0), (T0, T1), (T0, T1, T2) etc. Exanple: + // + // list( + // typename detail::call_param::type _0 + // , typename detail::call_param::type _1) + // : inherited_type(list_to_cons::call(_0, _1)) {} + #include + + template + list& + operator=(list const& rhs) + { + inherited_type::operator=(rhs); + return *this; + } + + template + list& + operator=(T const& rhs) + { + inherited_type::operator=(rhs); + return *this; + } + }; +}} + +#endif diff --git a/include/boost/fusion/sequence/container/list/list_fwd.hpp b/include/boost/fusion/sequence/container/list/list_fwd.hpp new file mode 100644 index 00000000..120f96bc --- /dev/null +++ b/include/boost/fusion/sequence/container/list/list_fwd.hpp @@ -0,0 +1,25 @@ +/*============================================================================= + Copyright (c) 2005 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_LIST_FORWARD_07172005_0224) +#define FUSION_LIST_FORWARD_07172005_0224 + +#include +#include + +namespace boost { namespace fusion +{ + struct void_; + + template < + BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( + FUSION_MAX_LIST_SIZE, typename T, void_) + > + struct list; +}} + +#endif diff --git a/include/boost/fusion/sequence/container/map.hpp b/include/boost/fusion/sequence/container/map.hpp new file mode 100644 index 00000000..72cd4790 --- /dev/null +++ b/include/boost/fusion/sequence/container/map.hpp @@ -0,0 +1,15 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_SEQUENCE_CLASS_MAP_10022005_0606) +#define FUSION_SEQUENCE_CLASS_MAP_10022005_0606 + +#include +#include +#include + +#endif diff --git a/include/boost/fusion/sequence/container/map/detail/at_key_impl.hpp b/include/boost/fusion/sequence/container/map/detail/at_key_impl.hpp new file mode 100644 index 00000000..9fdd7817 --- /dev/null +++ b/include/boost/fusion/sequence/container/map/detail/at_key_impl.hpp @@ -0,0 +1,50 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_AT_KEY_IMPL_05222005_0254) +#define FUSION_AT_KEY_IMPL_05222005_0254 + +#include +#include +#include + +namespace boost { namespace fusion +{ + struct map_tag; + + namespace extension + { + template + struct at_key_impl; + + template <> + struct at_key_impl + { + template + struct apply + { + typedef typename Sequence::template meta_at_impl element; + + typedef typename + mpl::eval_if< + is_const + , detail::cref_result + , detail::ref_result + >::type + type; + + static type + call(Sequence& m) + { + return m.at_impl(mpl::identity()); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/container/map/detail/begin_impl.hpp b/include/boost/fusion/sequence/container/map/detail/begin_impl.hpp new file mode 100644 index 00000000..c2c5fe7a --- /dev/null +++ b/include/boost/fusion/sequence/container/map/detail/begin_impl.hpp @@ -0,0 +1,57 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_BEGIN_IMPL_05222005_1108) +#define FUSION_BEGIN_IMPL_05222005_1108 + +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct map_tag; + + namespace extension + { + template + struct begin_impl; + + template <> + struct begin_impl + { + template + struct apply + { + typedef typename + result_of::begin::type + iterator_type; + + typedef typename + result_of::begin::type + const_iterator_type; + + typedef typename + mpl::eval_if< + is_const + , mpl::identity + , mpl::identity + >::type + type; + + static type + call(Sequence& m) + { + return fusion::begin(m.get_data()); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/container/map/detail/end_impl.hpp b/include/boost/fusion/sequence/container/map/detail/end_impl.hpp new file mode 100644 index 00000000..9778c502 --- /dev/null +++ b/include/boost/fusion/sequence/container/map/detail/end_impl.hpp @@ -0,0 +1,54 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_END_IMPL_05222005_1108) +#define FUSION_END_IMPL_05222005_1108 + +#include + +namespace boost { namespace fusion +{ + struct map_tag; + + namespace extension + { + template + struct end_impl; + + template <> + struct end_impl + { + template + struct apply + { + typedef typename + result_of::end::type + iterator_type; + + typedef typename + result_of::end::type + const_iterator_type; + + typedef typename + mpl::eval_if< + is_const + , mpl::identity + , mpl::identity + >::type + type; + + static type + call(Sequence& m) + { + return fusion::end(m.get_data()); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/container/map/detail/is_associative_impl.hpp b/include/boost/fusion/sequence/container/map/detail/is_associative_impl.hpp new file mode 100644 index 00000000..656d0114 --- /dev/null +++ b/include/boost/fusion/sequence/container/map/detail/is_associative_impl.hpp @@ -0,0 +1,33 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_IS_ASSOCIATIVE_IMPL_20060304_2310) +#define BOOST_FUSION_IS_ASSOCIATIVE_IMPL_20060304_2310 + +#include + +namespace boost { namespace fusion { + + struct map_tag; + + namespace extension { + template + struct is_associative_impl; + + template<> + struct is_associative_impl + { + template + struct apply + : mpl::true_ + {}; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/container/map/detail/lookup_key.hpp b/include/boost/fusion/sequence/container/map/detail/lookup_key.hpp new file mode 100644 index 00000000..c4d037ec --- /dev/null +++ b/include/boost/fusion/sequence/container/map/detail/lookup_key.hpp @@ -0,0 +1,100 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_LOOKUP_KEY_07222005_1248) +#define FUSION_LOOKUP_KEY_07222005_1248 + +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct void_; +}} + +namespace boost { namespace fusion { namespace detail +{ + template + struct map_data_type + { + typedef typename + add_reference< + typename T::second_type + >::type + type; + }; + + template <> + struct map_data_type + { + typedef void_& type; + }; + + template + struct map_const_data_type + { + typedef typename + add_reference< + typename add_const< + typename T::second_type + >::type + >::type + type; + }; + + template <> + struct map_const_data_type + { + typedef void_ const& type; + }; + + template + struct map_value_type + { + typedef typename T::second_type type; + }; + + template <> + struct map_value_type + { + typedef void_ type; + }; + + template + struct map_key_type + { + typedef typename T::first_type type; + }; + + template + struct map_key_type + { + typedef unknown_key type; + }; + + template + struct map_lookup_key + { + static RT + call(Vector& vec) + { + return vec.at_impl(mpl::int_()).second; + } + }; + + template + struct map_lookup_key, Vector> + { + static void_& + call(Vector& vec); // intentionally undefined + }; +}}} + +#endif + diff --git a/include/boost/fusion/sequence/container/map/detail/map_forward_ctor.hpp b/include/boost/fusion/sequence/container/map/detail/map_forward_ctor.hpp new file mode 100644 index 00000000..b641f31b --- /dev/null +++ b/include/boost/fusion/sequence/container/map/detail/map_forward_ctor.hpp @@ -0,0 +1,39 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#ifndef BOOST_PP_IS_ITERATING +#if !defined(FUSION_MAP_FORWARD_CTOR_07222005_0106) +#define FUSION_MAP_FORWARD_CTOR_07222005_0106 + +#include +#include +#include + +#define BOOST_PP_FILENAME_1 \ + +#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_MAP_SIZE) +#include BOOST_PP_ITERATE() + +#endif +#else // defined(BOOST_PP_IS_ITERATING) +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// + +#define N BOOST_PP_ITERATION() + +#if N == 1 + explicit +#endif + map(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& _)) + : data(BOOST_PP_ENUM_PARAMS(N, _)) {} + +#undef N +#endif // defined(BOOST_PP_IS_ITERATING) + diff --git a/include/boost/fusion/sequence/container/map/detail/map_lookup.hpp b/include/boost/fusion/sequence/container/map/detail/map_lookup.hpp new file mode 100644 index 00000000..4557aa2d --- /dev/null +++ b/include/boost/fusion/sequence/container/map/detail/map_lookup.hpp @@ -0,0 +1,124 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#ifndef BOOST_PP_IS_ITERATING +#if !defined(FUSION_MAP_LOOKUP_07212005_1118) +#define FUSION_MAP_LOOKUP_07212005_1118 + +#include +#include +#include +#include +#include + +#if defined(BOOST_MSVC) && (BOOST_MSVC == 1310) +#pragma warning(disable: 4348) // redefinition of default parameter +#endif + + template + struct meta_at_impl + { + typedef void_ type; + }; + + template + struct meta_find_impl + { + typedef vector_iterator type; + }; + + template + struct meta_find_impl_const + { + typedef vector_iterator type; + }; + + template + vector_iterator + find_impl(mpl::identity) const + { + return vector_iterator(data); + } + + template + vector_iterator + find_impl(mpl::identity) + { + return vector_iterator(data); + } + +#define BOOST_PP_FILENAME_1 \ + +#define BOOST_PP_ITERATION_LIMITS (0, BOOST_PP_DEC(FUSION_MAX_MAP_SIZE)) +#include BOOST_PP_ITERATE() + +#endif +#else // defined(BOOST_PP_IS_ITERATING) +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// + +#define N BOOST_PP_ITERATION() + + template + struct meta_at_impl< + typename detail::map_key_type::type, dummy> + { + typedef typename detail::map_value_type::type type; + }; + + typename detail::map_data_type::type + at_impl(mpl::identity::type>) + { + return detail::map_lookup_key< + N + , typename detail::map_data_type::type + , typename detail::map_key_type::type + , storage_type>::call(data); + } + + typename detail::map_const_data_type::type + at_impl(mpl::identity::type>) const + { + return detail::map_lookup_key< + N + , typename detail::map_const_data_type::type + , typename detail::map_key_type::type + , storage_type const>::call(data); + } + + template + struct meta_find_impl< + typename detail::map_key_type::type, dummy> + { + typedef vector_iterator type; + }; + + template + struct meta_find_impl_const< + typename detail::map_key_type::type, dummy> + { + typedef vector_iterator type; + }; + + vector_iterator + find_impl(mpl::identity::type>) + { + return vector_iterator(data); + } + + vector_iterator + find_impl(mpl::identity::type>) const + { + return vector_iterator(data); + } + +#undef N +#endif // defined(BOOST_PP_IS_ITERATING) + diff --git a/include/boost/fusion/sequence/container/map/detail/value_at_key_impl.hpp b/include/boost/fusion/sequence/container/map/detail/value_at_key_impl.hpp new file mode 100644 index 00000000..5578de80 --- /dev/null +++ b/include/boost/fusion/sequence/container/map/detail/value_at_key_impl.hpp @@ -0,0 +1,34 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_VALUE_AT_KEY_IMPL_05222005_0325) +#define FUSION_VALUE_AT_KEY_IMPL_05222005_0325 + +namespace boost { namespace fusion +{ + struct map_tag; + + namespace extension + { + template + struct value_at_key_impl; + + template <> + struct value_at_key_impl + { + template + struct apply + { + typedef typename Sequence:: + template meta_at_impl::type type; + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/container/map/limits.hpp b/include/boost/fusion/sequence/container/map/limits.hpp new file mode 100644 index 00000000..c7859ba1 --- /dev/null +++ b/include/boost/fusion/sequence/container/map/limits.hpp @@ -0,0 +1,26 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_MAP_LIMITS_07212005_1104) +#define FUSION_MAP_LIMITS_07212005_1104 + +#include + +#if !defined(FUSION_MAX_MAP_SIZE) +# define FUSION_MAX_MAP_SIZE FUSION_MAX_VECTOR_SIZE +#else +# if FUSION_MAX_MAP_SIZE < 3 +# undef FUSION_MAX_MAP_SIZE +# if (FUSION_MAX_VECTOR_SIZE > 10) +# define FUSION_MAX_MAP_SIZE 10 +# else +# define FUSION_MAX_MAP_SIZE FUSION_MAX_VECTOR_SIZE +# endif +# endif +#endif + +#endif diff --git a/include/boost/fusion/sequence/container/map/map.hpp b/include/boost/fusion/sequence/container/map/map.hpp new file mode 100644 index 00000000..21976dfb --- /dev/null +++ b/include/boost/fusion/sequence/container/map/map.hpp @@ -0,0 +1,73 @@ +/*============================================================================= + Copyright (c) 2005 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_MAP_07212005_1106) +#define FUSION_MAP_07212005_1106 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct void_; + struct map_tag; + struct forward_sequence_tag; + struct fusion_sequence_tag; + + template + struct map : sequence_base > + { + typedef map_tag ftag; + typedef fusion_sequence_tag tag; // this gets picked up by MPL + typedef forward_sequence_tag category; + typedef mpl::false_ is_view; + + typedef vector< + BOOST_PP_ENUM_PARAMS(FUSION_MAX_MAP_SIZE, T)> + storage_type; + + typedef typename storage_type::size size; + + map() + : data() {} + + template + explicit map(T const& rhs) + : data(rhs) {} + + #include + #include + + template + map& + operator=(T const& rhs) + { + data = rhs; + return *this; + } + + storage_type& get_data() { return data; } + storage_type const& get_data() const { return data; } + + private: + + storage_type data; + }; +}} + +#endif diff --git a/include/boost/fusion/sequence/container/map/map_fwd.hpp b/include/boost/fusion/sequence/container/map/map_fwd.hpp new file mode 100644 index 00000000..2cbfe8a3 --- /dev/null +++ b/include/boost/fusion/sequence/container/map/map_fwd.hpp @@ -0,0 +1,25 @@ +/*============================================================================= + Copyright (c) 2005 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_MAP_FORWARD_07212005_1105) +#define FUSION_MAP_FORWARD_07212005_1105 + +#include +#include + +namespace boost { namespace fusion +{ + struct void_; + + template < + BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( + FUSION_MAX_MAP_SIZE, typename T, void_) + > + struct map; +}} + +#endif diff --git a/include/boost/fusion/sequence/container/set.hpp b/include/boost/fusion/sequence/container/set.hpp new file mode 100644 index 00000000..477f8ecf --- /dev/null +++ b/include/boost/fusion/sequence/container/set.hpp @@ -0,0 +1,15 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_SEQUENCE_CLASS_SET_10022005_0607) +#define FUSION_SEQUENCE_CLASS_SET_10022005_0607 + +#include +#include +#include + +#endif diff --git a/include/boost/fusion/sequence/container/set/detail/at_key_impl.hpp b/include/boost/fusion/sequence/container/set/detail/at_key_impl.hpp new file mode 100644 index 00000000..42609cf2 --- /dev/null +++ b/include/boost/fusion/sequence/container/set/detail/at_key_impl.hpp @@ -0,0 +1,50 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_AT_KEY_IMPL_09162005_1118) +#define FUSION_AT_KEY_IMPL_09162005_1118 + +#include +#include +#include + +namespace boost { namespace fusion +{ + struct set_tag; + + namespace extension + { + template + struct at_key_impl; + + template <> + struct at_key_impl + { + template + struct apply + { + typedef typename Sequence::template meta_at_impl element; + + typedef typename + mpl::eval_if< + is_const + , detail::cref_result + , detail::ref_result + >::type + type; + + static type + call(Sequence& s) + { + return s.at_impl(mpl::identity()); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/container/set/detail/begin_impl.hpp b/include/boost/fusion/sequence/container/set/detail/begin_impl.hpp new file mode 100644 index 00000000..4535d617 --- /dev/null +++ b/include/boost/fusion/sequence/container/set/detail/begin_impl.hpp @@ -0,0 +1,57 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_BEGIN_IMPL_09162005_1120) +#define FUSION_BEGIN_IMPL_09162005_1120 + +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct set_tag; + + namespace extension + { + template + struct begin_impl; + + template <> + struct begin_impl + { + template + struct apply + { + typedef typename + result_of::begin::type + iterator_type; + + typedef typename + result_of::begin::type + const_iterator_type; + + typedef typename + mpl::eval_if< + is_const + , mpl::identity + , mpl::identity + >::type + type; + + static type + call(Sequence& s) + { + return fusion::begin(s.get_data()); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/container/set/detail/end_impl.hpp b/include/boost/fusion/sequence/container/set/detail/end_impl.hpp new file mode 100644 index 00000000..4e098a15 --- /dev/null +++ b/include/boost/fusion/sequence/container/set/detail/end_impl.hpp @@ -0,0 +1,54 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_END_IMPL_09162005_1121) +#define FUSION_END_IMPL_09162005_1121 + +#include + +namespace boost { namespace fusion +{ + struct set_tag; + + namespace extension + { + template + struct end_impl; + + template <> + struct end_impl + { + template + struct apply + { + typedef typename + result_of::end::type + iterator_type; + + typedef typename + result_of::end::type + const_iterator_type; + + typedef typename + mpl::eval_if< + is_const + , mpl::identity + , mpl::identity + >::type + type; + + static type + call(Sequence& s) + { + return fusion::end(s.get_data()); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/container/set/detail/is_associative_impl.hpp b/include/boost/fusion/sequence/container/set/detail/is_associative_impl.hpp new file mode 100644 index 00000000..d167ee63 --- /dev/null +++ b/include/boost/fusion/sequence/container/set/detail/is_associative_impl.hpp @@ -0,0 +1,33 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_IS_ASSOCIATIVE_IMPL_20060304_2219) +#define BOOST_FUSION_IS_ASSOCIATIVE_IMPL_20060304_2219 + +#include + +namespace boost { namespace fusion { + + struct set_tag; + + namespace extension { + template + struct is_associative_impl; + + template<> + struct is_associative_impl + { + template + struct apply + : mpl::true_ + {}; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/container/set/detail/lookup_key.hpp b/include/boost/fusion/sequence/container/set/detail/lookup_key.hpp new file mode 100644 index 00000000..23dbfaf1 --- /dev/null +++ b/include/boost/fusion/sequence/container/set/detail/lookup_key.hpp @@ -0,0 +1,94 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_LOOKUP_KEY_09162005_1111) +#define FUSION_LOOKUP_KEY_09162005_1111 + +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct void_; +}} + +namespace boost { namespace fusion { namespace detail +{ + template + struct set_data_type + { + typedef typename add_reference::type type; + }; + + template <> + struct set_data_type + { + typedef void_& type; + }; + + template + struct set_const_data_type + { + typedef typename + add_reference< + typename add_const::type + >::type + type; + }; + + template <> + struct set_const_data_type + { + typedef void_ const& type; + }; + + template + struct set_value_type + { + typedef T type; + }; + + template <> + struct set_value_type + { + typedef void_ type; + }; + + template + struct set_key_type + { + typedef T type; + }; + + template + struct set_key_type + { + typedef unknown_key type; + }; + + template + struct set_lookup_key + { + static RT + call(Vector& vec) + { + return vec.at_impl(mpl::int_()); + } + }; + + template + struct set_lookup_key, Vector> + { + static void_& + call(Vector& vec); // intentionally undefined + }; +}}} + +#endif + diff --git a/include/boost/fusion/sequence/container/set/detail/set_forward_ctor.hpp b/include/boost/fusion/sequence/container/set/detail/set_forward_ctor.hpp new file mode 100644 index 00000000..76a89e3a --- /dev/null +++ b/include/boost/fusion/sequence/container/set/detail/set_forward_ctor.hpp @@ -0,0 +1,40 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#ifndef BOOST_PP_IS_ITERATING +#if !defined(FUSION_SET_FORWARD_CTOR_09162005_1115) +#define FUSION_SET_FORWARD_CTOR_09162005_1115 + +#include +#include +#include + +#define BOOST_PP_FILENAME_1 \ + +#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_SET_SIZE) +#include BOOST_PP_ITERATE() + +#endif +#else // defined(BOOST_PP_IS_ITERATING) +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// + +#define N BOOST_PP_ITERATION() + +#if N == 1 + explicit +#endif + set(BOOST_PP_ENUM_BINARY_PARAMS( + N, typename detail::call_param::type _)) + : data(BOOST_PP_ENUM_PARAMS(N, _)) {} + +#undef N +#endif // defined(BOOST_PP_IS_ITERATING) + diff --git a/include/boost/fusion/sequence/container/set/detail/set_lookup.hpp b/include/boost/fusion/sequence/container/set/detail/set_lookup.hpp new file mode 100644 index 00000000..2ce15e1c --- /dev/null +++ b/include/boost/fusion/sequence/container/set/detail/set_lookup.hpp @@ -0,0 +1,124 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#ifndef BOOST_PP_IS_ITERATING +#if !defined(FUSION_SET_LOOKUP_09162005_1116) +#define FUSION_SET_LOOKUP_09162005_1116 + +#include +#include +#include +#include +#include + +#if defined(BOOST_MSVC) && (BOOST_MSVC == 1310) +#pragma warning(disable: 4348) // redefinition of default parameter +#endif + + template + struct meta_at_impl + { + typedef void_ type; + }; + + template + struct meta_find_impl + { + typedef vector_iterator type; + }; + + template + struct meta_find_impl_const + { + typedef vector_iterator type; + }; + + template + vector_iterator + find_impl(mpl::identity) const + { + return vector_iterator(data); + } + + template + vector_iterator + find_impl(mpl::identity) + { + return vector_iterator(data); + } + +#define BOOST_PP_FILENAME_1 \ + +#define BOOST_PP_ITERATION_LIMITS (0, BOOST_PP_DEC(FUSION_MAX_SET_SIZE)) +#include BOOST_PP_ITERATE() + +#endif +#else // defined(BOOST_PP_IS_ITERATING) +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// + +#define N BOOST_PP_ITERATION() + + template + struct meta_at_impl< + typename detail::set_key_type::type, dummy> + { + typedef typename detail::set_value_type::type type; + }; + + typename detail::set_data_type::type + at_impl(mpl::identity::type>) + { + return detail::set_lookup_key< + N + , typename detail::set_data_type::type + , typename detail::set_key_type::type + , storage_type>::call(data); + } + + typename detail::set_const_data_type::type + at_impl(mpl::identity::type>) const + { + return detail::set_lookup_key< + N + , typename detail::set_const_data_type::type + , typename detail::set_key_type::type + , storage_type const>::call(data); + } + + template + struct meta_find_impl< + typename detail::set_key_type::type, dummy> + { + typedef vector_iterator type; + }; + + template + struct meta_find_impl_const< + typename detail::set_key_type::type, dummy> + { + typedef vector_iterator type; + }; + + vector_iterator + find_impl(mpl::identity::type>) + { + return vector_iterator(data); + } + + vector_iterator + find_impl(mpl::identity::type>) const + { + return vector_iterator(data); + } + +#undef N +#endif // defined(BOOST_PP_IS_ITERATING) + diff --git a/include/boost/fusion/sequence/container/set/detail/value_at_key_impl.hpp b/include/boost/fusion/sequence/container/set/detail/value_at_key_impl.hpp new file mode 100644 index 00000000..1755eb6d --- /dev/null +++ b/include/boost/fusion/sequence/container/set/detail/value_at_key_impl.hpp @@ -0,0 +1,36 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_VALUE_AT_KEY_IMPL_09162005_1123) +#define FUSION_VALUE_AT_KEY_IMPL_09162005_1123 + +#include + +namespace boost { namespace fusion +{ + struct set_tag; + + namespace extension + { + template + struct value_at_key_impl; + + template <> + struct value_at_key_impl + { + template + struct apply + { + typedef typename Sequence:: + template meta_at_impl::type type; + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/container/set/limits.hpp b/include/boost/fusion/sequence/container/set/limits.hpp new file mode 100644 index 00000000..d278ac47 --- /dev/null +++ b/include/boost/fusion/sequence/container/set/limits.hpp @@ -0,0 +1,26 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_SET_LIMITS_09162005_1103) +#define FUSION_SET_LIMITS_09162005_1103 + +#include + +#if !defined(FUSION_MAX_SET_SIZE) +# define FUSION_MAX_SET_SIZE FUSION_MAX_VECTOR_SIZE +#else +# if FUSION_MAX_SET_SIZE < 3 +# undef FUSION_MAX_SET_SIZE +# if (FUSION_MAX_VECTOR_SIZE > 10) +# define FUSION_MAX_SET_SIZE 10 +# else +# define FUSION_MAX_SET_SIZE FUSION_MAX_VECTOR_SIZE +# endif +# endif +#endif + +#endif diff --git a/include/boost/fusion/sequence/container/set/set.hpp b/include/boost/fusion/sequence/container/set/set.hpp new file mode 100644 index 00000000..2a47f523 --- /dev/null +++ b/include/boost/fusion/sequence/container/set/set.hpp @@ -0,0 +1,72 @@ +/*============================================================================= + Copyright (c) 2005 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_SET_09162005_1104) +#define FUSION_SET_09162005_1104 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct void_; + struct set_tag; + struct forward_sequence_tag; + struct fusion_sequence_tag; + + template + struct set : sequence_base > + { + typedef set_tag ftag; + typedef fusion_sequence_tag tag; // this gets picked up by MPL + typedef forward_sequence_tag category; + typedef mpl::false_ is_view; + + typedef vector< + BOOST_PP_ENUM_PARAMS(FUSION_MAX_SET_SIZE, T)> + storage_type; + + typedef typename storage_type::size size; + + set() + : data() {} + + template + explicit set(T const& rhs) + : data(rhs) {} + + #include + #include + + template + set& + operator=(T const& rhs) + { + data = rhs; + return *this; + } + + storage_type& get_data() { return data; } + storage_type const& get_data() const { return data; } + + private: + + storage_type data; + }; +}} + +#endif diff --git a/include/boost/fusion/sequence/container/set/set_fwd.hpp b/include/boost/fusion/sequence/container/set/set_fwd.hpp new file mode 100644 index 00000000..610f27a7 --- /dev/null +++ b/include/boost/fusion/sequence/container/set/set_fwd.hpp @@ -0,0 +1,25 @@ +/*============================================================================= + Copyright (c) 2005 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_SET_FORWARD_09162005_1102) +#define FUSION_SET_FORWARD_09162005_1102 + +#include +#include + +namespace boost { namespace fusion +{ + struct void_; + + template < + BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( + FUSION_MAX_SET_SIZE, typename T, void_) + > + struct set; +}} + +#endif diff --git a/include/boost/fusion/sequence/container/vector.hpp b/include/boost/fusion/sequence/container/vector.hpp new file mode 100644 index 00000000..100fe118 --- /dev/null +++ b/include/boost/fusion/sequence/container/vector.hpp @@ -0,0 +1,21 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_SEQUENCE_CLASS_VECTOR_10022005_0602) +#define FUSION_SEQUENCE_CLASS_VECTOR_10022005_0602 + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#endif diff --git a/include/boost/fusion/sequence/container/vector/detail/advance_impl.hpp b/include/boost/fusion/sequence/container/vector/detail/advance_impl.hpp new file mode 100644 index 00000000..24dc4f2d --- /dev/null +++ b/include/boost/fusion/sequence/container/vector/detail/advance_impl.hpp @@ -0,0 +1,43 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_ADVANCE_IMPL_09172005_1156) +#define FUSION_ADVANCE_IMPL_09172005_1156 + +namespace boost { namespace fusion +{ + struct vector_iterator_tag; + + template + struct vector_iterator; + + namespace extension + { + template + struct advance_impl; + + template <> + struct advance_impl + { + template + struct apply + { + typedef typename Iterator::index index; + typedef typename Iterator::vector vector; + typedef vector_iterator type; + + static type + call(Iterator const& i) + { + return type(i.vec); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/container/vector/detail/at_impl.hpp b/include/boost/fusion/sequence/container/vector/detail/at_impl.hpp new file mode 100644 index 00000000..b38119a1 --- /dev/null +++ b/include/boost/fusion/sequence/container/vector/detail/at_impl.hpp @@ -0,0 +1,50 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_AT_IMPL_05042005_0741) +#define FUSION_AT_IMPL_05042005_0741 + +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct vector_tag; + + namespace extension + { + template + struct at_impl; + + template <> + struct at_impl + { + template + struct apply + { + typedef mpl::at element; + typedef typename + mpl::eval_if< + is_const + , detail::cref_result + , detail::ref_result + >::type + type; + + static type + call(Sequence& v) + { + return v.at_impl(N()); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/container/vector/detail/begin_impl.hpp b/include/boost/fusion/sequence/container/vector/detail/begin_impl.hpp new file mode 100644 index 00000000..b261968a --- /dev/null +++ b/include/boost/fusion/sequence/container/vector/detail/begin_impl.hpp @@ -0,0 +1,40 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_BEGIN_IMPL_05042005_1136) +#define FUSION_BEGIN_IMPL_05042005_1136 + +#include + +namespace boost { namespace fusion +{ + struct vector_tag; + + namespace extension + { + template + struct begin_impl; + + template <> + struct begin_impl + { + template + struct apply + { + typedef vector_iterator type; + + static type + call(Sequence& v) + { + return type(v); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/container/vector/detail/deref_impl.hpp b/include/boost/fusion/sequence/container/vector/detail/deref_impl.hpp new file mode 100644 index 00000000..25f0d5fe --- /dev/null +++ b/include/boost/fusion/sequence/container/vector/detail/deref_impl.hpp @@ -0,0 +1,54 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_DEREF_IMPL_05042005_1037) +#define FUSION_DEREF_IMPL_05042005_1037 + +#include +#include +#include + +namespace boost { namespace fusion +{ + struct vector_iterator_tag; + + namespace extension + { + template + struct deref_impl; + + template <> + struct deref_impl + { + template + struct apply + { + typedef typename Iterator::vector vector; + typedef typename Iterator::index index; + typedef typename mpl::at< + typename vector::types, index> + element; + + typedef typename + mpl::eval_if< + is_const + , fusion::detail::cref_result + , fusion::detail::ref_result + >::type + type; + + static type + call(Iterator const& i) + { + return i.vec.at_impl(index()); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/container/vector/detail/distance_impl.hpp b/include/boost/fusion/sequence/container/vector/detail/distance_impl.hpp new file mode 100644 index 00000000..43f2a40e --- /dev/null +++ b/include/boost/fusion/sequence/container/vector/detail/distance_impl.hpp @@ -0,0 +1,42 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_DISTANCE_IMPL_09172005_0751) +#define FUSION_DISTANCE_IMPL_09172005_0751 + +#include + +namespace boost { namespace fusion +{ + struct vector_iterator_tag; + + namespace extension + { + template + struct distance_impl; + + template <> + struct distance_impl + { + template + struct apply : mpl::minus + { + static typename mpl::minus< + typename Last::index, typename First::index>::type + call(First const&, Last const&) + { + static typename mpl::minus< + typename Last::index, typename First::index>::type + result; + return result; + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/container/vector/detail/end_impl.hpp b/include/boost/fusion/sequence/container/vector/detail/end_impl.hpp new file mode 100644 index 00000000..0d760754 --- /dev/null +++ b/include/boost/fusion/sequence/container/vector/detail/end_impl.hpp @@ -0,0 +1,41 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_END_IMPL_05042005_1142) +#define FUSION_END_IMPL_05042005_1142 + +#include + +namespace boost { namespace fusion +{ + struct vector_tag; + + namespace extension + { + template + struct end_impl; + + template <> + struct end_impl + { + template + struct apply + { + typedef typename Sequence::size size; + typedef vector_iterator type; + + static type + call(Sequence& v) + { + return type(v); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/container/vector/detail/equal_to_impl.hpp b/include/boost/fusion/sequence/container/vector/detail/equal_to_impl.hpp new file mode 100644 index 00000000..b4971b94 --- /dev/null +++ b/include/boost/fusion/sequence/container/vector/detail/equal_to_impl.hpp @@ -0,0 +1,40 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_EQUAL_TO_IMPL_05052005_1215) +#define FUSION_EQUAL_TO_IMPL_05052005_1215 + +#include +#include +#include + +namespace boost { namespace fusion +{ + struct vector_iterator_tag; + + namespace extension + { + template + struct equal_to_impl; + + template <> + struct equal_to_impl + { + template + struct apply + : is_same< + typename I1::identity + , typename I2::identity + > + { + }; + }; + } +}} + +#endif + diff --git a/include/boost/fusion/sequence/container/vector/detail/next_impl.hpp b/include/boost/fusion/sequence/container/vector/detail/next_impl.hpp new file mode 100644 index 00000000..acc7ecf7 --- /dev/null +++ b/include/boost/fusion/sequence/container/vector/detail/next_impl.hpp @@ -0,0 +1,44 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_NEXT_IMPL_05042005_1058) +#define FUSION_NEXT_IMPL_05042005_1058 + +#include + +namespace boost { namespace fusion +{ + struct vector_iterator_tag; + template + struct vector_iterator; + + namespace extension + { + template + struct next_impl; + + template <> + struct next_impl + { + template + struct apply + { + typedef typename Iterator::vector vector; + typedef typename Iterator::index index; + typedef vector_iterator type; + + static type + call(Iterator const& i) + { + return type(i.vec); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/container/vector/detail/prior_impl.hpp b/include/boost/fusion/sequence/container/vector/detail/prior_impl.hpp new file mode 100644 index 00000000..cf6e80f5 --- /dev/null +++ b/include/boost/fusion/sequence/container/vector/detail/prior_impl.hpp @@ -0,0 +1,44 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_PRIOR_IMPL_05042005_1145) +#define FUSION_PRIOR_IMPL_05042005_1145 + +#include + +namespace boost { namespace fusion +{ + struct vector_iterator_tag; + template + struct vector_iterator; + + namespace extension + { + template + struct prior_impl; + + template <> + struct prior_impl + { + template + struct apply + { + typedef typename Iterator::vector vector; + typedef typename Iterator::index index; + typedef vector_iterator type; + + static type + call(Iterator const& i) + { + return type(i.vec); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/container/vector/detail/value_at_impl.hpp b/include/boost/fusion/sequence/container/vector/detail/value_at_impl.hpp new file mode 100644 index 00000000..1910400a --- /dev/null +++ b/include/boost/fusion/sequence/container/vector/detail/value_at_impl.hpp @@ -0,0 +1,34 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_VALUE_AT_IMPL_05052005_0232) +#define FUSION_VALUE_AT_IMPL_05052005_0232 + +#include + +namespace boost { namespace fusion +{ + struct vector_tag; + + namespace extension + { + template + struct value_at_impl; + + template <> + struct value_at_impl + { + template + struct apply + { + typedef typename mpl::at::type type; + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/container/vector/detail/value_of_impl.hpp b/include/boost/fusion/sequence/container/vector/detail/value_of_impl.hpp new file mode 100644 index 00000000..f37e0b5d --- /dev/null +++ b/include/boost/fusion/sequence/container/vector/detail/value_of_impl.hpp @@ -0,0 +1,38 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_VALUE_OF_IMPL_05052005_1128) +#define FUSION_VALUE_OF_IMPL_05052005_1128 + +#include + +namespace boost { namespace fusion +{ + struct vector_iterator_tag; + + namespace extension + { + template + struct value_of_impl; + + template <> + struct value_of_impl + { + template + struct apply + { + typedef typename Iterator::vector vector; + typedef typename Iterator::index index; + typedef typename mpl::at< + typename vector::types, index>::type + type; + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/container/vector/detail/vector_forward_ctor.hpp b/include/boost/fusion/sequence/container/vector/detail/vector_forward_ctor.hpp new file mode 100644 index 00000000..dc5535f1 --- /dev/null +++ b/include/boost/fusion/sequence/container/vector/detail/vector_forward_ctor.hpp @@ -0,0 +1,40 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#ifndef BOOST_PP_IS_ITERATING +#if !defined(FUSION_VECTOR_FORWARD_CTOR_07122005_1123) +#define FUSION_VECTOR_FORWARD_CTOR_07122005_1123 + +#include +#include +#include + +#define BOOST_PP_FILENAME_1 \ + +#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) +#include BOOST_PP_ITERATE() + +#endif +#else // defined(BOOST_PP_IS_ITERATING) +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// + +#define N BOOST_PP_ITERATION() + +#if N == 1 + explicit +#endif + vector(BOOST_PP_ENUM_BINARY_PARAMS( + N, typename detail::call_param::type _)) + : vec(BOOST_PP_ENUM_PARAMS(N, _)) {} + +#undef N +#endif // defined(BOOST_PP_IS_ITERATING) + diff --git a/include/boost/fusion/sequence/container/vector/detail/vector_n.hpp b/include/boost/fusion/sequence/container/vector/detail/vector_n.hpp new file mode 100644 index 00000000..4d5a965c --- /dev/null +++ b/include/boost/fusion/sequence/container/vector/detail/vector_n.hpp @@ -0,0 +1,143 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +// No include guard. This file is meant to be included many times + +#if !defined(FUSION_MACRO_05042005) +#define FUSION_MACRO_05042005 + +#define FUSION_MEMBER_DEFAULT_INIT(z, n, _) m##n(T##n()) +#define FUSION_MEMBER_INIT(z, n, _) m##n(_##n) +#define FUSION_COPY_INIT(z, n, _) m##n(other.m##n) +#define FUSION_MEMBER_DECL(z, n, _) T##n m##n; + +#define FUSION_MEMBER_ASSIGN(z, n, _) \ + this->BOOST_PP_CAT(m, n) = vec.BOOST_PP_CAT(m, n); + +#define FUSION_DEREF_MEMBER_ASSIGN(z, n, _) \ + this->BOOST_PP_CAT(m, n) = *BOOST_PP_CAT(i, n); + +#define FUSION_AT_IMPL(z, n, _) \ + typename add_reference::type \ + at_impl(mpl::int_) { return this->m##n; } \ + typename add_reference::type>::type \ + at_impl(mpl::int_) const { return this->m##n; } + +#define FUSION_ITER_DECL_VAR(z, n, _) \ + typedef typename result_of::next< \ + BOOST_PP_CAT(I, BOOST_PP_DEC(n))>::type BOOST_PP_CAT(I, n); \ + BOOST_PP_CAT(I, n) BOOST_PP_CAT(i, n) \ + = fusion::next(BOOST_PP_CAT(i, BOOST_PP_DEC(n))); + +#endif + +#define N BOOST_PP_ITERATION() + + template + struct BOOST_PP_CAT(vector_data, N) : sequence_base + { + BOOST_PP_CAT(vector_data, N)() + : BOOST_PP_ENUM(N, FUSION_MEMBER_DEFAULT_INIT, _) {} + + BOOST_PP_CAT(vector_data, N)( + BOOST_PP_ENUM_BINARY_PARAMS( + N, typename detail::call_param::type _)) + : BOOST_PP_ENUM(N, FUSION_MEMBER_INIT, _) {} + + BOOST_PP_CAT(vector_data, N)( + BOOST_PP_CAT(vector_data, N) const& other) + : BOOST_PP_ENUM(N, FUSION_COPY_INIT, _) {} + + BOOST_PP_CAT(vector_data, N)& + operator=(BOOST_PP_CAT(vector_data, N) const& vec) + { + BOOST_PP_REPEAT(N, FUSION_MEMBER_ASSIGN, _) + return *this; + } + + template + static BOOST_PP_CAT(vector_data, N) + init_from_sequence(Sequence const& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + BOOST_PP_REPEAT_FROM_TO(1, N, FUSION_ITER_DECL_VAR, _) + return BOOST_PP_CAT(vector_data, N)(BOOST_PP_ENUM_PARAMS(N, *i)); + } + + BOOST_PP_REPEAT(N, FUSION_MEMBER_DECL, _) + }; + + template + struct BOOST_PP_CAT(vector, N) + : BOOST_PP_CAT(vector_data, N)< + BOOST_PP_CAT(vector, N) + , BOOST_PP_ENUM_PARAMS(N, T)> + { + typedef BOOST_PP_CAT(vector, N) this_type; + typedef BOOST_PP_CAT(vector_data, N) base_type; + typedef mpl::BOOST_PP_CAT(vector, N) types; + typedef vector_tag ftag; + typedef fusion_sequence_tag tag; // this gets picked up by MPL + typedef mpl::false_ is_view; + typedef random_access_sequence_tag category; + typedef mpl::int_ size; + + BOOST_PP_CAT(vector, N)() {} + + BOOST_PP_CAT(vector, N)( + BOOST_PP_ENUM_BINARY_PARAMS( + N, typename detail::call_param::type _)) + : base_type(BOOST_PP_ENUM_PARAMS(N, _)) {} + + template + BOOST_PP_CAT(vector, N)( + BOOST_PP_CAT(vector, N) const& vec) + : base_type(BOOST_PP_ENUM_PARAMS(N, vec.m)) {} + + template + explicit BOOST_PP_CAT(vector, N)( + Sequence const& seq + , typename disable_if >::type* dummy = 0) + : base_type(base_type::init_from_sequence(seq)) {} + + template + BOOST_PP_CAT(vector, N)& + operator=(BOOST_PP_CAT(vector, N) const& vec) + { + BOOST_PP_REPEAT(N, FUSION_MEMBER_ASSIGN, _) + return *this; + } + + template + typename disable_if, this_type&>::type + operator=(Sequence const& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + BOOST_PP_REPEAT_FROM_TO(1, N, FUSION_ITER_DECL_VAR, _) + BOOST_PP_REPEAT(N, FUSION_DEREF_MEMBER_ASSIGN, _) + return *this; + } + + BOOST_PP_REPEAT(N, FUSION_AT_IMPL, _) + + template + typename add_reference::type>::type + at_impl(I i) + { + return this->at_impl(mpl::int_()); + } + + template + typename add_reference::type>::type>::type + at_impl(I i) const + { + return this->at_impl(mpl::int_()); + } + }; + diff --git a/include/boost/fusion/sequence/container/vector/detail/vector_n_chooser.hpp b/include/boost/fusion/sequence/container/vector/detail/vector_n_chooser.hpp new file mode 100644 index 00000000..9d6724af --- /dev/null +++ b/include/boost/fusion/sequence/container/vector/detail/vector_n_chooser.hpp @@ -0,0 +1,100 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#ifndef BOOST_PP_IS_ITERATING +#if !defined(FUSION_VECTOR_N_CHOOSER_07072005_1248) +#define FUSION_VECTOR_N_CHOOSER_07072005_1248 + +#include + +// include vector0..N where N is FUSION_MAX_VECTOR_SIZE +#include +#if (FUSION_MAX_VECTOR_SIZE > 10) +#include +#endif +#if (FUSION_MAX_VECTOR_SIZE > 20) +#include +#endif +#if (FUSION_MAX_VECTOR_SIZE > 30) +#include +#endif +#if (FUSION_MAX_VECTOR_SIZE > 40) +#include +#endif + +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct void_; +}} + +namespace boost { namespace fusion { namespace detail +{ + template + struct get_vector_n; + + template <> + struct get_vector_n<0> + { + template + struct call + { + typedef vector0 type; + }; + }; + +#define BOOST_PP_FILENAME_1 \ + +#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) +#include BOOST_PP_ITERATE() + + template + struct vector_n_chooser + { + typedef + mpl::BOOST_PP_CAT(vector, FUSION_MAX_VECTOR_SIZE) + + input; + + typedef typename mpl::begin::type begin; + typedef typename mpl::find::type end; + typedef typename mpl::distance::type size; + + typedef typename get_vector_n::template + call::type + type; + }; +}}} + +#endif + +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// +#else // defined(BOOST_PP_IS_ITERATING) + +#define N BOOST_PP_ITERATION() + + template <> + struct get_vector_n + { + template + struct call + { + typedef BOOST_PP_CAT(vector, N) type; + }; + }; + +#undef N +#endif // defined(BOOST_PP_IS_ITERATING) diff --git a/include/boost/fusion/sequence/container/vector/limits.hpp b/include/boost/fusion/sequence/container/vector/limits.hpp new file mode 100644 index 00000000..27af0fcf --- /dev/null +++ b/include/boost/fusion/sequence/container/vector/limits.hpp @@ -0,0 +1,20 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_VECTOR_LIMITS_07072005_1246) +#define FUSION_VECTOR_LIMITS_07072005_1246 + +#if !defined(FUSION_MAX_VECTOR_SIZE) +# define FUSION_MAX_VECTOR_SIZE 10 +#else +# if FUSION_MAX_VECTOR_SIZE < 3 +# undef FUSION_MAX_VECTOR_SIZE +# define FUSION_MAX_VECTOR_SIZE 10 +# endif +#endif + +#endif diff --git a/include/boost/fusion/sequence/container/vector/vector.hpp b/include/boost/fusion/sequence/container/vector/vector.hpp new file mode 100644 index 00000000..58f7f6b8 --- /dev/null +++ b/include/boost/fusion/sequence/container/vector/vector.hpp @@ -0,0 +1,129 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_VECTOR_07072005_1244) +#define FUSION_VECTOR_07072005_1244 + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct void_; + struct fusion_sequence_tag; + + template + struct vector + : sequence_base > + { + private: + + typedef typename detail::vector_n_chooser< + BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, T)>::type + vector_n; + + template + friend struct vector; + + public: + + typedef typename vector_n::types types; + typedef typename vector_n::ftag ftag; + typedef typename vector_n::tag tag; + typedef typename vector_n::size size; + typedef typename vector_n::category category; + typedef typename vector_n::is_view is_view; + + vector() + : vec() {} + + template + vector(vector const& rhs) + : vec(rhs.vec) {} + + template + explicit vector(T const& rhs) + : vec(rhs) {} + + // Expand a couple of forwarding constructors for arguments + // of type (T0), (T0, T1), (T0, T1, T2) etc. Exanple: + // + // vector( + // typename detail::call_param::type _0 + // , typename detail::call_param::type _1) + // : vec(_0, _1) {} + #include + + template + vector& + operator=(vector const& rhs) + { + vec = rhs.vec; + return *this; + } + + template + vector& + operator=(T const& rhs) + { + vec = rhs; + return *this; + } + + template + typename add_reference< + typename mpl::at_c::type + >::type + at_impl(mpl::int_ index) + { + return vec.at_impl(index); + } + + template + typename add_reference< + typename add_const< + typename mpl::at_c::type + >::type + >::type + at_impl(mpl::int_ index) const + { + return vec.at_impl(index); + } + + template + typename add_reference< + typename mpl::at::type + >::type + at_impl(I index) + { + return vec.at_impl(mpl::int_()); + } + + template + typename add_reference< + typename add_const< + typename mpl::at::type + >::type + >::type + at_impl(I index) const + { + return vec.at_impl(mpl::int_()); + } + + private: + + vector_n vec; + }; +}} + +#endif diff --git a/include/boost/fusion/sequence/container/vector/vector10.hpp b/include/boost/fusion/sequence/container/vector/vector10.hpp new file mode 100644 index 00000000..8b760b0e --- /dev/null +++ b/include/boost/fusion/sequence/container/vector/vector10.hpp @@ -0,0 +1,61 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_VECTOR10_05042005_0257) +#define FUSION_VECTOR10_05042005_0257 + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct vector_tag; + struct fusion_sequence_tag; + struct random_access_sequence_tag; + + struct vector0 : sequence_base + { + typedef mpl::vector0<> types; + typedef vector_tag ftag; + typedef fusion_sequence_tag tag; // this gets picked up by MPL + typedef mpl::false_ is_view; + typedef random_access_sequence_tag category; + typedef mpl::int_<0> size; + }; + +// expand vector1 to vector10 +#define BOOST_PP_FILENAME_1 +#define BOOST_PP_ITERATION_LIMITS (1, 10) +#include BOOST_PP_ITERATE() + +}} + +#endif + diff --git a/include/boost/fusion/sequence/container/vector/vector20.hpp b/include/boost/fusion/sequence/container/vector/vector20.hpp new file mode 100644 index 00000000..1a4f94d2 --- /dev/null +++ b/include/boost/fusion/sequence/container/vector/vector20.hpp @@ -0,0 +1,51 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_VECTOR20_05052005_0205) +#define FUSION_VECTOR20_05052005_0205 + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct vector_tag; + struct fusion_sequence_tag; + struct random_access_sequence_tag; + +// expand vector11 to vector20 +#define BOOST_PP_FILENAME_1 +#define BOOST_PP_ITERATION_LIMITS (11, 20) +#include BOOST_PP_ITERATE() + +}} + +#endif + diff --git a/include/boost/fusion/sequence/container/vector/vector30.hpp b/include/boost/fusion/sequence/container/vector/vector30.hpp new file mode 100644 index 00000000..8b5325ba --- /dev/null +++ b/include/boost/fusion/sequence/container/vector/vector30.hpp @@ -0,0 +1,51 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_VECTOR30_05052005_0206) +#define FUSION_VECTOR30_05052005_0206 + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct vector_tag; + struct fusion_sequence_tag; + struct random_access_sequence_tag; + +// expand vector21 to vector30 +#define BOOST_PP_FILENAME_1 +#define BOOST_PP_ITERATION_LIMITS (21, 30) +#include BOOST_PP_ITERATE() + +}} + +#endif + diff --git a/include/boost/fusion/sequence/container/vector/vector40.hpp b/include/boost/fusion/sequence/container/vector/vector40.hpp new file mode 100644 index 00000000..90aa1614 --- /dev/null +++ b/include/boost/fusion/sequence/container/vector/vector40.hpp @@ -0,0 +1,51 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_VECTOR40_05052005_0208) +#define FUSION_VECTOR40_05052005_0208 + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct vector_tag; + struct fusion_sequence_tag; + struct random_access_sequence_tag; + +// expand vector31 to vector40 +#define BOOST_PP_FILENAME_1 +#define BOOST_PP_ITERATION_LIMITS (31, 40) +#include BOOST_PP_ITERATE() + +}} + +#endif + diff --git a/include/boost/fusion/sequence/container/vector/vector50.hpp b/include/boost/fusion/sequence/container/vector/vector50.hpp new file mode 100644 index 00000000..12fca5bf --- /dev/null +++ b/include/boost/fusion/sequence/container/vector/vector50.hpp @@ -0,0 +1,51 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_VECTOR50_05052005_0207) +#define FUSION_VECTOR50_05052005_0207 + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct vector_tag; + struct fusion_sequence_tag; + struct random_access_sequence_tag; + +// expand vector41 to vector50 +#define BOOST_PP_FILENAME_1 +#define BOOST_PP_ITERATION_LIMITS (41, 50) +#include BOOST_PP_ITERATE() + +}} + +#endif + diff --git a/include/boost/fusion/sequence/container/vector/vector_fwd.hpp b/include/boost/fusion/sequence/container/vector/vector_fwd.hpp new file mode 100644 index 00000000..cdd07d4f --- /dev/null +++ b/include/boost/fusion/sequence/container/vector/vector_fwd.hpp @@ -0,0 +1,26 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_VECTOR_FORWARD_07072005_0125) +#define FUSION_VECTOR_FORWARD_07072005_0125 + +#include +#include + +namespace boost { namespace fusion +{ + struct void_; + + template < + BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( + FUSION_MAX_VECTOR_SIZE, typename T, void_) + > + struct vector; +}} + +#endif diff --git a/include/boost/fusion/sequence/container/vector/vector_iterator.hpp b/include/boost/fusion/sequence/container/vector/vector_iterator.hpp new file mode 100644 index 00000000..e76f9e35 --- /dev/null +++ b/include/boost/fusion/sequence/container/vector/vector_iterator.hpp @@ -0,0 +1,47 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_VECTOR_ITERATOR_05042005_0635) +#define FUSION_VECTOR_ITERATOR_05042005_0635 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct vector_iterator_tag; + struct random_access_traversal_tag; + + template + struct vector_iterator_identity; + + template + struct vector_iterator : iterator_base > + { + typedef mpl::int_ index; + typedef Vector vector; + typedef vector_iterator_tag ftag; + typedef random_access_traversal_tag category; + typedef vector_iterator_identity< + typename add_const::type, N> identity; + + vector_iterator(Vector& vec) + : vec(vec) {} + Vector& vec; + }; +}} + +#endif + diff --git a/include/boost/fusion/sequence/conversion.hpp b/include/boost/fusion/sequence/conversion.hpp new file mode 100644 index 00000000..471bd27d --- /dev/null +++ b/include/boost/fusion/sequence/conversion.hpp @@ -0,0 +1,16 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_SEQUENCE_CONVERSION_10022005_0622) +#define FUSION_SEQUENCE_CONVERSION_10022005_0622 + +#include +#include +#include +#include + +#endif diff --git a/include/boost/fusion/sequence/conversion/as_list.hpp b/include/boost/fusion/sequence/conversion/as_list.hpp new file mode 100644 index 00000000..02a43c76 --- /dev/null +++ b/include/boost/fusion/sequence/conversion/as_list.hpp @@ -0,0 +1,56 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_AS_LIST_09232005_1215) +#define FUSION_AS_LIST_09232005_1215 + +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + namespace result_of + { + template + struct as_list + { + typedef typename + detail::build_cons< + typename result_of::begin::type + , typename result_of::end::type + > + build_cons; + + typedef typename build_cons::type type; + + static type + call(Sequence& seq) + { + return build_cons::call(fusion::begin(seq), fusion::end(seq)); + } + }; + } + + template + inline typename result_of::as_list::type + as_list(Sequence& seq) + { + return result_of::as_list::call(seq); + } + + template + inline typename result_of::as_list::type + as_list(Sequence const& seq) + { + return result_of::as_list::call(seq); + } +}} + +#endif diff --git a/include/boost/fusion/sequence/conversion/as_map.hpp b/include/boost/fusion/sequence/conversion/as_map.hpp new file mode 100644 index 00000000..31b97a17 --- /dev/null +++ b/include/boost/fusion/sequence/conversion/as_map.hpp @@ -0,0 +1,47 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_AS_MAP_09232005_1340) +#define FUSION_AS_MAP_09232005_1340 + +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + namespace result_of + { + template + struct as_map + { + typedef typename detail::as_map::value> gen; + typedef typename gen:: + template apply::type>::type + type; + }; + } + + template + inline typename result_of::as_map::type + as_map(Sequence& seq) + { + typedef typename result_of::as_map::gen gen; + return gen::call(fusion::begin(seq)); + } + + template + inline typename result_of::as_map::type + as_map(Sequence const& seq) + { + typedef typename result_of::as_map::gen gen; + return gen::call(fusion::begin(seq)); + } +}} + +#endif diff --git a/include/boost/fusion/sequence/conversion/as_set.hpp b/include/boost/fusion/sequence/conversion/as_set.hpp new file mode 100644 index 00000000..b2cc3061 --- /dev/null +++ b/include/boost/fusion/sequence/conversion/as_set.hpp @@ -0,0 +1,47 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_AS_SET_09232005_1341) +#define FUSION_AS_SET_09232005_1341 + +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + namespace result_of + { + template + struct as_set + { + typedef typename detail::as_set::value> gen; + typedef typename gen:: + template apply::type>::type + type; + }; + } + + template + inline typename result_of::as_set::type + as_set(Sequence& seq) + { + typedef typename result_of::as_set::gen gen; + return gen::call(fusion::begin(seq)); + } + + template + inline typename result_of::as_set::type + as_set(Sequence const& seq) + { + typedef typename result_of::as_set::gen gen; + return gen::call(fusion::begin(seq)); + } +}} + +#endif diff --git a/include/boost/fusion/sequence/conversion/as_vector.hpp b/include/boost/fusion/sequence/conversion/as_vector.hpp new file mode 100644 index 00000000..077eb564 --- /dev/null +++ b/include/boost/fusion/sequence/conversion/as_vector.hpp @@ -0,0 +1,47 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_AS_VECTOR_09222005_1104) +#define FUSION_AS_VECTOR_09222005_1104 + +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + namespace result_of + { + template + struct as_vector + { + typedef typename detail::as_vector::value> gen; + typedef typename gen:: + template apply::type>::type + type; + }; + } + + template + inline typename result_of::as_vector::type + as_vector(Sequence& seq) + { + typedef typename result_of::as_vector::gen gen; + return gen::call(fusion::begin(seq)); + } + + template + inline typename result_of::as_vector::type + as_vector(Sequence const& seq) + { + typedef typename result_of::as_vector::gen gen; + return gen::call(fusion::begin(seq)); + } +}} + +#endif diff --git a/include/boost/fusion/sequence/conversion/detail/as_map.hpp b/include/boost/fusion/sequence/conversion/detail/as_map.hpp new file mode 100644 index 00000000..480dbd1d --- /dev/null +++ b/include/boost/fusion/sequence/conversion/detail/as_map.hpp @@ -0,0 +1,102 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#ifndef BOOST_PP_IS_ITERATING +#if !defined(FUSION_AS_MAP_0932005_1339) +#define FUSION_AS_MAP_0932005_1339 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion { namespace detail +{ + template + struct as_map; + + template <> + struct as_map<0> + { + template + struct apply + { + typedef map<> type; + }; + + template + static typename apply::type + call(Iterator) + { + return map<>(); + } + }; + +#define BOOST_FUSION_NEXT_ITERATOR(z, n, data) \ + typedef typename fusion::result_of::next::type \ + BOOST_PP_CAT(I, BOOST_PP_INC(n)); + +#define BOOST_FUSION_NEXT_CALL_ITERATOR(z, n, data) \ + typename gen::BOOST_PP_CAT(I, BOOST_PP_INC(n)) \ + BOOST_PP_CAT(i, BOOST_PP_INC(n)) = fusion::next(BOOST_PP_CAT(i, n)); + +#define BOOST_FUSION_VALUE_OF_ITERATOR(z, n, data) \ + typedef typename fusion::result_of::value_of::type \ + BOOST_PP_CAT(T, n); + +#define BOOST_PP_FILENAME_1 +#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_MAP_SIZE) +#include BOOST_PP_ITERATE() + +#undef BOOST_FUSION_NEXT_ITERATOR +#undef BOOST_FUSION_NEXT_CALL_ITERATOR +#undef BOOST_FUSION_VALUE_OF_ITERATOR + +}}} + +#endif +#else // defined(BOOST_PP_IS_ITERATING) +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// + +#define N BOOST_PP_ITERATION() + + template <> + struct as_map + { + template + struct apply + { + BOOST_PP_REPEAT(N, BOOST_FUSION_NEXT_ITERATOR, _) + BOOST_PP_REPEAT(N, BOOST_FUSION_VALUE_OF_ITERATOR, _) + typedef map type; + }; + + template + static typename apply::type + call(Iterator const& i0) + { + typedef apply gen; + typedef typename gen::type result; + BOOST_PP_REPEAT(BOOST_PP_DEC(N), BOOST_FUSION_NEXT_CALL_ITERATOR, _) + return result(BOOST_PP_ENUM_PARAMS(N, *i)); + } + }; + +#undef N +#endif // defined(BOOST_PP_IS_ITERATING) + diff --git a/include/boost/fusion/sequence/conversion/detail/as_set.hpp b/include/boost/fusion/sequence/conversion/detail/as_set.hpp new file mode 100644 index 00000000..cfdf660f --- /dev/null +++ b/include/boost/fusion/sequence/conversion/detail/as_set.hpp @@ -0,0 +1,102 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#ifndef BOOST_PP_IS_ITERATING +#if !defined(FUSION_AS_SET_0932005_1341) +#define FUSION_AS_SET_0932005_1341 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion { namespace detail +{ + template + struct as_set; + + template <> + struct as_set<0> + { + template + struct apply + { + typedef set<> type; + }; + + template + static typename apply::type + call(Iterator) + { + return set<>(); + } + }; + +#define BOOST_FUSION_NEXT_ITERATOR(z, n, data) \ + typedef typename fusion::result_of::next::type \ + BOOST_PP_CAT(I, BOOST_PP_INC(n)); + +#define BOOST_FUSION_NEXT_CALL_ITERATOR(z, n, data) \ + typename gen::BOOST_PP_CAT(I, BOOST_PP_INC(n)) \ + BOOST_PP_CAT(i, BOOST_PP_INC(n)) = fusion::next(BOOST_PP_CAT(i, n)); + +#define BOOST_FUSION_VALUE_OF_ITERATOR(z, n, data) \ + typedef typename fusion::result_of::value_of::type \ + BOOST_PP_CAT(T, n); + +#define BOOST_PP_FILENAME_1 +#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_SET_SIZE) +#include BOOST_PP_ITERATE() + +#undef BOOST_FUSION_NEXT_ITERATOR +#undef BOOST_FUSION_NEXT_CALL_ITERATOR +#undef BOOST_FUSION_VALUE_OF_ITERATOR + +}}} + +#endif +#else // defined(BOOST_PP_IS_ITERATING) +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// + +#define N BOOST_PP_ITERATION() + + template <> + struct as_set + { + template + struct apply + { + BOOST_PP_REPEAT(N, BOOST_FUSION_NEXT_ITERATOR, _) + BOOST_PP_REPEAT(N, BOOST_FUSION_VALUE_OF_ITERATOR, _) + typedef set type; + }; + + template + static typename apply::type + call(Iterator const& i0) + { + typedef apply gen; + typedef typename gen::type result; + BOOST_PP_REPEAT(BOOST_PP_DEC(N), BOOST_FUSION_NEXT_CALL_ITERATOR, _) + return result(BOOST_PP_ENUM_PARAMS(N, *i)); + } + }; + +#undef N +#endif // defined(BOOST_PP_IS_ITERATING) + diff --git a/include/boost/fusion/sequence/conversion/detail/as_vector.hpp b/include/boost/fusion/sequence/conversion/detail/as_vector.hpp new file mode 100644 index 00000000..abbca70c --- /dev/null +++ b/include/boost/fusion/sequence/conversion/detail/as_vector.hpp @@ -0,0 +1,102 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#ifndef BOOST_PP_IS_ITERATING +#if !defined(FUSION_AS_VECTOR_09222005_0950) +#define FUSION_AS_VECTOR_09222005_0950 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion { namespace detail +{ + template + struct as_vector; + + template <> + struct as_vector<0> + { + template + struct apply + { + typedef vector<> type; + }; + + template + static typename apply::type + call(Iterator) + { + return vector<>(); + } + }; + +#define BOOST_FUSION_NEXT_ITERATOR(z, n, data) \ + typedef typename fusion::result_of::next::type \ + BOOST_PP_CAT(I, BOOST_PP_INC(n)); + +#define BOOST_FUSION_NEXT_CALL_ITERATOR(z, n, data) \ + typename gen::BOOST_PP_CAT(I, BOOST_PP_INC(n)) \ + BOOST_PP_CAT(i, BOOST_PP_INC(n)) = fusion::next(BOOST_PP_CAT(i, n)); + +#define BOOST_FUSION_VALUE_OF_ITERATOR(z, n, data) \ + typedef typename fusion::result_of::value_of::type \ + BOOST_PP_CAT(T, n); + +#define BOOST_PP_FILENAME_1 +#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) +#include BOOST_PP_ITERATE() + +#undef BOOST_FUSION_NEXT_ITERATOR +#undef BOOST_FUSION_NEXT_CALL_ITERATOR +#undef BOOST_FUSION_VALUE_OF_ITERATOR + +}}} + +#endif +#else // defined(BOOST_PP_IS_ITERATING) +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// + +#define N BOOST_PP_ITERATION() + + template <> + struct as_vector + { + template + struct apply + { + BOOST_PP_REPEAT(N, BOOST_FUSION_NEXT_ITERATOR, _) + BOOST_PP_REPEAT(N, BOOST_FUSION_VALUE_OF_ITERATOR, _) + typedef vector type; + }; + + template + static typename apply::type + call(Iterator const& i0) + { + typedef apply gen; + typedef typename gen::type result; + BOOST_PP_REPEAT(BOOST_PP_DEC(N), BOOST_FUSION_NEXT_CALL_ITERATOR, _) + return result(BOOST_PP_ENUM_PARAMS(N, *i)); + } + }; + +#undef N +#endif // defined(BOOST_PP_IS_ITERATING) + diff --git a/include/boost/fusion/sequence/conversion/detail/build_cons.hpp b/include/boost/fusion/sequence/conversion/detail/build_cons.hpp new file mode 100644 index 00000000..0391979d --- /dev/null +++ b/include/boost/fusion/sequence/conversion/detail/build_cons.hpp @@ -0,0 +1,58 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_BUILD_CONS_09232005_1222) +#define FUSION_BUILD_CONS_09232005_1222 + +#include +#include +#include +#include +#include + +namespace boost { namespace fusion { namespace detail +{ + template < + typename First + , typename Last + , bool is_empty = result_of::equal_to::value> + struct build_cons; + + template + struct build_cons + { + typedef nil type; + + static nil + call(First const&, Last const&) + { + return nil(); + } + }; + + template + struct build_cons + { + typedef + build_cons::type, Last> + next_build_cons; + + typedef cons< + typename result_of::value_of::type + , typename next_build_cons::type> + type; + + static type + call(First const& f, Last const& l) + { + return type(*f, next_build_cons::call(fusion::next(f), l)); + } + }; + +}}} + +#endif diff --git a/include/boost/fusion/sequence/generation.hpp b/include/boost/fusion/sequence/generation.hpp new file mode 100644 index 00000000..b06b7574 --- /dev/null +++ b/include/boost/fusion/sequence/generation.hpp @@ -0,0 +1,21 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_SEQUENCE_GENERATION_10022005_0615) +#define FUSION_SEQUENCE_GENERATION_10022005_0615 + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#endif diff --git a/include/boost/fusion/sequence/generation/cons_tie.hpp b/include/boost/fusion/sequence/generation/cons_tie.hpp new file mode 100644 index 00000000..668059ee --- /dev/null +++ b/include/boost/fusion/sequence/generation/cons_tie.hpp @@ -0,0 +1,44 @@ +/*============================================================================= + Copyright (c) 2005 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_CONS_TIE_07182005_0854) +#define FUSION_CONS_TIE_07182005_0854 + +#include + +namespace boost { namespace fusion +{ + struct nil; + + namespace result_of + { + template + struct cons_tie + { + typedef cons type; + }; + } + + // $$$ do we really want a cons_tie? $$$ + template + inline cons + cons_tie(Car& car) + { + return cons(car); + } + + // $$$ do we really want a cons_tie? $$$ + template + inline cons + cons_tie(Car& car, Cdr const& cdr) + { + return cons(car, cdr); + } +}} + +#endif + diff --git a/include/boost/fusion/sequence/generation/ignore.hpp b/include/boost/fusion/sequence/generation/ignore.hpp new file mode 100644 index 00000000..0ea553e1 --- /dev/null +++ b/include/boost/fusion/sequence/generation/ignore.hpp @@ -0,0 +1,33 @@ +/*============================================================================= + Copyright (c) 2001 Doug Gregor + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_IGNORE_07192005_0329) +#define FUSION_IGNORE_07192005_0329 + +namespace boost { namespace fusion +{ + // Swallows any assignment (by Doug Gregor) + namespace detail + { + struct swallow_assign + { + template + swallow_assign const& + operator=(const T&) const + { + return *this; + } + }; + } + + // "ignore" allows tuple positions to be ignored when using "tie". + detail::swallow_assign const ignore = detail::swallow_assign(); +}} + +#endif diff --git a/include/boost/fusion/sequence/generation/list_tie.hpp b/include/boost/fusion/sequence/generation/list_tie.hpp new file mode 100644 index 00000000..ef09e131 --- /dev/null +++ b/include/boost/fusion/sequence/generation/list_tie.hpp @@ -0,0 +1,73 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#ifndef BOOST_PP_IS_ITERATING +#if !defined(FUSION_LIST_TIE_07192005_0109) +#define FUSION_LIST_TIE_07192005_0109 + +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct void_; + + namespace result_of + { + template < + BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( + FUSION_MAX_LIST_SIZE, typename T, void_) + , typename Extra = void_ + > + struct list_tie; + } + +// $$$ shouldn't we remove_reference first to allow references? $$$ +#define BOOST_FUSION_REF(z, n, data) BOOST_PP_CAT(T, n)& + +#define BOOST_PP_FILENAME_1 +#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_LIST_SIZE) +#include BOOST_PP_ITERATE() + +#undef BOOST_FUSION_REF + +}} + +#endif +#else // defined(BOOST_PP_IS_ITERATING) +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// + +#define N BOOST_PP_ITERATION() + + namespace result_of + { + template + struct list_tie + { + typedef list type; + }; + } + + template + inline list + list_tie(BOOST_PP_ENUM_BINARY_PARAMS(N, T, & _)) + { + return list( + BOOST_PP_ENUM_PARAMS(N, _)); + } + +#undef N +#endif // defined(BOOST_PP_IS_ITERATING) + diff --git a/include/boost/fusion/sequence/generation/make_cons.hpp b/include/boost/fusion/sequence/generation/make_cons.hpp new file mode 100644 index 00000000..779af7b8 --- /dev/null +++ b/include/boost/fusion/sequence/generation/make_cons.hpp @@ -0,0 +1,44 @@ +/*============================================================================= + Copyright (c) 2005 Joel de Guzman + Copyright (c) 2005 Eric Niebler + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_MAKE_CONS_07172005_0918) +#define FUSION_MAKE_CONS_07172005_0918 + +#include +#include + +namespace boost { namespace fusion +{ + struct nil; + + namespace result_of + { + template + struct make_cons + { + typedef cons::type, Cdr> type; + }; + } + + template + inline cons::type> + make_cons(Car const& car) + { + return cons::type>(car); + } + + template + inline cons::type, Cdr> + make_cons(Car const& car, Cdr const& cdr) + { + return cons::type, Cdr>(car, cdr); + } +}} + +#endif + diff --git a/include/boost/fusion/sequence/generation/make_list.hpp b/include/boost/fusion/sequence/generation/make_list.hpp new file mode 100644 index 00000000..0ec08442 --- /dev/null +++ b/include/boost/fusion/sequence/generation/make_list.hpp @@ -0,0 +1,85 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#ifndef BOOST_PP_IS_ITERATING +#if !defined(FUSION_MAKE_LIST_07192005_1239) +#define FUSION_MAKE_LIST_07192005_1239 + +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct void_; + + namespace result_of + { + template < + BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( + FUSION_MAX_LIST_SIZE, typename T, void_) + , typename Extra = void_ + > + struct make_list; + + template <> + struct make_list<> + { + typedef list<> type; + }; + } + + inline list<> + make_list() + { + return list<>(); + } + +#define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \ + typename detail::as_fusion_element::type + +#define BOOST_PP_FILENAME_1 +#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_LIST_SIZE) +#include BOOST_PP_ITERATE() + +#undef BOOST_FUSION_AS_FUSION_ELEMENT + +}} + +#endif +#else // defined(BOOST_PP_IS_ITERATING) +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// + +#define N BOOST_PP_ITERATION() + + namespace result_of + { + template + struct make_list + { + typedef list type; + }; + } + + template + inline list + make_list(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& _)) + { + return list( + BOOST_PP_ENUM_PARAMS(N, _)); + } + +#undef N +#endif // defined(BOOST_PP_IS_ITERATING) + diff --git a/include/boost/fusion/sequence/generation/make_map.hpp b/include/boost/fusion/sequence/generation/make_map.hpp new file mode 100644 index 00000000..c97ec700 --- /dev/null +++ b/include/boost/fusion/sequence/generation/make_map.hpp @@ -0,0 +1,100 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#ifndef BOOST_PP_IS_ITERATING +#if !defined(FUSION_MAKE_MAP_07222005_1247) +#define FUSION_MAKE_MAP_07222005_1247 + +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct void_; + + namespace result_of + { + template < + BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( + FUSION_MAX_VECTOR_SIZE, typename K, void_) + , BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( + FUSION_MAX_VECTOR_SIZE, typename D, void_) + , typename Extra = void_ + > + struct make_map; + + template <> + struct make_map<> + { + typedef map<> type; + }; + } + + inline map<> + make_map() + { + return map<>(); + } + +#define BOOST_FUSION_PAIR(z, n, data) \ + fusion::pair< \ + BOOST_PP_CAT(K, n) \ + , typename detail::as_fusion_element::type> + +#define BOOST_FUSION_MAKE_PAIR(z, n, data) \ + fusion::make_pair(BOOST_PP_CAT(_, n)) \ + +#define BOOST_PP_FILENAME_1 +#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) +#include BOOST_PP_ITERATE() + +#undef BOOST_FUSION_PAIR +#undef BOOST_FUSION_MAKE_PAIR + +}} + +#endif +#else // defined(BOOST_PP_IS_ITERATING) +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// + +#define N BOOST_PP_ITERATION() + + namespace result_of + { + template < + BOOST_PP_ENUM_PARAMS(N, typename K) + , BOOST_PP_ENUM_PARAMS(N, typename D) + > + struct make_map + { + typedef map type; + }; + } + + template < + BOOST_PP_ENUM_PARAMS(N, typename K) + , BOOST_PP_ENUM_PARAMS(N, typename D) + > + inline map + make_map(BOOST_PP_ENUM_BINARY_PARAMS(N, D, const& _)) + { + return map( + BOOST_PP_ENUM(N, BOOST_FUSION_MAKE_PAIR, _)); + } + +#undef N +#endif // defined(BOOST_PP_IS_ITERATING) + diff --git a/include/boost/fusion/sequence/generation/make_set.hpp b/include/boost/fusion/sequence/generation/make_set.hpp new file mode 100644 index 00000000..d9924818 --- /dev/null +++ b/include/boost/fusion/sequence/generation/make_set.hpp @@ -0,0 +1,87 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#ifndef BOOST_PP_IS_ITERATING +#if !defined(FUSION_MAKE_SET_09162005_1125) +#define FUSION_MAKE_SET_09162005_1125 + +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct void_; + + namespace result_of + { + template < + BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( + FUSION_MAX_VECTOR_SIZE, typename T, void_) + , typename Extra = void_ + > + struct make_set; + + template <> + struct make_set<> + { + typedef set<> type; + }; + } + + inline set<> + make_set() + { + return set<>(); + } + +#define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \ + typename detail::as_fusion_element::type + +#define BOOST_PP_FILENAME_1 +#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) +#include BOOST_PP_ITERATE() + +#undef BOOST_FUSION_ELEMENT +#undef BOOST_FUSION_AS_ELEMENT + +}} + +#endif +#else // defined(BOOST_PP_IS_ITERATING) +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// + +#define N BOOST_PP_ITERATION() + + namespace result_of + { + template + struct make_set + { + typedef set type; + }; + } + + template + inline set + make_set(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& _)) + { + return set( + BOOST_PP_ENUM_PARAMS(N, _)); + } + +#undef N +#endif // defined(BOOST_PP_IS_ITERATING) + diff --git a/include/boost/fusion/sequence/generation/make_vector.hpp b/include/boost/fusion/sequence/generation/make_vector.hpp new file mode 100644 index 00000000..ff5a0611 --- /dev/null +++ b/include/boost/fusion/sequence/generation/make_vector.hpp @@ -0,0 +1,85 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#ifndef BOOST_PP_IS_ITERATING +#if !defined(FUSION_MAKE_VECTOR_07162005_0243) +#define FUSION_MAKE_VECTOR_07162005_0243 + +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct void_; + + namespace result_of + { + template < + BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( + FUSION_MAX_VECTOR_SIZE, typename T, void_) + , typename Extra = void_ + > + struct make_vector; + + template <> + struct make_vector<> + { + typedef vector<> type; + }; + } + + inline vector<> + make_vector() + { + return vector<>(); + } + +#define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \ + typename detail::as_fusion_element::type + +#define BOOST_PP_FILENAME_1 +#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) +#include BOOST_PP_ITERATE() + +#undef BOOST_FUSION_AS_FUSION_ELEMENT + +}} + +#endif +#else // defined(BOOST_PP_IS_ITERATING) +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// + +#define N BOOST_PP_ITERATION() + + namespace result_of + { + template + struct make_vector + { + typedef vector type; + }; + } + + template + inline vector + make_vector(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& _)) + { + return vector( + BOOST_PP_ENUM_PARAMS(N, _)); + } + +#undef N +#endif // defined(BOOST_PP_IS_ITERATING) + diff --git a/include/boost/fusion/sequence/generation/map_tie.hpp b/include/boost/fusion/sequence/generation/map_tie.hpp new file mode 100644 index 00000000..8275e06c --- /dev/null +++ b/include/boost/fusion/sequence/generation/map_tie.hpp @@ -0,0 +1,102 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#ifndef BOOST_PP_IS_ITERATING +#if !defined(FUSION_MAP_TIE_20060814_1116) +#define FUSION_MAP_TIE_20060814_1116 + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct void_; + + namespace result_of + { + template < + BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( + FUSION_MAX_VECTOR_SIZE, typename K, void_) + , BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( + FUSION_MAX_VECTOR_SIZE, typename D, void_) + , typename Extra = void_ + > + struct map_tie; + + template <> + struct map_tie<> + { + typedef map<> type; + }; + } + + inline map<> + map_tie() + { + return map<>(); + } + +#define BOOST_FUSION_TIED_PAIR(z, n, data) \ + fusion::pair< \ + BOOST_PP_CAT(K, n) \ + , typename add_reference::type> + +#define BOOST_FUSION_PAIR_TIE(z, n, data) \ + fusion::pair_tie(BOOST_PP_CAT(_, n)) \ + +#define BOOST_PP_FILENAME_1 +#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) +#include BOOST_PP_ITERATE() + +#undef BOOST_FUSION_PAIR +#undef BOOST_FUSION_MAKE_PAIR + +}} + +#endif +#else // defined(BOOST_PP_IS_ITERATING) +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// + +#define N BOOST_PP_ITERATION() + + namespace result_of + { + template < + BOOST_PP_ENUM_PARAMS(N, typename K) + , BOOST_PP_ENUM_PARAMS(N, typename D) + > + struct map_tie + { + typedef map type; + }; + } + + template < + BOOST_PP_ENUM_PARAMS(N, typename K) + , BOOST_PP_ENUM_PARAMS(N, typename D) + > + inline map + map_tie(BOOST_PP_ENUM_BINARY_PARAMS(N, D, & _)) + { + return map( + BOOST_PP_ENUM(N, BOOST_FUSION_PAIR_TIE, _)); + } + +#undef N +#endif // defined(BOOST_PP_IS_ITERATING) + diff --git a/include/boost/fusion/sequence/generation/pair_tie.hpp b/include/boost/fusion/sequence/generation/pair_tie.hpp new file mode 100644 index 00000000..ebadfdf8 --- /dev/null +++ b/include/boost/fusion/sequence/generation/pair_tie.hpp @@ -0,0 +1,44 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined (BOOST_FUSION_PAIR_TIE_20060812_2058) +#define BOOST_FUSION_PAIR_TIE_20060812_2058 + +#include +#include + +namespace boost { namespace fusion { + + template + struct pair; + + namespace result_of + { + template + struct pair_tie + { + typedef fusion::pair type; + }; + } + + template + typename disable_if, typename result_of::pair_tie::type>::type + pair_tie(T& t) + { + return typename result_of::pair_tie::type(t); + } + + template + typename result_of::pair_tie::type + pair_tie(T const& t) + { + return typename result_of::pair_tie::type(t); + } +}} + +#endif diff --git a/include/boost/fusion/sequence/generation/vector_tie.hpp b/include/boost/fusion/sequence/generation/vector_tie.hpp new file mode 100644 index 00000000..c16dc5ef --- /dev/null +++ b/include/boost/fusion/sequence/generation/vector_tie.hpp @@ -0,0 +1,72 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#ifndef BOOST_PP_IS_ITERATING +#if !defined(FUSION_VECTOR_TIE_07192005_1242) +#define FUSION_VECTOR_TIE_07192005_1242 + +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct void_; + + namespace result_of + { + template < + BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( + FUSION_MAX_VECTOR_SIZE, typename T, void_) + , typename Extra = void_ + > + struct vector_tie; + } + +#define BOOST_FUSION_REF(z, n, data) BOOST_PP_CAT(T, n)& + +#define BOOST_PP_FILENAME_1 +#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) +#include BOOST_PP_ITERATE() + +#undef BOOST_FUSION_REF + +}} + +#endif +#else // defined(BOOST_PP_IS_ITERATING) +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// + +#define N BOOST_PP_ITERATION() + + namespace result_of + { + template + struct vector_tie + { + typedef vector type; + }; + } + + template + inline vector + vector_tie(BOOST_PP_ENUM_BINARY_PARAMS(N, T, & _)) + { + return vector( + BOOST_PP_ENUM_PARAMS(N, _)); + } + +#undef N +#endif // defined(BOOST_PP_IS_ITERATING) + diff --git a/include/boost/fusion/sequence/intrinsic.hpp b/include/boost/fusion/sequence/intrinsic.hpp new file mode 100644 index 00000000..60bc6e81 --- /dev/null +++ b/include/boost/fusion/sequence/intrinsic.hpp @@ -0,0 +1,24 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_SEQUENCE_INTRINSIC_10022005_0618) +#define FUSION_SEQUENCE_INTRINSIC_10022005_0618 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#endif diff --git a/include/boost/fusion/sequence/intrinsic/at.hpp b/include/boost/fusion/sequence/intrinsic/at.hpp new file mode 100644 index 00000000..62f9f9d4 --- /dev/null +++ b/include/boost/fusion/sequence/intrinsic/at.hpp @@ -0,0 +1,81 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_AT_05042005_0722) +#define FUSION_AT_05042005_0722 + +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + namespace extension + { + template + struct at_impl + { + template + struct apply; + }; + } + + namespace result_of + { + template + struct at + : extension::at_impl::type>:: + template apply + {}; + + template + struct at_c + : at > + {}; + } + + + template + inline typename + lazy_disable_if< + is_const + , result_of::at + >::type + at(Sequence& seq) + { + return result_of::at::call(seq); + } + + template + inline typename result_of::at::type + at(Sequence const& seq) + { + return result_of::at::call(seq); + } + + template + inline typename + lazy_disable_if< + is_const + , result_of::at_c + >::type + at_c(Sequence& seq) + { + return at >(seq); + } + + template + inline typename result_of::at_c::type + at_c(Sequence const& seq) + { + return at >(seq); + } +}} + +#endif + diff --git a/include/boost/fusion/sequence/intrinsic/at_key.hpp b/include/boost/fusion/sequence/intrinsic/at_key.hpp new file mode 100644 index 00000000..1612c47b --- /dev/null +++ b/include/boost/fusion/sequence/intrinsic/at_key.hpp @@ -0,0 +1,56 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_AT_KEY_20060304_1755) +#define BOOST_FUSION_AT_KEY_20060304_1755 + +#include +#include +#include + +namespace boost { namespace fusion +{ + namespace extension + { + template + struct at_key_impl + { + template + struct apply; + }; + } + + namespace result_of + { + template + struct at_key + : extension::at_key_impl::type>:: + template apply + {}; + } + + template + inline typename + lazy_disable_if< + is_const + , result_of::at_key + >::type + at_key(Sequence& seq) + { + return result_of::at_key::call(seq); + } + + template + inline typename result_of::at_key::type + at_key(Sequence const& seq) + { + return result_of::at_key::call(seq); + } +}} + +#endif diff --git a/include/boost/fusion/sequence/intrinsic/back.hpp b/include/boost/fusion/sequence/intrinsic/back.hpp new file mode 100644 index 00000000..e2760bc0 --- /dev/null +++ b/include/boost/fusion/sequence/intrinsic/back.hpp @@ -0,0 +1,43 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_BACK_09162005_0350) +#define FUSION_BACK_09162005_0350 + +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct fusion_sequence_tag; + + namespace result_of + { + template + struct back + : result_of::deref::type>::type> + {}; + } + + template + inline typename result_of::back::type + back(Sequence& seq) + { + return *fusion::prior(fusion::end(seq)); + } + + template + inline typename result_of::back::type + back(Sequence const& seq) + { + return *fusion::prior(fusion::end(seq)); + } +}} + +#endif diff --git a/include/boost/fusion/sequence/intrinsic/begin.hpp b/include/boost/fusion/sequence/intrinsic/begin.hpp new file mode 100644 index 00000000..b5e94849 --- /dev/null +++ b/include/boost/fusion/sequence/intrinsic/begin.hpp @@ -0,0 +1,51 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_BEGIN_04052005_1132) +#define FUSION_BEGIN_04052005_1132 + +#include + +namespace boost { namespace fusion +{ + struct fusion_sequence_tag; + + namespace extension + { + template + struct begin_impl + { + template + struct apply; + }; + } + + namespace result_of + { + template + struct begin + : extension::begin_impl::type>:: + template apply + {}; + } + + template + inline typename result_of::begin::type + begin(Sequence& seq) + { + return result_of::begin::call(seq); + } + + template + inline typename result_of::begin::type + begin(Sequence const& seq) + { + return result_of::begin::call(seq); + } +}} + +#endif diff --git a/include/boost/fusion/sequence/intrinsic/empty.hpp b/include/boost/fusion/sequence/intrinsic/empty.hpp new file mode 100644 index 00000000..0ce0636d --- /dev/null +++ b/include/boost/fusion/sequence/intrinsic/empty.hpp @@ -0,0 +1,49 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_EMPTY_09162005_0335) +#define FUSION_EMPTY_09162005_0335 + +#include +#include +#include + +namespace boost { namespace fusion +{ + struct fusion_sequence_tag; + + namespace extension + { + template + struct empty_impl + { + template + struct apply + : mpl::bool_<(result_of::size::value == 0)> + {}; + }; + } + + namespace result_of + { + template + struct empty + : extension::empty_impl::type>:: + template apply + {}; + } + + template + inline typename result_of::empty::type + empty(Sequence const&) + { + static typename result_of::empty::type result; + return result; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/intrinsic/end.hpp b/include/boost/fusion/sequence/intrinsic/end.hpp new file mode 100644 index 00000000..b8ba514c --- /dev/null +++ b/include/boost/fusion/sequence/intrinsic/end.hpp @@ -0,0 +1,51 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_END_04052005_1141) +#define FUSION_END_04052005_1141 + +#include + +namespace boost { namespace fusion +{ + struct fusion_sequence_tag; + + namespace extension + { + template + struct end_impl + { + template + struct apply; + }; + } + + namespace result_of + { + template + struct end + : extension::end_impl::type>:: + template apply + {}; + } + + template + inline typename result_of::end::type + end(Sequence& seq) + { + return result_of::end::call(seq); + } + + template + inline typename result_of::end::type + end(Sequence const& seq) + { + return result_of::end::call(seq); + } +}} + +#endif diff --git a/include/boost/fusion/sequence/intrinsic/front.hpp b/include/boost/fusion/sequence/intrinsic/front.hpp new file mode 100644 index 00000000..9ec99599 --- /dev/null +++ b/include/boost/fusion/sequence/intrinsic/front.hpp @@ -0,0 +1,42 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_FRONT_09162005_0343) +#define FUSION_FRONT_09162005_0343 + +#include +#include +#include + +namespace boost { namespace fusion +{ + struct fusion_sequence_tag; + + namespace result_of + { + template + struct front + : result_of::deref::type> + {}; + } + + template + inline typename result_of::front::type + front(Sequence& seq) + { + return *fusion::begin(seq); + } + + template + inline typename result_of::front::type + front(Sequence const& seq) + { + return *fusion::begin(seq); + } +}} + +#endif diff --git a/include/boost/fusion/sequence/intrinsic/has_key.hpp b/include/boost/fusion/sequence/intrinsic/has_key.hpp new file mode 100644 index 00000000..a8b07e20 --- /dev/null +++ b/include/boost/fusion/sequence/intrinsic/has_key.hpp @@ -0,0 +1,52 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_HAS_KEY_09232005_1454) +#define FUSION_HAS_KEY_09232005_1454 + +#include +#include +#include + +namespace boost { namespace fusion +{ + struct void_; + struct fusion_sequence_tag; + + namespace extension + { + template + struct has_key_impl + { + template + struct apply + : mpl::not_::type, void_> > + {}; + }; + } + + namespace result_of + { + template + struct has_key + : extension::has_key_impl::type>:: + template apply + {}; + } + + template + inline typename result_of::has_key::type + has_key(Sequence const& seq) + { + static typename result_of::has_key::type result; + return result; + } +}} + +#endif + diff --git a/include/boost/fusion/sequence/intrinsic/mpl.hpp b/include/boost/fusion/sequence/intrinsic/mpl.hpp new file mode 100644 index 00000000..30bd2473 --- /dev/null +++ b/include/boost/fusion/sequence/intrinsic/mpl.hpp @@ -0,0 +1,29 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_SEQUENCE_INTRINSIC_MPL_10022005_1641) +#define FUSION_SEQUENCE_INTRINSIC_MPL_10022005_1641 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#endif diff --git a/include/boost/fusion/sequence/intrinsic/mpl/at.hpp b/include/boost/fusion/sequence/intrinsic/mpl/at.hpp new file mode 100644 index 00000000..b4146c4b --- /dev/null +++ b/include/boost/fusion/sequence/intrinsic/mpl/at.hpp @@ -0,0 +1,34 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_AT_10022005_1616) +#define FUSION_AT_10022005_1616 + +#include +#include + +namespace boost { +namespace fusion +{ + struct fusion_sequence_tag; +} + +namespace mpl +{ + template + struct at_impl; + + template <> + struct at_impl + { + template + struct apply : fusion::result_of::value_at {}; + }; +}} + +#endif + diff --git a/include/boost/fusion/sequence/intrinsic/mpl/back.hpp b/include/boost/fusion/sequence/intrinsic/mpl/back.hpp new file mode 100644 index 00000000..ae06a7ce --- /dev/null +++ b/include/boost/fusion/sequence/intrinsic/mpl/back.hpp @@ -0,0 +1,33 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_BACK_10022005_1620) +#define FUSION_BACK_10022005_1620 + +#include +#include +#include +#include + +namespace boost { namespace mpl +{ + template + struct back_impl; + + template <> + struct back_impl + { + template + struct apply : + fusion::result_of::value_of< + typename fusion::result_of::prior< + typename fusion::result_of::end::type + >::type> {}; + }; +}} + +#endif diff --git a/include/boost/fusion/sequence/intrinsic/mpl/begin.hpp b/include/boost/fusion/sequence/intrinsic/mpl/begin.hpp new file mode 100644 index 00000000..e5a1aba6 --- /dev/null +++ b/include/boost/fusion/sequence/intrinsic/mpl/begin.hpp @@ -0,0 +1,32 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_BEGIN_10022005_1620) +#define FUSION_BEGIN_10022005_1620 + +#include +#include +#include +#include + +namespace boost { namespace mpl +{ + template + struct begin_impl; + + template <> + struct begin_impl + { + template + struct apply + { + typedef fusion_iterator::type> type; + }; + }; +}} + +#endif diff --git a/include/boost/fusion/sequence/intrinsic/mpl/clear.hpp b/include/boost/fusion/sequence/intrinsic/mpl/clear.hpp new file mode 100644 index 00000000..68b86bb8 --- /dev/null +++ b/include/boost/fusion/sequence/intrinsic/mpl/clear.hpp @@ -0,0 +1,34 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_CLEAR_10022005_1817) +#define FUSION_CLEAR_10022005_1817 + +#include +#include +#include + +namespace boost { namespace mpl +{ + template + struct clear_impl; + + template <> + struct clear_impl + { + template + struct apply + { + typedef typename + fusion::detail::clear::type>::type + type; + }; + }; +}} + +#endif + diff --git a/include/boost/fusion/sequence/intrinsic/mpl/detail/as.hpp b/include/boost/fusion/sequence/intrinsic/mpl/detail/as.hpp new file mode 100644 index 00000000..9659f325 --- /dev/null +++ b/include/boost/fusion/sequence/intrinsic/mpl/detail/as.hpp @@ -0,0 +1,56 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_AS_10022005_1442) +#define FUSION_AS_10022005_1442 + +#include + +namespace boost { namespace fusion { namespace detail +{ + template + struct as_impl; + + template <> + struct as_impl + { + template + struct apply : result_of::as_list {}; + }; + + template <> + struct as_impl + { + template + struct apply : result_of::as_map {}; + }; + + template <> + struct as_impl + { + template + struct apply : result_of::as_set {}; + }; + + template <> + struct as_impl + { + template + struct apply : result_of::as_vector {}; + }; + + template + struct as + { + typedef typename + as_impl::template apply::type + type; + }; + +}}} + +#endif diff --git a/include/boost/fusion/sequence/intrinsic/mpl/detail/clear.hpp b/include/boost/fusion/sequence/intrinsic/mpl/detail/clear.hpp new file mode 100644 index 00000000..03cacb6a --- /dev/null +++ b/include/boost/fusion/sequence/intrinsic/mpl/detail/clear.hpp @@ -0,0 +1,32 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_CLEAR_10022005_1442) +#define FUSION_CLEAR_10022005_1442 + +#include + +namespace boost { namespace fusion { namespace detail +{ + template + struct clear; + + template <> + struct clear : mpl::identity > {}; + + template <> + struct clear : mpl::identity > {}; + + template <> + struct clear : mpl::identity > {}; + + template <> + struct clear : mpl::identity > {}; + +}}} + +#endif diff --git a/include/boost/fusion/sequence/intrinsic/mpl/empty.hpp b/include/boost/fusion/sequence/intrinsic/mpl/empty.hpp new file mode 100644 index 00000000..8f00c24e --- /dev/null +++ b/include/boost/fusion/sequence/intrinsic/mpl/empty.hpp @@ -0,0 +1,27 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_EMPTY_10022005_1619) +#define FUSION_EMPTY_10022005_1619 + +#include +#include + +namespace boost { namespace mpl +{ + template + struct empty_impl; + + template <> + struct empty_impl + { + template + struct apply : fusion::result_of::empty {}; + }; +}} + +#endif diff --git a/include/boost/fusion/sequence/intrinsic/mpl/end.hpp b/include/boost/fusion/sequence/intrinsic/mpl/end.hpp new file mode 100644 index 00000000..979f659a --- /dev/null +++ b/include/boost/fusion/sequence/intrinsic/mpl/end.hpp @@ -0,0 +1,32 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_END_10022005_1619) +#define FUSION_END_10022005_1619 + +#include +#include +#include +#include + +namespace boost { namespace mpl +{ + template + struct end_impl; + + template <> + struct end_impl + { + template + struct apply + { + typedef fusion_iterator::type> type; + }; + }; +}} + +#endif diff --git a/include/boost/fusion/sequence/intrinsic/mpl/erase.hpp b/include/boost/fusion/sequence/intrinsic/mpl/erase.hpp new file mode 100644 index 00000000..f10ab843 --- /dev/null +++ b/include/boost/fusion/sequence/intrinsic/mpl/erase.hpp @@ -0,0 +1,39 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_ERASE_10022005_1835) +#define FUSION_ERASE_10022005_1835 + +#include +#include +#include +#include + +namespace boost { namespace mpl +{ + template + struct erase_impl; + + template <> + struct erase_impl + { + template + struct apply + { + typedef typename + fusion::result_of::erase::type + result; + + typedef typename + fusion::detail::as::type, result>::type + type; + }; + }; +}} + +#endif + diff --git a/include/boost/fusion/sequence/intrinsic/mpl/erase_key.hpp b/include/boost/fusion/sequence/intrinsic/mpl/erase_key.hpp new file mode 100644 index 00000000..a47d0916 --- /dev/null +++ b/include/boost/fusion/sequence/intrinsic/mpl/erase_key.hpp @@ -0,0 +1,39 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_ERASE_KEY_10022005_1907) +#define FUSION_ERASE_KEY_10022005_1907 + +#include +#include +#include +#include + +namespace boost { namespace mpl +{ + template + struct erase_key_impl; + + template <> + struct erase_key_impl + { + template + struct apply + { + typedef typename + fusion::result_of::erase_key::type + result; + + typedef typename + fusion::detail::as::type, result>::type + type; + }; + }; +}} + +#endif + diff --git a/include/boost/fusion/sequence/intrinsic/mpl/front.hpp b/include/boost/fusion/sequence/intrinsic/mpl/front.hpp new file mode 100644 index 00000000..e503cadb --- /dev/null +++ b/include/boost/fusion/sequence/intrinsic/mpl/front.hpp @@ -0,0 +1,29 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_FRONT_10022005_1618) +#define FUSION_FRONT_10022005_1618 + +#include +#include +#include + +namespace boost { namespace mpl +{ + template + struct front_impl; + + template <> + struct front_impl + { + template + struct apply : + fusion::result_of::value_of::type> {}; + }; +}} + +#endif diff --git a/include/boost/fusion/sequence/intrinsic/mpl/has_key.hpp b/include/boost/fusion/sequence/intrinsic/mpl/has_key.hpp new file mode 100644 index 00000000..593f5492 --- /dev/null +++ b/include/boost/fusion/sequence/intrinsic/mpl/has_key.hpp @@ -0,0 +1,28 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_HAS_KEY_10022005_1617) +#define FUSION_HAS_KEY_10022005_1617 + +#include +#include + +namespace boost { namespace mpl +{ + template + struct has_key_impl; + + template <> + struct has_key_impl + { + template + struct apply : fusion::result_of::has_key {}; + }; +}} + +#endif + diff --git a/include/boost/fusion/sequence/intrinsic/mpl/insert.hpp b/include/boost/fusion/sequence/intrinsic/mpl/insert.hpp new file mode 100644 index 00000000..677c00c6 --- /dev/null +++ b/include/boost/fusion/sequence/intrinsic/mpl/insert.hpp @@ -0,0 +1,39 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_INSERT_10022005_1837) +#define FUSION_INSERT_10022005_1837 + +#include +#include +#include +#include + +namespace boost { namespace mpl +{ + template + struct insert_impl; + + template <> + struct insert_impl + { + template + struct apply + { + typedef typename + fusion::result_of::insert::type + result; + + typedef typename + fusion::detail::as::type, result>::type + type; + }; + }; +}} + +#endif + diff --git a/include/boost/fusion/sequence/intrinsic/mpl/insert_range.hpp b/include/boost/fusion/sequence/intrinsic/mpl/insert_range.hpp new file mode 100644 index 00000000..ad85d8d9 --- /dev/null +++ b/include/boost/fusion/sequence/intrinsic/mpl/insert_range.hpp @@ -0,0 +1,39 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_INSERT_RANGE_10022005_1838) +#define FUSION_INSERT_RANGE_10022005_1838 + +#include +#include +#include +#include + +namespace boost { namespace mpl +{ + template + struct insert_range_impl; + + template <> + struct insert_range_impl + { + template + struct apply + { + typedef typename + fusion::result_of::insert_range::type + result; + + typedef typename + fusion::detail::as::type, result>::type + type; + }; + }; +}} + +#endif + diff --git a/include/boost/fusion/sequence/intrinsic/mpl/pop_back.hpp b/include/boost/fusion/sequence/intrinsic/mpl/pop_back.hpp new file mode 100644 index 00000000..c3f22cd8 --- /dev/null +++ b/include/boost/fusion/sequence/intrinsic/mpl/pop_back.hpp @@ -0,0 +1,39 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_POP_BACK_10022005_1801) +#define FUSION_POP_BACK_10022005_1801 + +#include +#include +#include +#include + +namespace boost { namespace mpl +{ + template + struct pop_back_impl; + + template <> + struct pop_back_impl + { + template + struct apply + { + typedef typename + fusion::result_of::pop_back::type + result; + + typedef typename + fusion::detail::as::type, result>::type + type; + }; + }; +}} + +#endif + diff --git a/include/boost/fusion/sequence/intrinsic/mpl/pop_front.hpp b/include/boost/fusion/sequence/intrinsic/mpl/pop_front.hpp new file mode 100644 index 00000000..1f4f6739 --- /dev/null +++ b/include/boost/fusion/sequence/intrinsic/mpl/pop_front.hpp @@ -0,0 +1,39 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_POP_FRONT_10022005_1800) +#define FUSION_POP_FRONT_10022005_1800 + +#include +#include +#include +#include + +namespace boost { namespace mpl +{ + template + struct pop_front_impl; + + template <> + struct pop_front_impl + { + template + struct apply + { + typedef typename + fusion::result_of::pop_front::type + result; + + typedef typename + fusion::detail::as::type, result>::type + type; + }; + }; +}} + +#endif + diff --git a/include/boost/fusion/sequence/intrinsic/mpl/push_back.hpp b/include/boost/fusion/sequence/intrinsic/mpl/push_back.hpp new file mode 100644 index 00000000..6d635691 --- /dev/null +++ b/include/boost/fusion/sequence/intrinsic/mpl/push_back.hpp @@ -0,0 +1,39 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_PUSH_BACK_10022005_1647) +#define FUSION_PUSH_BACK_10022005_1647 + +#include +#include +#include +#include + +namespace boost { namespace mpl +{ + template + struct push_back_impl; + + template <> + struct push_back_impl + { + template + struct apply + { + typedef typename + fusion::result_of::push_back::type + result; + + typedef typename + fusion::detail::as::type, result>::type + type; + }; + }; +}} + +#endif + diff --git a/include/boost/fusion/sequence/intrinsic/mpl/push_front.hpp b/include/boost/fusion/sequence/intrinsic/mpl/push_front.hpp new file mode 100644 index 00000000..fb435502 --- /dev/null +++ b/include/boost/fusion/sequence/intrinsic/mpl/push_front.hpp @@ -0,0 +1,39 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_PUSH_FRONT_10022005_1720) +#define FUSION_PUSH_FRONT_10022005_1720 + +#include +#include +#include +#include + +namespace boost { namespace mpl +{ + template + struct push_front_impl; + + template <> + struct push_front_impl + { + template + struct apply + { + typedef typename + fusion::result_of::push_front::type + result; + + typedef typename + fusion::detail::as::type, result>::type + type; + }; + }; +}} + +#endif + diff --git a/include/boost/fusion/sequence/intrinsic/mpl/size.hpp b/include/boost/fusion/sequence/intrinsic/mpl/size.hpp new file mode 100644 index 00000000..0147a65d --- /dev/null +++ b/include/boost/fusion/sequence/intrinsic/mpl/size.hpp @@ -0,0 +1,27 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_SIZE_10022005_1617) +#define FUSION_SIZE_10022005_1617 + +#include +#include + +namespace boost { namespace mpl +{ + template + struct size_impl; + + template <> + struct size_impl + { + template + struct apply : fusion::result_of::size {}; + }; +}} + +#endif diff --git a/include/boost/fusion/sequence/intrinsic/size.hpp b/include/boost/fusion/sequence/intrinsic/size.hpp new file mode 100644 index 00000000..1ff9360b --- /dev/null +++ b/include/boost/fusion/sequence/intrinsic/size.hpp @@ -0,0 +1,46 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_SIZE_05052005_0214) +#define FUSION_SIZE_05052005_0214 + +#include +#include + +namespace boost { namespace fusion +{ + struct fusion_sequence_tag; + + namespace extension + { + template + struct size_impl + { + template + struct apply : Sequence::size {}; + }; + } + + namespace result_of + { + template + struct size + : extension::size_impl::type>:: + template apply + {}; + } + + template + inline typename result_of::size::type + size(Sequence const&) + { + static typename result_of::size::type result; + return result; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/intrinsic/value_at.hpp b/include/boost/fusion/sequence/intrinsic/value_at.hpp new file mode 100644 index 00000000..de518391 --- /dev/null +++ b/include/boost/fusion/sequence/intrinsic/value_at.hpp @@ -0,0 +1,42 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_VALUE_AT_05052005_0229) +#define FUSION_VALUE_AT_05052005_0229 + +#include +#include + +namespace boost { namespace fusion +{ + namespace extension + { + template + struct value_at_impl + { + template + struct apply; + }; + } + + namespace result_of + { + template + struct value_at + : extension::value_at_impl::type>:: + template apply + {}; + + template + struct value_at_c + : fusion::result_of::value_at > + {}; + } +}} + +#endif + diff --git a/include/boost/fusion/sequence/intrinsic/value_at_key.hpp b/include/boost/fusion/sequence/intrinsic/value_at_key.hpp new file mode 100644 index 00000000..a6c8aeec --- /dev/null +++ b/include/boost/fusion/sequence/intrinsic/value_at_key.hpp @@ -0,0 +1,38 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_VALUE_AT_KEY_05052005_0229) +#define FUSION_VALUE_AT_KEY_05052005_0229 + +#include +#include + +namespace boost { namespace fusion +{ + namespace extension + { + template + struct value_at_key_impl + { + template + struct apply; + }; + } + + namespace result_of + { + template + struct value_at_key + : extension::value_at_key_impl::type>:: + template apply + {}; + } +}} + +#endif + diff --git a/include/boost/fusion/sequence/io.hpp b/include/boost/fusion/sequence/io.hpp new file mode 100644 index 00000000..5547f15c --- /dev/null +++ b/include/boost/fusion/sequence/io.hpp @@ -0,0 +1,14 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_SEQUENCE_IO_10032005_0836) +#define FUSION_SEQUENCE_IO_10032005_0836 + +#include +#include + +#endif diff --git a/include/boost/fusion/sequence/io/detail/in.hpp b/include/boost/fusion/sequence/io/detail/in.hpp new file mode 100644 index 00000000..7054bfe3 --- /dev/null +++ b/include/boost/fusion/sequence/io/detail/in.hpp @@ -0,0 +1,86 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jeremiah Willcock + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_IN_05052005_0121) +#define FUSION_IN_05052005_0121 + +#include +#include + +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion { namespace detail +{ + template + struct delimiter_in + { + // read a delimiter + template + static void + read(IS& is, char const* delim, mpl::false_ = mpl::false_()) + { + detail::string_ios_manip manip(is); + manip.read(delim); + } + + template + static void + read(IS& is, char const* delim, mpl::true_) + { + } + }; + + struct read_sequence_loop + { + template + static void + call(IS& is, First const&, Last const&, mpl::true_) + { + } + + template + static void + call(IS& is, First const& first, Last const& last, mpl::false_) + { + result_of::equal_to< + typename result_of::next::type + , Last + > + is_last; + + is >> *first; + delimiter_in::read(is, " ", is_last); + call(is, fusion::next(first), last, is_last); + } + + template + static void + call(IS& is, First const& first, Last const& last) + { + result_of::equal_to eq; + call(is, first, last, eq); + } + }; + + template + inline void + read_sequence(IS& is, Sequence& seq) + { + delimiter_in::read(is, "("); + read_sequence_loop::call(is, fusion::begin(seq), fusion::end(seq)); + delimiter_in::read(is, ")"); + } +}}} + +#endif diff --git a/include/boost/fusion/sequence/io/detail/manip.hpp b/include/boost/fusion/sequence/io/detail/manip.hpp new file mode 100644 index 00000000..c5776199 --- /dev/null +++ b/include/boost/fusion/sequence/io/detail/manip.hpp @@ -0,0 +1,318 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jeremiah Willcock + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_MANIP_05052005_1200) +#define FUSION_MANIP_05052005_1200 + +#include +#include +#include +#include +#include + +// Tuple I/O manipulators + +#define FUSION_GET_CHAR_TYPE(T) typename T::char_type +#define FUSION_GET_TRAITS_TYPE(T) typename T::traits_type + +#if defined (BOOST_NO_TEMPLATED_STREAMS) +#define FUSION_STRING_OF_STREAM(Stream) std::string +#else +#define FUSION_STRING_OF_STREAM(Stream) \ + std::basic_string< \ + FUSION_GET_CHAR_TYPE(Stream) \ + , FUSION_GET_TRAITS_TYPE(Stream) \ + > +#endif + +//$$$ these should be part of the public API$$$ +//$$$ rename tuple_open, tuple_close and tuple_delimiter to +// open, close and delimeter and add these synonyms to the +// TR1 tuple module. + +namespace boost { namespace fusion +{ + namespace detail + { + template + int get_xalloc_index(Tag* = 0) + { + // each Tag will have a unique index + static int index = std::ios::xalloc(); + return index; + } + + template + struct stream_data + { + struct arena + { + ~arena() + { + for ( + typename std::vector::iterator i = data.begin() + ; i != data.end() + ; ++i) + { + delete *i; + } + } + + std::vector data; + }; + + static void attach(Stream& stream, T const& data) + { + static arena ar; // our arena + ar.data.push_back(new T(data)); + stream.pword(get_xalloc_index()) = ar.data.back(); + } + + static T const* get(Stream& stream) + { + return (T const*)stream.pword(get_xalloc_index()); + } + }; + + template + class string_ios_manip + { + public: + + typedef FUSION_STRING_OF_STREAM(Stream) string_type; + + typedef stream_data stream_data_t; + + string_ios_manip(Stream& str_) + : stream(str_) + {} + + void + set(string_type const& s) + { + stream_data_t::attach(stream, s); + } + + void + print(char const* default_) const + { + // print a delimiter + string_type const* p = stream_data_t::get(stream); + if (p) + stream << *p; + else + stream << default_; + } + + void + read(char const* default_) const + { + // read a delimiter + string_type const* p = stream_data_t::get(stream); + using namespace std; + ws(stream); + + if (p) + { + typedef typename string_type::const_iterator iterator; + for (iterator i = p->begin(); i != p->end(); ++i) + check_delim(*i); + } + else + { + while (*default_) + check_delim(*default_++); + } + } + + private: + + template + void + check_delim(Char c) const + { + if (!isspace(c)) + { + if (stream.get() != c) + { + stream.unget(); + stream.setstate(std::ios::failbit); + } + } + } + + Stream& stream; + }; + + } // detail + +#if defined (BOOST_NO_TEMPLATED_STREAMS) + +#define STD_TUPLE_DEFINE_MANIPULATOR(name) \ + namespace detail \ + { \ + struct name##_tag; \ + \ + struct name##_type \ + { \ + typedef std::string string_type; \ + string_type data; \ + name##_type(const string_type& d): data(d) {} \ + }; \ + \ + template \ + Stream& operator>>(Stream& s, const name##_type& m) \ + { \ + string_ios_manip(s).set(m.data); \ + return s; \ + } \ + \ + template \ + Stream& operator<<(Stream& s, const name##_type& m) \ + { \ + string_ios_manip(s).set(m.data); \ + return s; \ + } \ + } + +#define STD_TUPLE_DEFINE_MANIPULATOR_FUNCTIONS(name) \ + inline detail::name##_type \ + name(const std::string& s) \ + { \ + return detail::name##_type(s); \ + } \ + \ + inline detail::name##_type \ + name(const char* s) \ + { \ + return detail::name##_type(std::string(s)); \ + } \ + \ + inline detail::name##_type \ + name(char c) \ + { \ + return detail::name##_type(std::string(1, c)); \ + } + +#else // defined(BOOST_NO_TEMPLATED_STREAMS) + +#if defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) + +#define STD_TUPLE_DEFINE_MANIPULATOR_FUNCTIONS(name) \ + template \ + inline detail::name##_type \ + name(const std::basic_string& s) \ + { \ + return detail::name##_type(s); \ + } \ + \ + inline detail::name##_type \ + name(char const* s) \ + { \ + return detail::name##_type(std::basic_string(s)); \ + } \ + \ + inline detail::name##_type \ + name(wchar_t const* s) \ + { \ + return detail::name##_type(std::basic_string(s)); \ + } \ + \ + inline detail::name##_type \ + name(char c) \ + { \ + return detail::name##_type(std::basic_string(1, c)); \ + } \ + \ + inline detail::name##_type \ + name(wchar_t c) \ + { \ + return detail::name##_type(std::basic_string(1, c)); \ + } + +#else // defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) + +#define STD_TUPLE_DEFINE_MANIPULATOR_FUNCTIONS(name) \ + template \ + inline detail::name##_type \ + name(const std::basic_string& s) \ + { \ + return detail::name##_type(s); \ + } \ + \ + template \ + inline detail::name##_type \ + name(Char s[]) \ + { \ + return detail::name##_type(std::basic_string(s)); \ + } \ + \ + template \ + inline detail::name##_type \ + name(Char const s[]) \ + { \ + return detail::name##_type(std::basic_string(s)); \ + } \ + \ + template \ + inline detail::name##_type \ + name(Char c) \ + { \ + return detail::name##_type(std::basic_string(1, c)); \ + } + +#endif + +#define STD_TUPLE_DEFINE_MANIPULATOR(name) \ + namespace detail \ + { \ + struct name##_tag; \ + \ + template > \ + struct name##_type \ + { \ + typedef std::basic_string string_type; \ + string_type data; \ + name##_type(const string_type& d): data(d) {} \ + }; \ + \ + template \ + Stream& operator>>(Stream& s, const name##_type& m) \ + { \ + string_ios_manip(s).set(m.data); \ + return s; \ + } \ + \ + template \ + Stream& operator<<(Stream& s, const name##_type& m) \ + { \ + string_ios_manip(s).set(m.data); \ + return s; \ + } \ + } \ + +#endif // defined(BOOST_NO_TEMPLATED_STREAMS) + + STD_TUPLE_DEFINE_MANIPULATOR(tuple_open) + STD_TUPLE_DEFINE_MANIPULATOR(tuple_close) + STD_TUPLE_DEFINE_MANIPULATOR(tuple_delimiter) + + STD_TUPLE_DEFINE_MANIPULATOR_FUNCTIONS(tuple_open) + STD_TUPLE_DEFINE_MANIPULATOR_FUNCTIONS(tuple_close) + STD_TUPLE_DEFINE_MANIPULATOR_FUNCTIONS(tuple_delimiter) + +#undef STD_TUPLE_DEFINE_MANIPULATOR +#undef STD_TUPLE_DEFINE_MANIPULATOR_FUNCTIONS +#undef FUSION_STRING_OF_STREAM +#undef FUSION_GET_CHAR_TYPE +#undef FUSION_GET_TRAITS_TYPE + +}} + +#endif diff --git a/include/boost/fusion/sequence/io/detail/out.hpp b/include/boost/fusion/sequence/io/detail/out.hpp new file mode 100644 index 00000000..e00ed17b --- /dev/null +++ b/include/boost/fusion/sequence/io/detail/out.hpp @@ -0,0 +1,86 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jeremiah Willcock + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_OUT_05052005_0121) +#define FUSION_OUT_05052005_0121 + +#include +#include + +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion { namespace detail +{ + template + struct delimiter_out + { + // print a delimiter + template + static void + print(OS& os, char const* delim, mpl::false_ = mpl::false_()) + { + detail::string_ios_manip manip(os); + manip.print(delim); + } + + template + static void + print(OS& os, char const* delim, mpl::true_) + { + } + }; + + struct print_sequence_loop + { + template + static void + call(OS& os, First const&, Last const&, mpl::true_) + { + } + + template + static void + call(OS& os, First const& first, Last const& last, mpl::false_) + { + result_of::equal_to< + typename result_of::next::type + , Last + > + is_last; + + os << *first; + delimiter_out::print(os, " ", is_last); + call(os, fusion::next(first), last, is_last); + } + + template + static void + call(OS& os, First const& first, Last const& last) + { + result_of::equal_to eq; + call(os, first, last, eq); + } + }; + + template + inline void + print_sequence(OS& os, Sequence const& seq) + { + delimiter_out::print(os, "("); + print_sequence_loop::call(os, fusion::begin(seq), fusion::end(seq)); + delimiter_out::print(os, ")"); + } +}}} + +#endif diff --git a/include/boost/fusion/sequence/io/in.hpp b/include/boost/fusion/sequence/io/in.hpp new file mode 100644 index 00000000..2766daee --- /dev/null +++ b/include/boost/fusion/sequence/io/in.hpp @@ -0,0 +1,34 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jeremiah Willcock + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_IN_05042005_0120) +#define BOOST_IN_05042005_0120 + +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + template + inline typename + enable_if< + fusion::traits::is_sequence + , IStream& + >::type + operator>>(IStream& is, Sequence& seq) + { + detail::read_sequence(is, seq); + return is; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/io/out.hpp b/include/boost/fusion/sequence/io/out.hpp new file mode 100644 index 00000000..fd943547 --- /dev/null +++ b/include/boost/fusion/sequence/io/out.hpp @@ -0,0 +1,34 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 1999-2003 Jeremiah Willcock + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_OUT_05042005_0120) +#define BOOST_OUT_05042005_0120 + +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + template + inline typename + enable_if< + fusion::traits::is_sequence + , OStream& + >::type + operator<<(OStream& os, Sequence const& seq) + { + detail::print_sequence(os, seq); + return os; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/utility.hpp b/include/boost/fusion/sequence/utility.hpp new file mode 100644 index 00000000..35a17af9 --- /dev/null +++ b/include/boost/fusion/sequence/utility.hpp @@ -0,0 +1,14 @@ +// +// Copyright (c) 2006 João Abecasis +// +// Distributed under the 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_SEQUENCE_UTILITY_HPP_INCLUDED) +#define BOOST_FUSION_SEQUENCE_UTILITY_HPP_INCLUDED + +# include + +#endif // include guard diff --git a/include/boost/fusion/sequence/utility/limits.hpp b/include/boost/fusion/sequence/utility/limits.hpp new file mode 100644 index 00000000..7f3d0136 --- /dev/null +++ b/include/boost/fusion/sequence/utility/limits.hpp @@ -0,0 +1,16 @@ +// +// Copyright (c) 2006 João Abecasis +// +// Distributed under the 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_ALGORITHM_INVOCATION_LIMITS_HPP_INCLUDED) +#define BOOST_FUSION_ALGORITHM_INVOCATION_LIMITS_HPP_INCLUDED + +# if !defined(FUSION_MAX_UNPACK_ARG_SIZE) +# define FUSION_MAX_UNPACK_ARG_SIZE 10 +# endif + +#endif // include guard diff --git a/include/boost/fusion/sequence/utility/unpack_args.hpp b/include/boost/fusion/sequence/utility/unpack_args.hpp new file mode 100644 index 00000000..df3cb736 --- /dev/null +++ b/include/boost/fusion/sequence/utility/unpack_args.hpp @@ -0,0 +1,164 @@ +// +// Copyright (c) 2005, 2006 João Abecasis +// +// Distributed under the 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 !BOOST_PP_IS_ITERATING + +# if !defined(BOOST_FUSION_SEQUENCE_UTILITY_UNPACK_ARGS_HPP_INCLUDED) +# define BOOST_FUSION_SEQUENCE_UTILITY_UNPACK_ARGS_HPP_INCLUDED + +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include + +namespace boost { namespace fusion +{ + + namespace detail + { + + template < + class F, + class Sequence, + class F_ = + typename boost::mpl::eval_if< + boost::is_pointer, + boost::remove_cv, + boost::mpl::eval_if< + boost::is_function::type>, + boost::add_pointer::type>, + boost::mpl::identity + > + >::type, + class Size = mpl::int_::value> + > + struct unpack_args_impl; + + template + struct unpack_args_impl > + { + typedef typename boost::result_of::type type; + + static type call(F & f, Sequence &) + { + return f(); + } + }; + +# define BOOST_FUSION_next_iterator(z, n, data) \ + typedef typename fusion::result_of::next::type \ + BOOST_PP_CAT(I, BOOST_PP_INC(n)); + +# define BOOST_FUSION_deref_iterator(z, n, data) \ + typedef typename fusion::result_of::deref::type BOOST_PP_CAT(T, BOOST_PP_INC(n)); + +# define BOOST_FUSION_next_call_iterator(z, n, data) \ + BOOST_PP_CAT(I, BOOST_PP_INC(n)) BOOST_PP_CAT(i, BOOST_PP_INC(n)) \ + = fusion::next(BOOST_PP_CAT(i, n)); + +# define BOOST_FUSION_n BOOST_PP_ITERATION() + +# define BOOST_PP_ITERATION_PARAMS_1 (3, (1, FUSION_MAX_UNPACK_ARG_SIZE, \ + )) + +# include BOOST_PP_ITERATE() + +# undef BOOST_FUSION_next_iterator +# undef BOOST_FUSION_deref_iterator +# undef BOOST_FUSION_next_call_iterator +# undef BOOST_FUSION_n + +# undef BOOST_PP_ITERATION_PARAMS_1 + + } // namespace detail + + namespace result_of + { + + template + struct unpack_args + : detail::unpack_args_impl + { + }; + + } // namespace result_of + + template + inline typename result_of::unpack_args::type + unpack_args(F & f, Sequence & seq) + { + return result_of::unpack_args::call(f, seq); + } + + template + inline typename result_of::unpack_args::type + unpack_args(F const & f, Sequence & seq) + { + return result_of::unpack_args::call(f, seq); + } + + template + inline typename result_of::unpack_args::type + unpack_args(F & f, Sequence const & seq) + { + return result_of::unpack_args::call(f, seq); + } + + template + inline typename result_of::unpack_args::type + unpack_args(F const & f, Sequence const & seq) + { + return result_of::unpack_args::call(f, seq); + } + +}} // namespace boost::fusion + +# endif // include guard + +#else // BOOST_PP_IS_ITERATING + + template + struct unpack_args_impl > + { + typedef typename fusion::result_of::begin::type I0; + typedef typename fusion::result_of::deref::type T0; + + BOOST_PP_REPEAT(BOOST_FUSION_n, BOOST_FUSION_next_iterator, ~) + BOOST_PP_REPEAT(BOOST_FUSION_n, BOOST_FUSION_deref_iterator, ~) + + typedef typename boost::result_of< + F_( BOOST_PP_ENUM_PARAMS(BOOST_FUSION_n, T) ) + >::type type; + + static type call(F & f, Sequence & seq) + { + I0 i0 = fusion::begin(seq); + + BOOST_PP_REPEAT(BOOST_PP_DEC(BOOST_FUSION_n), BOOST_FUSION_next_call_iterator, ~) + + return f( BOOST_PP_ENUM_PARAMS(BOOST_FUSION_n, *i) ); + } + }; + +#endif // BOOST_PP_IS_ITERATING diff --git a/include/boost/fusion/sequence/view.hpp b/include/boost/fusion/sequence/view.hpp new file mode 100644 index 00000000..977c4529 --- /dev/null +++ b/include/boost/fusion/sequence/view.hpp @@ -0,0 +1,18 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_SEQUENCE_VIEW_10022005_0620) +#define FUSION_SEQUENCE_VIEW_10022005_0620 + +#include +#include +#include +#include +#include +#include + +#endif diff --git a/include/boost/fusion/sequence/view/filter_view.hpp b/include/boost/fusion/sequence/view/filter_view.hpp new file mode 100644 index 00000000..c5416662 --- /dev/null +++ b/include/boost/fusion/sequence/view/filter_view.hpp @@ -0,0 +1,14 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_SEQUENCE_VIEW_FILTER_VIEW_10022005_0608) +#define FUSION_SEQUENCE_VIEW_FILTER_VIEW_10022005_0608 + +#include +#include + +#endif diff --git a/include/boost/fusion/sequence/view/filter_view/detail/begin_impl.hpp b/include/boost/fusion/sequence/view/filter_view/detail/begin_impl.hpp new file mode 100644 index 00000000..42999deb --- /dev/null +++ b/include/boost/fusion/sequence/view/filter_view/detail/begin_impl.hpp @@ -0,0 +1,46 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_BEGIN_IMPL_05062005_0903) +#define FUSION_BEGIN_IMPL_05062005_0903 + +namespace boost { namespace fusion +{ + struct filter_view_tag; + + template + struct filter_iterator; + + namespace extension + { + template + struct begin_impl; + + template <> + struct begin_impl + { + template + struct apply + { + typedef typename Sequence::first_type first_type; + typedef typename Sequence::last_type last_type; + typedef typename Sequence::pred_type pred_type; + typedef filter_iterator type; + + static type + call(Sequence& s) + { + return type(s.first()); + } + }; + }; + } +}} + +#endif + + diff --git a/include/boost/fusion/sequence/view/filter_view/detail/deref_impl.hpp b/include/boost/fusion/sequence/view/filter_view/detail/deref_impl.hpp new file mode 100644 index 00000000..fd46bf86 --- /dev/null +++ b/include/boost/fusion/sequence/view/filter_view/detail/deref_impl.hpp @@ -0,0 +1,30 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_DEREF_IMPL_05062005_0905) +#define FUSION_DEREF_IMPL_05062005_0905 + +#include + +namespace boost { namespace fusion +{ + struct filter_view_iterator_tag; + + namespace extension + { + template + struct deref_impl; + + template <> + struct deref_impl + : detail::adapt_deref_traits {}; + } +}} + +#endif + + diff --git a/include/boost/fusion/sequence/view/filter_view/detail/end_impl.hpp b/include/boost/fusion/sequence/view/filter_view/detail/end_impl.hpp new file mode 100644 index 00000000..bdaed67d --- /dev/null +++ b/include/boost/fusion/sequence/view/filter_view/detail/end_impl.hpp @@ -0,0 +1,45 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_END_IMPL_05062005_0906) +#define FUSION_END_IMPL_05062005_0906 + +namespace boost { namespace fusion +{ + struct filter_view_tag; + + template + struct filter_iterator; + + namespace extension + { + template + struct end_impl; + + template <> + struct end_impl + { + template + struct apply + { + typedef typename Sequence::last_type last_type; + typedef typename Sequence::pred_type pred_type; + typedef filter_iterator type; + + static type + call(Sequence& s) + { + return type(s.last()); + } + }; + }; + } +}} + +#endif + + diff --git a/include/boost/fusion/sequence/view/filter_view/detail/equal_to_impl.hpp b/include/boost/fusion/sequence/view/filter_view/detail/equal_to_impl.hpp new file mode 100644 index 00000000..33e92555 --- /dev/null +++ b/include/boost/fusion/sequence/view/filter_view/detail/equal_to_impl.hpp @@ -0,0 +1,35 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_EQUAL_TO_IMPL_02012005_2133) +#define BOOST_FUSION_EQUAL_TO_IMPL_02012005_2133 + +namespace boost { namespace fusion +{ + struct filter_view_iterator_tag; + + namespace extension + { + template + struct equal_to; + + template + struct equal_to_impl; + + template<> + struct equal_to_impl + { + template + struct apply + : result_of::equal_to + {}; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/view/filter_view/detail/next_impl.hpp b/include/boost/fusion/sequence/view/filter_view/detail/next_impl.hpp new file mode 100644 index 00000000..3b35f9c6 --- /dev/null +++ b/include/boost/fusion/sequence/view/filter_view/detail/next_impl.hpp @@ -0,0 +1,65 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_NEXT_IMPL_06052005_0900) +#define FUSION_NEXT_IMPL_06052005_0900 + +#include +#include +#include + +namespace boost { namespace fusion +{ + struct filter_view_iterator_tag; + + template + struct filter_iterator; + + namespace extension + { + template + struct next_impl; + + template <> + struct next_impl + { + template + struct apply + { + typedef typename Iterator::first_type first_type; + typedef typename Iterator::last_type last_type; + typedef typename Iterator::pred_type pred_type; + + typedef typename + mpl::eval_if< + result_of::equal_to + , mpl::identity + , result_of::next + >::type + next_type; + + typedef typename detail::static_find_if< + next_type, last_type, pred_type> + filter; + + typedef filter_iterator< + typename filter::type, last_type, pred_type> + type; + + static type + call(Iterator const& i) + { + return type(filter::call(i.first)); + } + }; + }; + } +}} + +#endif + + diff --git a/include/boost/fusion/sequence/view/filter_view/detail/size_impl.hpp b/include/boost/fusion/sequence/view/filter_view/detail/size_impl.hpp new file mode 100644 index 00000000..55b91d36 --- /dev/null +++ b/include/boost/fusion/sequence/view/filter_view/detail/size_impl.hpp @@ -0,0 +1,39 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_SIZE_IMPL_09232005_1058) +#define FUSION_SIZE_IMPL_09232005_1058 + +#include +#include +#include + +namespace boost { namespace fusion +{ + struct filter_view_tag; + + namespace extension + { + template + struct size_impl; + + template <> + struct size_impl + { + template + struct apply + : result_of::distance< + typename result_of::begin::type + , typename result_of::end::type> + {}; + }; + } +}} + +#endif + + diff --git a/include/boost/fusion/sequence/view/filter_view/detail/value_of_impl.hpp b/include/boost/fusion/sequence/view/filter_view/detail/value_of_impl.hpp new file mode 100644 index 00000000..4114dd9f --- /dev/null +++ b/include/boost/fusion/sequence/view/filter_view/detail/value_of_impl.hpp @@ -0,0 +1,30 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_VALUE_OF_IMPL_05062005_0857) +#define FUSION_VALUE_OF_IMPL_05062005_0857 + +#include + +namespace boost { namespace fusion +{ + struct filter_view_iterator_tag; + + namespace extension + { + template + struct value_of_impl; + + template <> + struct value_of_impl + : detail::adapt_value_traits {}; + } +}} + +#endif + + diff --git a/include/boost/fusion/sequence/view/filter_view/filter_view.hpp b/include/boost/fusion/sequence/view/filter_view/filter_view.hpp new file mode 100644 index 00000000..f6346eb0 --- /dev/null +++ b/include/boost/fusion/sequence/view/filter_view/filter_view.hpp @@ -0,0 +1,52 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_SEQUENCE_FILTER_VIEW_HPP) +#define FUSION_SEQUENCE_FILTER_VIEW_HPP + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct filter_view_tag; + struct forward_sequence_tag; + struct fusion_sequence_tag; + + template + struct filter_view : sequence_base > + { + typedef filter_view_tag ftag; + typedef fusion_sequence_tag tag; // this gets picked up by MPL + typedef forward_sequence_tag category; + typedef mpl::true_ is_view; + + typedef typename result_of::begin::type first_type; + typedef typename result_of::end::type last_type; + typedef Pred pred_type; + + filter_view(Sequence& seq) + : seq(seq) + {} + + first_type first() const { return fusion::begin(seq); } + last_type last() const { return fusion::end(seq); } + typename mpl::if_, Sequence, Sequence&>::type seq; + }; +}} + +#endif + + diff --git a/include/boost/fusion/sequence/view/filter_view/filter_view_iterator.hpp b/include/boost/fusion/sequence/view/filter_view/filter_view_iterator.hpp new file mode 100644 index 00000000..2e469d5c --- /dev/null +++ b/include/boost/fusion/sequence/view/filter_view/filter_view_iterator.hpp @@ -0,0 +1,48 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_FILTER_VIEW_ITERATOR_05062005_0849) +#define FUSION_FILTER_VIEW_ITERATOR_05062005_0849 + +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct filter_view_iterator_tag; + struct forward_traversal_tag; + + template + struct filter_iterator : iterator_base > + { + typedef convert_iterator first_converter; + typedef typename first_converter::type first_iter; + typedef convert_iterator last_converter; + typedef typename last_converter::type last_iter; + + typedef filter_view_iterator_tag ftag; + typedef forward_traversal_tag category; + typedef detail::static_find_if filter; + typedef typename filter::type first_type; + typedef last_iter last_type; + typedef Pred pred_type; + + filter_iterator(First const& first) + : first(filter::call(first_converter::call(first))) {} + + first_type first; + }; +}} + +#endif + + diff --git a/include/boost/fusion/sequence/view/iterator_range.hpp b/include/boost/fusion/sequence/view/iterator_range.hpp new file mode 100644 index 00000000..15fab150 --- /dev/null +++ b/include/boost/fusion/sequence/view/iterator_range.hpp @@ -0,0 +1,13 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_SEQUENCE_VIEW_ITERATOR_RANGE_10022005_0610) +#define FUSION_SEQUENCE_VIEW_ITERATOR_RANGE_10022005_0610 + +#include + +#endif diff --git a/include/boost/fusion/sequence/view/iterator_range/detail/begin_impl.hpp b/include/boost/fusion/sequence/view/iterator_range/detail/begin_impl.hpp new file mode 100644 index 00000000..8cde61be --- /dev/null +++ b/include/boost/fusion/sequence/view/iterator_range/detail/begin_impl.hpp @@ -0,0 +1,40 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_BEGIN_IMPL_05062005_1226) +#define FUSION_BEGIN_IMPL_05062005_1226 + +namespace boost { namespace fusion +{ + struct iterator_range_tag; + + namespace extension + { + template + struct begin_impl; + + template <> + struct begin_impl + { + template + struct apply + { + typedef typename Sequence::begin_type type; + + static type + call(Sequence& s) + { + return s.first; + } + }; + }; + } +}} + +#endif + + diff --git a/include/boost/fusion/sequence/view/iterator_range/detail/end_impl.hpp b/include/boost/fusion/sequence/view/iterator_range/detail/end_impl.hpp new file mode 100644 index 00000000..dfd1ee2e --- /dev/null +++ b/include/boost/fusion/sequence/view/iterator_range/detail/end_impl.hpp @@ -0,0 +1,40 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_END_IMPL_05062005_1226) +#define FUSION_END_IMPL_05062005_1226 + +namespace boost { namespace fusion +{ + struct iterator_range_tag; + + namespace extension + { + template + struct end_impl; + + template <> + struct end_impl + { + template + struct apply + { + typedef typename Sequence::end_type type; + + static type + call(Sequence& s) + { + return s.last; + } + }; + }; + } +}} + +#endif + + diff --git a/include/boost/fusion/sequence/view/iterator_range/iterator_range.hpp b/include/boost/fusion/sequence/view/iterator_range/iterator_range.hpp new file mode 100644 index 00000000..c86f47e3 --- /dev/null +++ b/include/boost/fusion/sequence/view/iterator_range/iterator_range.hpp @@ -0,0 +1,53 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_ITERATOR_RANGE_05062005_1224) +#define FUSION_ITERATOR_RANGE_05062005_1224 + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct iterator_range_tag; + struct fusion_sequence_tag; + + template + struct iterator_range : sequence_base > + { + typedef typename convert_iterator::type begin_type; + typedef typename convert_iterator::type end_type; + typedef iterator_range_tag ftag; + typedef fusion_sequence_tag tag; // this gets picked up by MPL + typedef typename result_of::distance::type size; + typedef mpl::true_ is_view; + + typedef typename + detail::iterator_to_sequence_category< + typename traits::category_of::type + >::type + category; + + iterator_range(First const& first, Last const& last) + : first(convert_iterator::call(first)) + , last(convert_iterator::call(last)) {} + + begin_type first; + end_type last; + }; +}} + +#endif + + diff --git a/include/boost/fusion/sequence/view/joint_view.hpp b/include/boost/fusion/sequence/view/joint_view.hpp new file mode 100644 index 00000000..64c22604 --- /dev/null +++ b/include/boost/fusion/sequence/view/joint_view.hpp @@ -0,0 +1,14 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_SEQUENCE_VIEW_JOINT_VIEW_10022005_0610) +#define FUSION_SEQUENCE_VIEW_JOINT_VIEW_10022005_0610 + +#include +#include + +#endif diff --git a/include/boost/fusion/sequence/view/joint_view/detail/begin_impl.hpp b/include/boost/fusion/sequence/view/joint_view/detail/begin_impl.hpp new file mode 100644 index 00000000..83bc970e --- /dev/null +++ b/include/boost/fusion/sequence/view/joint_view/detail/begin_impl.hpp @@ -0,0 +1,67 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_BEGIN_IMPL_07162005_0115) +#define FUSION_BEGIN_IMPL_07162005_0115 + +#include +#include + +namespace boost { namespace fusion +{ + struct joint_view_tag; + + template + struct joint_view_iterator; + + namespace extension + { + template + struct begin_impl; + + template <> + struct begin_impl + { + template + struct apply + { + typedef typename Sequence::first_type first_type; + typedef typename Sequence::last_type last_type; + typedef typename Sequence::concat_type concat_type; + typedef result_of::equal_to equal_to; + + typedef typename + mpl::if_< + equal_to + , concat_type + , joint_view_iterator + >::type + type; + + static type + call(Sequence& s, mpl::true_) + { + return s.concat(); + } + + static type + call(Sequence& s, mpl::false_) + { + return type(s.first(), s.concat()); + } + + static type + call(Sequence& s) + { + return call(s, equal_to()); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/view/joint_view/detail/deref_impl.hpp b/include/boost/fusion/sequence/view/joint_view/detail/deref_impl.hpp new file mode 100644 index 00000000..2e927b23 --- /dev/null +++ b/include/boost/fusion/sequence/view/joint_view/detail/deref_impl.hpp @@ -0,0 +1,30 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_DEREF_IMPL_07162005_0137) +#define FUSION_DEREF_IMPL_07162005_0137 + +#include + +namespace boost { namespace fusion +{ + struct joint_view_iterator_tag; + + namespace extension + { + template + struct deref_impl; + + template <> + struct deref_impl + : detail::adapt_deref_traits {}; + } +}} + +#endif + + diff --git a/include/boost/fusion/sequence/view/joint_view/detail/end_impl.hpp b/include/boost/fusion/sequence/view/joint_view/detail/end_impl.hpp new file mode 100644 index 00000000..b39a56b2 --- /dev/null +++ b/include/boost/fusion/sequence/view/joint_view/detail/end_impl.hpp @@ -0,0 +1,41 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_END_IMPL_07162005_0128) +#define FUSION_END_IMPL_07162005_0128 + +#include +#include + +namespace boost { namespace fusion +{ + struct joint_view_tag; + + namespace extension + { + template + struct end_impl; + + template <> + struct end_impl + { + template + struct apply + { + typedef typename Sequence::concat_last_type type; + + static type + call(Sequence& s) + { + return s.concat_last(); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/view/joint_view/detail/next_impl.hpp b/include/boost/fusion/sequence/view/joint_view/detail/next_impl.hpp new file mode 100644 index 00000000..1f6d78f6 --- /dev/null +++ b/include/boost/fusion/sequence/view/joint_view/detail/next_impl.hpp @@ -0,0 +1,71 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_NEXT_IMPL_07162005_0136) +#define FUSION_NEXT_IMPL_07162005_0136 + +#include +#include +#include + +namespace boost { namespace fusion +{ + struct joint_view_iterator_tag; + + template + struct joint_view_iterator; + + namespace extension + { + template + struct next_impl; + + template <> + struct next_impl + { + template + struct apply + { + typedef typename Iterator::first_type first_type; + typedef typename Iterator::last_type last_type; + typedef typename Iterator::concat_type concat_type; + typedef typename result_of::next::type next_type; + typedef result_of::equal_to equal_to; + + typedef typename + mpl::if_< + equal_to + , concat_type + , joint_view_iterator + >::type + type; + + static type + call(Iterator const& i, mpl::true_) + { + return i.concat; + } + + static type + call(Iterator const& i, mpl::false_) + { + return type(fusion::next(i.first), i.concat); + } + + static type + call(Iterator const& i) + { + return call(i, equal_to()); + } + }; + }; + } +}} + +#endif + + diff --git a/include/boost/fusion/sequence/view/joint_view/detail/value_of_impl.hpp b/include/boost/fusion/sequence/view/joint_view/detail/value_of_impl.hpp new file mode 100644 index 00000000..68cb053d --- /dev/null +++ b/include/boost/fusion/sequence/view/joint_view/detail/value_of_impl.hpp @@ -0,0 +1,30 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_VALUE_IMPL_07162005_0132) +#define FUSION_VALUE_IMPL_07162005_0132 + +#include + +namespace boost { namespace fusion +{ + struct joint_view_iterator_tag; + + namespace extension + { + template + struct value_of_impl; + + template <> + struct value_of_impl + : detail::adapt_value_traits {}; + } +}} + +#endif + + diff --git a/include/boost/fusion/sequence/view/joint_view/joint_view.hpp b/include/boost/fusion/sequence/view/joint_view/joint_view.hpp new file mode 100644 index 00000000..6e0ac9cc --- /dev/null +++ b/include/boost/fusion/sequence/view/joint_view/joint_view.hpp @@ -0,0 +1,62 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_JOINT_VIEW_07162005_0140) +#define FUSION_JOINT_VIEW_07162005_0140 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct joint_view_tag; + struct forward_sequence_tag; + struct fusion_sequence_tag; + + template + struct joint_view : sequence_base > + { + typedef joint_view_tag ftag; + typedef fusion_sequence_tag tag; // this gets picked up by MPL + typedef forward_sequence_tag category; + typedef mpl::true_ is_view; + + typedef typename result_of::begin::type first_type; + typedef typename result_of::end::type last_type; + typedef typename result_of::begin::type concat_type; + 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) + {} + + first_type first() const { return fusion::begin(seq1); } + concat_type concat() const { return fusion::begin(seq2); } + concat_last_type concat_last() const { return fusion::end(seq2); } + + private: + + typename mpl::if_, Sequence1, Sequence1&>::type seq1; + typename mpl::if_, Sequence2, Sequence2&>::type seq2; + }; +}} + +#endif + + diff --git a/include/boost/fusion/sequence/view/joint_view/joint_view_iterator.hpp b/include/boost/fusion/sequence/view/joint_view/joint_view_iterator.hpp new file mode 100644 index 00000000..49ad4c33 --- /dev/null +++ b/include/boost/fusion/sequence/view/joint_view/joint_view_iterator.hpp @@ -0,0 +1,52 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_JOINT_VIEW_ITERATOR_07162005_0140) +#define FUSION_JOINT_VIEW_ITERATOR_07162005_0140 + +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct joint_view_iterator_tag; + struct forward_traversal_tag; + + template + struct joint_view_iterator + : iterator_base > + { + typedef convert_iterator first_converter; + typedef convert_iterator last_converter; + typedef convert_iterator concat_converter; + + typedef typename first_converter::type first_type; + typedef typename last_converter::type last_type; + typedef typename concat_converter::type concat_type; + + typedef joint_view_iterator_tag ftag; + typedef forward_traversal_tag 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)) + {} + + first_type first; + concat_type concat; + }; +}} + +#endif + + diff --git a/include/boost/fusion/sequence/view/reverse_view.hpp b/include/boost/fusion/sequence/view/reverse_view.hpp new file mode 100644 index 00000000..cf782dac --- /dev/null +++ b/include/boost/fusion/sequence/view/reverse_view.hpp @@ -0,0 +1,14 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_SEQUENCE_VIEW_REVERSE_VIEW_10022005_0612) +#define FUSION_SEQUENCE_VIEW_REVERSE_VIEW_10022005_0612 + +#include +#include + +#endif diff --git a/include/boost/fusion/sequence/view/reverse_view/detail/advance_impl.hpp b/include/boost/fusion/sequence/view/reverse_view/detail/advance_impl.hpp new file mode 100644 index 00000000..4508c9db --- /dev/null +++ b/include/boost/fusion/sequence/view/reverse_view/detail/advance_impl.hpp @@ -0,0 +1,48 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_ADVANCE_IMPL_14122005_2015) +#define FUSION_ADVANCE_IMPL_14122005_2015 + +#include +#include + +namespace boost { namespace fusion { + + struct reverse_view_iterator_tag; + + template + struct reverse_view_iterator; + + namespace extension + { + template + struct advance_impl; + + template<> + struct advance_impl + { + template + struct apply + { + typedef typename Iterator::first_type first_type; + typedef typename mpl::negate::type negative_dist; + typedef typename result_of::advance::type advanced_type; + typedef reverse_view_iterator type; + + static type + call(Iterator const& i) + { + return type(boost::fusion::advance(i.first)); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/view/reverse_view/detail/begin_impl.hpp b/include/boost/fusion/sequence/view/reverse_view/detail/begin_impl.hpp new file mode 100644 index 00000000..77ec5aac --- /dev/null +++ b/include/boost/fusion/sequence/view/reverse_view/detail/begin_impl.hpp @@ -0,0 +1,43 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_BEGIN_IMPL_07202005_0849) +#define FUSION_BEGIN_IMPL_07202005_0849 + +namespace boost { namespace fusion +{ + struct reverse_view_tag; + + template + struct reverse_view_iterator; + + namespace extension + { + template + struct begin_impl; + + template <> + struct begin_impl + { + template + struct apply + { + typedef reverse_view_iterator type; + + static type + call(Sequence const& s) + { + return type(s.last()); + } + }; + }; + } +}} + +#endif + + diff --git a/include/boost/fusion/sequence/view/reverse_view/detail/deref_impl.hpp b/include/boost/fusion/sequence/view/reverse_view/detail/deref_impl.hpp new file mode 100644 index 00000000..f6dc07c4 --- /dev/null +++ b/include/boost/fusion/sequence/view/reverse_view/detail/deref_impl.hpp @@ -0,0 +1,49 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_DEREF_IMPL_07202005_0851) +#define FUSION_DEREF_IMPL_07202005_0851 + +#include +#include + +namespace boost { namespace fusion +{ + struct reverse_view_iterator_tag; + + namespace extension + { + template + struct deref_impl; + + template <> + struct deref_impl + { + template + struct apply + { + typedef typename + result_of::deref< + typename result_of::prior< + typename Iterator::first_type + >::type + >::type + type; + + static type + call(Iterator const& i) + { + return *fusion::prior(i.first); + } + }; + }; + } +}} + +#endif + + diff --git a/include/boost/fusion/sequence/view/reverse_view/detail/distance_impl.hpp b/include/boost/fusion/sequence/view/reverse_view/detail/distance_impl.hpp new file mode 100644 index 00000000..b6db99cd --- /dev/null +++ b/include/boost/fusion/sequence/view/reverse_view/detail/distance_impl.hpp @@ -0,0 +1,46 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_DISTANCE_IMPL_14122005_2104) +#define FUSION_DISTANCE_IMPL_14122005_2104 + +#include + +namespace boost { namespace fusion { + + struct reverse_view_iterator_tag; + + template + struct reverse_view_iterator; + + namespace extension + { + template + struct distance_impl; + + template<> + struct distance_impl + { + template + struct apply + { + typedef typename First::first_type first_type; + typedef typename Last::first_type last_type; + typedef typename result_of::distance::type type; + + static type + call(First const& first, Last const& last) + { + return boost::fusion::distance(last.first, first.first); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/view/reverse_view/detail/end_impl.hpp b/include/boost/fusion/sequence/view/reverse_view/detail/end_impl.hpp new file mode 100644 index 00000000..39e28dd0 --- /dev/null +++ b/include/boost/fusion/sequence/view/reverse_view/detail/end_impl.hpp @@ -0,0 +1,43 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_END_IMPL_07202005_0851) +#define FUSION_END_IMPL_07202005_0851 + +namespace boost { namespace fusion +{ + struct reverse_view_tag; + + template + struct reverse_view_iterator; + + namespace extension + { + template + struct end_impl; + + template <> + struct end_impl + { + template + struct apply + { + typedef reverse_view_iterator type; + + static type + call(Sequence const& s) + { + return type(s.first()); + } + }; + }; + } +}} + +#endif + + diff --git a/include/boost/fusion/sequence/view/reverse_view/detail/next_impl.hpp b/include/boost/fusion/sequence/view/reverse_view/detail/next_impl.hpp new file mode 100644 index 00000000..3d3c6a30 --- /dev/null +++ b/include/boost/fusion/sequence/view/reverse_view/detail/next_impl.hpp @@ -0,0 +1,48 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_NEXT_IMPL_07202005_0856) +#define FUSION_NEXT_IMPL_07202005_0856 + +#include +#include + +namespace boost { namespace fusion +{ + struct reverse_view_iterator_tag; + + template + struct reverse_view_iterator; + + namespace extension + { + template <> + struct next_impl + { + template + struct apply + { + typedef typename Iterator::first_type first_type; + typedef typename prior_impl:: + template apply + wrapped; + + typedef reverse_view_iterator type; + + static type + call(Iterator const& i) + { + return type(wrapped::call(i.first)); + } + }; + }; + } +}} + +#endif + + diff --git a/include/boost/fusion/sequence/view/reverse_view/detail/prior_impl.hpp b/include/boost/fusion/sequence/view/reverse_view/detail/prior_impl.hpp new file mode 100644 index 00000000..bf5dc00e --- /dev/null +++ b/include/boost/fusion/sequence/view/reverse_view/detail/prior_impl.hpp @@ -0,0 +1,48 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_PRIOR_IMPL_07202005_0857) +#define FUSION_PRIOR_IMPL_07202005_0857 + +#include +#include + +namespace boost { namespace fusion +{ + struct reverse_view_iterator_tag; + + template + struct reverse_view_iterator; + + namespace extension + { + template <> + struct prior_impl + { + template + struct apply + { + typedef typename Iterator::first_type first_type; + typedef typename next_impl:: + template apply + wrapped; + + typedef reverse_view_iterator type; + + static type + call(Iterator const& i) + { + return type(wrapped::call(i.first)); + } + }; + }; + } +}} + +#endif + + diff --git a/include/boost/fusion/sequence/view/reverse_view/detail/value_of_impl.hpp b/include/boost/fusion/sequence/view/reverse_view/detail/value_of_impl.hpp new file mode 100644 index 00000000..1d8f93a0 --- /dev/null +++ b/include/boost/fusion/sequence/view/reverse_view/detail/value_of_impl.hpp @@ -0,0 +1,43 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_VALUE_OF_IMPL_07202005_0900) +#define FUSION_VALUE_OF_IMPL_07202005_0900 + +#include +#include + +namespace boost { namespace fusion +{ + struct reverse_view_iterator_tag; + + namespace extension + { + template + struct value_of_impl; + + template <> + struct value_of_impl + { + template + struct apply + { + typedef typename + result_of::value_of< + typename result_of::prior< + typename Iterator::first_type + >::type + >::type + type; + }; + }; + } +}} + +#endif + + diff --git a/include/boost/fusion/sequence/view/reverse_view/reverse_view.hpp b/include/boost/fusion/sequence/view/reverse_view/reverse_view.hpp new file mode 100644 index 00000000..fe10ea6a --- /dev/null +++ b/include/boost/fusion/sequence/view/reverse_view/reverse_view.hpp @@ -0,0 +1,59 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_REVERSE_VIEW_07202005_0836) +#define FUSION_REVERSE_VIEW_07202005_0836 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct reverse_view_tag; + struct fusion_sequence_tag; + + template + struct reverse_view : sequence_base > + { + typedef reverse_view_tag ftag; + typedef fusion_sequence_tag tag; // this gets picked up by MPL + typedef mpl::true_ is_view; + + typedef typename traits::category_of::type category; + typedef typename result_of::begin::type first_type; + typedef typename result_of::end::type last_type; + typedef typename result_of::size::type size; + + BOOST_STATIC_ASSERT(( + is_base_and_derived< + bidirectional_traversal_tag + , typename traits::category_of::type>::value)); + + reverse_view(Sequence& seq) + : seq(seq) + {} + + first_type first() const { return fusion::begin(seq); } + last_type last() const { return fusion::end(seq); } + typename mpl::if_, Sequence, Sequence&>::type seq; + }; +}} + +#endif + + diff --git a/include/boost/fusion/sequence/view/reverse_view/reverse_view_iterator.hpp b/include/boost/fusion/sequence/view/reverse_view/reverse_view_iterator.hpp new file mode 100644 index 00000000..54c61e7d --- /dev/null +++ b/include/boost/fusion/sequence/view/reverse_view/reverse_view_iterator.hpp @@ -0,0 +1,49 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_REVERSE_VIEW_ITERATOR_07202005_0835) +#define FUSION_REVERSE_VIEW_ITERATOR_07202005_0835 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct reverse_view_iterator_tag; + + template + struct reverse_view_iterator + : iterator_base > + { + typedef convert_iterator converter; + typedef typename converter::type first_type; + typedef reverse_view_iterator_tag ftag; + typedef typename traits::category_of::type category; + + BOOST_STATIC_ASSERT(( + is_base_and_derived< + bidirectional_traversal_tag + , category>::value)); + + reverse_view_iterator(First const& first) + : first(converter::call(first)) {} + + first_type first; + }; +}} + +#endif + diff --git a/include/boost/fusion/sequence/view/single_view.hpp b/include/boost/fusion/sequence/view/single_view.hpp new file mode 100644 index 00000000..65410a36 --- /dev/null +++ b/include/boost/fusion/sequence/view/single_view.hpp @@ -0,0 +1,14 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_SINGLE_VIEW_03192006_2216) +#define FUSION_SINGLE_VIEW_03192006_2216 + +#include +#include + +#endif diff --git a/include/boost/fusion/sequence/view/single_view/detail/begin_impl.hpp b/include/boost/fusion/sequence/view/single_view/detail/begin_impl.hpp new file mode 100644 index 00000000..18ca8104 --- /dev/null +++ b/include/boost/fusion/sequence/view/single_view/detail/begin_impl.hpp @@ -0,0 +1,43 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_BEGIN_IMPL_05052005_0305) +#define FUSION_BEGIN_IMPL_05052005_0305 + +namespace boost { namespace fusion +{ + struct single_view_tag; + + template + struct single_view_iterator; + + namespace extension + { + template + struct begin_impl; + + template <> + struct begin_impl + { + template + struct apply + { + typedef single_view_iterator type; + + static type + call(Sequence& s) + { + return type(s); + } + }; + }; + } +}} + +#endif + + diff --git a/include/boost/fusion/sequence/view/single_view/detail/deref_impl.hpp b/include/boost/fusion/sequence/view/single_view/detail/deref_impl.hpp new file mode 100644 index 00000000..d46bccef --- /dev/null +++ b/include/boost/fusion/sequence/view/single_view/detail/deref_impl.hpp @@ -0,0 +1,44 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_DEREF_IMPL_05052005_0258) +#define FUSION_DEREF_IMPL_05052005_0258 + +#include +#include +#include + +namespace boost { namespace fusion +{ + struct single_view_iterator_tag; + + namespace extension + { + template + struct deref_impl; + + template <> + struct deref_impl + { + template + struct apply + { + typedef typename Iterator::value_type type; + + static type + call(Iterator const& i) + { + return i.val; + } + }; + }; + } +}} + +#endif + + diff --git a/include/boost/fusion/sequence/view/single_view/detail/end_impl.hpp b/include/boost/fusion/sequence/view/single_view/detail/end_impl.hpp new file mode 100644 index 00000000..576985c5 --- /dev/null +++ b/include/boost/fusion/sequence/view/single_view/detail/end_impl.hpp @@ -0,0 +1,43 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_END_IMPL_05052005_0332) +#define FUSION_END_IMPL_05052005_0332 + +namespace boost { namespace fusion +{ + struct single_view_tag; + + template + struct single_view_iterator_end; + + namespace extension + { + template + struct end_impl; + + template <> + struct end_impl + { + template + struct apply + { + typedef single_view_iterator_end type; + + static type + call(Sequence&) + { + return type(); + } + }; + }; + } +}} + +#endif + + diff --git a/include/boost/fusion/sequence/view/single_view/detail/next_impl.hpp b/include/boost/fusion/sequence/view/single_view/detail/next_impl.hpp new file mode 100644 index 00000000..02b823e5 --- /dev/null +++ b/include/boost/fusion/sequence/view/single_view/detail/next_impl.hpp @@ -0,0 +1,48 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_NEXT_IMPL_05052005_0331) +#define FUSION_NEXT_IMPL_05052005_0331 + +namespace boost { namespace fusion +{ + struct single_view_iterator_tag; + + template + struct single_view_iterator_end; + + template + struct single_view_iterator; + + namespace extension + { + template + struct next_impl; + + template <> + struct next_impl + { + template + struct apply + { + typedef single_view_iterator_end< + typename Iterator::single_view_type> + type; + + static type + call(Iterator) + { + return type(); + } + }; + }; + } +}} + +#endif + + diff --git a/include/boost/fusion/sequence/view/single_view/detail/value_of_impl.hpp b/include/boost/fusion/sequence/view/single_view/detail/value_of_impl.hpp new file mode 100644 index 00000000..05c97afc --- /dev/null +++ b/include/boost/fusion/sequence/view/single_view/detail/value_of_impl.hpp @@ -0,0 +1,35 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_VALUE_IMPL_05052005_0324) +#define FUSION_VALUE_IMPL_05052005_0324 + +namespace boost { namespace fusion +{ + struct single_view_iterator_tag; + + namespace extension + { + template + struct value_of_impl; + + template <> + struct value_of_impl + { + template + struct apply + { + typedef typename Iterator::single_view_type single_view_type; + typedef typename single_view_type::value_type type; + }; + }; + } +}} + +#endif + + diff --git a/include/boost/fusion/sequence/view/single_view/single_view.hpp b/include/boost/fusion/sequence/view/single_view/single_view.hpp new file mode 100644 index 00000000..5fc81edc --- /dev/null +++ b/include/boost/fusion/sequence/view/single_view/single_view.hpp @@ -0,0 +1,55 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_SINGLE_VIEW_05052005_0335) +#define FUSION_SINGLE_VIEW_05052005_0335 + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct single_view_tag; + struct forward_sequence_tag; + struct fusion_sequence_tag; + + template + struct single_view : sequence_base > + { + typedef single_view_tag ftag; + typedef fusion_sequence_tag tag; // this gets picked up by MPL + typedef forward_sequence_tag category; + typedef mpl::true_ is_view; + typedef mpl::int_<1> size; + typedef T value_type; + + single_view() + : val() {} + + explicit single_view(typename detail::call_param::type val) + : val(val) {} + + value_type val; + }; + + template + inline single_view::type> + make_single_view(T const& v) + { + return single_view::type>(v); + } +}} + +#endif + + diff --git a/include/boost/fusion/sequence/view/single_view/single_view_iterator.hpp b/include/boost/fusion/sequence/view/single_view/single_view_iterator.hpp new file mode 100644 index 00000000..e2a9bead --- /dev/null +++ b/include/boost/fusion/sequence/view/single_view/single_view_iterator.hpp @@ -0,0 +1,48 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_SINGLE_VIEW_ITERATOR_05052005_0340) +#define FUSION_SINGLE_VIEW_ITERATOR_05052005_0340 + +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct single_view_iterator_tag; + struct forward_traversal_tag; + + template + struct single_view_iterator_end + : iterator_base > + { + typedef single_view_iterator_tag ftag; + typedef forward_traversal_tag category; + }; + + template + struct single_view_iterator + : iterator_base > + { + typedef single_view_iterator_tag ftag; + typedef forward_traversal_tag category; + typedef typename SingleView::value_type value_type; + typedef SingleView single_view_type; + + explicit single_view_iterator(single_view_type const& view) + : val(view.val) {} + + value_type val; + }; +}} + +#endif + + diff --git a/include/boost/fusion/sequence/view/transform_view.hpp b/include/boost/fusion/sequence/view/transform_view.hpp new file mode 100644 index 00000000..62ef8a10 --- /dev/null +++ b/include/boost/fusion/sequence/view/transform_view.hpp @@ -0,0 +1,14 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_SEQUENCE_VIEW_TRANSFORM_VIEW_10022005_0612) +#define FUSION_SEQUENCE_VIEW_TRANSFORM_VIEW_10022005_0612 + +#include +#include + +#endif diff --git a/include/boost/fusion/sequence/view/transform_view/detail/advance_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/advance_impl.hpp new file mode 100644 index 00000000..9a1cf14d --- /dev/null +++ b/include/boost/fusion/sequence/view/transform_view/detail/advance_impl.hpp @@ -0,0 +1,76 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_ADVANCE_IMPL_13122005_1906) +#define FUSION_ADVANCE_IMPL_13122005_1906 + +#include + +namespace boost { namespace fusion +{ + struct transform_view_iterator_tag; + struct transform_view_iterator2_tag; + + template + struct transform_view_iterator; + + template + struct transform_view_iterator2; + + namespace extension + { + template + struct advance_impl; + + // Unary Version + template<> + struct advance_impl + { + template + struct apply + { + typedef typename Iterator::first_type first_type; + typedef typename result_of::advance::type advanced_type; + typedef typename Iterator::transform_type transform_type; + typedef transform_view_iterator type; + + static type + call(Iterator const& i) + { + return type(boost::fusion::advance(i.first), i.f); + } + }; + }; + + // Binary Version + template<> + struct advance_impl + { + template + struct apply + { + typedef typename Iterator::first1_type first1_type; + typedef typename Iterator::first2_type first2_type; + typedef typename result_of::advance::type advanced1_type; + typedef typename result_of::advance::type advanced2_type; + typedef typename Iterator::transform_type transform_type; + typedef transform_view_iterator2 type; + + static type + call(Iterator const& i) + { + return type( + boost::fusion::advance(i.first1) + , boost::fusion::advance(i.first2), i.f); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/view/transform_view/detail/apply_transform_result.hpp b/include/boost/fusion/sequence/view/transform_view/detail/apply_transform_result.hpp new file mode 100644 index 00000000..3ff0b8ad --- /dev/null +++ b/include/boost/fusion/sequence/view/transform_view/detail/apply_transform_result.hpp @@ -0,0 +1,37 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_APPLY_TRANSFORM_RESULT_02092006_1936) +#define FUSION_APPLY_TRANSFORM_RESULT_02092006_1936 + +namespace boost { namespace fusion +{ + struct void_; + + namespace detail + { + template + struct apply_transform_result + { + template + struct apply + { + typedef typename F::template result::type type; + }; + + template + struct apply + { + typedef typename F::template result::type type; + }; + }; + } +}} + +#endif + + diff --git a/include/boost/fusion/sequence/view/transform_view/detail/begin_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/begin_impl.hpp new file mode 100644 index 00000000..94f7b5f6 --- /dev/null +++ b/include/boost/fusion/sequence/view/transform_view/detail/begin_impl.hpp @@ -0,0 +1,69 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_BEGIN_IMPL_07162005_1031) +#define FUSION_BEGIN_IMPL_07162005_1031 + +#include + +namespace boost { namespace fusion +{ + template + struct transform_view_iterator; + + template + struct transform_view_iterator2; + + namespace extension + { + template + struct begin_impl; + + // Unary Version + template <> + struct begin_impl + { + template + struct apply + { + typedef typename Sequence::first_type first_type; + typedef typename Sequence::transform_type transform_type; + typedef transform_view_iterator type; + + static type + call(Sequence& s) + { + return type(s.first(), s.f); + } + }; + }; + + // Binary Version + template <> + struct begin_impl + { + template + struct apply + { + typedef typename Sequence::first1_type first1_type; + typedef typename Sequence::first2_type first2_type; + typedef typename Sequence::transform_type transform_type; + typedef transform_view_iterator2 type; + + static type + call(Sequence& s) + { + return type(s.first1(), s.first2(), s.f); + } + }; + }; + } +}} + +#endif + + diff --git a/include/boost/fusion/sequence/view/transform_view/detail/deref_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/deref_impl.hpp new file mode 100644 index 00000000..3da4e396 --- /dev/null +++ b/include/boost/fusion/sequence/view/transform_view/detail/deref_impl.hpp @@ -0,0 +1,76 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_DEREF_IMPL_07162005_1026) +#define FUSION_DEREF_IMPL_07162005_1026 + +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct transform_view_iterator_tag; + struct transform_view_iterator2_tag; + + namespace extension + { + template + struct deref_impl; + + // Unary Version + template <> + struct deref_impl + { + template + struct apply + { + typedef typename + result_of::value_of::type + value_type; + + typedef detail::apply_transform_result transform_type; + typedef typename mpl::apply::type type; + + static type + call(Iterator const& i) + { + return i.f(*i.first); + } + }; + }; + + // Binary Version + template <> + struct deref_impl + { + template + struct apply + { + typedef typename + result_of::value_of::type + value1_type; + typedef typename + result_of::value_of::type + value2_type; + + typedef detail::apply_transform_result transform_type; + typedef typename mpl::apply::type type; + + static type + call(Iterator const& i) + { + return i.f(*i.first1, *i.first2); + } + }; + }; } +}} + +#endif + + diff --git a/include/boost/fusion/sequence/view/transform_view/detail/distance_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/distance_impl.hpp new file mode 100644 index 00000000..cf20b593 --- /dev/null +++ b/include/boost/fusion/sequence/view/transform_view/detail/distance_impl.hpp @@ -0,0 +1,64 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_DISTANCE_IMPL_13122005_2139) +#define FUSION_DISTANCE_IMPL_13122005_2139 + +#include + +namespace boost { namespace fusion { + + struct transform_view_iterator_tag; + struct transform_view_iterator2_tag; + + namespace extension + { + template + struct distance_impl; + + // Unary Version + template<> + struct distance_impl + { + template + struct apply + { + typedef typename First::first_type first_type; + typedef typename Last::first_type last_type; + typedef typename result_of::distance::type type; + + static type + call(First const& first, Last const& last) + { + return boost::fusion::distance(first.first, last.first); + } + }; + }; + + // Binary Version + template<> + struct distance_impl + { + template + struct apply + { + typedef typename First::first1_type first1_type; + typedef typename Last::first1_type last1_type; + typedef typename result_of::distance::type type; + + static type + call(First const& first, Last const& last) + { + return boost::fusion::distance(first.first1, last.first1); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/view/transform_view/detail/end_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/end_impl.hpp new file mode 100644 index 00000000..3b2d4af0 --- /dev/null +++ b/include/boost/fusion/sequence/view/transform_view/detail/end_impl.hpp @@ -0,0 +1,69 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_END_IMPL_07162005_1028) +#define FUSION_END_IMPL_07162005_1028 + +#include + +namespace boost { namespace fusion +{ + template + struct transform_view_iterator; + + template + struct transform_view_iterator2; + + namespace extension + { + template + struct end_impl; + + // Unary Version + template <> + struct end_impl + { + template + struct apply + { + typedef typename Sequence::last_type last_type; + typedef typename Sequence::transform_type transform_type; + typedef transform_view_iterator type; + + static type + call(Sequence& s) + { + return type(s.last(), s.f); + } + }; + }; + + // Binary Version + template <> + struct end_impl + { + template + struct apply + { + typedef typename Sequence::last1_type last1_type; + typedef typename Sequence::last2_type last2_type; + typedef typename Sequence::transform_type transform_type; + typedef transform_view_iterator2 type; + + static type + call(Sequence& s) + { + return type(s.last1(), s.last2(), s.f); + } + }; + }; + } +}} + +#endif + + diff --git a/include/boost/fusion/sequence/view/transform_view/detail/next_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/next_impl.hpp new file mode 100644 index 00000000..9823569b --- /dev/null +++ b/include/boost/fusion/sequence/view/transform_view/detail/next_impl.hpp @@ -0,0 +1,75 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_NEXT_IMPL_07162005_1029) +#define FUSION_NEXT_IMPL_07162005_1029 + +#include + +namespace boost { namespace fusion +{ + struct transform_view_iterator_tag; + struct transform_view_iterator2_tag; + + template + struct transform_view_iterator; + + template + struct transform_view_iterator2; + + namespace extension + { + template + struct next_impl; + + // Unary Version + template <> + struct next_impl + { + template + struct apply + { + typedef typename Iterator::first_type first_type; + typedef typename result_of::next::type next_type; + typedef typename Iterator::transform_type transform_type; + typedef transform_view_iterator type; + + static type + call(Iterator const& i) + { + return type(fusion::next(i.first), i.f); + } + }; + }; + + // Binary Version + template <> + struct next_impl + { + template + struct apply + { + typedef typename Iterator::first1_type first1_type; + typedef typename Iterator::first2_type first2_type; + typedef typename result_of::next::type next1_type; + typedef typename result_of::next::type next2_type; + typedef typename Iterator::transform_type transform_type; + typedef transform_view_iterator2 type; + + static type + call(Iterator const& i) + { + return type(fusion::next(i.first1), fusion::next(i.first2), i.f); + } + }; + }; + } +}} + +#endif + + diff --git a/include/boost/fusion/sequence/view/transform_view/detail/prior_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/prior_impl.hpp new file mode 100644 index 00000000..d53a28e0 --- /dev/null +++ b/include/boost/fusion/sequence/view/transform_view/detail/prior_impl.hpp @@ -0,0 +1,74 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_PREV_IMPL_13122005_2110) +#define FUSION_PREV_IMPL_13122005_2110 + +#include + +namespace boost { namespace fusion +{ + struct transform_view_iterator_tag; + struct transform_view_iterator2_tag; + + template + struct transform_view_iterator; + + template + struct transform_view_iterator2; + + namespace extension + { + template + struct prior_impl; + + // Unary Version + template<> + struct prior_impl + { + template + struct apply + { + typedef typename Iterator::first_type first_type; + typedef typename result_of::prior::type prior_type; + typedef typename Iterator::transform_type transform_type; + typedef transform_view_iterator type; + + static type + call(Iterator const& i) + { + return type(fusion::prior(i.first), i.f); + } + }; + }; + + // Binary Version + template<> + struct prior_impl + { + template + struct apply + { + typedef typename Iterator::first1_type first1_type; + typedef typename Iterator::first2_type first2_type; + typedef typename result_of::prior::type prior1_type; + typedef typename result_of::prior::type prior2_type; + typedef typename Iterator::transform_type transform_type; + typedef transform_view_iterator2 type; + + static type + call(Iterator const& i) + { + return type(fusion::prior(i.first1), fusion::prior(i.first2), i.f); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/view/transform_view/detail/value_of_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/value_of_impl.hpp new file mode 100644 index 00000000..e95aa105 --- /dev/null +++ b/include/boost/fusion/sequence/view/transform_view/detail/value_of_impl.hpp @@ -0,0 +1,64 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_VALUE_OF_IMPL_07162005_1030) +#define FUSION_VALUE_OF_IMPL_07162005_1030 + +#include +#include +#include + +namespace boost { namespace fusion +{ + struct transform_view_iterator_tag; + struct transform_view_iterator2_tag; + + namespace extension + { + template + struct value_of_impl; + + // Unary Version + template <> + struct value_of_impl + { + template + struct apply + { + typedef typename + result_of::value_of::type + value_type; + + typedef detail::apply_transform_result transform_type; + typedef typename mpl::apply::type type; + }; + }; + + // Binary Version + template <> + struct value_of_impl + { + template + struct apply + { + typedef typename + result_of::value_of::type + value1_type; + typedef typename + result_of::value_of::type + value2_type; + + typedef detail::apply_transform_result transform_type; + typedef typename mpl::apply::type type; + }; + }; + } +}} + +#endif + + diff --git a/include/boost/fusion/sequence/view/transform_view/transform_view.hpp b/include/boost/fusion/sequence/view/transform_view/transform_view.hpp new file mode 100644 index 00000000..b5158029 --- /dev/null +++ b/include/boost/fusion/sequence/view/transform_view/transform_view.hpp @@ -0,0 +1,95 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_TRANSFORM_VIEW_07162005_1037) +#define FUSION_TRANSFORM_VIEW_07162005_1037 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct void_; + struct transform_view_tag; + struct transform_view2_tag; + struct fusion_sequence_tag; + + // Binary Version + template + struct transform_view : sequence_base > + { + BOOST_STATIC_ASSERT(result_of::size::value == result_of::size::value); + typedef transform_view2_tag ftag; + typedef fusion_sequence_tag tag; // this gets picked up by MPL + typedef mpl::true_ is_view; + + typedef typename traits::category_of::type category1; + typedef typename traits::category_of::type category2; + typedef typename result_of::begin::type first1_type; + typedef typename result_of::begin::type first2_type; + typedef typename result_of::end::type last1_type; + typedef typename result_of::end::type last2_type; + typedef typename result_of::size::type size; + typedef F transform_type; + + transform_view(Sequence1& seq1, Sequence2& seq2, F const& binop) + : f(binop) + , seq1(seq1) + , seq2(seq2) + {} + + first1_type first1() const { return fusion::begin(seq1); } + first2_type first2() const { return fusion::begin(seq2); } + last1_type last1() const { return fusion::end(seq1); } + last2_type last2() const { return fusion::end(seq2); } + + transform_type f; + typename mpl::if_, Sequence1, Sequence1&>::type seq1; + typename mpl::if_, Sequence2, Sequence2&>::type seq2; + }; + + // Unary Version + template + struct transform_view : sequence_base > + { + typedef transform_view_tag ftag; + typedef fusion_sequence_tag tag; // this gets picked up by MPL + typedef mpl::true_ is_view; + + typedef typename traits::category_of::type category; + typedef typename result_of::begin::type first_type; + typedef typename result_of::end::type last_type; + typedef typename result_of::size::type size; + typedef F transform_type; + + transform_view(Sequence& seq, F const& f) + : seq(seq) + , f(f) + {} + + first_type first() const { return fusion::begin(seq); } + last_type last() const { return fusion::end(seq); } + typename mpl::if_, Sequence, Sequence&>::type seq; + transform_type f; + }; +}} + +#endif + + diff --git a/include/boost/fusion/sequence/view/transform_view/transform_view_fwd.hpp b/include/boost/fusion/sequence/view/transform_view/transform_view_fwd.hpp new file mode 100644 index 00000000..324d2dd9 --- /dev/null +++ b/include/boost/fusion/sequence/view/transform_view/transform_view_fwd.hpp @@ -0,0 +1,23 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_TRANSFORM_VIEW_FORWARD_01052006_1839) +#define FUSION_TRANSFORM_VIEW_FORWARD_01052006_1839 + +namespace boost { namespace fusion +{ + struct void_; + struct transform_view_tag; + struct transform_view2_tag; + + template + struct transform_view; +}} + +#endif + + diff --git a/include/boost/fusion/sequence/view/transform_view/transform_view_iterator.hpp b/include/boost/fusion/sequence/view/transform_view/transform_view_iterator.hpp new file mode 100644 index 00000000..2571f5d8 --- /dev/null +++ b/include/boost/fusion/sequence/view/transform_view/transform_view_iterator.hpp @@ -0,0 +1,68 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_TRANSFORM_VIEW_ITERATOR_07162005_1033) +#define FUSION_TRANSFORM_VIEW_ITERATOR_07162005_1033 + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + // Unary Version + struct transform_view_iterator_tag; + + template + struct transform_view_iterator + : iterator_base > + { + typedef transform_view_iterator_tag ftag; + typedef convert_iterator converter; + typedef typename converter::type first_type; + 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) {} + + first_type first; + transform_type f; + }; + + // Binary Version + struct transform_view_iterator2_tag; + + template + struct transform_view_iterator2 + : iterator_base > + { + typedef transform_view_iterator2_tag ftag; + typedef convert_iterator converter1; + typedef convert_iterator converter2; + typedef typename converter1::type first1_type; + typedef typename converter2::type first2_type; + 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) {} + + first1_type first1; + first2_type first2; + transform_type f; + }; +}} + +#endif + diff --git a/include/boost/fusion/sequence/view/zip_view.hpp b/include/boost/fusion/sequence/view/zip_view.hpp new file mode 100644 index 00000000..c2acf665 --- /dev/null +++ b/include/boost/fusion/sequence/view/zip_view.hpp @@ -0,0 +1,15 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_ZIP_VIEW_23012006_0811) +#define FUSION_ZIP_VIEW_23012006_0811 + +#include +#include + +#endif diff --git a/include/boost/fusion/sequence/view/zip_view/detail/advance_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/advance_impl.hpp new file mode 100644 index 00000000..4a423604 --- /dev/null +++ b/include/boost/fusion/sequence/view/zip_view/detail/advance_impl.hpp @@ -0,0 +1,64 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_ADVANCE_IMPL_20061024_2021) +#define FUSION_ADVANCE_IMPL_20061024_2021 + +#include +#include +#include + +namespace boost { namespace fusion { + + struct zip_view_iterator_tag; + + namespace detail + { + template + struct poly_advance + { + template + struct result + : result_of::advance + {}; + + template + typename result::type + operator()(const It& it) const + { + return fusion::advance(it); + } + }; + } + + namespace extension + { + template + struct advance_impl; + + template<> + struct advance_impl + { + template + struct apply + { + typedef zip_view_iterator< + typename result_of::transform >::type> type; + + static type + call(It const& it) + { + return type( + fusion::transform(it.iterators_, detail::poly_advance())); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/view/zip_view/detail/at_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/at_impl.hpp new file mode 100644 index 00000000..cdcc22a6 --- /dev/null +++ b/include/boost/fusion/sequence/view/zip_view/detail/at_impl.hpp @@ -0,0 +1,78 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_AT_IMPL_20060124_1933) +#define FUSION_AT_IMPL_20060124_1933 + +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct zip_view_tag; + + namespace detail + { + template + struct poly_at + { + template + struct result + : result_of::at::type, N> + { + BOOST_MPL_ASSERT((is_reference)); + }; + + template + typename result::type + operator()(Seq& seq) const + { + return fusion::at(seq); + } + + template + typename result::type + operator()(Seq const& seq) const + { + return fusion::at(seq); + } + }; + } + + namespace extension + { + template + struct at_impl; + + template<> + struct at_impl + { + template + struct apply + { + typedef typename result_of::as_vector< + typename result_of::transform< + typename Seq::sequences, detail::poly_at >::type>::type type; + + static type + call(Seq& seq) + { + return type( + fusion::transform(seq.sequences_, detail::poly_at())); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/view/zip_view/detail/begin_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/begin_impl.hpp new file mode 100644 index 00000000..9ba435b7 --- /dev/null +++ b/include/boost/fusion/sequence/view/zip_view/detail/begin_impl.hpp @@ -0,0 +1,80 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_BEGIN_IMPL_20060123_2147) +#define FUSION_BEGIN_IMPL_20060123_2147 + +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion { + + struct zip_view_tag; + + namespace detail + { + struct poly_begin + { + template + struct result + : result_of::begin::type> + { + BOOST_MPL_ASSERT((is_reference)); + }; + + template + typename result::type + operator()(Seq& seq) const + { + return fusion::begin(seq); + } + + template + typename result::type + operator()(Seq const& seq) const + { + return fusion::begin(seq); + } + + }; + } + + namespace extension + { + template + struct begin_impl; + + template<> + struct begin_impl + { + template + struct apply + { + typedef zip_view_iterator< + typename result_of::transform::type, + typename Sequence::category> type; + + static type + call(Sequence& sequence) + { + return type( + fusion::transform(sequence.sequences_, detail::poly_begin())); + } + }; + + + + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/view/zip_view/detail/deref_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/deref_impl.hpp new file mode 100644 index 00000000..fcab17c4 --- /dev/null +++ b/include/boost/fusion/sequence/view/zip_view/detail/deref_impl.hpp @@ -0,0 +1,64 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_DEREF_IMPL_20061024_1959) +#define FUSION_DEREF_IMPL_20061024_1959 + +#include +#include +#include +#include + +namespace boost { namespace fusion { + + struct zip_view_iterator_tag; + + namespace detail + { + struct poly_deref + { + template + struct result + : result_of::deref + {}; + + template + typename result::type + operator()(const It& it) const + { + return fusion::deref(it); + } + }; + } + + namespace extension + { + template + struct deref_impl; + + template<> + struct deref_impl + { + template + struct apply + { + typedef typename result_of::as_vector< + typename result_of::transform::type>::type type; + + static type + call(It const& it) + { + return type( + fusion::transform(it.iterators_, detail::poly_deref())); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/view/zip_view/detail/distance_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/distance_impl.hpp new file mode 100644 index 00000000..e1505a9e --- /dev/null +++ b/include/boost/fusion/sequence/view/zip_view/detail/distance_impl.hpp @@ -0,0 +1,83 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_DISTANCE_IMPL_20060124_2033) +#define FUSION_DISTANCE_IMPL_20060124_2033 + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion { + + struct zip_view_iterator_tag; + + struct random_access_iterator_tag; + + namespace detail + { + template + struct best_distance + { + typedef typename result_of::find_if< + typename SearchIt::iterators, is_same, random_access_iterator_tag> > finder; + + BOOST_MPL_ASSERT_NOT((is_same >)); + + typedef typename result_of::distance::type type; + }; + + template + struct default_distance + : result_of::distance< + typename result_of::value_at_c::type, + typename result_of::value_at_c::type> + {}; + + template + struct zip_view_iterator_distance + { + typedef typename result_of::find_if< + typename It1::iterators, is_same, random_access_iterator_tag> > finder; + + typedef typename mpl::eval_if< + is_same::type>, + detail::default_distance , + detail::best_distance >::type type; + }; + } + + namespace extension + { + template + struct distance_impl; + + template<> + struct distance_impl + { + template + struct apply + : detail::zip_view_iterator_distance::type + { + static typename detail::zip_view_iterator_distance::type + call(It1 const& it1, It2 const& it2) + { + return typename detail::zip_view_iterator_distance::type(); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/view/zip_view/detail/end_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/end_impl.hpp new file mode 100644 index 00000000..c6a10e9e --- /dev/null +++ b/include/boost/fusion/sequence/view/zip_view/detail/end_impl.hpp @@ -0,0 +1,80 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_END_IMPL_20060123_2208) +#define FUSION_END_IMPL_20060123_2208 + +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion { + + struct zip_view_tag; + + namespace detail + { + struct poly_end + { + template + struct result + : result_of::end::type> + { + BOOST_MPL_ASSERT((is_reference)); + }; + + template + typename result::type + operator()(Seq& seq) const + { + return fusion::end(seq); + } + + template + typename result::type + operator()(Seq const& seq) const + { + return fusion::end(seq); + } + + }; + } + + namespace extension + { + template + struct end_impl; + + template<> + struct end_impl + { + template + struct apply + { + typedef zip_view_iterator< + typename result_of::transform::type, + typename Sequence::category> type; + + static type + call(Sequence& sequence) + { + return type( + fusion::transform(sequence.sequences_, detail::poly_end())); + } + }; + + + + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/view/zip_view/detail/equal_to_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/equal_to_impl.hpp new file mode 100644 index 00000000..10643609 --- /dev/null +++ b/include/boost/fusion/sequence/view/zip_view/detail/equal_to_impl.hpp @@ -0,0 +1,63 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_EQUAL_TO_IMPL_20060128_1423) +#define FUSION_EQUAL_TO_IMPL_20060128_1423 + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include + +namespace boost { namespace fusion { + + struct zip_view_iterator_tag; + + namespace detail + { + template + struct zip_iterators_equal + { + typedef mpl::zip_view > zipped; + typedef mpl::transform_view > > transformed; + + typedef typename mpl::find_if >::type found; + + typedef typename is_same::type, found>::type type; + }; + } + + namespace extension + { + template + struct equal_to_impl; + + template<> + struct equal_to_impl + { + template + struct apply + : detail::zip_iterators_equal::type + {}; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/view/zip_view/detail/next_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/next_impl.hpp new file mode 100644 index 00000000..45d618fb --- /dev/null +++ b/include/boost/fusion/sequence/view/zip_view/detail/next_impl.hpp @@ -0,0 +1,64 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_NEXT_IMPL_20060124_2006) +#define FUSION_NEXT_IMPL_20060124_2006 + +#include +#include +#include + +namespace boost { namespace fusion { + + struct zip_view_iterator_tag; + + namespace detail + { + struct poly_next + { + template + struct result + : result_of::next + {}; + + template + typename result::type + operator()(const It& it) const + { + return fusion::next(it); + } + }; + } + + namespace extension + { + template + struct next_impl; + + template<> + struct next_impl + { + template + struct apply + { + typedef fusion::zip_view_iterator< + typename result_of::transform::type, + typename Iterator::category> type; + + static type + call(Iterator const& it) + { + return type( + fusion::transform(it.iterators_, detail::poly_next())); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/view/zip_view/detail/prior_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/prior_impl.hpp new file mode 100644 index 00000000..35187f48 --- /dev/null +++ b/include/boost/fusion/sequence/view/zip_view/detail/prior_impl.hpp @@ -0,0 +1,65 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_PRIOR_IMPL_20060124_2006) +#define FUSION_PRIOR_IMPL_20060124_2006 + +#include +#include +#include + +namespace boost { namespace fusion { + + struct zip_view_iterator_tag; + + namespace detail + { + struct poly_prior + { + template + struct result + : result_of::prior + {}; + + template + typename result::type + operator()(const It& it) const + { + return fusion::prior(it); + } + }; + } + + namespace extension + { + template + struct prior_impl; + + template<> + struct prior_impl + { + template + struct apply + { + typedef zip_view_iterator< + typename result_of::transform::type, + typename Iterator::category> type; + + static type + call(Iterator const& it) + + { + return type( + fusion::transform(it.iterators_, detail::poly_prior())); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/view/zip_view/detail/size_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/size_impl.hpp new file mode 100644 index 00000000..692c9d3f --- /dev/null +++ b/include/boost/fusion/sequence/view/zip_view/detail/size_impl.hpp @@ -0,0 +1,64 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_SIZE_IMPL_20060124_0800) +#define FUSION_SIZE_IMPL_20060124_0800 + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion { + + struct zip_view_tag; + struct random_access_iterator_tag; + + namespace detail + { + template + struct zip_view_size + { + typedef result_of::find_if< + typename Sequence::sequences, + is_same >, random_access_iterator_tag> > finder; + + typedef typename remove_reference::type>, + result_of::value_at_c, + result_of::deref >::type>::type best_sequence; + + typedef typename fusion::result_of::size type; + }; + } + + namespace extension + { + template + struct size; + + template + struct size_impl; + + template<> + struct size_impl + { + template + struct apply + : detail::zip_view_size::type + {}; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/view/zip_view/detail/strictest_traversal.hpp b/include/boost/fusion/sequence/view/zip_view/detail/strictest_traversal.hpp new file mode 100644 index 00000000..594d3c3b --- /dev/null +++ b/include/boost/fusion/sequence/view/zip_view/detail/strictest_traversal.hpp @@ -0,0 +1,64 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_STRICTEST_TRAVERSAL_20060123_2101) +#define FUSION_STRICTEST_TRAVERSAL_20060123_2101 + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion { + + struct forward_traversal_tag; + struct bidirectional_traversal_tag; + struct random_access_traversal_tag; + + namespace detail + { + template + struct strictest_traversal_impl + { + typedef StrictestSoFar tag1; + typedef typename traits::category_of< + typename remove_reference::type>::type tag2; + + typedef typename mpl::or_< + is_same, + is_same >::type + has_forward_traversal; + + typedef typename mpl::or_< + is_same, + is_same >::type + has_bidirectional_traversal; + + typedef typename mpl::if_< + has_forward_traversal, + forward_traversal_tag, + typename mpl::if_< + has_bidirectional_traversal, + bidirectional_traversal_tag, + random_access_traversal_tag>::type>::type type; + }; + + template + struct strictest_traversal + : result_of::fold< + Sequence, fusion::random_access_traversal_tag, + strictest_traversal_impl > + {}; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/view/zip_view/detail/value_at_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/value_at_impl.hpp new file mode 100644 index 00000000..cf2bf5d9 --- /dev/null +++ b/include/boost/fusion/sequence/view/zip_view/detail/value_at_impl.hpp @@ -0,0 +1,53 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_VALUE_AT_IMPL_20060124_2129) +#define FUSION_VALUE_AT_IMPL_20060124_2129 + +#include +#include +#include +#include + +namespace boost { namespace fusion { + + struct zip_view_tag; + + namespace detail + { + template + struct poly_value_at + { + template + struct result + : result_of::value_at::type, N> + {}; + }; + } + + namespace extension + { + template + struct value_at_impl; + + template<> + struct value_at_impl + { + template + struct apply + { + typedef typename result_of::transform< + typename Sequence::sequences, + detail::poly_value_at >::type values; + typedef typename result_of::as_vector::type type; + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/view/zip_view/detail/value_of_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/value_of_impl.hpp new file mode 100644 index 00000000..46ed7330 --- /dev/null +++ b/include/boost/fusion/sequence/view/zip_view/detail/value_of_impl.hpp @@ -0,0 +1,53 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_VALUE_OF_IMPL_20060124_2147) +#define FUSION_VALUE_OF_IMPL_20060124_2147 + +#include +#include +#include +#include + +namespace boost { namespace fusion { + + struct zip_view_iterator_tag; + + namespace detail + { + struct poly_value_of + { + template + struct result + : result_of::value_of + {}; + }; + } + + namespace extension + { + template + struct value_of_impl; + + template<> + struct value_of_impl + { + template + struct apply + { + typedef typename result_of::transform< + typename Iterator::iterators, + detail::poly_value_of>::type values; + + typedef typename result_of::as_vector::type type; + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/view/zip_view/zip_view.hpp b/include/boost/fusion/sequence/view/zip_view/zip_view.hpp new file mode 100644 index 00000000..a8706801 --- /dev/null +++ b/include/boost/fusion/sequence/view/zip_view/zip_view.hpp @@ -0,0 +1,88 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_ZIP_VIEW_23012006_0813) +#define FUSION_ZIP_VIEW_23012006_0813 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +namespace boost { namespace fusion { + + namespace detail + { + template + struct all_references + : fusion::result_of::equal_to > >::type, typename fusion::result_of::end::type> + {}; + + template + struct all_same_size_impl + { + typedef mpl::transform_view > > sizes; + typedef typename mpl::at_c::type first_size; + typedef mpl::iterator_range< + typename mpl::next::type>::type, + typename mpl::end::type> remainder; + typedef typename mpl::find_if > >::type found_difference; + typedef typename is_same::type>::type type; + }; + + template + struct all_same_size + : all_same_size_impl::type + {}; + } + + struct zip_view_tag; + struct fusion_sequence_tag; + + template + struct zip_view : sequence_base< zip_view > + { + BOOST_MPL_ASSERT((detail::all_references)); + BOOST_MPL_ASSERT((detail::all_same_size)); + typedef typename detail::strictest_traversal::type category; + typedef zip_view_tag ftag; + typedef fusion_sequence_tag tag; // this gets picked up by MPL + typedef mpl::true_ is_view; + typedef typename fusion::result_of::as_vector::type sequences; + + zip_view( + const Sequences& seqs) + : sequences_(seqs) + {}; + + sequences sequences_; + }; +}} + +#endif diff --git a/include/boost/fusion/sequence/view/zip_view/zip_view_iterator.hpp b/include/boost/fusion/sequence/view/zip_view/zip_view_iterator.hpp new file mode 100644 index 00000000..b92e0305 --- /dev/null +++ b/include/boost/fusion/sequence/view/zip_view/zip_view_iterator.hpp @@ -0,0 +1,48 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_ZIP_VIEW_ITERATOR_23012006_0814) +#define FUSION_ZIP_VIEW_ITERATOR_23012006_0814 + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +namespace boost { namespace fusion { + + struct zip_view_iterator_tag; + + template< + typename IteratorSequence, + typename Traversal> + struct zip_view_iterator + : iterator_base > + { + typedef zip_view_iterator_tag ftag; + typedef Traversal category; + + template + zip_view_iterator( + const InitSeq& iterator_seq) + : iterators_(iterator_seq) + {} + + typedef typename result_of::as_vector::type iterators; + iterators iterators_; + }; +}} + +#endif diff --git a/include/boost/fusion/sequence/view/zip_view/zip_view_iterator_fwd.hpp b/include/boost/fusion/sequence/view/zip_view/zip_view_iterator_fwd.hpp new file mode 100644 index 00000000..974e931a --- /dev/null +++ b/include/boost/fusion/sequence/view/zip_view/zip_view_iterator_fwd.hpp @@ -0,0 +1,23 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_ZIP_VIEW_ITERATOR_FWD) +#define FUSION_ZIP_VIEW_ITERATOR_FWD + +#include + +namespace boost { namespace fusion { + + template< + typename IteratorSequence, + typename Traversal = typename detail::strictest_traversal::type> + struct zip_view_iterator; + +}} + +#endif diff --git a/include/boost/fusion/support.hpp b/include/boost/fusion/support.hpp new file mode 100644 index 00000000..adede25c --- /dev/null +++ b/include/boost/fusion/support.hpp @@ -0,0 +1,21 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_SUPPORT_10022005_0545) +#define FUSION_SUPPORT_10022005_0545 + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#endif diff --git a/include/boost/fusion/support/category_of.hpp b/include/boost/fusion/support/category_of.hpp new file mode 100644 index 00000000..9502b21e --- /dev/null +++ b/include/boost/fusion/support/category_of.hpp @@ -0,0 +1,38 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_CATEGORY_OF_07202005_0308) +#define FUSION_CATEGORY_OF_07202005_0308 + +#include +#include +#include + +namespace boost { namespace fusion +{ + namespace extension + { + template + struct category_of_impl + { + template + struct apply + : detail::fusion_category_of + {}; + }; + } + + namespace traits + { + template + struct category_of + : extension::category_of_impl::type>:: + template apply + {}; +}}} + +#endif diff --git a/include/boost/fusion/support/detail/access.hpp b/include/boost/fusion/support/detail/access.hpp new file mode 100644 index 00000000..e4449d3a --- /dev/null +++ b/include/boost/fusion/support/detail/access.hpp @@ -0,0 +1,56 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_ACCESS_04182005_0737) +#define FUSION_ACCESS_04182005_0737 + +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion { namespace detail +{ + template + struct ref_result + { + typedef typename add_reference::type type; + }; + + template + struct cref_result + { + typedef typename + add_reference< + typename add_const::type + >::type + type; + }; + + template + struct non_ref_parameter + { + typedef typename boost::remove_cv::type const& type; + }; + + template + struct call_param + { + typedef typename + mpl::eval_if< + is_reference + , mpl::identity + , non_ref_parameter + >::type + type; + }; +}}} + +#endif + diff --git a/include/boost/fusion/support/detail/as_fusion_element.hpp b/include/boost/fusion/support/detail/as_fusion_element.hpp new file mode 100644 index 00000000..74fa53f5 --- /dev/null +++ b/include/boost/fusion/support/detail/as_fusion_element.hpp @@ -0,0 +1,48 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_AS_FUSION_ELEMENT_05052005_0338) +#define FUSION_AS_FUSION_ELEMENT_05052005_0338 + +#include + +namespace boost { namespace fusion { namespace detail +{ + template + struct as_fusion_element + { + typedef T type; + }; + + template + struct as_fusion_element > + { + typedef T& type; + }; + + template + struct as_fusion_element + { + typedef const T(&type)[N]; + }; + + template + struct as_fusion_element + { + typedef const volatile T(&type)[N]; + }; + + template + struct as_fusion_element + { + typedef const volatile T(&type)[N]; + }; + +}}} + +#endif diff --git a/include/boost/fusion/support/detail/category_of.hpp b/include/boost/fusion/support/detail/category_of.hpp new file mode 100644 index 00000000..78f474f2 --- /dev/null +++ b/include/boost/fusion/support/detail/category_of.hpp @@ -0,0 +1,20 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_CATEGORY_OF_07212005_1025) +#define FUSION_CATEGORY_OF_07212005_1025 + +namespace boost { namespace fusion { namespace detail +{ + template + struct fusion_category_of + { + typedef typename T::category type; + }; +}}} + +#endif diff --git a/include/boost/fusion/support/detail/compiler_config.hpp b/include/boost/fusion/support/detail/compiler_config.hpp new file mode 100644 index 00000000..8d90f27a --- /dev/null +++ b/include/boost/fusion/support/detail/compiler_config.hpp @@ -0,0 +1,18 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_COMPILER_CONFIG_01052006_1200) +#define FUSION_COMPILER_CONFIG_01052006_1200 + +#include +#include + +#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1310)) +#pragma warning(disable : 4512 4244 4100 4305) +#endif + +#endif diff --git a/include/boost/fusion/support/detail/is_mpl_sequence.hpp b/include/boost/fusion/support/detail/is_mpl_sequence.hpp new file mode 100644 index 00000000..09a77a8b --- /dev/null +++ b/include/boost/fusion/support/detail/is_mpl_sequence.hpp @@ -0,0 +1,54 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_DETAIL_IS_MPL_SEQUENCE_15122005_2137) +#define FUSION_DETAIL_IS_MPL_SEQUENCE_15122005_2137 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion { namespace detail +{ + struct mpl_int_detect + { + template + mpl_int_detect(mpl::int_) {} + + template + mpl_int_detect(mpl::bool_) {} + + template + mpl_int_detect(mpl::integral_c) {} + + template + mpl_int_detect(mpl::long_) {} + + template + mpl_int_detect(mpl::size_t) {} + }; + + template + struct is_mpl_sequence + : mpl::and_< + mpl::not_ > + , mpl::not_ > + , mpl::is_sequence > + {}; +}}} + +#endif diff --git a/include/boost/fusion/support/detail/is_view.hpp b/include/boost/fusion/support/detail/is_view.hpp new file mode 100644 index 00000000..489c27f9 --- /dev/null +++ b/include/boost/fusion/support/detail/is_view.hpp @@ -0,0 +1,20 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_IS_VIEW_03202006_0018) +#define FUSION_IS_VIEW_03202006_0018 + +namespace boost { namespace fusion { namespace detail +{ + template + struct fusion_is_view + { + typedef typename T::is_view type; + }; +}}} + +#endif diff --git a/include/boost/fusion/support/detail/iterator_to_sequence_category.hpp b/include/boost/fusion/support/detail/iterator_to_sequence_category.hpp new file mode 100644 index 00000000..9ffbb5a5 --- /dev/null +++ b/include/boost/fusion/support/detail/iterator_to_sequence_category.hpp @@ -0,0 +1,62 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_ITERATOR_TO_SEQUENCE_CATEGORY_07212005_0726) +#define FUSION_ITERATOR_TO_SEQUENCE_CATEGORY_07212005_0726 + +namespace boost { namespace fusion +{ + struct incrementable_traversal_tag; + struct single_pass_traversal_tag; + struct forward_traversal_tag; + struct bidirectional_traversal_tag; + struct random_access_traversal_tag; + + struct incrementable_sequence_tag; + struct single_pass_sequence_tag; + struct forward_sequence_tag; + struct bidirectional_sequence_tag; + struct random_access_sequence_tag; +}} + +namespace boost { namespace fusion { namespace detail +{ + template + struct iterator_to_sequence_category; + + template <> + struct iterator_to_sequence_category + { + typedef incrementable_sequence_tag type; + }; + + template <> + struct iterator_to_sequence_category + { + typedef single_pass_sequence_tag type; + }; + + template <> + struct iterator_to_sequence_category + { + typedef forward_sequence_tag type; + }; + + template <> + struct iterator_to_sequence_category + { + typedef bidirectional_sequence_tag type; + }; + + template <> + struct iterator_to_sequence_category + { + typedef random_access_sequence_tag type; + }; +}}} + +#endif diff --git a/include/boost/fusion/support/detail/mpl_iterator_category.hpp b/include/boost/fusion/support/detail/mpl_iterator_category.hpp new file mode 100644 index 00000000..0a9a8d27 --- /dev/null +++ b/include/boost/fusion/support/detail/mpl_iterator_category.hpp @@ -0,0 +1,49 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_MPL_ITERATOR_CATEGORY_07212005_0923) +#define FUSION_MPL_ITERATOR_CATEGORY_07212005_0923 + +namespace boost { namespace mpl +{ + struct forward_iterator_tag; + struct bidirectional_iterator_tag; + struct random_access_iterator_tag; +}} + +namespace boost { namespace fusion +{ + struct forward_traversal_tag; + struct bidirectional_traversal_tag; + struct random_access_traversal_tag; +}} + +namespace boost { namespace fusion { namespace detail +{ + template + struct mpl_iterator_category; + + template <> + struct mpl_iterator_category + { + typedef forward_traversal_tag type; + }; + + template <> + struct mpl_iterator_category + { + typedef bidirectional_traversal_tag type; + }; + + template <> + struct mpl_iterator_category + { + typedef random_access_traversal_tag type; + }; +}}} + +#endif diff --git a/include/boost/fusion/support/detail/unknown_key.hpp b/include/boost/fusion/support/detail/unknown_key.hpp new file mode 100644 index 00000000..11c53eb4 --- /dev/null +++ b/include/boost/fusion/support/detail/unknown_key.hpp @@ -0,0 +1,17 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_UNKNOWN_KEY_09242005_1219) +#define FUSION_UNKNOWN_KEY_09242005_1219 + +namespace boost { namespace fusion { namespace detail +{ + template + struct unknown_key {}; +}}} + +#endif diff --git a/include/boost/fusion/support/is_associative.hpp b/include/boost/fusion/support/is_associative.hpp new file mode 100644 index 00000000..4cda074a --- /dev/null +++ b/include/boost/fusion/support/is_associative.hpp @@ -0,0 +1,36 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_IS_ASSOCIATIVE_09242005_1018) +#define FUSION_IS_ASSOCIATIVE_09242005_1018 + +#include +#include + +namespace boost { namespace fusion { + namespace extension + { + template + struct is_associative_impl + { + template + struct apply + : mpl::false_ + {}; + }; + } + + namespace traits + { + template + struct is_associative + : extension::is_associative_impl::type>::template apply + {}; +}}} + +#endif diff --git a/include/boost/fusion/support/is_iterator.hpp b/include/boost/fusion/support/is_iterator.hpp new file mode 100644 index 00000000..3e9415cb --- /dev/null +++ b/include/boost/fusion/support/is_iterator.hpp @@ -0,0 +1,21 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_IS_ITERATOR_05062005_1219) +#define FUSION_IS_ITERATOR_05062005_1219 + +#include + +namespace boost { namespace fusion +{ + struct iterator_root; + + template + struct is_fusion_iterator : is_base_and_derived {}; +}} + +#endif diff --git a/include/boost/fusion/support/is_sequence.hpp b/include/boost/fusion/support/is_sequence.hpp new file mode 100644 index 00000000..539fd396 --- /dev/null +++ b/include/boost/fusion/support/is_sequence.hpp @@ -0,0 +1,51 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_IS_SEQUENCE_05052005_1002) +#define FUSION_IS_SEQUENCE_05052005_1002 + +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct non_fusion_tag; + + namespace extension + { + template + struct is_sequence_impl + : is_base_and_derived + { + template + struct apply + : is_base_and_derived + {}; + }; + + template<> + struct is_sequence_impl + { + template + struct apply : mpl::false_ {}; + }; + } + + namespace traits + { + template + struct is_sequence + : extension::is_sequence_impl::type>::template apply + {}; + } +}} + +#endif diff --git a/include/boost/fusion/support/is_view.hpp b/include/boost/fusion/support/is_view.hpp new file mode 100644 index 00000000..e95038c8 --- /dev/null +++ b/include/boost/fusion/support/is_view.hpp @@ -0,0 +1,37 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_IS_VIEW_03202006_0015) +#define FUSION_IS_VIEW_03202006_0015 + +#include +#include + +namespace boost { namespace fusion +{ + namespace extension + { + template + struct is_view_impl + { + template + struct apply + : detail::fusion_is_view + {}; + }; + } + + namespace traits + { + template + struct is_view : + extension::is_view_impl::type>:: + template apply::type + {}; +}}} + +#endif diff --git a/include/boost/fusion/support/iterator_base.hpp b/include/boost/fusion/support/iterator_base.hpp new file mode 100644 index 00000000..aa5e99ee --- /dev/null +++ b/include/boost/fusion/support/iterator_base.hpp @@ -0,0 +1,34 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_ITERATOR_BASE_05042005_1008) +#define FUSION_ITERATOR_BASE_05042005_1008 + +#include + +namespace boost { namespace fusion +{ + struct iterator_root {}; + + template + struct iterator_base : iterator_root + { + Iterator const& + cast() const + { + return static_cast(*this); + } + + Iterator& + cast() + { + return static_cast(*this); + } + }; +}} + +#endif diff --git a/include/boost/fusion/support/pair.hpp b/include/boost/fusion/support/pair.hpp new file mode 100644 index 00000000..e69c631c --- /dev/null +++ b/include/boost/fusion/support/pair.hpp @@ -0,0 +1,81 @@ +/*============================================================================= + Copyright (c) 2005 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_PAIR_07222005_1203) +#define FUSION_PAIR_07222005_1203 + +#include +#include +#include + +namespace boost { namespace fusion +{ + // A half runtime pair where the first type does not have data + template + struct pair + { + pair() + : second() {} + + pair(typename detail::call_param::type val) + : second(val) {} + + template + pair(pair const& rhs) + : second(rhs.second) {} + + template + pair& operator=(pair const& rhs) + { + second = rhs.second; + return *this; + } + + typedef First first_type; + typedef Second second_type; + Second second; + }; + + template + inline pair::type> + make_pair(Second const& val) + { + return pair::type>(val); + } + + template + inline OStream& + operator<<(OStream& os, pair const& p) + { + os << p.second; + return os; + } + + template + inline IStream& + operator>>(IStream& is, pair& p) + { + is >> p.second; + return is; + } + + template + inline bool + operator==(pair const& l, pair const& r) + { + return l.second == r.second; + } + + template + inline bool + operator!=(pair const& l, pair const& r) + { + return l.second != r.second; + } +}} + +#endif diff --git a/include/boost/fusion/support/sequence_base.hpp b/include/boost/fusion/support/sequence_base.hpp new file mode 100644 index 00000000..ed1fffc7 --- /dev/null +++ b/include/boost/fusion/support/sequence_base.hpp @@ -0,0 +1,34 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_SEQUENCE_BASE_04182005_0737) +#define FUSION_SEQUENCE_BASE_04182005_0737 + +#include + +namespace boost { namespace fusion +{ + struct sequence_root {}; + + template + struct sequence_base : sequence_root + { + Sequence const& + derived() const + { + return static_cast(*this); + } + + Sequence& + derived() + { + return static_cast(*this); + } + }; +}} + +#endif diff --git a/include/boost/fusion/support/tag_of.hpp b/include/boost/fusion/support/tag_of.hpp new file mode 100644 index 00000000..0ba9894a --- /dev/null +++ b/include/boost/fusion/support/tag_of.hpp @@ -0,0 +1,48 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_TAG_OF_09232005_0845) +#define FUSION_TAG_OF_09232005_0845 + +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct non_fusion_tag; + + namespace detail + { + BOOST_MPL_HAS_XXX_TRAIT_DEF(ftag) + } + + namespace traits + { + template + struct tag_of + { + typedef non_fusion_tag type; + }; + + template + struct tag_of >::type> + { + typedef typename Sequence::ftag type; + }; + } + + namespace detail + { + template + struct tag_of + : traits::tag_of::type> + {}; + } +}} +#endif diff --git a/include/boost/fusion/support/tag_of_fwd.hpp b/include/boost/fusion/support/tag_of_fwd.hpp new file mode 100644 index 00000000..991c2576 --- /dev/null +++ b/include/boost/fusion/support/tag_of_fwd.hpp @@ -0,0 +1,21 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_TAG_OF_FWD_31122005_1445) +#define BOOST_FUSION_TAG_OF_FWD_31122005_1445 + +namespace boost { namespace fusion { + + namespace traits + { + template + struct tag_of; + } +}} + +#endif diff --git a/include/boost/fusion/support/tags.hpp b/include/boost/fusion/support/tags.hpp new file mode 100644 index 00000000..5571d779 --- /dev/null +++ b/include/boost/fusion/support/tags.hpp @@ -0,0 +1,47 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_TAGS_07212005_1031) +#define FUSION_TAGS_07212005_1031 + +namespace boost { namespace fusion +{ +// Iterator Classification + struct incrementable_traversal_tag {}; + + struct single_pass_traversal_tag + : incrementable_traversal_tag {}; + + struct forward_traversal_tag + : single_pass_traversal_tag {}; + + struct bidirectional_traversal_tag + : forward_traversal_tag {}; + + struct random_access_traversal_tag + : bidirectional_traversal_tag {}; + +// Sequence Classification + struct incrementable_sequence_tag {}; + + struct single_pass_sequence_tag + : incrementable_sequence_tag {}; + + struct forward_sequence_tag + : single_pass_sequence_tag {}; + + struct bidirectional_sequence_tag + : forward_sequence_tag {}; + + struct random_access_sequence_tag + : bidirectional_sequence_tag {}; + + struct associative_sequence_tag // $$$ this is no longer true $$$ + : forward_sequence_tag {}; +}} + +#endif diff --git a/include/boost/fusion/tuple.hpp b/include/boost/fusion/tuple.hpp new file mode 100644 index 00000000..3df7adef --- /dev/null +++ b/include/boost/fusion/tuple.hpp @@ -0,0 +1,16 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_TUPLE_10032005_0806) +#define FUSION_TUPLE_10032005_0806 + +#include +#include +#include +#include + +#endif diff --git a/include/boost/fusion/tuple/detail/tuple_forward_ctor.hpp b/include/boost/fusion/tuple/detail/tuple_forward_ctor.hpp new file mode 100644 index 00000000..e69db42e --- /dev/null +++ b/include/boost/fusion/tuple/detail/tuple_forward_ctor.hpp @@ -0,0 +1,40 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#ifndef BOOST_PP_IS_ITERATING +#if !defined(FUSION_TUPLE_FORWARD_CTOR_10032005_0815) +#define FUSION_TUPLE_FORWARD_CTOR_10032005_0815 + +#include +#include +#include + +#define BOOST_PP_FILENAME_1 \ + +#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) +#include BOOST_PP_ITERATE() + +#endif +#else // defined(BOOST_PP_IS_ITERATING) +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// + +#define N BOOST_PP_ITERATION() + +#if N == 1 + explicit +#endif + tuple(BOOST_PP_ENUM_BINARY_PARAMS( + N, typename detail::call_param::type _)) + : base_type(BOOST_PP_ENUM_PARAMS(N, _)) {} + +#undef N +#endif // defined(BOOST_PP_IS_ITERATING) + diff --git a/include/boost/fusion/tuple/make_tuple.hpp b/include/boost/fusion/tuple/make_tuple.hpp new file mode 100644 index 00000000..c6e58fc0 --- /dev/null +++ b/include/boost/fusion/tuple/make_tuple.hpp @@ -0,0 +1,57 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#ifndef BOOST_PP_IS_ITERATING +#if !defined(FUSION_MAKE_TUPLE_10032005_0843) +#define FUSION_MAKE_TUPLE_10032005_0843 + +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + inline tuple<> + make_tuple() + { + return tuple<>(); + } + +#define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \ + typename detail::as_fusion_element::type + +#define BOOST_PP_FILENAME_1 +#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) +#include BOOST_PP_ITERATE() + +#undef BOOST_FUSION_AS_FUSION_ELEMENT + +}} + +#endif +#else // defined(BOOST_PP_IS_ITERATING) +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// + +#define N BOOST_PP_ITERATION() + + template + inline tuple + make_tuple(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& _)) + { + return tuple( + BOOST_PP_ENUM_PARAMS(N, _)); + } + +#undef N +#endif // defined(BOOST_PP_IS_ITERATING) + diff --git a/include/boost/fusion/tuple/tuple.hpp b/include/boost/fusion/tuple/tuple.hpp new file mode 100644 index 00000000..2e5ef15c --- /dev/null +++ b/include/boost/fusion/tuple/tuple.hpp @@ -0,0 +1,73 @@ +/*============================================================================= + Copyright (c) 2005 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_TUPLE_10032005_0810) +#define FUSION_TUPLE_10032005_0810 + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + template + struct tuple : vector + { + typedef vector< + BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, T)> + base_type; + + tuple() + : base_type() {} + + template + explicit tuple(T const& rhs) + : base_type(rhs) {} + + #include + + template + tuple& + operator=(T const& rhs) + { + base_type::operator=(rhs); + return *this; + } + }; + + template + struct tuple_size : result_of::size {}; + + template + struct tuple_element : result_of::value_at_c {}; + + template + inline typename + lazy_disable_if< + is_const + , result_of::at_c + >::type + get(Tuple& tup) + { + return at_c(tup); + } + + template + inline typename result_of::at_c::type + get(Tuple const& tup) + { + return at_c(tup); + } +}} + +#endif diff --git a/include/boost/fusion/tuple/tuple_fwd.hpp b/include/boost/fusion/tuple/tuple_fwd.hpp new file mode 100644 index 00000000..272ce536 --- /dev/null +++ b/include/boost/fusion/tuple/tuple_fwd.hpp @@ -0,0 +1,25 @@ +/*============================================================================= + Copyright (c) 2005 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_TUPLE_FORWARD_10032005_0956) +#define FUSION_TUPLE_FORWARD_10032005_0956 + +#include +#include + +namespace boost { namespace fusion +{ + struct void_; + + template < + BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( + FUSION_MAX_VECTOR_SIZE, typename T, void_) + > + struct tuple; +}} + +#endif diff --git a/include/boost/fusion/tuple/tuple_tie.hpp b/include/boost/fusion/tuple/tuple_tie.hpp new file mode 100644 index 00000000..2c5ed4cc --- /dev/null +++ b/include/boost/fusion/tuple/tuple_tie.hpp @@ -0,0 +1,50 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#ifndef BOOST_PP_IS_ITERATING +#if !defined(FUSION_TUPLE_TIE_10032005_0846) +#define FUSION_TUPLE_TIE_10032005_0846 + +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ +#define BOOST_FUSION_REF(z, n, data) BOOST_PP_CAT(T, n)& + +#define BOOST_PP_FILENAME_1 +#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) +#include BOOST_PP_ITERATE() + +#undef BOOST_FUSION_REF + +}} + +#endif +#else // defined(BOOST_PP_IS_ITERATING) +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// + +#define N BOOST_PP_ITERATION() + + template + inline tuple + tie(BOOST_PP_ENUM_BINARY_PARAMS(N, T, & _)) + { + return tuple( + BOOST_PP_ENUM_PARAMS(N, _)); + } + +#undef N +#endif // defined(BOOST_PP_IS_ITERATING) + From c31253d8c1a34de9bd57e7f5af186ac06fa10f1b Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Tue, 22 Aug 2006 15:57:13 +0000 Subject: [PATCH 002/234] adding fusion docs and tests [SVN r34920] --- doc/Jamfile.v2 | 16 + doc/acknowledgements.qbk | 9 + doc/algorithms.qbk | 2415 +++++++++++ doc/changelog.qbk | 3 + doc/extension.qbk | 398 ++ doc/fusion.qbk | 263 ++ doc/html/boostbook.css | 511 +++ doc/html/fusion/acknowledgements.html | 44 + doc/html/fusion/algorithms.html | 98 + doc/html/fusion/algorithms/concepts.html | 41 + .../concepts/polymorphic_function_object.html | 109 + doc/html/fusion/algorithms/iteration.html | 54 + .../algorithms/iteration/functions.html | 43 + .../iteration/functions/accumulate.html | 161 + .../algorithms/iteration/functions/fold.html | 160 + .../iteration/functions/for_each.html | 142 + .../algorithms/iteration/metafunctions.html | 43 + .../iteration/metafunctions/accumulate.html | 140 + .../iteration/metafunctions/fold.html | 140 + .../iteration/metafunctions/for_each.html | 127 + doc/html/fusion/algorithms/query.html | 52 + .../fusion/algorithms/query/functions.html | 47 + .../algorithms/query/functions/all.html | 147 + .../algorithms/query/functions/any.html | 147 + .../algorithms/query/functions/count.html | 134 + .../algorithms/query/functions/count_if.html | 133 + .../algorithms/query/functions/find.html | 138 + .../algorithms/query/functions/find_if.html | 140 + .../algorithms/query/functions/none.html | 147 + .../algorithms/query/metafunctions.html | 47 + .../algorithms/query/metafunctions/all.html | 131 + .../algorithms/query/metafunctions/any.html | 131 + .../algorithms/query/metafunctions/count.html | 126 + .../query/metafunctions/count_if.html | 125 + .../algorithms/query/metafunctions/find.html | 126 + .../query/metafunctions/find_if.html | 127 + .../algorithms/query/metafunctions/none.html | 131 + .../fusion/algorithms/transformation.html | 65 + .../algorithms/transformation/functions.html | 59 + .../transformation/functions/clear.html | 120 + .../transformation/functions/erase.html | 170 + .../transformation/functions/erase_key.html | 136 + .../transformation/functions/filter.html | 133 + .../transformation/functions/filter_if.html | 136 + .../transformation/functions/insert.html | 144 + .../functions/insert_range.html | 148 + .../transformation/functions/join.html | 136 + .../transformation/functions/pop_back.html | 122 + .../transformation/functions/pop_front.html | 122 + .../transformation/functions/push_back.html | 132 + .../transformation/functions/push_front.html | 133 + .../transformation/functions/remove.html | 133 + .../transformation/functions/remove_if.html | 133 + .../transformation/functions/replace.html | 144 + .../transformation/functions/replace_if.html | 154 + .../transformation/functions/reverse.html | 121 + .../transformation/functions/transform.html | 231 + .../transformation/functions/zip.html | 132 + .../transformation/metafunctions.html | 59 + .../transformation/metafunctions/clear.html | 113 + .../transformation/metafunctions/erase.html | 151 + .../metafunctions/erase_key.html | 127 + .../transformation/metafunctions/filter.html | 128 + .../metafunctions/filter_if.html | 128 + .../transformation/metafunctions/insert.html | 138 + .../metafunctions/insert_range.html | 141 + .../transformation/metafunctions/join.html | 92 + .../metafunctions/pop_back.html | 118 + .../metafunctions/pop_front.html | 118 + .../metafunctions/push_back.html | 128 + .../metafunctions/push_front.html | 128 + .../transformation/metafunctions/remove.html | 128 + .../metafunctions/remove_if.html | 130 + .../transformation/metafunctions/replace.html | 126 + .../metafunctions/replace_if.html | 137 + .../transformation/metafunctions/reverse.html | 117 + .../metafunctions/transform.html | 130 + .../transformation/metafunctions/zip.html | 95 + doc/html/fusion/change_log.html | 41 + doc/html/fusion/extension.html | 556 +++ doc/html/fusion/introduction.html | 139 + doc/html/fusion/iterators.html | 59 + doc/html/fusion/iterators/concepts.html | 60 + .../concepts/bidirectional_iterator.html | 245 ++ .../iterators/concepts/forward_iterator.html | 353 ++ .../concepts/random_access_iterator.html | 216 + doc/html/fusion/iterators/functions.html | 52 + .../fusion/iterators/functions/advance.html | 129 + .../fusion/iterators/functions/advance_c.html | 129 + .../fusion/iterators/functions/deref.html | 117 + .../fusion/iterators/functions/distance.html | 116 + doc/html/fusion/iterators/functions/next.html | 117 + .../fusion/iterators/functions/prior.html | 116 + doc/html/fusion/iterators/metafunctions.html | 49 + .../iterators/metafunctions/advance.html | 133 + .../iterators/metafunctions/advance_c.html | 133 + .../fusion/iterators/metafunctions/deref.html | 123 + .../iterators/metafunctions/distance.html | 123 + .../iterators/metafunctions/equal_to.html | 120 + .../fusion/iterators/metafunctions/next.html | 118 + .../fusion/iterators/metafunctions/prior.html | 121 + .../iterators/metafunctions/value_of.html | 121 + doc/html/fusion/iterators/operators.html | 51 + .../operators/operator_equality.html | 110 + .../operators/operator_inequality.html | 106 + .../operators/operator_unary_star.html | 121 + doc/html/fusion/notes.html | 254 ++ doc/html/fusion/organization.html | 198 + doc/html/fusion/preface.html | 159 + doc/html/fusion/quick_start.html | 260 ++ doc/html/fusion/references.html | 67 + doc/html/fusion/sequences.html | 65 + doc/html/fusion/sequences/adapted.html | 70 + .../sequences/adapted/boost__array.html | 79 + .../sequences/adapted/mpl_sequence.html | 95 + .../fusion/sequences/adapted/std__pair.html | 77 + doc/html/fusion/sequences/concepts.html | 80 + .../concepts/associative_sequence.html | 228 + .../concepts/bidirectional_sequence.html | 236 + .../sequences/concepts/forward_sequence.html | 289 ++ .../concepts/random_access_sequence.html | 255 ++ doc/html/fusion/sequences/containers.html | 58 + .../fusion/sequences/containers/cons.html | 236 + .../fusion/sequences/containers/list.html | 228 + doc/html/fusion/sequences/containers/map.html | 225 + doc/html/fusion/sequences/containers/set.html | 217 + .../fusion/sequences/containers/vector.html | 247 ++ doc/html/fusion/sequences/conversion.html | 53 + .../sequences/conversion/functions.html | 44 + .../conversion/functions/as_list.html | 114 + .../conversion/functions/as_map.html | 121 + .../conversion/functions/as_set.html | 118 + .../conversion/functions/as_vector.html | 114 + .../sequences/conversion/metafunctions.html | 44 + .../conversion/metafunctions/as_list.html | 112 + .../conversion/metafunctions/as_map.html | 119 + .../conversion/metafunctions/as_set.html | 116 + .../conversion/metafunctions/as_vector.html | 112 + doc/html/fusion/sequences/generation.html | 52 + .../sequences/generation/functions.html | 48 + .../generation/functions/list_tie.html | 126 + .../generation/functions/make_cons.html | 137 + .../generation/functions/make_list.html | 131 + .../generation/functions/make_map.html | 159 + .../generation/functions/make_set.html | 143 + .../generation/functions/make_vector.html | 131 + .../sequences/generation/functions/tiers.html | 99 + .../generation/functions/vector_tie.html | 126 + .../sequences/generation/metafunctions.html | 47 + .../generation/metafunctions/list_tie.html | 121 + .../generation/metafunctions/make_cons.html | 122 + .../generation/metafunctions/make_list.html | 122 + .../generation/metafunctions/make_map.html | 153 + .../generation/metafunctions/make_set.html | 134 + .../generation/metafunctions/make_vector.html | 122 + .../generation/metafunctions/vector_tie.html | 121 + doc/html/fusion/sequences/intrinsics.html | 66 + .../sequences/intrinsics/functions.html | 50 + .../sequences/intrinsics/functions/at.html | 139 + .../sequences/intrinsics/functions/at_c.html | 138 + .../intrinsics/functions/at_key.html | 134 + .../sequences/intrinsics/functions/back.html | 126 + .../sequences/intrinsics/functions/begin.html | 134 + .../sequences/intrinsics/functions/empty.html | 116 + .../sequences/intrinsics/functions/end.html | 134 + .../sequences/intrinsics/functions/front.html | 126 + .../intrinsics/functions/has_key.html | 125 + .../sequences/intrinsics/functions/size.html | 115 + .../sequences/intrinsics/metafunctions.html | 53 + .../intrinsics/metafunctions/at.html | 134 + .../intrinsics/metafunctions/at_c.html | 134 + .../intrinsics/metafunctions/at_key.html | 136 + .../intrinsics/metafunctions/back.html | 113 + .../intrinsics/metafunctions/begin.html | 115 + .../intrinsics/metafunctions/empty.html | 117 + .../intrinsics/metafunctions/end.html | 115 + .../intrinsics/metafunctions/front.html | 114 + .../intrinsics/metafunctions/has_key.html | 126 + .../intrinsics/metafunctions/size.html | 114 + .../intrinsics/metafunctions/value_at.html | 123 + .../intrinsics/metafunctions/value_at_c.html | 123 + .../metafunctions/value_at_key.html | 124 + doc/html/fusion/sequences/operators.html | 47 + .../sequences/operators/comparison.html | 67 + .../sequences/operators/comparison/equal.html | 136 + .../operators/comparison/greater_than.html | 130 + .../comparison/greater_than_equal.html | 129 + .../operators/comparison/less_than.html | 132 + .../operators/comparison/less_than_equal.html | 130 + .../operators/comparison/not_equal.html | 132 + doc/html/fusion/sequences/operators/i_o.html | 134 + .../fusion/sequences/operators/i_o/in.html | 120 + .../fusion/sequences/operators/i_o/out.html | 119 + doc/html/fusion/sequences/views.html | 63 + .../fusion/sequences/views/filter_view.html | 192 + .../sequences/views/iterator_range.html | 197 + .../fusion/sequences/views/joint_view.html | 191 + .../fusion/sequences/views/reverse_view.html | 171 + .../fusion/sequences/views/single_view.html | 164 + .../sequences/views/transform_view.html | 280 ++ doc/html/fusion/sequences/views/zip_view.html | 176 + doc/html/fusion/support.html | 48 + doc/html/fusion/support/category_of.html | 164 + doc/html/fusion/support/is_sequence.html | 126 + doc/html/fusion/support/is_view.html | 130 + doc/html/fusion/support/pair.html | 212 + doc/html/fusion/support/tag_of.html | 130 + doc/html/fusion/tuples.html | 53 + .../fusion/tuples/class_template_tuple.html | 79 + .../class_template_tuple/construction.html | 128 + .../class_template_tuple/element_access.html | 90 + .../relational_operators.html | 191 + .../tuple_creation_functions.html | 79 + .../tuple_helper_classes.html | 83 + doc/html/fusion/tuples/pairs.html | 101 + doc/html/images/alert.png | Bin 0 -> 603 bytes doc/html/images/caution.png | Bin 0 -> 1250 bytes doc/html/images/fusion_org.png | Bin 0 -> 1849 bytes doc/html/images/home.png | Bin 0 -> 358 bytes doc/html/images/important.png | Bin 0 -> 722 bytes doc/html/images/next.png | Bin 0 -> 336 bytes doc/html/images/note.png | Bin 0 -> 658 bytes doc/html/images/prev.png | Bin 0 -> 334 bytes doc/html/images/smiley.png | Bin 0 -> 867 bytes doc/html/images/tip.png | Bin 0 -> 640 bytes doc/html/images/up.png | Bin 0 -> 370 bytes doc/html/images/warning.png | Bin 0 -> 1241 bytes doc/html/index.html | 66 + doc/introduction.qbk | 81 + doc/iterators.qbk | 855 ++++ doc/notes.qbk | 146 + doc/organization.qbk | 68 + doc/preface.qbk | 68 + doc/quick_start.qbk | 159 + doc/references.qbk | 19 + doc/sequences.qbk | 3804 +++++++++++++++++ doc/support.qbk | 309 ++ doc/tuples.qbk | 264 ++ example/extension/Jamfile.v2 | 18 + example/extension/detail/advance_impl.hpp | 45 + example/extension/detail/at_impl.hpp | 65 + example/extension/detail/at_key_impl.hpp | 70 + example/extension/detail/begin_impl.hpp | 41 + example/extension/detail/category_of_impl.hpp | 33 + example/extension/detail/deref_impl.hpp | 65 + example/extension/detail/distance_impl.hpp | 42 + example/extension/detail/end_impl.hpp | 41 + example/extension/detail/equal_to_impl.hpp | 36 + example/extension/detail/has_key_impl.hpp | 43 + .../extension/detail/is_associative_impl.hpp | 34 + example/extension/detail/is_sequence_impl.hpp | 32 + example/extension/detail/is_view_impl.hpp | 30 + example/extension/detail/next_impl.hpp | 44 + example/extension/detail/prior_impl.hpp | 44 + example/extension/detail/size_impl.hpp | 34 + example/extension/detail/value_at_impl.hpp | 42 + .../extension/detail/value_at_key_impl.hpp | 48 + example/extension/detail/value_of_impl.hpp | 48 + example/extension/example_struct.hpp | 27 + example/extension/example_struct_iterator.hpp | 47 + example/extension/example_struct_type.hpp | 28 + example/extension/tag_of.hpp | 28 + example/extension/test_example.cpp | 63 + index.html | 10 + test/Jamfile.v2 | 96 + test/algorithm/all.cpp | 38 + test/algorithm/any.cpp | 37 + test/algorithm/clear.cpp | 46 + test/algorithm/count.cpp | 42 + test/algorithm/count_if.cpp | 37 + test/algorithm/erase.cpp | 64 + test/algorithm/erase_key.cpp | 75 + test/algorithm/filter.cpp | 44 + test/algorithm/filter_if.cpp | 78 + test/algorithm/find.cpp | 80 + test/algorithm/find_if.cpp | 70 + test/algorithm/fold.cpp | 110 + test/algorithm/for_each.cpp | 62 + test/algorithm/insert.cpp | 68 + test/algorithm/insert_range.cpp | 72 + test/algorithm/join.cpp | 29 + test/algorithm/none.cpp | 38 + test/algorithm/pop_back.cpp | 47 + test/algorithm/pop_front.cpp | 47 + test/algorithm/push_back.cpp | 73 + test/algorithm/push_front.cpp | 56 + test/algorithm/remove.cpp | 81 + test/algorithm/remove_if.cpp | 79 + test/algorithm/replace.cpp | 50 + test/algorithm/replace_if.cpp | 53 + test/algorithm/reverse.cpp | 50 + test/algorithm/transform.cpp | 91 + test/algorithm/zip.cpp | 31 + test/sequence/array.cpp | 42 + test/sequence/as_list.cpp | 54 + test/sequence/as_map.cpp | 62 + test/sequence/as_set.cpp | 65 + test/sequence/as_vector.cpp | 55 + test/sequence/comparison.hpp | 58 + test/sequence/cons.cpp | 88 + test/sequence/construction.hpp | 110 + test/sequence/copy.hpp | 63 + test/sequence/filter_view.cpp | 118 + test/sequence/io.cpp | 117 + test/sequence/iterator.hpp | 198 + test/sequence/iterator_range.cpp | 82 + test/sequence/joint_view.cpp | 145 + test/sequence/list_comparison.cpp | 20 + test/sequence/list_construction.cpp | 19 + test/sequence/list_copy.cpp | 22 + test/sequence/list_iterator.cpp | 23 + test/sequence/list_make.cpp | 21 + test/sequence/list_misc.cpp | 22 + test/sequence/list_mutate.cpp | 20 + test/sequence/list_tie.cpp | 23 + test/sequence/list_value_at.cpp | 20 + test/sequence/make.hpp | 88 + test/sequence/make_list.cpp | 21 + test/sequence/make_vector.cpp | 21 + test/sequence/map.cpp | 73 + test/sequence/misc.hpp | 189 + test/sequence/mutate.hpp | 52 + test/sequence/reverse_view.cpp | 65 + test/sequence/set.cpp | 68 + test/sequence/single_view.cpp | 58 + test/sequence/std_pair.cpp | 92 + test/sequence/tie.hpp | 85 + test/sequence/transform_view.cpp | 102 + test/sequence/tuple_comparison.cpp | 21 + test/sequence/tuple_construction.cpp | 21 + test/sequence/tuple_copy.cpp | 23 + test/sequence/tuple_element.cpp | 22 + test/sequence/tuple_make.cpp | 22 + test/sequence/tuple_misc.cpp | 22 + test/sequence/tuple_mutate.cpp | 21 + test/sequence/tuple_tie.cpp | 23 + test/sequence/unpack_args.cpp | 228 + test/sequence/value_at.hpp | 87 + test/sequence/vector_comparison.cpp | 20 + test/sequence/vector_construction.cpp | 19 + test/sequence/vector_copy.cpp | 22 + test/sequence/vector_iterator.cpp | 23 + test/sequence/vector_make.cpp | 21 + test/sequence/vector_misc.cpp | 20 + test/sequence/vector_mutate.cpp | 20 + test/sequence/vector_n.cpp | 231 + test/sequence/vector_tie.cpp | 23 + test/sequence/vector_value_at.cpp | 20 + test/sequence/zip_view.cpp | 88 + test/sequence/zip_view2.cpp | 65 + todo.txt | 8 + 351 files changed, 42280 insertions(+) create mode 100644 doc/Jamfile.v2 create mode 100644 doc/acknowledgements.qbk create mode 100644 doc/algorithms.qbk create mode 100644 doc/changelog.qbk create mode 100644 doc/extension.qbk create mode 100644 doc/fusion.qbk create mode 100755 doc/html/boostbook.css create mode 100644 doc/html/fusion/acknowledgements.html create mode 100644 doc/html/fusion/algorithms.html create mode 100644 doc/html/fusion/algorithms/concepts.html create mode 100644 doc/html/fusion/algorithms/concepts/polymorphic_function_object.html create mode 100644 doc/html/fusion/algorithms/iteration.html create mode 100644 doc/html/fusion/algorithms/iteration/functions.html create mode 100644 doc/html/fusion/algorithms/iteration/functions/accumulate.html create mode 100644 doc/html/fusion/algorithms/iteration/functions/fold.html create mode 100644 doc/html/fusion/algorithms/iteration/functions/for_each.html create mode 100644 doc/html/fusion/algorithms/iteration/metafunctions.html create mode 100644 doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html create mode 100644 doc/html/fusion/algorithms/iteration/metafunctions/fold.html create mode 100644 doc/html/fusion/algorithms/iteration/metafunctions/for_each.html create mode 100644 doc/html/fusion/algorithms/query.html create mode 100644 doc/html/fusion/algorithms/query/functions.html create mode 100644 doc/html/fusion/algorithms/query/functions/all.html create mode 100644 doc/html/fusion/algorithms/query/functions/any.html create mode 100644 doc/html/fusion/algorithms/query/functions/count.html create mode 100644 doc/html/fusion/algorithms/query/functions/count_if.html create mode 100644 doc/html/fusion/algorithms/query/functions/find.html create mode 100644 doc/html/fusion/algorithms/query/functions/find_if.html create mode 100644 doc/html/fusion/algorithms/query/functions/none.html create mode 100644 doc/html/fusion/algorithms/query/metafunctions.html create mode 100644 doc/html/fusion/algorithms/query/metafunctions/all.html create mode 100644 doc/html/fusion/algorithms/query/metafunctions/any.html create mode 100644 doc/html/fusion/algorithms/query/metafunctions/count.html create mode 100644 doc/html/fusion/algorithms/query/metafunctions/count_if.html create mode 100644 doc/html/fusion/algorithms/query/metafunctions/find.html create mode 100644 doc/html/fusion/algorithms/query/metafunctions/find_if.html create mode 100644 doc/html/fusion/algorithms/query/metafunctions/none.html create mode 100644 doc/html/fusion/algorithms/transformation.html create mode 100644 doc/html/fusion/algorithms/transformation/functions.html create mode 100644 doc/html/fusion/algorithms/transformation/functions/clear.html create mode 100644 doc/html/fusion/algorithms/transformation/functions/erase.html create mode 100644 doc/html/fusion/algorithms/transformation/functions/erase_key.html create mode 100644 doc/html/fusion/algorithms/transformation/functions/filter.html create mode 100644 doc/html/fusion/algorithms/transformation/functions/filter_if.html create mode 100644 doc/html/fusion/algorithms/transformation/functions/insert.html create mode 100644 doc/html/fusion/algorithms/transformation/functions/insert_range.html create mode 100644 doc/html/fusion/algorithms/transformation/functions/join.html create mode 100644 doc/html/fusion/algorithms/transformation/functions/pop_back.html create mode 100644 doc/html/fusion/algorithms/transformation/functions/pop_front.html create mode 100644 doc/html/fusion/algorithms/transformation/functions/push_back.html create mode 100644 doc/html/fusion/algorithms/transformation/functions/push_front.html create mode 100644 doc/html/fusion/algorithms/transformation/functions/remove.html create mode 100644 doc/html/fusion/algorithms/transformation/functions/remove_if.html create mode 100644 doc/html/fusion/algorithms/transformation/functions/replace.html create mode 100644 doc/html/fusion/algorithms/transformation/functions/replace_if.html create mode 100644 doc/html/fusion/algorithms/transformation/functions/reverse.html create mode 100644 doc/html/fusion/algorithms/transformation/functions/transform.html create mode 100644 doc/html/fusion/algorithms/transformation/functions/zip.html create mode 100644 doc/html/fusion/algorithms/transformation/metafunctions.html create mode 100644 doc/html/fusion/algorithms/transformation/metafunctions/clear.html create mode 100644 doc/html/fusion/algorithms/transformation/metafunctions/erase.html create mode 100644 doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html create mode 100644 doc/html/fusion/algorithms/transformation/metafunctions/filter.html create mode 100644 doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html create mode 100644 doc/html/fusion/algorithms/transformation/metafunctions/insert.html create mode 100644 doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html create mode 100644 doc/html/fusion/algorithms/transformation/metafunctions/join.html create mode 100644 doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html create mode 100644 doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html create mode 100644 doc/html/fusion/algorithms/transformation/metafunctions/push_back.html create mode 100644 doc/html/fusion/algorithms/transformation/metafunctions/push_front.html create mode 100644 doc/html/fusion/algorithms/transformation/metafunctions/remove.html create mode 100644 doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html create mode 100644 doc/html/fusion/algorithms/transformation/metafunctions/replace.html create mode 100644 doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html create mode 100644 doc/html/fusion/algorithms/transformation/metafunctions/reverse.html create mode 100644 doc/html/fusion/algorithms/transformation/metafunctions/transform.html create mode 100644 doc/html/fusion/algorithms/transformation/metafunctions/zip.html create mode 100644 doc/html/fusion/change_log.html create mode 100644 doc/html/fusion/extension.html create mode 100644 doc/html/fusion/introduction.html create mode 100644 doc/html/fusion/iterators.html create mode 100644 doc/html/fusion/iterators/concepts.html create mode 100644 doc/html/fusion/iterators/concepts/bidirectional_iterator.html create mode 100644 doc/html/fusion/iterators/concepts/forward_iterator.html create mode 100644 doc/html/fusion/iterators/concepts/random_access_iterator.html create mode 100644 doc/html/fusion/iterators/functions.html create mode 100644 doc/html/fusion/iterators/functions/advance.html create mode 100644 doc/html/fusion/iterators/functions/advance_c.html create mode 100644 doc/html/fusion/iterators/functions/deref.html create mode 100644 doc/html/fusion/iterators/functions/distance.html create mode 100644 doc/html/fusion/iterators/functions/next.html create mode 100644 doc/html/fusion/iterators/functions/prior.html create mode 100644 doc/html/fusion/iterators/metafunctions.html create mode 100644 doc/html/fusion/iterators/metafunctions/advance.html create mode 100644 doc/html/fusion/iterators/metafunctions/advance_c.html create mode 100644 doc/html/fusion/iterators/metafunctions/deref.html create mode 100644 doc/html/fusion/iterators/metafunctions/distance.html create mode 100644 doc/html/fusion/iterators/metafunctions/equal_to.html create mode 100644 doc/html/fusion/iterators/metafunctions/next.html create mode 100644 doc/html/fusion/iterators/metafunctions/prior.html create mode 100644 doc/html/fusion/iterators/metafunctions/value_of.html create mode 100644 doc/html/fusion/iterators/operators.html create mode 100644 doc/html/fusion/iterators/operators/operator_equality.html create mode 100644 doc/html/fusion/iterators/operators/operator_inequality.html create mode 100644 doc/html/fusion/iterators/operators/operator_unary_star.html create mode 100644 doc/html/fusion/notes.html create mode 100644 doc/html/fusion/organization.html create mode 100644 doc/html/fusion/preface.html create mode 100644 doc/html/fusion/quick_start.html create mode 100644 doc/html/fusion/references.html create mode 100644 doc/html/fusion/sequences.html create mode 100644 doc/html/fusion/sequences/adapted.html create mode 100644 doc/html/fusion/sequences/adapted/boost__array.html create mode 100644 doc/html/fusion/sequences/adapted/mpl_sequence.html create mode 100644 doc/html/fusion/sequences/adapted/std__pair.html create mode 100644 doc/html/fusion/sequences/concepts.html create mode 100644 doc/html/fusion/sequences/concepts/associative_sequence.html create mode 100644 doc/html/fusion/sequences/concepts/bidirectional_sequence.html create mode 100644 doc/html/fusion/sequences/concepts/forward_sequence.html create mode 100644 doc/html/fusion/sequences/concepts/random_access_sequence.html create mode 100644 doc/html/fusion/sequences/containers.html create mode 100644 doc/html/fusion/sequences/containers/cons.html create mode 100644 doc/html/fusion/sequences/containers/list.html create mode 100644 doc/html/fusion/sequences/containers/map.html create mode 100644 doc/html/fusion/sequences/containers/set.html create mode 100644 doc/html/fusion/sequences/containers/vector.html create mode 100644 doc/html/fusion/sequences/conversion.html create mode 100644 doc/html/fusion/sequences/conversion/functions.html create mode 100644 doc/html/fusion/sequences/conversion/functions/as_list.html create mode 100644 doc/html/fusion/sequences/conversion/functions/as_map.html create mode 100644 doc/html/fusion/sequences/conversion/functions/as_set.html create mode 100644 doc/html/fusion/sequences/conversion/functions/as_vector.html create mode 100644 doc/html/fusion/sequences/conversion/metafunctions.html create mode 100644 doc/html/fusion/sequences/conversion/metafunctions/as_list.html create mode 100644 doc/html/fusion/sequences/conversion/metafunctions/as_map.html create mode 100644 doc/html/fusion/sequences/conversion/metafunctions/as_set.html create mode 100644 doc/html/fusion/sequences/conversion/metafunctions/as_vector.html create mode 100644 doc/html/fusion/sequences/generation.html create mode 100644 doc/html/fusion/sequences/generation/functions.html create mode 100644 doc/html/fusion/sequences/generation/functions/list_tie.html create mode 100644 doc/html/fusion/sequences/generation/functions/make_cons.html create mode 100644 doc/html/fusion/sequences/generation/functions/make_list.html create mode 100644 doc/html/fusion/sequences/generation/functions/make_map.html create mode 100644 doc/html/fusion/sequences/generation/functions/make_set.html create mode 100644 doc/html/fusion/sequences/generation/functions/make_vector.html create mode 100644 doc/html/fusion/sequences/generation/functions/tiers.html create mode 100644 doc/html/fusion/sequences/generation/functions/vector_tie.html create mode 100644 doc/html/fusion/sequences/generation/metafunctions.html create mode 100644 doc/html/fusion/sequences/generation/metafunctions/list_tie.html create mode 100644 doc/html/fusion/sequences/generation/metafunctions/make_cons.html create mode 100644 doc/html/fusion/sequences/generation/metafunctions/make_list.html create mode 100644 doc/html/fusion/sequences/generation/metafunctions/make_map.html create mode 100644 doc/html/fusion/sequences/generation/metafunctions/make_set.html create mode 100644 doc/html/fusion/sequences/generation/metafunctions/make_vector.html create mode 100644 doc/html/fusion/sequences/generation/metafunctions/vector_tie.html create mode 100644 doc/html/fusion/sequences/intrinsics.html create mode 100644 doc/html/fusion/sequences/intrinsics/functions.html create mode 100644 doc/html/fusion/sequences/intrinsics/functions/at.html create mode 100644 doc/html/fusion/sequences/intrinsics/functions/at_c.html create mode 100644 doc/html/fusion/sequences/intrinsics/functions/at_key.html create mode 100644 doc/html/fusion/sequences/intrinsics/functions/back.html create mode 100644 doc/html/fusion/sequences/intrinsics/functions/begin.html create mode 100644 doc/html/fusion/sequences/intrinsics/functions/empty.html create mode 100644 doc/html/fusion/sequences/intrinsics/functions/end.html create mode 100644 doc/html/fusion/sequences/intrinsics/functions/front.html create mode 100644 doc/html/fusion/sequences/intrinsics/functions/has_key.html create mode 100644 doc/html/fusion/sequences/intrinsics/functions/size.html create mode 100644 doc/html/fusion/sequences/intrinsics/metafunctions.html create mode 100644 doc/html/fusion/sequences/intrinsics/metafunctions/at.html create mode 100644 doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html create mode 100644 doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html create mode 100644 doc/html/fusion/sequences/intrinsics/metafunctions/back.html create mode 100644 doc/html/fusion/sequences/intrinsics/metafunctions/begin.html create mode 100644 doc/html/fusion/sequences/intrinsics/metafunctions/empty.html create mode 100644 doc/html/fusion/sequences/intrinsics/metafunctions/end.html create mode 100644 doc/html/fusion/sequences/intrinsics/metafunctions/front.html create mode 100644 doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html create mode 100644 doc/html/fusion/sequences/intrinsics/metafunctions/size.html create mode 100644 doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html create mode 100644 doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html create mode 100644 doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html create mode 100644 doc/html/fusion/sequences/operators.html create mode 100644 doc/html/fusion/sequences/operators/comparison.html create mode 100644 doc/html/fusion/sequences/operators/comparison/equal.html create mode 100644 doc/html/fusion/sequences/operators/comparison/greater_than.html create mode 100644 doc/html/fusion/sequences/operators/comparison/greater_than_equal.html create mode 100644 doc/html/fusion/sequences/operators/comparison/less_than.html create mode 100644 doc/html/fusion/sequences/operators/comparison/less_than_equal.html create mode 100644 doc/html/fusion/sequences/operators/comparison/not_equal.html create mode 100644 doc/html/fusion/sequences/operators/i_o.html create mode 100644 doc/html/fusion/sequences/operators/i_o/in.html create mode 100644 doc/html/fusion/sequences/operators/i_o/out.html create mode 100644 doc/html/fusion/sequences/views.html create mode 100644 doc/html/fusion/sequences/views/filter_view.html create mode 100644 doc/html/fusion/sequences/views/iterator_range.html create mode 100644 doc/html/fusion/sequences/views/joint_view.html create mode 100644 doc/html/fusion/sequences/views/reverse_view.html create mode 100644 doc/html/fusion/sequences/views/single_view.html create mode 100644 doc/html/fusion/sequences/views/transform_view.html create mode 100644 doc/html/fusion/sequences/views/zip_view.html create mode 100644 doc/html/fusion/support.html create mode 100644 doc/html/fusion/support/category_of.html create mode 100644 doc/html/fusion/support/is_sequence.html create mode 100644 doc/html/fusion/support/is_view.html create mode 100644 doc/html/fusion/support/pair.html create mode 100644 doc/html/fusion/support/tag_of.html create mode 100644 doc/html/fusion/tuples.html create mode 100644 doc/html/fusion/tuples/class_template_tuple.html create mode 100644 doc/html/fusion/tuples/class_template_tuple/construction.html create mode 100644 doc/html/fusion/tuples/class_template_tuple/element_access.html create mode 100644 doc/html/fusion/tuples/class_template_tuple/relational_operators.html create mode 100644 doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html create mode 100644 doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html create mode 100644 doc/html/fusion/tuples/pairs.html create mode 100755 doc/html/images/alert.png create mode 100644 doc/html/images/caution.png create mode 100644 doc/html/images/fusion_org.png create mode 100755 doc/html/images/home.png create mode 100644 doc/html/images/important.png create mode 100755 doc/html/images/next.png create mode 100755 doc/html/images/note.png create mode 100755 doc/html/images/prev.png create mode 100755 doc/html/images/smiley.png create mode 100755 doc/html/images/tip.png create mode 100755 doc/html/images/up.png create mode 100644 doc/html/images/warning.png create mode 100644 doc/html/index.html create mode 100644 doc/introduction.qbk create mode 100644 doc/iterators.qbk create mode 100644 doc/notes.qbk create mode 100644 doc/organization.qbk create mode 100644 doc/preface.qbk create mode 100644 doc/quick_start.qbk create mode 100644 doc/references.qbk create mode 100644 doc/sequences.qbk create mode 100644 doc/support.qbk create mode 100644 doc/tuples.qbk create mode 100644 example/extension/Jamfile.v2 create mode 100644 example/extension/detail/advance_impl.hpp create mode 100644 example/extension/detail/at_impl.hpp create mode 100644 example/extension/detail/at_key_impl.hpp create mode 100644 example/extension/detail/begin_impl.hpp create mode 100644 example/extension/detail/category_of_impl.hpp create mode 100644 example/extension/detail/deref_impl.hpp create mode 100644 example/extension/detail/distance_impl.hpp create mode 100644 example/extension/detail/end_impl.hpp create mode 100644 example/extension/detail/equal_to_impl.hpp create mode 100644 example/extension/detail/has_key_impl.hpp create mode 100644 example/extension/detail/is_associative_impl.hpp create mode 100644 example/extension/detail/is_sequence_impl.hpp create mode 100644 example/extension/detail/is_view_impl.hpp create mode 100644 example/extension/detail/next_impl.hpp create mode 100644 example/extension/detail/prior_impl.hpp create mode 100644 example/extension/detail/size_impl.hpp create mode 100644 example/extension/detail/value_at_impl.hpp create mode 100644 example/extension/detail/value_at_key_impl.hpp create mode 100644 example/extension/detail/value_of_impl.hpp create mode 100644 example/extension/example_struct.hpp create mode 100644 example/extension/example_struct_iterator.hpp create mode 100644 example/extension/example_struct_type.hpp create mode 100644 example/extension/tag_of.hpp create mode 100644 example/extension/test_example.cpp create mode 100644 index.html create mode 100644 test/Jamfile.v2 create mode 100644 test/algorithm/all.cpp create mode 100644 test/algorithm/any.cpp create mode 100644 test/algorithm/clear.cpp create mode 100644 test/algorithm/count.cpp create mode 100644 test/algorithm/count_if.cpp create mode 100644 test/algorithm/erase.cpp create mode 100644 test/algorithm/erase_key.cpp create mode 100644 test/algorithm/filter.cpp create mode 100644 test/algorithm/filter_if.cpp create mode 100644 test/algorithm/find.cpp create mode 100644 test/algorithm/find_if.cpp create mode 100644 test/algorithm/fold.cpp create mode 100644 test/algorithm/for_each.cpp create mode 100644 test/algorithm/insert.cpp create mode 100644 test/algorithm/insert_range.cpp create mode 100644 test/algorithm/join.cpp create mode 100644 test/algorithm/none.cpp create mode 100644 test/algorithm/pop_back.cpp create mode 100644 test/algorithm/pop_front.cpp create mode 100644 test/algorithm/push_back.cpp create mode 100644 test/algorithm/push_front.cpp create mode 100644 test/algorithm/remove.cpp create mode 100644 test/algorithm/remove_if.cpp create mode 100644 test/algorithm/replace.cpp create mode 100644 test/algorithm/replace_if.cpp create mode 100644 test/algorithm/reverse.cpp create mode 100644 test/algorithm/transform.cpp create mode 100644 test/algorithm/zip.cpp create mode 100644 test/sequence/array.cpp create mode 100644 test/sequence/as_list.cpp create mode 100644 test/sequence/as_map.cpp create mode 100644 test/sequence/as_set.cpp create mode 100644 test/sequence/as_vector.cpp create mode 100644 test/sequence/comparison.hpp create mode 100644 test/sequence/cons.cpp create mode 100644 test/sequence/construction.hpp create mode 100644 test/sequence/copy.hpp create mode 100644 test/sequence/filter_view.cpp create mode 100644 test/sequence/io.cpp create mode 100644 test/sequence/iterator.hpp create mode 100644 test/sequence/iterator_range.cpp create mode 100644 test/sequence/joint_view.cpp create mode 100644 test/sequence/list_comparison.cpp create mode 100644 test/sequence/list_construction.cpp create mode 100644 test/sequence/list_copy.cpp create mode 100644 test/sequence/list_iterator.cpp create mode 100644 test/sequence/list_make.cpp create mode 100644 test/sequence/list_misc.cpp create mode 100644 test/sequence/list_mutate.cpp create mode 100644 test/sequence/list_tie.cpp create mode 100644 test/sequence/list_value_at.cpp create mode 100644 test/sequence/make.hpp create mode 100644 test/sequence/make_list.cpp create mode 100644 test/sequence/make_vector.cpp create mode 100644 test/sequence/map.cpp create mode 100644 test/sequence/misc.hpp create mode 100644 test/sequence/mutate.hpp create mode 100644 test/sequence/reverse_view.cpp create mode 100644 test/sequence/set.cpp create mode 100644 test/sequence/single_view.cpp create mode 100644 test/sequence/std_pair.cpp create mode 100644 test/sequence/tie.hpp create mode 100644 test/sequence/transform_view.cpp create mode 100644 test/sequence/tuple_comparison.cpp create mode 100644 test/sequence/tuple_construction.cpp create mode 100644 test/sequence/tuple_copy.cpp create mode 100644 test/sequence/tuple_element.cpp create mode 100644 test/sequence/tuple_make.cpp create mode 100644 test/sequence/tuple_misc.cpp create mode 100644 test/sequence/tuple_mutate.cpp create mode 100644 test/sequence/tuple_tie.cpp create mode 100644 test/sequence/unpack_args.cpp create mode 100644 test/sequence/value_at.hpp create mode 100644 test/sequence/vector_comparison.cpp create mode 100644 test/sequence/vector_construction.cpp create mode 100644 test/sequence/vector_copy.cpp create mode 100644 test/sequence/vector_iterator.cpp create mode 100644 test/sequence/vector_make.cpp create mode 100644 test/sequence/vector_misc.cpp create mode 100644 test/sequence/vector_mutate.cpp create mode 100644 test/sequence/vector_n.cpp create mode 100644 test/sequence/vector_tie.cpp create mode 100644 test/sequence/vector_value_at.cpp create mode 100644 test/sequence/zip_view.cpp create mode 100644 test/sequence/zip_view2.cpp create mode 100644 todo.txt diff --git a/doc/Jamfile.v2 b/doc/Jamfile.v2 new file mode 100644 index 00000000..c2c1c2f0 --- /dev/null +++ b/doc/Jamfile.v2 @@ -0,0 +1,16 @@ +project boost/libs/fusion/doc ; +import boostbook : boostbook ; +using quickbook ; + +boostbook quickbook + : + fusion.qbk + : + boost.root=../../../.. + boost.libraries=../../../libraries.htm + chunk.section.depth=4 + chunk.first.sections=1 + toc.section.depth=3 + toc.max.depth=1 + ; + diff --git a/doc/acknowledgements.qbk b/doc/acknowledgements.qbk new file mode 100644 index 00000000..ebd94d40 --- /dev/null +++ b/doc/acknowledgements.qbk @@ -0,0 +1,9 @@ +[section Acknowledgements] + +Special thanks to David Abrahams, Hartmut Kaiser, Aleksey Gurtovoy, Peder +Holt, Daniel Wallin, Jaakko Jarvi, Jeremiah Willcock, Dan Marsden, Eric +Niebler, Joao Abecasis. These people are instrumental in the design and +development of Fusion. + +[endsect] + diff --git a/doc/algorithms.qbk b/doc/algorithms.qbk new file mode 100644 index 00000000..519b8087 --- /dev/null +++ b/doc/algorithms.qbk @@ -0,0 +1,2415 @@ +[section Algorithms] +[heading Lazy Evaluation] + +Unlike __mpl__, Fusion algorithms are lazy and non sequence-type +preserving. What does that mean? It means that when you operate on a +sequence through a Fusion algorithm that returns a sequence, the sequence +returned may not be of the same class as the original. This is by design. +Runtime efficiency is given a high priority. Like __mpl__, and unlike +__stl__, fusion algorithms are functional in nature such that algorithms +are non mutating (no side effects). However, due to the high cost of +returning full sequences such as vectors and lists, /Views/ are returned +from Fusion algorithms instead. For example, the __transform__ algorithm +does not actually return a transformed version of the original sequence. +__transform__ returns a __transform_view__. This view holds a reference to +the original sequence plus the transform function. Iteration over the +__transform_view__ will apply the transform function over the sequence +elements on demand. This /lazy/ evaluation scheme allows us to chain as +many algorithms as we want without incurring a high runtime penalty. + +[heading Sequence Extension] + +The /lazy/ evaluation scheme where __algorithms__ return __views__ also +allows operations such as __push_back__ to be totally generic. In Fusion, +__push_back__ is actually a generic algorithm that works on all sequences. +Given an input sequence `s` and a value `x`, Fusion's __push_back__ +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. +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. + +[heading Header] + #include + +[section Concepts] + +[section Polymorphic Function Object] + +[heading Description] + +A type of function object with a nested metafunction `result`. `result` +returns the result type of calling the function object, given the argument +types. + +[variablelist Notation + [[`F`][A Polymorphic Function Object type]] + [[`f`][A Polymorphic Function Object]] + [[`T1 ...TN`][Arbitrary types]] + [[`t1 ...tN`][Objects with types `T1 ...TN`]] +] + +[heading Refinement of] +__mpl_metafunction_class__ + +[heading Expression requirements] + +[table + [[Expression][Return Type][Runtime Complexity]] + [[`f(t1, ...tN)`][`F::result::type`][Unspecified]] +] + +[endsect] + +[endsect] + +[section Iteration] + +The iteration algorithms provide the fundamental algorithms for traversing +a sequence repeatedly applying an operation to its elements. + +[heading Header] + #include + +[section Functions] + +[section fold] + +[heading Description] +Repeatedly applies binary __poly_func_obj__ `f` to each element of a sequence and the previous state. + +[heading Synopsis] + template< + typename Sequence, + typename State, + typename F + > + typename __result_of_fold__::type fold( + Sequence& seq, State const& initial_state, F const& f); + +[table Parameters + [[Parameter][Requirement][Description]] + [[`seq`][A model of __forward_sequence__,`f(e)` must be a valid expression for each element `e` in `seq`][Operation's argument]] + [[`initial_state`][Any type][Initial state]] + [[`f`][A model of binary __poly_func_obj__][Operation's argument]] +] + +[heading Expression Semantics] + fold(seq, initial_state, f); + +[*Return type]: Any type + +[*Semantics]: Equivalent to `f(eN ....f(e2,f(e1,initial_state)))` where `e1 ...eN` are the elements of `seq`. + +[heading Complexity] +Linear, exactly `__result_of_size__::value` applications of `f`. + +[heading Header] + #include + +[heading Example] + struct make_string + { + template + struct apply + { + typedef std::string type; + }; + + template + std::string operator()(const T& t, const std::string& str) const + { + return str + boost::lexical_cast(t); + } + }; + ... + const __vector__ vec(1,2); + assert(__fold__(vec,std::string(""), make_string()) == "12"); + +[endsect] + +[section accumulate] + +[heading Description] +Repeatedly applies binary __poly_func_obj__ `f` to each element of a sequence and the previous state. +__accumulate__ is equivalent to __fold__. + +[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(eN ....f(e2,f(e1,initial_state)))` must be a valid expression for each element `e1` to `eN` in `seq`][Operation's argument]] + [[`initial_state`][Any type][Initial state]] + [[`f`][A model of binary __poly_func_obj__][Operation's argument]] +] + +[heading Expression Semantics] + accumulate(seq, initial_state, f); + +[*Return type]: Any type + +[*Semantics]: Equivalent to `f(eN ....f(e2,f(e1,initial_state)))` where `e1 ...eN` are the elements of `seq`. + +[heading Complexity] +Linear, exactly `__result_of_size__::value` applications of `f`. + +[heading Header] + #include + +[heading Example] + struct make_string + { + template + struct apply + { + typedef std::string type; + }; + + template + std::string operator()(const T& t, const std::string& str) const + { + return str + boost::lexical_cast(t); + } + }; + ... + const __vector__ vec(1,2); + assert(__accumulate__(vec,std::string(""), make_string()) == "12"); + +[endsect] + +[section for_each] + +[heading Description] +Applies a unary function object to each element of a sequence. + +[heading Synopsis] + template< + typename Sequence, + typename F + > + typename __result_of_for_each__::type for_each( + Sequence& seq, F const& f); + +[table Parameters + [[Parameter][Requirement][Description]] + [[`seq`][A model of __forward_sequence__, `f(e)` must be a valid expression for each element `e` in `seq`][Operation's argument]] + [[`f`][A unary function object][Operation's argument]] +] + +[heading Expression Semantics] + __for_each__(seq, f); + +[*Return type]: `void` + +[*Semantics]: Calls `f(e)` for each element `e` in `seq`. + +[heading Complexity] +Linear, exactly `__result_of_size__::value` applications of `f`. + +[heading Header] + #include + +[heading Example] + struct increment + { + template + void operator()(T& t) const + { + ++t; + } + }; + ... + __vector__ vec(1,2); + __for_each__(vec, increment()); + assert(vec == __make_vector__(2,3)); + +[endsect] + +[endsect] + +[section Metafunctions] + +[section fold] + +[heading Description] +Returns the result type of __fold__. + +[heading Synopsis] + template< + typename Sequence, + typename State, + typename F> + struct fold + { + 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`] [A model of binary __poly_func_obj__] [The operation to be applied on forward traversal]] +] + +[heading Expression Semantics] + __result_of_fold__::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 __poly_func_obj__ of type `F`. + +[heading Complexity] +Linear, exactly `__result_of_size__::value` applications of `F`. + +[heading Header] + #include + +[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`] [A model of binary __poly_func_obj__] [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 __poly_func_obj__ of type `F`. + +[heading Complexity] +Linear, exactly `__result_of_size__::value` applications of `F`. + +[heading Header] + #include + +[endsect] + +[section for_each] +A metafunction returning the result type of applying __for_each__ to a sequence. The +return type of __for_each__ is always `void`. + +[heading Description] + +[heading Synopsis] + template< + typename Sequence, + typename F + > + struct for_each + { + typedef void type; + }; + +[table Parameters + [[Parameter] [Requirement] [Description]] + [[`Sequence`] [A model of __forward_sequence__] [Operation's argument]] + [[`F`] [Any type] [Operation's argument]] +] + +[heading Expression Semantics] + __result_of_for_each__::type + +[*Return type]: `void`. + +[*Semantics]: Returns the return type of __for_each__ for a sequence of type `Sequence` and a unary function object `F`. +The return type is always `void`. + +[heading Complexity] +Constant. + +[heading Header] + #include + +[endsect] + +[endsect] + +[endsect] + +[section Query] +The query algorithms provide support for searching and analyzing sequences. + +[heading Header] + #include + +[section Functions] + +[section any] + +[heading Description] +For a sequence `seq` and unary function object `f`, `any` returns true if `f` returns true for at least one element of `seq`. + +[heading Synopsis] + template< + typename Sequence, + typename F + > + typename __result_of_any__::type any( + Sequence const& seq, F f); + +[table Parameters + [[Parameter][Requirement][Description]] + [[`seq`][A model of __forward_sequence__, `f(e)` must be a valid expression, convertible to `bool`, for each element `e` in `seq`][The sequence to search]] + [[`f`][A unary function object][The search predicate]] +] + +[heading Expression semantics] + __any__(seq, f); + +[*Return type]: `bool` + +[*Semantics]: Returns true if and only if `f(e)` evaluates to `true` for some element `e` in `seq`. + +[heading Complexity] +Linear. At most `__result_of_size__::value` comparisons. + +[heading Header] + #include + +[heading Example] + struct odd + { + template + bool operator()(T t) const + { + return t % 2; + } + }; + ... + assert(__any__(__make_vector__(1,2), odd())); + assert(!__any__(__make_vector__(2,4), odd())); + +[endsect] + +[section all] + +[heading Description] +For a sequence `seq` and unary function object `f`, `all` returns true if `f` returns true for every element of `seq`. + +[heading Synopsis] + template< + typename Sequence, + typename F + > + typename __result_of_all__::type all( + Sequence const& seq, F f); + +[table Parameters + [[Parameter][Requirement][Description]] + [[`seq`][A model of __forward_sequence__, `f(e)` is a valid expression, convertible to `bool`, for every element `e` in `seq`][The sequence to search]] + [[`f`][A unary function object][The search predicate]] +] + +[heading Expression Semantics] + __all__(seq, f); + +[*Return type]: `bool` + +[*Semantics]: Returns true if and only if `f(e)` evaluates to `true` for every element `e` in `seq`. + +[heading Complexity] +Linear. At most `__result_of_size__::value` comparisons. + +[heading Header] + #include + +[heading Example] + struct odd + { + template + bool operator()(T t) const + { + return t % 2; + } + }; + ... + assert(__all__(__make_vector__(1,3), odd())); + assert(!__all__(__make_vector__(1,2), odd())); + +[endsect] + +[section none] + +[heading Description] +For a sequence `seq` and unary function object `f`, `none` returns true if `f` returns false for every element of `seq`. + +[heading Synopsis] + template< + typename Sequence, + typename F + > + typename __result_of_none__::type none( + Sequence const& seq, F f); + +[table Parameters + [[Parameter][Requirement][Description]] + [[`seq`][A model of __forward_sequence__, `f(e)` is a valid expression, convertible to `bool`, for every element `e` in `seq`][The sequence to search]] + [[`f`][A unary function object][The search predicate]] +] + +[heading Expression Semantics] + __none__(seq, f); + +[*Return type]: `bool` + +[*Semantics]: Returns true if and only if `f(e)` evaluates to `false` for every element `e` in `seq`. Result equivalent to `!any(seq, f)`. + +[heading Complexity] +Linear. At most `__result_of_size__::value` comparisons. + +[heading Header] + #include + +[heading Example] + struct odd + { + template + bool operator()(T t) const + { + return t % 2; + } + }; + ... + assert(__none__(__make_vector__(2,4), odd())); + assert(!__none__(__make_vector__(1,2), odd())); + +[endsect] + +[section find] + +[heading Description] +Finds the first element of a given type within a sequence. + +[heading Synopsis] + template< + typename Sequence, + typename T + > + __unspecified__ find(Sequence const& seq); + + template< + typename Sequence, + typename T + > + __unspecified__ find(Sequence& seq); + +[table Parameters + [[Parameter][Requirement][Description]] + [[`seq`][A model of __forward_sequence__][The sequence to search]] + [[`T`][Any type][The type to search for]] +] + +[heading Expression Semantics] + __find__(seq) + +[*Return type]: A model of the same iterator category as the iterators of `seq`. + +[*Semantics]: Returns an iterator to the first element of `seq` of type `T`, or `__end__(seq)` if there is no such element. +Equivalent to `__find_if__ >(seq)` + +[heading Complexity] +Linear. At most `__result_of_size__::value` comparisons. + +[heading Header] + #include + +[heading Example] + const __vector__ vec('a','0'); + assert(*__find__(vec) == '0'); + assert(__find__(vec) == __end__(vec)); + +[endsect] + +[section find_if] +Finds the first element within a sequence with a type for which a given __mpl_lambda_expression__ evaluates to +`boost::mpl::true_`. + +[heading Description] + +[heading Synopsis] + template< + typename Sequence, + typename F + > + __unspecified__ find_if(Sequence const& seq); + + template< + typename Sequence, + typename F + > + __unspecified__ find_if(Sequence& seq); + +[table Parameters + [[Parameter][Requirement][Description]] + [[`seq`][A model of __forward_sequence__][The sequence to search]] + [[`F`][A unary __mpl_lambda_expression__][The search predicate]] +] + +[heading Expression Semantics] + __find_if__(seq) + +[*Return type]: An iterator of the same iterator category as the iterators of `seq`. + +[*Semantics]: Returns the first element of `seq` for which __mpl_lambda_expression__ `F` evaluates to `boost::mpl::true_`, +or `__end__(seq)` if there is no such element. + +[heading Complexity] +Linear. At most `__result_of_size__::value` comparisons. + +[heading Header] + #include + +[heading Example] + const __vector__ vec(1.0,2); + assert(*__find_if__ >(vec) == 2); + assert(__find_if__ >(vec) == __end__(vec)); + +[endsect] + +[section count] + +[heading Description] +Returns the number of elements of a given type within a sequence. + +[heading Synopsis] + template< + typename Sequence, + typename T + > + typename __result_of_count__::type count( + Sequence const& seq, T const& t); + +[table Parameters + [[Parameter][Requirement][Description]] + [[`seq`][A model of __forward_sequence__, `e == t` must be a valid expression, convertible to `bool`, for each element `e` in `seq`][The sequence to search]] + [[`T`][Any type][The type to count]] +] + +[heading Expression Semantics] + __count__(seq, t); + +[*Return type]: `int` + +[*Semantics]: Returns the number of elements of type `T` and equal to `t` in `seq`. + +[heading Complexity] +Linear. At most `__result_of_size__::value` comparisons. + +[heading Header] + #include + +[heading Example] + const __vector__ vec(1.0,2,3); + assert(__count__(vec,2) == 1); + +[endsect] + +[section count_if] + +[heading Description] +Returns the number of elements within a sequence with a type for which a given unary function object evaluates to +`true`. + +[heading Synopsis] + template< + typename Sequence, + typename F + > + typename __result_of_count_if__::type count_if( + Sequence const& seq, F f); + +[table Parameters + [[Parameter][Requirement][Description]] + [[`seq`][A model of __forward_sequence__, `f(e)` is a valid expression, convertible to `bool`, for each element `e` in `seq`][The sequence to search]] + [[`f`][A unary function object][The search predicate]] +] + +[heading Expression Semantics] + __count_if__(seq, f) + +[*Return type]: `int` + +[*Semantics]: Returns the number of elements in `seq` where `f` evaluates to `true`. + +[heading Complexity] +Linear. At most `__result_of_size__::value` comparisons. + +[heading Header] + #include + +[heading Example] + const __vector__ vec(1,2,3); + assert(__count_if__(vec,odd()) == 2); + +[endsect] + +[endsect] + +[section Metafunctions] + +[section any] + +[heading Description] +A metafunction returning the result type of __any__. + +[heading Synopsis] + template< + typename Sequence, + typename F + > + struct any + { + typedef bool type; + }; + +[table Parameters + [[Parameter] [Requirement] [Description]] + [[`Sequence`] [A model of __forward_sequence__] [Operation's argument]] + [[`F`] [A model of unary __poly_func_obj__] [Operation's argument]] +] + +[heading Expression Semantics] + __result_of_any__::type + +[*Return type]: `bool`. + +[*Semantics]: Returns the return type of __any__ given a sequence of type `Sequence` and a unary __poly_func_obj__ of type `F`. The return type is always `bool`. + +[heading Complexity] +Constant. + +[heading Header] + #include + +[endsect] + +[section all] + +[heading Description] +A metafunction returning the result type of __all__. + +[heading Synopsis] + template< + typename Sequence, + typename F + > + struct all + { + typedef bool type; + }; + +[table Parameters + [[Parameter] [Requirement] [Description]] + [[`Sequence`] [A model of __forward_sequence__] [Operation's argument]] + [[`F`] [A model of unary __poly_func_obj__] [Operation's argument]] +] + +[heading Expression Semantics] + __result_of_all__::type + +[*Return type]: `bool`. + +[*Semantics]: Returns the return type of __all__ given a sequence of type `Sequence` and a unary __poly_func_obj__ of type `F`. The return type is always `bool`. + +[heading Complexity] +Constant. + +[heading Header] + #include + +[endsect] + +[section none] + +[heading Description] +A metafunction returning the result type of __none__. + +[heading Synopsis] + template< + typename Sequence, + typename F + > + struct none + { + typedef bool type; + }; + +[table Parameters + [[Parameter] [Requirement] [Description]] + [[`Sequence`] [A model of __forward_sequence__] [Operation's argument]] + [[`F`] [A model of unary __poly_func_obj__] [Operation's argument]] +] + +[heading Expression Semantics] + __result_of_none__::type + +[*Return type]: `bool`. + +[*Semantics]: Returns the return type of __none__ given a sequence of type `Sequence` and a unary __poly_func_obj__ of type `F`. The return type is always `bool`. + +[heading Complexity] +Constant. + +[heading Header] + #include + +[endsect] + +[section find] + +[heading Description] +Returns the result type of `find`, given the sequence and search types. + +[heading Synopsis] + template< + typename Sequence, + typename T + > + struct find + { + typedef __unspecified__ type; + }; + +[table Parameters + [[Parameter] [Requirement] [Description]] + [[`Sequence`] [Model of __forward_sequence__] [Operation's argument]] + [[`T`] [Any type] [Operation's argument]] +] + +[heading Expression Semantics] + __result_of_find__::type + +[*Return type]: A model of the same iterator category as the iterators of `Sequence`. + +[*Semantics]: Returns an iterator to the first element of type `T` in `Sequence`, or `__result_of_end__::type` if there is no such element. + +[heading Complexity] +Linear, at most `__result_of_size__::value` comparisons. + +[heading Header] + #include + +[endsect] + +[section find_if] + +[heading Description] +Returns the result type of `find_if` given the sequence and predicate types. + +[heading Synopsis] + template< + typename Sequence, + typename Pred + > + struct find_if + { + typedef __unspecified__ type; + }; + +[table Parameters + [[Parameter] [Requirement] [Description]] + [[`Sequence`] [A model of __forward_sequence__] [Operation's argument]] + [[`Pred`] [A model of __mpl_lambda_expression__] [Operation's arguments]] +] + +[heading Expression Semantics] + __result_of_find_if__::type + +[*Return type]: A model of the same iterator category as the iterators of `Sequence`. + +[*Semantics]: Returns an iterator to the first element in `Sequence` for which `Pred` evaluates to true. Returns `__result_of_end__::type` if there is no such element. + +[heading Complexity] +Linear. At most `__result_of_size__::value` comparisons. + +[heading Header] + #include + +[endsect] + +[section count] + +[heading Description] +A metafunction that returns the result type of `count` given the sequence and search types. + +[heading Synopsis] + template< + typename Sequence, + typename T + > + struct count + { + typedef int type; + }; + +[table Parameters + [[Parameter] [Requirement] [heading Description]] + [[`Sequence`] [A model of __forward_sequence__] [Operation's argument]] + [[`T`] [Any type] [Operation's argument]] +] + +[heading Expression Semantics] + __result_of_count__::type + +[*Return type]: `int`. + +[*Semantics]: Returns the return type of __count__. The return type is always `int`. + +[heading Complexity] +Constant. + +[heading Header] + #include + +[endsect] + +[section count_if] + +[heading Description] +A metafunction that returns the result type of `count_if` given the sequence and predicate types. + +[heading Synopsis] + template< + typename Sequence, + typename Pred + > + struct count_if + { + typedef int type; + }; + +[table Parameters + [[Parameter] [Requirement] [Description]] + [[`Sequence`] [A model of __forward_sequence__] [Operation's argument]] + [[`Pred`] [A unary function object] [Operation's argument]] +] + +[heading Expression Semantics] + __result_of_count_if__::type + +[*Return type]: `int`. + +[*Semantics]: Returns the return type of __count_if__. The return type is always `int`. + +[heading Complexity] +Constant. + +[heading Header] + #include + +[endsect] + +[endsect] + +[endsect] + +[section Transformation] +The transformation algorithms create new sequences out of existing sequences by performing some sort of transformation. In reality the new sequences are views onto the data in the original sequences. + +[note As the transformation algorithms return views onto their input arguments, +it is important that the lifetime of the input arguments is greater than the +period during which you wish to use the results.] + +[heading Header] + #include + +[section Functions] + +[section filter] + +[heading Description] +For a given sequence, filter returns a new sequences containing only the elements of a specified type. + +[heading Synopsis] + template< + typename T, + typename Sequence + > + typename __result_of_filter__::type filter(Sequence const& seq); + +[table Parameters + [[Parameter][Requirement][Description]] + [[`seq`][A model of __forward_sequence__][Operation's argument]] + [[`T`][Any type][The type to retain]] +] + +[heading Expression Semantics] + __filter__(seq); + +[*Return type]: A model of __forward_sequence__. + +[*Semantics]: Returns a sequence containing all the elements of `seq` of type `T`. +Equivalent to `__filter_if__ >(seq)`. + +[heading Complexity] +Constant. Returns a view which is lazily evaluated. + +[heading Header] + #include + +[heading Example] + const __vector__ vec(1,2,3,4); + assert(__filter__(vec) == __make_vector__(1,2)); + +[endsect] + +[section filter_if] + +[heading Description] +For a given sequence, __filter_if__ returns a new sequences containing +only the elements with types for which a given __mpl_lambda_expression__ evaluates to `boost::mpl::true_`. + +[heading Synopsis] + template< + typename Pred, + typename Sequence + > + typename __result_of_filter_if__::type filter_if(Sequence const& seq); + +[table Parameters + [[Parameter][Requirement][Description]] + [[`seq`][A model of __forward_sequence__][Operation's argument]] + [[`Pred`][A unary __mpl_lambda_expression__][The predicate to filter by]] +] + +[heading Expression Semantics] + __filter_if__(seq); + +[*Return type]: A model of __forward_sequence__. + +[*Semantics]: Returns a sequence containing all the elements of `seq` with types for which `Pred` evaluates +to `boost::mpl::true_`. The order of the retained elements is the same as in the original sequence. + +[heading Complexity] +Constant. Returns a view which is lazily evaluated. + +[heading Header] + #include + +[heading Example] + const __vector__ vec(1,2,3.0,4.0); + assert(__filter_if__ >(vec) == __make_vector__(1,2)); + +[endsect] + +[section transform] + +[heading Description] +For a sequence `seq` and __poly_func_obj__ `F`, `transform` returns a new sequence +with elements created by applying `F` to each element of `seq`. + +[heading Unary version synopsis] + template< + typename Sequence, + typename F + > + typename __result_of_transform__::type transform( + Sequence const& seq, F f); + +[table Parameters + [[Parameter][Requirement][Description]] + [[`seq`][A model of __forward_sequence__][Operation's argument]] + [[`f`][A model of unary __poly_func_obj__ where `f(e)` is a valid expression for each element `e` of `seq`][Transformation function]] +] + +[heading Expression Semantics] + __transform__(seq, f); + +[*Return type]: A model of __forward_sequence__ + +[*Semantics]: Returns a new sequence, containing the return values of `f(e)` for each element `e` within `seq`. + +[heading Binary version synopsis] + template< + typename Sequence1, + typename Sequence2, + typename F + > + typename __result_of_transform__::type transform( + Sequence1 const& seq1, Sequence2 const& seq2, F f); + +[table Parameters + [[Parameter][Requirement][Description]] + [[`seq1`][A model of __forward_sequence__][Operation's argument]] + [[`seq2`][A model of __forward_sequence__][Operation's argument]] + [[`f`][A model of binary __poly_func_obj__ where `f(e1, e2)` is a valid expression for each pair of elements `e1` and `e2` of `seq1` and `seq2` respectively][Transformation function]] +] + +[*Return type]: A model of __forward_sequence__. + +[*Semantics]: Returns a new sequence, containing the return values of `f(e1, e2)` for each pair of elements `e1` and `e2` within `seq1` and `seq2` respectively. + +[heading Complexity] +Constant. Returns a view which is lazily evaluated. + +[heading Header] + #include + +[heading Example] + struct triple + { + template + struct apply + { + typedef T type; + }; + + template + T operator()(T t) const + { + return t * 3; + }; + }; + ... + assert(__transform__(__make_vector__(1,2,3), triple()) == __make_vector__(3,6,9)); + +[endsect] + +[section replace] + +[heading Description] +Replaces each value within a sequence of a given type and value with a new value. + +[heading Synopsis] + template< + typename Sequence, + typename T + > + typename __result_of_replace__::type replace( + Sequence const& seq, T const& old_value, T const& new_value); + +[table Parameters + [[Parameter][Requirement][Description]] + [[`seq`][A model of __forward_sequence__, `e == old_value` is a valid expression, convertible to `bool`, for each element `e` in `seq` with type convertible to `T`][Operation's argument]] + [[`old_value`][Any type][Value to replace]] + [[`new_value`][Any type][Replacement value]] +] + +[heading Expression Semantics] + __replace__(seq, old_value, new_value); + +[*Return type]: A model of __forward_sequence__. + +[*Semantics]: Returns a new sequence with all the values of `seq` with `new_value` assigned to elements with the same type and equal to `old_value`. + +[heading Complexity] +Constant. Returns a view which is lazily evaluated. + +[heading Header] + #include + +[heading Example] + assert(__replace__(__make_vector__(1,2), 2, 3) == __make_vector__(1,3)); + +[endsect] + +[section replace_if] + +[heading Description] +Replaces each element of a given sequence for which an unary function object evaluates to `true` replaced with +a new value. + +[heading Synopsis] + template< + typename Sequence, + typename F, + typename T> + typename __result_of_replace_if__::type replace_if( + Sequence const& seq, F f, T const& new_value); + +[table Parameters + [[Parameter][Requirement][Description]] + [[`seq`][A model of __forward_sequence__][Operation's argument]] + [[`f`][A function object for which `f(e)` is a valid expression, convertible to `bool`, for each element `e` in `seq`][Operation's argument]] + [[`new_value`][Any type][Replacement value]] +] + +[heading Expression Semantics] + __replace_if__(seq, f, new_value); + +[*Return type]: A model of __forward_sequence__. + +[*Semantics]: Returns a new sequence with all the elements of `seq`, +with `new_value` assigned to each element for which `f` evaluates to `true`. + +[heading Complexity] +Constant. Returns a view which is lazily evaluated. + +[heading Header] + #include + +[heading Example] + struct odd + { + template + bool operator()(T t) const + { + return t % 2; + } + }; + ... + assert(__replace_if__(__make_vector__(1,2), odd(), 3) == __make_vector__(3,2)); + +[endsect] + +[section remove] + +[heading Description] +Returns a new sequence, with all the elements of the original sequence, except those of a given type. + +[heading Synopsis] + template< + typename T, + typename Sequence + > + typename __result_of_remove__::type replace(Sequence const& seq); + +[table Parameters + [[Parameter][Requirement][Description]] + [[`seq`][A model of __forward_sequence__][Operation's argument]] + [[`T`][Any type][Type to remove]] +] + +[heading Expression Semantics] + __remove__(seq); + +[*Return type]: A model of __forward_sequence__. + +[*Semantics]: Returns a new sequence, containing all the elements of `seq`, in their original order, except +those of type `T`. Equivalent to `__remove_if__ >(seq)`. + +[heading Complexity] +Constant. Returns a view which is lazily evaluated. + +[heading Header] + #include + +[heading Example] + const __vector__ vec(1,2.0); + assert(__remove__(vec) == __make_vector__(1)); + +[endsect] + +[section remove_if] + +[heading Description] +Returns a new sequence, containing all the elements of the original except those where a given unary +function object evaluates to `true`. + +[heading Synopsis] + template< + typename Pred, + typename Sequence + > + typename __result_of_remove_if__::type remove_if(Sequence const& seq); + +[table Parameters + [[Parameter][Requirement][Description]] + [[`seq`][A model of __forward_sequence__][Operation's argument]] + [[`Pred`][A model of unary __mpl_lambda_expression__][Removal predicate]] +] + +[heading Expression Semantics] + __remove_if__(seq); + +[*Return type]: A model of __forward_sequence__. + +[*Semantics]: Returns a new sequence, containing all the elements of `seq`, in their original order, except +those elements with types for which `Pred` evaluates to `boost::mpl::true_`. +Equivalent to `__filter__ >(seq)`. + +[heading Complexity] +Constant. Returns a view which is lazily evaluated. + +[heading Header] + #include + +[heading Example] + const __vector__ vec(1,2.0); + assert(__remove_if__ >(vec) == __make_vector__(1)); + +[endsect] + +[section reverse] + +[heading Description] +Returns a new sequence with the elements of the original in reverse order. + +[heading Synposis] + template< + typename Sequence + > + typename __result_of_reverse__::type reverse(Sequence const& seq); + +[table Parameters + [[Parameter][Requirement][Description]] + [[`seq`][A model of __bidirectional_sequence__][Operation's argument]] +] + +[heading Expression Semantics] + __reverse__(seq); + +[*Return type]: A model of __bidirectional_sequence__. + +[*Semantics]: Returns a new sequence containing all the elements of `seq` in reverse order. + +[heading Complexity] +Constant. Returns a view which is lazily evaluated. + +[heading Header] + #include + +[heading Example] + assert(__reverse__(__make_vector__(1,2,3)) == __make_vector__(3,2,1)); + +[endsect] + +[section clear] + +[heading Description] +__clear__ returns an empty sequence. + +[heading Synposis] + template< + typename Sequence + > + typename __result_of_clear__::type clear(Sequence const& seq); + +[table Parameters + [[Parameter][Requirement][Description]] + [[`seq`][A model of __forward_sequence__][Operation's argument]] +] + +[heading Expression Semantics] + __clear__(seq); + +[*Return type]: A model of __forward_sequence__. + +[*Expression Semantics]: Returns a sequence with no elements. + +[heading Complexity] +Constant. + +[heading Header] + #include + +[heading Example] + assert(__clear__(__make_vector__(1,2,3)) == __make_vector__()); + +[endsect] + +[section erase] + +[heading Description] +Returns a new sequence, containing all the elements of the original except those at a specified iterator, or +between two iterators. + +[heading Synposis] + template< + typename Sequence, + typename First + > + typename __result_of_erase__::type erase( + Sequence const& seq, First const& it1); + + template< + typename Sequence, + typename First, + typename Last + > + typename __result_of_erase__::type erase( + Sequence const& seq, First const& it1, Last const& it2); + +[table Parameters + [[Parameters][Requirement][Description]] + [[`seq`][A model of __forward_sequence__][Operation's argument]] + [[`it1`][A model of __forward_iterator__][Iterator into `seq`]] + [[`it2`][A model of __forward_iterator__][Iterator into `seq` after `it1`]] +] + +[heading Expression Semantics] + __erase__(seq, pos); + +[*Return type]: A model of __forward_sequence__. + +[*Semantics]: Returns a new sequence, containing all the elements of `seq` except the element at `pos`. + + __erase__(seq, first, last); + +[*Return type]: A model of __forward_sequence__. + +[*Semantics]: Returns a new sequence, with all the elements of `seq`, in their original order, except those +in the range [`first`,`last`). + +[heading Complexity] +Constant. Returns a view which is lazily evaluated. + +[heading Header] + #include + +[heading Example] + const __vector__ vec(1, 2.0, 'c'); + assert(__erase__(vec, __next__(__begin__(vec))) == __make_vector__(1, 'c')); + assert(__erase__(vec, __next__(__begin__(vec)), __end__(vec)) == __make_vector__(1)); + +[endsect] + +[section erase_key] + +[heading Description] +For an __associative_sequence__ `seq`, returns a __forward_sequence__ containing all the +elements of the original except those with a given key. + +[heading Synposis] + template< + typename Key, + typename Sequence + > + typename result_of::erase_key::type erase_key(Sequence const& seq); + +[table Parameters + [[Parameter][Requirement][Description]] + [[`seq`][A model of __associative_sequence__][Operation's argument]] + [[`Key`][Any type][Key to erase]] +] + +[heading Expression Semantics] + __erase_key__(seq); + +[*Return type]: A model of __forward_sequence__. + +[*Semantics]: Returns a new sequence, containing all the elements of `seq`, except those with key `Key`. + +[heading Complexity] +Constant. Returns a view which is lazily evaluated. + +[heading Header] + #include + +[heading Example] + assert(__erase_key__(__make_map__('a', 'b')) == __make_map__('b')); + +[endsect] + +[section insert] + +[heading Description] +Returns a new sequence with all the elements of the original, an a new element inserted the +position described by a given iterator. + +[heading Synposis] + template< + typename Sequence, + typename Pos, + typename T + > + __unspecified__ insert(Sequence const& seq, Pos const& pos, T const& t); + +[table Parameters + [[Parameter][Requirement][Description]] + [[`seq`][A model of __forward_sequence__][Operation's argument]] + [[`pos`][A model of __forward_iterator__][The position to insert at]] + [[`t`][Any type][The value to insert]] +] + +[heading Expression Semantics] + __insert__(seq, p, t); + +[*Return type]: A model of __forward_sequence__. + +[*Semantics]: Returns a new sequence, containing all the elements of `seq`, in their original order, and a new element with the +type and value of `t` inserted at iterator `pos`. + +[heading Complexity] +Constant. Returns a view which is lazily evaluated. + +[heading Header] + #include + +[heading Example] + const __vector__ vec(1,2); + assert(__insert__(vec, __next__(__begin__(vec)), 3) == __make_vector__(1,3,2)); + +[endsect] + +[section insert_range] + +[heading Description] +Returns a new sequence with another sequence inserted at a specified iterator. + +[heading Synposis] + template< + typename Sequence, + typename Pos, + typename Range + > + typename __result_of_insert_range__::type insert_range( + Sequence const& seq, Pos const& pos, Range const& range); + +[table Parameters + [[Parameter][Requirement][Description]] + [[`seq`][A model of __forward_sequence__][Operation's argument]] + [[`pos`][A model of __forward_iterator__][The position to insert at]] + [[`range`][A model of __forward_sequence__][Range to insert]] +] + +[heading Expression Semantics] + __insert__(seq, pos, range); + +[*Return type]: A model of __forward_sequence__. + +[*Semantics]: Returns a new sequence, containing all the elements of `seq`, and the elements of +`range` inserted at iterator `pos`. All elements retaining their ordering from the orignal sequences. + +[heading Complexity] +Constant. Returns a view which is lazily evaluated. + +[heading Header] + #include + +[heading Example] + const __vector__ vec(1,2); + assert(__insert_range__(vec, __next__(__begin__(vec)), __make_vector__(3,4)) == __make_vector__(1,3,4,2)); + +[endsect] + +[section join] + +[heading Description] +Takes 2 sequences and returns a sequence containing the elements of the first followed by the elements of the second. + +[heading Synopsis] + template< + typename LhSequence, + typename RhSequence> + typename __result_of_join__::type join(LhSequence const& lhs, RhSequence const& rhs); + +[table Parameters + [[Parameter][Requirement][Description]] + [[`lhs`][A model of __forward_sequence__][Operation's argument]] + [[`rhs`][A model of __forward_sequence__][Operation's argument]] +] + +[heading Expression Semantics] + __join__(lhs, rhs); + +[*Return type]: A model of __forward_sequence__. + +[*Semantics]: Returns a sequence containing all the elements of `lhs` followed by all the elements of `rhs`. The order of th elements is preserved. + +[heading Complexity] +Constant. Returns a view which is lazily evaluated. + +[heading Header] + #include + +[heading Example] + __vector__ v1(1, 'a'); + __vector__ v2(2, 'b'); + assert(__join__(v1, v2) == __make_vector__(1,'a',2,'b')); + +[endsect] + +[section zip] + +[heading Description] +Zips sequences together to form a single sequence, whos members are tuples of the members of the component sequences. + +[heading Synopsis] + template< + typename Sequence1, + typename Sequence2, + ... + typename SequenceN + > + typename __result_of_zip__::type + zip(Sequence1 const& seq1, Sequence2 const& seq2, ... SequenceN const& seqN); + +[table Parameters + [[Parameter][Requirement][Description]] + [[`seq1` to `seqN`][Each sequence is a model of __forward_sequence__.][Operation's argument]] +] + +[heading Expression Semantics] + __zip__(seq1, seq2, ... seqN); + +[*Return type]: A model of __forward_sequence__. + +[*Semantics]: Returns a sequence containing tuples of elements from sequences `seq1` to `seqN`. For example, applying zip to tuples `(1, 2, 3)` and `('a', 'b', 'c')` would return `((1, 'a'),(2, 'b'),(3, 'c'))` + +[heading Complexity] +Constant. Returns a view which is lazily evaluated. + +[heading Header] + #include + +[heading Example] + __vector__ v1(1, 'a'); + __vector__ v2(2, 'b'); + assert(__zip__(v1, v2) == __make_vector__(__make_vector__(1, 2),__make_vector__('a', 'b')); + +[endsect] + +[section pop_back] + +[heading Description] +Returns a new sequence, with the last element of the original removed. + +[heading Synopsis] + template< + typename Sequence + > + typename __result_of_pop_back__::type pop_back(Sequence const& seq); + +[table Parameters + [[Parameter][Requirement][Description]] + [[`seq`][A model of __forward_sequence__][Operation's argument]] +] + +[heading Expression Semantics] + __pop_back__(seq); + +[*Return type]: A model of __forward_sequence__. + +[*Semantics]: Returns a new sequence containing all the elements of `seq`, except the last element. The elements in the new sequence are in the same order as they were in `seq`. + +[heading Complexity] +Constant. Returns a view which is lazily evaluated. + +[heading Header] + #include + +[heading Example] + assert(___pop_back__(__make_vector__(1,2,3)) == __make_vector__(1,2)); + +[endsect] + +[section pop_front] + +[heading Description] +Returns a new sequence, with the first element of the original removed. + +[heading Synopsis] + template< + typename Sequence + > + typename __result_of_pop_front__::type pop_front(Sequence const& seq); + + +[table Parameters + [[Parameter][Requirement][Description]] + [[`seq`][A model of __forward_sequence__][Operation's argument]] +] + +[heading Expression Semantics] + __pop_front__(seq); + +[*Return type]: A model of __forward_sequence__. + +[*Semantics]: Returns a new sequence containing all the elements of `seq`, except the first element. The elements in the new sequence are in the same order as they were in `seq`. + +[heading Complexity] +Constant. Returns a view which is lazily evaluated. + +[heading Header] + #include + +[heading Example] + assert(__pop_front__(__make_vector__(1,2,3)) == __make_vector__(2,3)); + +[endsect] + +[section push_back] + +[heading Description] +Returns a new sequence with an element added at the end. + +[heading Synopsis] + template< + typename Sequence, + typename T + > + typename __result_of_push_back__::type push_back( + Sequence const& seq, T const& t); + +[table Parameters + [[Parameter][Requirement][Description]] + [[`seq`][A model of __forward_sequence__][Operation's argument]] + [[`t`][Any type][The value to add to the end]] +] + +[heading Expression Semantics] + __push_back__(seq, t); + +[*Return type]: A model of __forward_sequence__. + +[*Semantics]: Returns a new sequence, containing all the elements of `seq`, and new element `t` appended to the end. The elements are in the same order as they were in `seq`. + +[heading Complexity] +Constant. Returns a view which is lazily evaluated. + +[heading Header] + #include + +[heading Example] + assert(__push_back__(__make_vector__(1,2,3),4) == __make_vector__(1,2,3,4)); + +[endsect] + +[section push_front] + +[heading Description] +Returns a new sequence with an element added at the beginning. + +[heading Synopsis] + template< + typename Sequence, + typename T + > + typename __result_of_push_front__::type push_front( + Sequence const& seq, T const& t); + +[table Parameters + [[Parameter][Requirement][Description]] + [[`seq`][A model of __forward_sequence__][Operation's argument]] + [[`t`][Any type][The value to add to the beginning]] +] + +[heading Expression Semantics] + __push_back__(seq, t); + +[*Return type]: A model of __forward_sequence__. + +[*Semantics]: Returns a new sequence, containing all the elements of `seq`, and new element `t` appended to the beginning. The elements are in the same order as they were in `seq`. + +[heading Complexity] +Constant. Returns a view which is lazily evaluated. + +[heading Header] + #include + +[heading Example] + assert(__push_front__(__make_vector__(1,2,3),0) == __make_vector__(0,1,2,3)); + +[endsect] + +[endsect] + +[section Metafunctions] + +[section filter] + +[heading Description] +Returns the result type of __filter__ given the sequence type and type to retain. + +[heading Synopsis] + template< + typename Sequence, + typename T + > + struct filter + { + typedef __unspecified__ type; + }; + +[table Parameter + [[Parameter] [Requirement] [Description]] + [[`Sequence`][A model of __forward_sequence__] [Operation's argument]] + [[`T`][Any type][Type to retain]] +] + +[heading Expression Semantics] + __result_of_filter__::type + +[*Return type]: A model of __forward_sequence__. + +[*Semantics]: Returns a sequence containing the elements of `Sequence` that are of type `T`. Equivalent to `__result_of_filter_if__ >::type`. + +[heading Complexity] +Constant. + +[heading Header] + #include + +[endsect] + +[section filter_if] + +[heading Description] +Returns the result type of __filter_if__ given the sequence and unary __mpl_lambda_expression__ predicate type. + +[heading Synopsis] + template< + typename Sequence, + typename Pred + > + struct filter_if + { + typedef __unspecified__ type; + }; + +[table Parameter + [[Parameter] [Requirement] [Description]] + [[`Sequence`][A model of __forward_sequence__] [Operation's argument]] + [[`Pred`][A unary __mpl_lambda_expression__][Type to retain]] +] + +[heading Expression Semantics] + __result_of_filter_if__::type + +[*Return type]: A model of __forward_sequence__. + +[*Semantics]: Returns a sequence containing the elements of `Sequence` for which `Pred` evaluates to `boost::mpl::true_`. + +[heading Complexity] +Constant. + +[heading Header] + #include + +[endsect] + +[section transform] + +[heading Description] +Returns the result of type __transform__, given the sequence and __poly_func_obj__ types. + +[heading Synopsis] + template< + typename Sequence, + typename F + > + struct transform + { + typedef __unspecified__ type; + }; + +[table Parameters + [[Parameter] [Requirement] [Description]] + [[`Sequence`] [A model of __forward_sequence__ ][Operation's argument]] + [[`F`] [A model of unary __poly_func_obj__][Transformation function object]] +] + +[heading Expression Semantics] + __result_of_transform__::type + +[*Return type]: A model of __forward_sequence__. + +[*Semantics]: Returns a sequence with values `F::apply::type` for each element type `E` in `Sequence`. + +[heading Complexity] +Constant. + +[heading Header] + #include + +[endsect] + +[section replace] + +[heading Description] +Returns the result type of __replace__, given the types of the input sequence and element to replace. + +[heading Synopsis] + template< + typename Sequence, + typename T + > + struct replace + { + typedef __unspecified__ type; + }; + +[table Parameters + [[Parameter][Requirement][Description]] + [[`Sequence`][A model of __forward_sequence__][Operation's argument]] + [[`T`][Any type][The type of the search and replacement objects]] +] + +[heading Expression Semantics] + __result_of_replace__::type + +[*Return type]: A model of __forward_sequence__. + +[*Semantics]: Returns the return type of __replace__. + +[heading Complexity] +Constant. + +[heading Header] + #include + +[endsect] + +[section replace_if] + +[heading Description] +Returns the result type of __replace_if__, given the types of the sequence, __poly_func_obj__ predicate and replacement object. + +[heading Synopsis] + template< + typename Sequence, + typename F, + typename T> + struct replace_if + { + typedef __unspecified__ type; + }; + +[table Parameters + [[Parameter][Requirement][Description]] + [[`Sequence`][A model of __forward_sequence__][Operation's argument]] + [[`F`][A model of unary __poly_func_obj__][Replacement predicate]] + [[`T`][Any type][The type of the replacement object]] +] + +[heading Expression Semantics] + __result_of_replace_if__::type + +[*Return type]: A model of __forward_sequence__. + +[*Semantics]: Returns the return type of __replace_if__. + +[heading Complexity] +Constant. + +[heading Header] + #include + +[endsect] + +[section remove] + +[heading Description] +Returns the result type of __remove__, given the sequence and removal types. + +[heading Synopsis] + template< + typename Sequence, + typename T + > + struct remove + { + typedef __unspecified__ type; + }; + +[table Parameters + [[Parameter][Requirement][Description]] + [[`Sequence`][A model of __forward_sequence__][Operation's argument]] + [[`T`][Any type][Remove elements of this type]] +] + +[heading Expression Semantics] + __result_of_remove__::type + +[*Return type]: A model of __forward_sequence__. + +[*Semantics]: Returns a sequence containing the elements of `Sequence` not of type `T`. Equivalent to `__result_of_replace_if__ >::type`. + +[heading Complexity] +Constant. + +[heading Header] + #include + +[endsect] + +[section remove_if] + +[heading Description] +Returns the result type of __remove_if__, given the input sequence and unary __mpl_lambda_expression__ predicate types. + +[heading Synopsis] + template< + typename Sequence, + typename Pred + > + struct remove_if + { + typedef __unspecified__ type; + }; + +[table Parameters + [[Parameter][Requirement][Description]] + [[`Sequence`][A model of __forward_sequence__][Operation's argument]] + [[`Pred`][A model of unary __mpl_lambda_expression__][Remove elements which evaluate to `boost::mpl::true_`]] +] + +[heading Expression Semantics] + __result_of_remove_if__::type + +[*Return type]: A model of __forward_sequence__. + +[*Semantics]: Returns a sequence containing the elements of `Sequence` for which `Pred` evaluates to `boost::mpl::false_`. + +[heading Complexity] +Constant. + +[heading Header] + #include + +[endsect] + +[section reverse] + +[heading Description] +Returns the result type of __reverse__, given the input sequence type. + +[heading Synopsis] + template< + typename Sequence + > + struct reverse + { + typedef __unspecified__ type; + }; + +[table Parameters + [[Parameter][Requirement][Description]] + [[`Sequence`][A model of __bidirectional_sequence__][Operation's argument]] +] + +[heading Expression Semantics] + __result_of_reverse__::type + +[*Return type]: A model of __bidirectional_sequence__. + +[*Semantics]: Returns a sequence with the elements in the reverse order to `Sequence`. + +[heading Complexity] +Constant. + +[heading Header] + #include + +[endsect] + +[section clear] + +[heading Description] +Returns the result type of __clear__, given the input sequence type. + +[heading Synopsis] + template< + typename Sequence + > + struct clear + { + typedef __unspecified__ type; + }; + +[table Parameters + [[Parameter][Requirement][Description]] + [[`Sequence`][Any type][Operation's argument]] +] + +[heading Expression Semantics] + __result_of_clear__::type + +[*Return type]: A model of __forward_sequence__. + +[*Semantics]: Returns an empty sequence. + +[heading Complexity] +Constant. + +[heading Header] + #include + +[endsect] + +[section erase] +Returns the result type of __erase__, given the input sequence and range delimiting iterator types. + +[heading Description] + +[heading Synopsis] + template< + typename Sequence, + typename It1, + typename It2 = __unspecified__> + struct erase + { + typedef __unspecified__ type; + }; + +[table Parameters + [[Parameter][Requirement][Description]] + [[`Sequence`][A model of __forward_sequence__][Operation's argument]] + [[`It1`][A model of __forward_iterator__][Operation's argument]] + [[`It2`][A model of __forward_iterator__][Operation's argument]] +] + +[heading Expression Semantics] + __result_of_erase__::type + +[*Return type]: A model of __forward_sequence__. + +[*Semantics]: Returns a new sequence with the element at `It1` removed. + + __result_of_erase__::type + +[*Return type]: A model of __forward_sequence__. + +[*Semantics]: Returns a new sequence with the elements between `It1` and `It2` removed. + +[heading Complexity] +Constant. + +[heading Header] + #include + +[endsect] + +[section erase_key] + +[heading Description] +Returns the result type of __erase_key__, given the sequence and key types. + +[heading Synopsis] + template< + typename Sequence, + typename Key + > + struct erase_key + { + typedef __unspecified__ type; + }; + +[table Parameters + [[Parameter][Requirement][Description]] + [[`Sequence`][A model of __associative_sequence__][Operation's argument]] + [[`Key`][Any type][Key type]] +] + +[heading Expression Semantics] + __result_of_erase_key__::type + +[*Return type]: A model of __associative_sequence__. + +[*Semantics]: Returns a sequence with the elements of `Sequence`, except those with key `Key`. + +[heading Complexity] +Constant. + +[heading Header] + #include + +[endsect] + +[section insert] + +[heading Description] +Returns the result type of __insert__, given the sequence, position iterator and insertion types. + +[heading Synopsis] + template< + typename Sequence, + typename Position, + typename T + > + struct insert + { + typedef __unspecified__ type; + }; + +[table Parameters + [[Parameter][Requirement][Description]] + [[`Sequence`][A model of __forward_sequence__][Operation's argument]] + [[`Position`][A model of __forward_iterator__][Operation's argument]] + [[`T`][Any type][Operation's argument]] +] + +[heading Expression Semantics] + __result_of_insert__::type + +[*Return type]: A model of __forward_sequence__. + +[*Semantics]: Returns a sequence with an element of type `T` inserted at position `Position` in `Sequence`. + +[heading Complexity] +Constant. + +[heading Header] + #include + +[endsect] + +[section insert_range] + +[heading Description] +Returns the result type of __insert_range__, given the input sequence, position iterator and insertion range types. + +[heading Synopsis] + template< + typename Sequence, + typename Position, + typename Range + > + struct insert_range + { + typedef __unspecified__ type; + }; + +[table Parameters + [[Parameter][Requirement][Description]] + [[`Sequence`][A model of __forward_sequence__][Operation's argument]] + [[`Position`][A model of __forward_iterator__][Operation's argument]] + [[`Range`][A model of __forward_sequence__][Operation's argument]] +] + +[heading Expression Semantics] + __result_of_insert_range__::type + +[*Return type]: A model of __forward_sequence__. + +[*Semantics]: Returns a sequence with the elements of `Range` inserted at position `Position` into `Sequence`. + +[heading Complexity] +Constant. + +[heading Header] + #include + +[endsect] + +[section join] + +[heading Description] +Returns the result of joining 2 sequences, given the sequence types. + +[heading Synopsis] + template< + typename LhSequence, + typename RhSequence + > + struct join + { + typedef __unspecified__ type; + }; + +[heading Expression Semantics] + __result_of_join__::type + +[*Return type]: A model of __forward_sequence__. + +[*Semantics]: Returns a sequence containing the elements of `LhSequence` followed by the elements of `RhSequence`. The order of the elements in the 2 sequences is preserved. + +[heading Complexity] +Constant. + +[heading Header] + #include + +[endsect] + +[section zip] + +[heading Description] +Zips sequences together to form a single sequence, whos members are tuples of the members of the component sequences. + +[heading Synopsis] + template< + typename Sequence1, + typename Sequence2, + ... + typename SequenceN + > + struct zip + { + typedef __unspecified__ type; + }; + +[heading Expression Semantics] + __result_of_zip__::type + +[*Return type]: A model of the most restrictive traversal category of sequences `Sequence1` to `SequenceN`. + +[*Semantics]: Return a sequence containing tuples of elements from each sequence. For example, applying zip to tuples `(1, 2, 3)` and `('a', 'b', 'c')` would return `((1, 'a'),(2, 'b'),(3, 'c'))` + +[heading Complexity] +Constant. + +[heading Header] + #include + +[endsect] + +[section pop_back] + +[heading Description] +Returns the result type of __pop_back__, given the input sequence type. + +[heading Synopsis] + template< + typename Sequence + > + struct pop_back + { + typedef __unspecified__ type; + }; + +[table Parameters + [[Parameter][Requirement][Description]] + [[`Sequence`][A model of __forward_sequence__][Operation's argument]] +] + +[heading Expression Semantics] + __result_of_pop_back__::type + +[*Return type]: A model of __forward_sequence__. + +[*Semantics]: Returns a sequence with all the elements of `Sequence` except the last element. + +[heading Complexity] +Constant. + +[heading Header] + #include + +[endsect] + +[section pop_front] + +[heading Description] +Returns the result type of __pop_front__, given the input sequence type. + +[heading Synopsis] + template< + typename Sequence + > + struct pop_front + { + typedef __unspecified__ type; + }; + +[table Parameters + [[Parameter][Requirement][Description]] + [[`Sequence`][A model of __forward_sequence__][Operation's argument]] +] + +[heading Expression Semantics] + __result_of_pop_front__::type + +[*Return type]: A model of __forward_sequence__. + +[*Semantics]: Returns a sequence with all the elements of `Sequence` except the first element. + +[heading Complexity] +Constant. + +[heading Header] + #include + +[endsect] + +[section push_back] + +[heading Description] +Returns the result type of __push_back__, given the types of the input sequence and element to push. + +[heading Synopsis] + template< + typename Sequence, + typename T + > + struct push_back + { + typedef __unspecified__ type; + }; + +[table Parameters + [[Parameter][Requirement][Description]] + [[`Sequence`][A model of __forward_sequence__][Operation's argument]] + [[`T`][Any type][Operation's argument]] +] + +[heading Expression Semantics] + __result_of_push_back__::type + +[*Return type]: A model of __forward_sequence__. + +[*Semantics]: Returns a sequence with the elements of `Sequence` and an element of type `T` added to the end. + +[heading Complexity] +Constant. + +[heading Header] + #include + +[endsect] + +[section push_front] + +[heading Description] +Returns the result type of __push_front__, given the types of the input sequence and element to push. + +[heading Synopsis] + template< + typename Sequence, + typename T + > + struct push_front + { + typedef __unspecified__ type; + }; + +[table Parameters + [[Parameter][Requirement][Description]] + [[`Sequence`][A model of __forward_sequence__][Operation's argument]] + [[`T`][Any type][Operation's argument]] +] + +[heading Expression Semantics] + __result_of_push_front__::type + +[*Return type]: A model of __forward_sequence__. + +[*Semantics]: Returns a sequence with the elements of `Sequence` and an element of type `T` added to the beginning. + +[heading Complexity] +Constant. + +[heading Header] + #include + +[endsect] + +[endsect] + +[endsect] + +[endsect] \ No newline at end of file diff --git a/doc/changelog.qbk b/doc/changelog.qbk new file mode 100644 index 00000000..aa030033 --- /dev/null +++ b/doc/changelog.qbk @@ -0,0 +1,3 @@ +[section Change log] +This section summarizes significant changes to the Fusion library. +[endsect] \ No newline at end of file diff --git a/doc/extension.qbk b/doc/extension.qbk new file mode 100644 index 00000000..f422c8fa --- /dev/null +++ b/doc/extension.qbk @@ -0,0 +1,398 @@ +[section Extension] + +The Fusion library is designed to be extensible, new sequences types can easily +be added. In fact, the library support for `std::pair`, `boost::array` and __mpl__ +sequences is entirely provided using the extension mechanism. + +The process for adding a new sequence type to Fusion is: + +# Enable the __tag_dispatching__ mechanism used by Fusion for your sequence type +# Design an iterator type for the sequence +# Provide specialized behaviour for the intrinsic operations of the new Fusion sequence + +[heading Our example] + +In order to illustrate enabling a new sequence type for use with Fusion, we +are going to use the type: + + namespace example + { + struct example_struct + { + std::string name; + int age; + example_struct( + const std::string& n, + int a) + : name(n), age(a) + {} + }; + } + +We are going to pretend that this type has been provided by a 3rd party +library, and therefore cannot be modified. We shall work through all the +necessary steps to enable `example_struct` to serve as an __associative_sequence__ +as described in the __quick_start__ guide. + +[heading Enabling Tag Dispatching] + +The Fusion extensibility mechanism uses __tag_dispatching__ to call the +correct code for a given sequence type. In order to exploit the tag +dispatching mechanism we must first declare a new tag type for the +mechanism to use. For example: + + namespace boost { namespace fusion { + struct example_sequence_tag; // Only definition needed + }} + +Next we need to enable the `traits::tag_of` metafunction to return our newly chosen +tag type for operations involving our sequence. This is done by specializing +`traits::tag_of` for our sequence type. + + #include + + namespace boost { namespace fusion { namespace traits { + + template<> + struct tag_of + { + typedef example_sequence_tag type; + }; + }}} + +`traits::tag_of` also has a second template argument, +that can be used in conjuction with `boost::enable_if` to provide tag +support for whole clases of types. This feature is not necessary +for our sequence, but for an example see the code in: + + #include + +[heading Designing a suitable iterator] + +We need an iterator to describe positions, and provide access to +the data within our sequence. As it is straightforward to do, +we are going to provide a random access iterator in our example. + +We will use a simple design, in which the 2 members of +`example_struct` are given numbered indices, 0 for `name` and +1 for `age` respectively. + + template + struct example_struct_iterator + : iterator_base > + { + BOOST_STATIC_ASSERT(Pos >=0 && Pos < 3); + typedef Struct struct_type; + typedef mpl::int_ index; + typedef random_access_traversal_tag category; + + example_struct_iterator(Struct& str) + : struct_(str) {} + + Struct& struct_; + }; + +A quick summary of the details of our iterator: + +# The iterator is parameterized by the type it is iterating over, and the index of the current element. +# The typedefs `struct_type` and `index` provide convenient access to information we will need later in + the implementation. +# The typedef `category` allows the `traits::__category_of__` metafunction to establish + the traversal category of the iterator. +# The constructor stores a reference to the `example_struct` being iterated over. + +We also need to enable __tag_dispatching__ for our iterator type, with another specialization of +`traits::tag_of`: + + namespace boost { namespace fusion { + struct example_struct_iterator_tag; + + namespace traits + { + template + struct tag_of > + { + typedef example_struct_iterator_tag type; + }; + } + }} + +In isolation, the iterator implementation is pretty dry. Things should become clearer as we +add features to our implementation. + +[heading A first couple of instructive features] + +To start with, we will get the __result_of_value_of__ metafunction working. To +do this, we provide a specialization of the `boost::fusion::extension::value_of_impl` template for +our iterator's tag type. + + template<> + struct value_of_impl + { + template + struct apply; + + template + struct apply > + { + typedef std::string type; + }; + + template + struct apply > + { + typedef int type; + }; + }; + +The implementation itself is pretty simple, it just uses 2 partial specializations to +provide the type of the 2 different members of `example_struct`, based on the index of the iterator. + +To understand how `value_of_impl` is used by the library we will look at the implementation of __value_of__: + + template + struct __value_of__ + { + typedef typename + extension::value_of_impl:: + template apply::type + type; + }; + +So __value_of__ uses __tag_dispatching__ to select an __mpl_metafunction_class__ +to provide its functionality. You will notice this pattern throughout the +implementation of Fusion. + +Ok, lets enable dereferencing of our iterator. In this case we must provide a suitable +specialization of `deref_impl`. + + template<> + struct deref_impl + { + template + struct apply; + + template + struct apply > + { + typedef typename mpl::if_< + is_const, std::string const&, std::string&>::type type; + + static type + call(example_struct_iterator const& it) + { + return it.struct_.name; + } + }; + + template + struct apply > + { + typedef typename mpl::if_< + is_const, int const&, int&>::type type; + + static type + call(example_struct_iterator const& it) + { + return it.struct_.age; + } + }; + }; + +The use of `deref_impl` is very similar to that of `value_of_impl`, but it also +provides some runtime functionality this time via the `call` static member function. +To see how `deref_impl` is used, lets have a look at the implementation of __deref__: + + namespace result_of + { + template + struct __deref__ + { + typedef typename + deref_impl:: + template apply::type + type; + }; + } + + template + typename __result_of_deref__::type + __deref__(Iterator const& i) + { + typename __result_of_deref__::type result = + extension::deref_impl:: + template apply::call(i); + return result; + } + +So again __result_of_deref__ uses __tag_dispatching__ in exactly the +same way as the __value_of__ implementation. The runtime functionality used +by __deref__ is provided by the `call` static function of the selected +__mpl_metafunction_class__. + +The actual implementation of `deref_impl` is slightly more complex than that of `value_of_impl`. +We also need to implement the `call` function, which returns a reference +to the appropriate member of the underlying sequence. We also require a little +bit of metaprogramming to return `const` references if the underlying sequence +is const. + +[note Although there is a fair amount of left to do to produce a fully fledged +Fusion sequence, __value_of__ and __deref__ illustrate all the signficant concepts +required. The remainder of the process is very repetitive, simply requiring +implementation of a suitable `xxxx_impl` for each feature `xxxx`. +] + +[heading Implementing the remaining iterator functionality] + +Ok, now we have seen the way __value_of__ and __deref__ work, everything else will work + in pretty much the same way. Lets start with forward iteration, +by providing a `next_impl`: + + template<> + struct next_impl + { + template + struct apply + { + typedef typename Iterator::struct_type struct_type; + typedef typename Iterator::index index; + typedef example_struct_iterator type; + + static type + call(Iterator const& i) + { + return type(i.struct_); + } + }; + }; + +This should be very familiar from our `deref_impl` implementation, we will be +using this approach again and again now. Our design is simply to increment +the `index` counter to move on to the next element. The various other iterator +manipulations we need to perform will all just involve simple calculations +with the `index` variables. + +We also need to provide a suitable `equal_to_impl` so that iterators can be +correctly compared. A __bidirectional_iterator__ will also need an implementation of `prior_impl`. For a +__random_access_iterator__ `distance_impl` and `advance_impl` also need to be provided +in order to satisfy the necessary complexity guarantees. As our iterator is +a __random_access_iterator__ we will have to implement all of these functions. + +Full implementations of `prior_impl`, `advance_impl`, `distance_impl` and `equal_to_impl` are +provided in the example code. + +[heading Implementing the intrinsic functions of the sequence] + +In order that Fusion can correctly identify our sequence as a Fusion sequence, we +need to enable `is_sequence` for our sequence type. As usual we just create +an `impl` type specialized for our sequence tag: + + template<> + struct is_sequence_impl + { + template + struct apply : mpl::true_ {}; + }; + +We've some similar formalities to complete, providing `category_of_impl` so Fusion +can correctly identify our sequence type, and `is_view_impl` so Fusion can correctly +identify our sequence as not being a __view__ type. Implementations are +provide in the example code. + +Now we've completed some formalities, on to more interesting features. Lets get +__begin__ working so that we can get an iterator to start accessing the data in +our sequence. + + template<> + struct begin_impl + { + template + struct apply + { + typedef example_struct_iterator type; + + static type + call(Sequence& seq) + { + return type(seq); + } + }; + }; + +The implementation uses the same ideas we have applied throughout, in this case +we are just creating one of the iterators we developed earlier, pointing to the +first element in the sequence. The implementation of __end__ is very similar, and +is provided in the example code. + +For our __random_access_sequence__ we will also need to implement `size_impl`, +`value_at_impl` and `at_impl`. + +[heading Enabling our type as an associative container] + +In order for `example_struct` to serve as an associative container, +we need to enable 3 lookup features, __at_key__, __value_at_key__ and __has_key__. +We also need to provide an implementation of the `is_associative` trait +so that our sequence can be correctly identified as an associative container. + +To implement `at_key_impl` we need to associate the `fields::age` and `fields::age` +types described in the __quick_start__ guide with the appropriate members of `example_struct`. +Our implementation is as follows: + + template<> + struct at_key_impl + { + template + struct apply; + + template + struct apply + { + typedef typename mpl::if_< + is_const, + std::string const&, + std::string&>::type type; + + static type + call(Sequence& seq) + { + return seq.name; + }; + }; + + template + struct apply + { + typedef typename mpl::if_< + is_const, + int const&, + int&>::type type; + + static type + call(Sequence& seq) + { + return seq.age; + }; + }; + }; + +Its all very similar to the implementations we've seen previously, +such as `deref_impl` and `value_of_impl`. Instead of identifying +the members by index or position, we are now selecting them using +the types `fields::name` and `fields::age`. The implementations of +`value_at_key_impl` and `has_key_impl` are equally straightforward, +and are provided in the example code, along with an implementation +of `is_associative_impl`. + +[heading Summary] + +We've now worked through the entire process for adding a new random +access sequence and we've also enabled our type to serve as an associative +container. The implementation was slightly longwinded, but followed +a simple repeating pattern. + +The support for `std::pair`, __mpl__ sequences, and `boost::array` all +use the same approach, and provide additional examples of the approach +for a variety of types. + +[endsect] + diff --git a/doc/fusion.qbk b/doc/fusion.qbk new file mode 100644 index 00000000..72b8d50a --- /dev/null +++ b/doc/fusion.qbk @@ -0,0 +1,263 @@ +[library Fusion + [quickbook 1.3] + [version 2.0] + [authors [de Guzman, Joel], [Marsden, Dan]] + [copyright 2001 2002 2003 2004 2005 Joel de Guzman, Dan Marsden] + [purpose Statically Typed Heterogeneous Data Structures and Algorithms] + [license + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + [@http://www.boost.org/LICENSE_1_0.txt]) + ] +] + +[def __note__ [$images/note.png]] +[def __alert__ [$images/alert.png]] +[def __tip__ [$images/tip.png]] +[def __caution__ [$images/caution.png]] + +[def __spirit__ [@http://spirit.sourceforge.net Spirit]] +[def __phoenix__ [@http://boost.org/libs/spirit/phoenix/index.html Phoenix]] +[def __mpl__ [@http://www.boost.org/libs/mpl/index.html MPL]] +[def __stl__ [@http://en.wikipedia.org/wiki/Standard_Template_Library STL]] +[def __tuple__ [@http://www.boost.org/libs/tuple/doc/tuple_users_guide.html Boost.Tuple]] +[def __tr1__tuple__ [@http://std.dkuug.dk/jtc1/sc22/wg21/docs/papers/2002/n1403.pdf TR1 Tuple]] +[def __boost_tools__ [@http://www.boost.org/tools/index.html Boost Tools]] +[def __spirit_list__ [@https://lists.sourceforge.net/lists/listinfo/spirit-general Spirit Mailing List]] +[def __spirit_general__ [@news://news.gmane.org/gmane.comp.spirit.general Spirit General NNTP news portal]] +[def __gmane__ [@http://www.gmane.org Gmane]] +[def __mlist_archive__ [@http://news.gmane.org/gmane.comp.parsers.spirit.general]] +[def __jaakko_jarvi__ [@http://www.boost.org/people/jaakko_jarvi.htm Jaakko Jarvi]] +[def __david_abrahams__ [@http://www.boost.org/people/dave_abrahams.htm David Abrahams]] +[def __boost_any__ [@http://boost.org/doc/html/any.html Boost.Any]] +[def __new_iterator_concepts__ [@http://boost.org/libs/iterator/doc/new-iter-concepts.html New Iterator Concepts]] +[def __boost_array_library__ [@http://www.boost.org/doc/html/array.html Boost.Array Library]] +[def __boost_ref__ [@http://www.boost.org/doc/html/ref.html Boost.Ref]] +[def __boost_ref_call__ [@http://www.boost.org/doc/html/ref.html `ref`]] +[def __std_pair_doc__ [@http://www.sgi.com/tech/stl/pair.html `std::pair`]] + +[def __mpl_integral_constant__ MPL Integral Constant] +[def __mpl_boolean_constant__ MPL Boolean Constant] +[def __mpl_metafunction_class__ MPL Metafunction Class] +[def __mpl_lambda_expression__ MPL Lambda Expression] +[def __lvalue__ LValue] +[def __unspecified__ /unspecified/] + +[def __support__ [link fusion.support Support]] +[def __is_sequence__ [link fusion.support.is_sequence `is_sequence`]] +[def __is_view__ [link fusion.support.is_view `is_view`]] +[def __tag_of__ [link fusion.support.tag_of `tag_of`]] +[def __category_of__ [link fusion.support.category_of `category_of`]] +[def __fusion_pair__ [link fusion.support.pair `fusion::pair`]] +[def __pair__ [link fusion.support.pair `pair`]] +[def __fusion_make_pair__ [link fusion.support.pair `make_pair`]] + +[def __iterator__ [link fusion.iterators Iterator]] +[def __iterator_concepts__ [link fusion.iterators.concepts Iterator Concepts]] +[def __forward_iterator__ [link fusion.iterators.concepts.forward_iterator Forward Iterator]] +[def __bidirectional_iterator__ [link fusion.iterators.concepts.bidirectional_iterator Bidirectional Iterator]] +[def __random_access_iterator__ [link fusion.iterators.concepts.random_access_iterator Random Access Iterator]] + +[def __next__ [link fusion.iterators.functions.next `next`]] +[def __prior__ [link fusion.iterators.functions.prior `prior`]] +[def __advance__ [link fusion.iterators.functions.advance `advance`]] +[def __advance_c__ [link fusion.iterators.functions.advance_c `advance_c`]] +[def __distance__ [link fusion.iterators.functions.distance `distance`]] +[def __deref__ [link fusion.iterators.functions.deref `deref`]] + +[def __result_of_next__ [link fusion.iterators.metafunctions.next `result_of::next`]] +[def __result_of_prior__ [link fusion.iterators.metafunctions.prior `result_of::prior`]] +[def __result_of_equal_to__ [link fusion.iterators.metafunctions.equal_to `result_of::equal_to`]] +[def __result_of_advance__ [link fusion.iterators.metafunctions.advance `result_of::advance`]] +[def __result_of_advance_c__ [link fusion.iterators.metafunctions.advance_c `result_of::advance_c`]] +[def __result_of_distance__ [link fusion.iterators.metafunctions.distance `result_of::distance`]] +[def __result_of_deref__ [link fusion.iterators.metafunctions.deref `result_of::deref`]] +[def __result_of_value_of__ [link fusion.iterators.metafunctions.value_of `result_of::value_of`]] +[def __value_of__ [link fusion.iterators.metafunctions.value_of `value_of`]] + +[def __sequence__ [link fusion.sequences Sequence]] +[def __sequence_concepts__ [link fusion.sequences.concepts Sequence Concepts]] +[def __traversal_concept__ [link fusion.sequences.concepts.traversal Sequence Traversal Concept]] +[def __associativity_concept__ [link fusion.sequences.concepts.associativity Sequence Associativity Concept]] +[def __forward_sequence__ [link fusion.sequences.concepts.forward_sequence Forward Sequence]] +[def __bidirectional_sequence__ [link fusion.sequences.concepts.bidirectional_sequence Bidirectional Sequence]] +[def __random_access_sequence__ [link fusion.sequences.concepts.random_access_sequence Random Access Sequence]] +[def __associative_sequence__ [link fusion.sequences.concepts.associative_sequence Associative Sequence]] + +[def __containers__ [link fusion.sequences.containers Containers]] +[def __vector__ [link fusion.sequences.containers.vector `vector`]] +[def __cons__ [link fusion.sequences.containers.cons `cons`]] +[def __list__ [link fusion.sequences.containers.list `list`]] +[def __set__ [link fusion.sequences.containers.set `set`]] +[def __map__ [link fusion.sequences.containers.map `map`]] + +[def __view__ [link fusion.sequences.views View]] +[def __views__ [link fusion.sequences.views Views]] +[def __single_view__ [link fusion.sequences.views.single_view `single_view`]] +[def __filter_view__ [link fusion.sequences.views.filter_view `filter_view`]] +[def __iterator_range__ [link fusion.sequences.views.iterator_range `iterator_range`]] +[def __joint_view__ [link fusion.sequences.views.joint_view `joint_view`]] +[def __transform_view__ [link fusion.sequences.views.transform_view `transform_view`]] +[def __reverse_view__ [link fusion.sequences.views.reverse_view `reverse_view`]] + +[def __std_pair__ [link fusion.sequences.adapted.std__pair `std::pair`]] +[def __boost_array__ [link fusion.sequences.adapted.boost__array `boost::array`]] +[def __mpl_sequence__ [link fusion.sequences.adapted.mpl_sequence mpl sequence]] + +[def __intrinsic__ [link fusion.sequences.intrinsics Intrinsic]] +[def __intrinsics__ [link fusion.sequences.intrinsics Intrinsics]] +[def __begin__ [link fusion.sequences.intrinsics.functions.begin `begin`]] +[def __result_of_begin__ [link fusion.sequences.intrinsics.metafunctions.begin `result_of::begin`]] +[def __end__ [link fusion.sequences.intrinsics.functions.end `end`]] +[def __result_of_end__ [link fusion.sequences.intrinsics.metafunctions.end `result_of::end`]] +[def __size__ [link fusion.sequences.intrinsics.functions.size `size`]] +[def __result_of_size__ [link fusion.sequences.intrinsics.metafunctions.size `result_of::size`]] +[def __empty__ [link fusion.sequences.intrinsics.functions.empty `empty`]] +[def __result_of_empty__ [link fusion.sequences.intrinsics.metafunctions.empty `result_of::empty`]] +[def __front__ [link fusion.sequences.intrinsics.functions.front `front`]] +[def __result_of_front__ [link fusion.sequences.intrinsics.metafunctions.front `result_of::front`]] +[def __back__ [link fusion.sequences.intrinsics.functions.back `back`]] +[def __result_of_back__ [link fusion.sequences.intrinsics.metafunctions.back `result_of::back`]] +[def __at__ [link fusion.sequences.intrinsics.functions.at `at`]] +[def __result_of_at__ [link fusion.sequences.intrinsics.metafunctions.at `result_of::at`]] +[def __at_c__ [link fusion.sequences.intrinsics.functions.at_c `at_c`]] +[def __result_of_at_c__ [link fusion.sequences.intrinsics.metafunctions.at_c `result_of::at_c`]] +[def __at_key__ [link fusion.sequences.intrinsics.functions.at_key `at_key`]] +[def __result_of_at_key__ [link fusion.sequences.intrinsics.metafunctions.at_key `result_of::at_key`]] +[def __has_key__ [link fusion.sequences.intrinsics.functions.has_key `has_key`]] +[def __result_of_has_key__ [link fusion.sequences.intrinsics.metafunctions.has_key `result_of::has_key`]] +[def __value_at_key__ [link fusion.sequences.intrinsics.metafunctions.value_at_key `value_at_key`]] +[def __result_of_value_at__ [link fusion.sequences.intrinsics.metafunctions.value_at `result_of::value_at`]] +[def __result_of_value_at_c__ [link fusion.sequences.intrinsics.metafunctions.value_at_c `result_of::value_at_c`]] +[def __result_of_value_at_key__ [link fusion.sequences.intrinsics.metafunctions.value_at_key `result_of::value_at_key`]] + +[def __conversion__ [link fusion.sequences.conversion.functions Conversion]] +[def __result_of_conversion__ [link fusion.sequences.conversion.metafunctions Conversion Metafunctions]] +[def __as_vector__ [link fusion.sequences.conversion.functions.as_vector `as_vector`]] +[def __result_of_as_vector__ [link fusion.sequences.conversion.metafunctions.as_vector `result_of::as_vector`]] +[def __as_list__ [link fusion.sequences.conversion.functions.as_list `as_list`]] +[def __result_of_as_list__ [link fusion.sequences.conversion.metafunctions.as_list `result_of::as_list`]] +[def __as_set__ [link fusion.sequences.conversion.functions.as_set `as_set`]] +[def __result_of_as_set__ [link fusion.sequences.conversion.metafunctions.as_set `result_of::as_set`]] +[def __as_map__ [link fusion.sequences.conversion.functions.as_map `as_map`]] +[def __result_of_as_map__ [link fusion.sequences.conversion.metafunctions.as_map `result_of::as_map`]] + +[def __generation__ [link fusion.sequences.generation.functions Generation]] +[def __result_of_generation__ [link fusion.sequences.generation.metafunctions Generation Metafunctions]] +[def __make_vector__ [link fusion.sequences.generation.functions.make_vector `make_vector`]] +[def __result_of_make_vector__ [link fusion.sequences.generation.metafunctions.make_vector `result_of::make_vector`]] +[def __vector_tie__ [link fusion.sequences.generation.functions.vector_tie `vector_tie`]] +[def __result_of_vector_tie__ [link fusion.sequences.generation.metafunctions.vector_tie `result_of::vector_tie`]] +[def __make_vector__ [link fusion.sequences.generation.functions.make_vector `make_vector`]] +[def __result_of_make_vector__ [link fusion.sequences.generation.metafunctions.make_vector `result_of::make_vector`]] +[def __make_cons__ [link fusion.sequences.generation.functions.make_cons `make_cons`]] +[def __result_of_make_cons__ [link fusion.sequences.generation.metafunctions.make_cons `result_of::make_cons`]] +[def __make_list__ [link fusion.sequences.generation.functions.make_list `make_list`]] +[def __result_of_make_list__ [link fusion.sequences.generation.metafunctions.make_list `result_of::make_list`]] +[def __make_set__ [link fusion.sequences.generation.functions.make_set `make_set`]] +[def __result_of_make_set__ [link fusion.sequences.generation.metafunctions.make_set `result_of::make_set`]] +[def __make_map__ [link fusion.sequences.generation.functions.make_map `make_map`]] +[def __result_of_make_map__ [link fusion.sequences.generation.metafunctions.make_map `result_of::make_map`]] +[def __list_tie__ [link fusion.sequences.generation.functions.list_tie `list_tie`]] +[def __result_of_list_tie__ [link fusion.sequences.generation.metafunctions.list_tie `result_of::list_tie`]] + +[def __out__ [link fusion.sequences.operators.i_o.out out]] +[def __in__ [link fusion.sequences.operators.i_o.in in]] +[def __eq__ [link fusion.sequences.operators.comparison.equal equal]] +[def __neq__ [link fusion.sequences.operators.comparison.not_equal not equal]] +[def __lt__ [link fusion.sequences.operators.comparison.less_than less than]] +[def __lte__ [link fusion.sequences.operators.comparison.less_than_equal less than equal]] +[def __gt__ [link fusion.sequences.operators.comparison.greater_than greater than]] +[def __gte__ [link fusion.sequences.operators.comparison.greater_than_equal greater than equal]] + +[def __algorithm__ [link fusion.algorithms Algorithm]] +[def __algorithms__ [link fusion.algorithms Algorithms]] +[def __poly_func_obj__ [link fusion.algorithms.concepts.polymorphic_function_object Polymorphic Function Object]] +[def __fold__ [link fusion.algorithms.iteration.functions.fold `fold`]] +[def __result_of_fold__ [link fusion.algorithms.iteration.metafunctions.fold `result_of::fold`]] +[def __accumulate__ [link fusion.algorithms.iteration.functions.accumulate `accumulate`]] +[def __result_of_accumulate__ [link fusion.algorithms.iteration.metafunctions.accumulate `result_of::accumulate`]] +[def __for_each__ [link fusion.algorithms.iteration.functions.for_each `for_each`]] +[def __result_of_for_each__ [link fusion.algorithms.iteration.metafunctions.for_each `result_of::for_each`]] +[def __any__ [link fusion.algorithms.query.functions.any `any`]] +[def __result_of_any__ [link fusion.algorithms.query.metafunctions.any `result_of::any`]] +[def __all__ [link fusion.algorithms.query.functions.all `all`]] +[def __result_of_all__ [link fusion.algorithms.query.metafunctions.all `result_of::all`]] +[def __none__ [link fusion.algorithms.query.functions.none `none`]] +[def __result_of_none__ [link fusion.algorithms.query.metafunctions.none `result_of::none`]] +[def __find__ [link fusion.algorithms.query.functions.find `find`]] +[def __result_of_find__ [link fusion.algorithms.query.metafunctions.find `result_of::find`]] +[def __find_if__ [link fusion.algorithms.query.functions.find_if `find_if`]] +[def __result_of_find_if__ [link fusion.algorithms.query.metafunctions.find_if `result_of::find_if`]] +[def __count__ [link fusion.algorithms.query.functions.count `count`]] +[def __result_of_count__ [link fusion.algorithms.query.metafunctions.count `result_of::count`]] +[def __count_if__ [link fusion.algorithms.query.functions.count_if `count_if`]] +[def __result_of_count_if__ [link fusion.algorithms.query.metafunctions.count_if `result_of::count_if`]] +[def __filter__ [link fusion.algorithms.transformation.functions.filter `filter`]] +[def __result_of_filter__ [link fusion.algorithms.transformation.metafunctions.filter `result_of::filter`]] +[def __filter_if__ [link fusion.algorithms.transformation.functions.filter_if `filter_if`]] +[def __result_of_filter_if__ [link fusion.algorithms.transformation.metafunctions.filter_if `result_of::filter_if`]] +[def __transform__ [link fusion.algorithms.transformation.functions.transform `transform`]] +[def __result_of_transform__ [link fusion.algorithms.transformation.metafunctions.transform `result_of::transform`]] +[def __replace__ [link fusion.algorithms.transformation.functions.replace `replace`]] +[def __result_of_replace__ [link fusion.algorithms.transformation.metafunctions.replace `result_of::replace`]] +[def __replace_if__ [link fusion.algorithms.transformation.functions.replace_if `replace_if`]] +[def __result_of_replace_if__ [link fusion.algorithms.transformation.metafunctions.replace_if `result_of::replace_if`]] +[def __remove__ [link fusion.algorithms.transformation.functions.remove `remove`]] +[def __result_of_remove__ [link fusion.algorithms.transformation.metafunctions.remove `result_of::remove`]] +[def __remove_if__ [link fusion.algorithms.transformation.functions.remove_if `remove_if`]] +[def __result_of_remove_if__ [link fusion.algorithms.transformation.metafunctions.remove_if `result_of::remove_if`]] +[def __reverse__ [link fusion.algorithms.transformation.functions.reverse `reverse`]] +[def __result_of_reverse__ [link fusion.algorithms.transformation.metafunctions.reverse `result_of::reverse`]] +[def __clear__ [link fusion.algorithms.transformation.functions.clear `clear`]] +[def __result_of_clear__ [link fusion.algorithms.transformation.metafunctions.clear `result_of::clear`]] +[def __erase__ [link fusion.algorithms.transformation.functions.erase `erase`]] +[def __result_of_erase__ [link fusion.algorithms.transformation.metafunctions.erase `result_of::erase`]] +[def __erase_key__ [link fusion.algorithms.transformation.functions.erase_key `erase_key`]] +[def __result_of_erase_key__ [link fusion.algorithms.transformation.metafunctions.erase_key `result_of::erase_key`]] +[def __insert__ [link fusion.algorithms.transformation.functions.insert `insert`]] +[def __result_of_insert__ [link fusion.algorithms.transformation.metafunctions.insert `result_of::insert`]] +[def __insert_range__ [link fusion.algorithms.transformation.functions.insert_range `insert_range`]] +[def __result_of_insert_range__ [link fusion.algorithms.transformation.metafunctions.insert_range `result_of::insert_range`]] +[def __join__ [link fusion.algorithms.transformation.functions.join `join`]] +[def __result_of_join__ [link fusion.algorithms.transformation.metafunctions.join `result_of::join`]] +[def __zip__ [link fusion.algorithms.transformation.functions.zip `zip`]] +[def __result_of_zip__ [link fusion.algorithms.transformation.metafunctions.zip `result_of::zip`]] +[def __pop_back__ [link fusion.algorithms.transformation.functions.pop_back `pop_back`]] +[def __result_of_pop_back__ [link fusion.algorithms.transformation.metafunctions.pop_back `result_of::pop_back`]] +[def __pop_front__ [link fusion.algorithms.transformation.functions.pop_front `pop_front`]] +[def __result_of_pop_front__ [link fusion.algorithms.transformation.metafunctions.pop_front `result_of::pop_front`]] +[def __push_back__ [link fusion.algorithms.transformation.functions.push_back `push_back`]] +[def __result_of_push_back__ [link fusion.algorithms.transformation.metafunctions.push_back `result_of::push_back`]] +[def __push_front__ [link fusion.algorithms.transformation.functions.push_front `push_front`]] +[def __result_of_push_front__ [link fusion.algorithms.transformation.metafunctions.push_front `result_of::push_front`]] + +[def __tr1_tuple_pair__ [link fusion.tuples.pairs `TR1 and std::pair`]] +[def __tuple_get__ [link fusion.tuples.class_template_tuple.element_access `get`]] + +[def __recursive_inline__ [link fusion.notes.recursive_inlined_functions Recursive Inlined Functions]] +[def __overloaded_functions__ [link fusion.notes.overloaded_functions Overloaded Functions]] +[def __tag_dispatching__ [link fusion.notes.tag_dispatching /tag dispatching/]] +[def __element_conversion__ [link fusion.notes.element_conversion /element conversion/]] +[def __see_element_conversion__ [link fusion.notes.element_conversion /see element conversion/]] +[def __note_boost_ref__ [link fusion.notes.boost__ref `boost::ref`]] + +[def __quick_start__ [link fusion.quick_start Quick Start]] +[def __organization__ [link fusion.organization Orgainization]] +[def __extension__ [link fusion.extension Extension]] + +[include preface.qbk] +[include introduction.qbk] +[include quick_start.qbk] +[include organization.qbk] +[include support.qbk] +[include iterators.qbk] +[include sequences.qbk] +[include algorithms.qbk] +[include tuples.qbk] +[include extension.qbk] +[include notes.qbk] +[include changelog.qbk] +[include acknowledgements.qbk] +[include references.qbk] + diff --git a/doc/html/boostbook.css b/doc/html/boostbook.css new file mode 100755 index 00000000..d84d5384 --- /dev/null +++ b/doc/html/boostbook.css @@ -0,0 +1,511 @@ +/*============================================================================= + Copyright (c) 2004 Joel de Guzman + http://spirit.sourceforge.net/ + + Use, modification and distribution is 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) +=============================================================================*/ + +/*============================================================================= + Body defaults +=============================================================================*/ + + body + { + margin: 1em; + font-family: sans-serif; + } + +/*============================================================================= + Paragraphs +=============================================================================*/ + + p + { + text-align: left; + font-size: 10pt; + line-height: 1.15; + } + +/*============================================================================= + Program listings +=============================================================================*/ + + /* Code on paragraphs */ + p tt.computeroutput + { + font-size: 9pt; + } + + pre.synopsis + { + font-size: 90%; + margin: 1pc 4% 0pc 4%; + padding: 0.5pc 0.5pc 0.5pc 0.5pc; + } + + .programlisting, + .screen + { + font-size: 9pt; + display: block; + margin: 1pc 4% 0pc 4%; + padding: 0.5pc 0.5pc 0.5pc 0.5pc; + } + + /* Program listings in tables don't get borders */ + td .programlisting, + td .screen + { + margin: 0pc 0pc 0pc 0pc; + padding: 0pc 0pc 0pc 0pc; + } + +/*============================================================================= + Headings +=============================================================================*/ + + h1, h2, h3, h4, h5, h6 + { + text-align: left; + margin: 1em 0em 0.5em 0em; + font-weight: bold; + } + + h1 { font: 140% } + h2 { font: bold 140% } + h3 { font: bold 130% } + h4 { font: bold 120% } + h5 { font: italic 110% } + h6 { font: italic 100% } + + /* Top page titles */ + title, + h1.title, + h2.title + h3.title, + h4.title, + h5.title, + h6.title, + .refentrytitle + { + font-weight: bold; + margin-bottom: 1pc; + } + + h1.title { font-size: 140% } + h2.title { font-size: 140% } + h3.title { font-size: 130% } + h4.title { font-size: 120% } + h5.title { font-size: 110% } + h6.title { font-size: 100% } + + .section h1 + { + margin: 0em 0em 0.5em 0em; + font-size: 140%; + } + + .section h2 { font-size: 140% } + .section h3 { font-size: 130% } + .section h4 { font-size: 120% } + .section h5 { font-size: 110% } + .section h6 { font-size: 100% } + + /* Code on titles */ + h1 tt.computeroutput { font-size: 140% } + h2 tt.computeroutput { font-size: 140% } + h3 tt.computeroutput { font-size: 130% } + h4 tt.computeroutput { font-size: 120% } + h5 tt.computeroutput { font-size: 110% } + h6 tt.computeroutput { font-size: 100% } + +/*============================================================================= + Author +=============================================================================*/ + + h3.author + { + font-size: 100% + } + +/*============================================================================= + Lists +=============================================================================*/ + + li + { + font-size: 10pt; + line-height: 1.3; + } + + /* Unordered lists */ + ul + { + text-align: left; + } + + /* Ordered lists */ + ol + { + text-align: left; + } + +/*============================================================================= + Links +=============================================================================*/ + + a + { + text-decoration: none; /* no underline */ + } + + a:hover + { + text-decoration: underline; + } + +/*============================================================================= + Spirit style navigation +=============================================================================*/ + + .spirit-nav + { + text-align: right; + } + + .spirit-nav a + { + color: white; + padding-left: 0.5em; + } + + .spirit-nav img + { + border-width: 0px; + } + +/*============================================================================= + Table of contents +=============================================================================*/ + + .toc + { + margin: 1pc 4% 0pc 4%; + padding: 0.1pc 1pc 0.1pc 1pc; + font-size: 80%; + line-height: 1.15; + } + + .boost-toc + { + float: right; + padding: 0.5pc; + } + +/*============================================================================= + Tables +=============================================================================*/ + + .table-title, + div.table p.title + { + margin-left: 4%; + padding-right: 0.5em; + padding-left: 0.5em; + } + + .informaltable table, + .table table + { + width: 92%; + margin-left: 4%; + margin-right: 4%; + } + + div.informaltable table, + div.table table + { + padding: 4px; + } + + /* Table Cells */ + div.informaltable table tr td, + div.table table tr td + { + padding: 0.5em; + text-align: left; + font-size: 9pt; + } + + div.informaltable table tr th, + div.table table tr th + { + padding: 0.5em 0.5em 0.5em 0.5em; + border: 1pt solid white; + font-size: 80%; + } + +/*============================================================================= + Blurbs +=============================================================================*/ + + div.note, + div.tip, + div.important, + div.caution, + div.warning, + p.blurb + { + font-size: 9pt; /* A little bit smaller than the main text */ + line-height: 1.2; + display: block; + margin: 1pc 4% 0pc 4%; + padding: 0.5pc 0.5pc 0.5pc 0.5pc; + } + + p.blurb img + { + padding: 1pt; + } + +/*============================================================================= + Variable Lists +=============================================================================*/ + + /* Make the terms in definition lists bold */ + div.variablelist dl dt, + span.term + { + font-weight: bold; + font-size: 10pt; + } + + div.variablelist table tbody tr td + { + text-align: left; + vertical-align: top; + padding: 0em 2em 0em 0em; + font-size: 10pt; + margin: 0em 0em 0.5em 0em; + line-height: 1; + } + + div.variablelist dl dt + { + margin-bottom: 0.2em; + } + + div.variablelist dl dd + { + margin: 0em 0em 0.5em 2em; + font-size: 10pt; + } + + div.variablelist table tbody tr td p, + div.variablelist dl dd p + { + margin: 0em 0em 0.5em 0em; + line-height: 1; + } + +/*============================================================================= + Misc +=============================================================================*/ + + /* Title of books and articles in bibliographies */ + span.title + { + font-style: italic; + } + + span.underline + { + text-decoration: underline; + } + + span.strikethrough + { + text-decoration: line-through; + } + + /* Copyright, Legal Notice */ + div div.legalnotice p + { + text-align: left + } + +/*============================================================================= + Colors +=============================================================================*/ + + @media screen + { + /* Links */ + a + { + color: #005a9c; + } + + a:visited + { + color: #9c5a9c; + } + + h1 a, h2 a, h3 a, h4 a, h5 a, h6 a, + h1 a:hover, h2 a:hover, h3 a:hover, h4 a:hover, h5 a:hover, h6 a:hover, + h1 a:visited, h2 a:visited, h3 a:visited, h4 a:visited, h5 a:visited, h6 a:visited + { + text-decoration: none; /* no underline */ + color: #000000; + } + + /* Syntax Highlighting */ + .keyword { color: #0000AA; } + .identifier { color: #000000; } + .special { color: #707070; } + .preprocessor { color: #402080; } + .char { color: teal; } + .comment { color: #800000; } + .string { color: teal; } + .number { color: teal; } + .white_bkd { background-color: #FFFFFF; } + .dk_grey_bkd { background-color: #999999; } + + /* Copyright, Legal Notice */ + .copyright + { + color: #666666; + font-size: small; + } + + div div.legalnotice p + { + color: #666666; + } + + /* Program listing */ + pre.synopsis + { + border: 1px solid #DCDCDC; + } + + .programlisting, + .screen + { + border: 1px solid #DCDCDC; + } + + td .programlisting, + td .screen + { + border: 0px solid #DCDCDC; + } + + /* Blurbs */ + div.note, + div.tip, + div.important, + div.caution, + div.warning, + p.blurb + { + border: 1px solid #DCDCDC; + } + + /* Table of contents */ + .toc + { + border: 1px solid #DCDCDC; + } + + /* Tables */ + div.informaltable table tr td, + div.table table tr td + { + border: 1px solid #DCDCDC; + } + + div.informaltable table tr th, + div.table table tr th + { + background-color: #F0F0F0; + border: 1px solid #DCDCDC; + } + + /* Misc */ + span.highlight + { + color: #00A000; + } + } + + @media print + { + /* Links */ + a + { + color: black; + } + + a:visited + { + color: black; + } + + .spirit-nav + { + display: none; + } + + /* Program listing */ + pre.synopsis + { + border: 1px solid gray; + } + + .programlisting, + .screen + { + border: 1px solid gray; + } + + td .programlisting, + td .screen + { + border: 0px solid #DCDCDC; + } + + /* Table of contents */ + .toc + { + border: 1px solid gray; + } + + .informaltable table, + .table table + { + border: 1px solid gray; + border-collapse: collapse; + } + + /* Tables */ + div.informaltable table tr td, + div.table table tr td + { + border: 1px solid gray; + } + + div.informaltable table tr th, + div.table table tr th + { + border: 1px solid gray; + } + + /* Misc */ + span.highlight + { + font-weight: bold; + } + } diff --git a/doc/html/fusion/acknowledgements.html b/doc/html/fusion/acknowledgements.html new file mode 100644 index 00000000..11f4df57 --- /dev/null +++ b/doc/html/fusion/acknowledgements.html @@ -0,0 +1,44 @@ + + + +Acknowledgements + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ Special thanks to David Abrahams, Hartmut Kaiser, Aleksey Gurtovoy, Peder Holt, + Daniel Wallin, Jaakko Jarvi, Jeremiah Willcock, Dan Marsden, Eric Niebler, + Joao Abecasis. These people are instrumental in the design and development + of Fusion. +

+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms.html b/doc/html/fusion/algorithms.html new file mode 100644 index 00000000..8f461e33 --- /dev/null +++ b/doc/html/fusion/algorithms.html @@ -0,0 +1,98 @@ + + + +Algorithms + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ + +

+ + Lazy Evaluation +

+

+ Unlike MPL, Fusion + algorithms are lazy and non sequence-type preserving. What does that mean? + It means that when you operate on a sequence through a Fusion algorithm that + returns a sequence, the sequence returned may not be of the same class as the + original. This is by design. Runtime efficiency is given a high priority. Like + MPL, and unlike + STL, + fusion algorithms are functional in nature such that algorithms are non mutating + (no side effects). However, due to the high cost of returning full sequences + such as vectors and lists, Views are returned from Fusion + algorithms instead. For example, the transform algorithm does not actually + return a transformed version of the original sequence. transform returns a transform_view. This view holds a + reference to the original sequence plus the transform function. Iteration over + the transform_view + will apply the transform function over the sequence elements on demand. This + lazy evaluation scheme allows us to chain as many algorithms + as we want without incurring a high runtime penalty. +

+

+ + Sequence Extension +

+

+ The lazy evaluation scheme where Algorithms + return Views also allows operations + such as push_back to be totally generic. In + Fusion, push_back is actually a generic algorithm + that works on all sequences. Given an input sequence s + and a value x, Fusion's push_back 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. + 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>
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/concepts.html b/doc/html/fusion/algorithms/concepts.html new file mode 100644 index 00000000..991a3c20 --- /dev/null +++ b/doc/html/fusion/algorithms/concepts.html @@ -0,0 +1,41 @@ + + + +Concepts + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/concepts/polymorphic_function_object.html b/doc/html/fusion/algorithms/concepts/polymorphic_function_object.html new file mode 100644 index 00000000..2c3dee28 --- /dev/null +++ b/doc/html/fusion/algorithms/concepts/polymorphic_function_object.html @@ -0,0 +1,109 @@ + + + +Polymorphic + Function Object + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ A type of function object with a nested metafunction result. + result returns the result + type of calling the function object, given the argument types. +

+
+

Notation

+
+
F
+
+ A Polymorphic Function Object type +
+
f
+
+ A Polymorphic Function Object +
+
T1 + ...TN
+
+ Arbitrary types +
+
t1 + ...tN
+
+ Objects with types T1 ...TN +
+
+
+
+ + Refinement + of +
+

+ MPL Metafunction Class +

+
+ + Expression + requirements +
+
+

+ +

+ +++++ + + + + + + + + + + +
ExpressionReturn TypeRuntime + Complexity
f(t1, ...tN)F::result<T1, ...TN>::typeUnspecified
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/iteration.html b/doc/html/fusion/algorithms/iteration.html new file mode 100644 index 00000000..e971e124 --- /dev/null +++ b/doc/html/fusion/algorithms/iteration.html @@ -0,0 +1,54 @@ + + + +Iteration + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ + +

+ The iteration algorithms provide the fundamental algorithms for traversing + a sequence repeatedly applying an operation to its elements. +

+

+ + Header +

+
+#include <boost/fusion/algorithm/iteration.hpp>
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/iteration/functions.html b/doc/html/fusion/algorithms/iteration/functions.html new file mode 100644 index 00000000..5c3db0bd --- /dev/null +++ b/doc/html/fusion/algorithms/iteration/functions.html @@ -0,0 +1,43 @@ + + + +Functions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/iteration/functions/accumulate.html b/doc/html/fusion/algorithms/iteration/functions/accumulate.html new file mode 100644 index 00000000..f04005b7 --- /dev/null +++ b/doc/html/fusion/algorithms/iteration/functions/accumulate.html @@ -0,0 +1,161 @@ + + + +accumulate + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Repeatedly applies binary Polymorphic + Function Object f + to each element of a sequence and the previous state. accumulate is equivalent to + fold. +

+
+ + 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);
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
seqA + model of Forward + Sequence, f(eN ....f(e2,f(e1,initial_state))) must be a valid expression for + each element e1 + to eN in seq +Operation's + argument
initial_stateAny + typeInitial state
fA + model of binary Polymorphic + Function Object +Operation's argument
+
+
+ + Expression + Semantics +
+
+accumulate(seq, initial_state, f);
+
+

+ Return type: Any type +

+

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

+
+ + Complexity +
+

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

+
+ + Header +
+
+#include <boost/fusion/algorithm/iteration/accumulate.hpp>
+
+
+ + Example +
+
+struct make_string
+{
+    template<typename T, typename State>
+    struct apply
+    {
+        typedef std::string type;
+    };
+
+    template<typename T>
+    std::string operator()(const T& t, const std::string& str) const
+    {
+        return str + boost::lexical_cast<std::string>(t);
+    }
+};
+...
+const vector<int,int> vec(1,2);
+assert(accumulate(vec,std::string(""), make_string()) == "12");
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/iteration/functions/fold.html b/doc/html/fusion/algorithms/iteration/functions/fold.html new file mode 100644 index 00000000..43ac4e62 --- /dev/null +++ b/doc/html/fusion/algorithms/iteration/functions/fold.html @@ -0,0 +1,160 @@ + + + +fold + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Repeatedly applies binary Polymorphic + Function Object f + to each element of a sequence and the previous state. +

+
+ + 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);
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
seqA + model of Forward + Sequence,f(e) must be a valid expression for + each element e + in seq +Operation's + argument
initial_stateAny + typeInitial state
fA + model of binary Polymorphic + Function Object +Operation's argument
+
+
+ + Expression + Semantics +
+
+fold(seq, initial_state, f);
+
+

+ Return type: Any type +

+

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

+
+ + Complexity +
+

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

+
+ + Header +
+
+#include <boost/fusion/algorithm/iteration/fold.hpp>
+
+
+ + Example +
+
+struct make_string
+{
+    template<typename T, typename State>
+    struct apply
+    {
+        typedef std::string type;
+    };
+
+    template<typename T>
+    std::string operator()(const T& t, const std::string& str) const
+    {
+        return str + boost::lexical_cast<std::string>(t);
+    }
+};
+...
+const vector<int,int> vec(1,2);
+assert(fold(vec,std::string(""), make_string()) == "12");
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/iteration/functions/for_each.html b/doc/html/fusion/algorithms/iteration/functions/for_each.html new file mode 100644 index 00000000..c7ad7ceb --- /dev/null +++ b/doc/html/fusion/algorithms/iteration/functions/for_each.html @@ -0,0 +1,142 @@ + + + +for_each + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

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

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

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
seqA + model of Forward + Sequence, f(e) must be a valid expression for + each element e + in seq +Operation's + argument
fA + unary function objectOperation's argument
+
+
+ + Expression + Semantics +
+
+for_each(seq, f);
+
+

+ Return type: void +

+

+ Semantics: Calls f(e) for each element e + in seq. +

+
+ + Complexity +
+

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

+
+ + Header +
+
+#include <boost/fusion/algorithm/iteration/for_each.hpp>
+
+
+ + Example +
+
+struct increment
+{
+    template<typename T>
+    void operator()(T& t) const
+    {
+        ++t;
+    }
+};
+...
+vector<int,int> vec(1,2);
+for_each(vec, increment());
+assert(vec == make_vector(2,3));
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/iteration/metafunctions.html b/doc/html/fusion/algorithms/iteration/metafunctions.html new file mode 100644 index 00000000..1bd66d25 --- /dev/null +++ b/doc/html/fusion/algorithms/iteration/metafunctions.html @@ -0,0 +1,43 @@ + + + +Metafunctions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html b/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html new file mode 100644 index 00000000..ca944b76 --- /dev/null +++ b/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html @@ -0,0 +1,140 @@ + + + +accumulate + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of accumulate. +

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

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
SequenceA + model of Forward + Sequence +The sequence to iterate
StateAny + typeThe initial state for the first application + of F +
FA + model of binary Polymorphic + Function Object +The operation to be applied + on forward traversal
+
+
+ + Expression + Semantics +
+
+result_of::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 Polymorphic + Function Object of type F. +

+
+ + Complexity +
+

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

+
+ + Header +
+
+#include <boost/fusion/algorithm/iteration/accumulate.hpp>
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/fold.html b/doc/html/fusion/algorithms/iteration/metafunctions/fold.html new file mode 100644 index 00000000..b6fcd011 --- /dev/null +++ b/doc/html/fusion/algorithms/iteration/metafunctions/fold.html @@ -0,0 +1,140 @@ + + + +fold + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of fold. +

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

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
SequenceA + model of Forward + Sequence +The sequence to iterate
StateAny + typeThe initial state for the first application + of F +
FA + model of binary Polymorphic + Function Object +The operation to be applied + on forward traversal
+
+
+ + Expression + Semantics +
+
+result_of::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 Polymorphic + Function Object of type F. +

+
+ + Complexity +
+

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

+
+ + Header +
+
+#include <boost/fusion/algorithm/iteration/fold.hpp>
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html b/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html new file mode 100644 index 00000000..3456bd9e --- /dev/null +++ b/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html @@ -0,0 +1,127 @@ + + + +for_each + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ A metafunction returning the result type of applying for_each to a sequence. The + return type of for_each is always void. +

+
+ + Description +
+
+ + Synopsis +
+
+template<
+    typename Sequence,
+    typename F
+>
+struct for_each
+{
+    typedef void type;
+};
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
SequenceA + model of Forward + Sequence +Operation's argument
FAny + typeOperation's argument
+
+
+ + Expression + Semantics +
+
+result_of::for_each<Sequence, F>::type
+
+

+ Return type: void. +

+

+ Semantics: Returns the return type of + for_each for a sequence of type + Sequence and a unary + function object F. The + return type is always void. +

+
+ + Complexity +
+

+ Constant. +

+
+ + Header +
+
+#include <boost/fusion/algorithm/iteration/for_each.hpp>
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/query.html b/doc/html/fusion/algorithms/query.html new file mode 100644 index 00000000..d9ed8b46 --- /dev/null +++ b/doc/html/fusion/algorithms/query.html @@ -0,0 +1,52 @@ + + + +Query + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ + +

+ The query algorithms provide support for searching and analyzing sequences. +

+

+ + Header +

+
+#include <boost/fusion/algorithm/query.hpp>
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/query/functions.html b/doc/html/fusion/algorithms/query/functions.html new file mode 100644 index 00000000..112f1f24 --- /dev/null +++ b/doc/html/fusion/algorithms/query/functions.html @@ -0,0 +1,47 @@ + + + +Functions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/query/functions/all.html b/doc/html/fusion/algorithms/query/functions/all.html new file mode 100644 index 00000000..b6d8c3a6 --- /dev/null +++ b/doc/html/fusion/algorithms/query/functions/all.html @@ -0,0 +1,147 @@ + + + +all + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+
+all
+
+ + Description +
+

+ For a sequence seq and + unary function object f, + all returns true if + f returns true for every + element of seq. +

+
+ + Synopsis +
+
+template<
+    typename Sequence,
+    typename F
+    >
+typename result_of::all<Sequence,F>::type all(
+    Sequence const& seq, F f);
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
seqA + model of Forward + Sequence, f(e) is a valid expression, convertible + to bool, for every + element e in seq +The sequence + to search
fA + unary function objectThe search predicate
+
+
+ + Expression + Semantics +
+
+all(seq, f);
+
+

+ Return type: bool +

+

+ Semantics: Returns true if and only + if f(e) + evaluates to true for every + element e in seq. +

+
+ + Complexity +
+

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

+
+ + Header +
+
+#include <boost/fusion/algorithm/query/all.hpp>
+
+
+ + Example +
+
+struct odd
+{
+    template<typename T>
+    bool operator()(T t) const
+    {
+        return t % 2;
+    }
+};
+...
+assert(all(make_vector(1,3), odd()));
+assert(!all(make_vector(1,2), odd()));
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/query/functions/any.html b/doc/html/fusion/algorithms/query/functions/any.html new file mode 100644 index 00000000..bee9a2a6 --- /dev/null +++ b/doc/html/fusion/algorithms/query/functions/any.html @@ -0,0 +1,147 @@ + + + +any + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+
+any
+
+ + Description +
+

+ For a sequence seq and + unary function object f, + any returns true if + f returns true for at + least one element of seq. +

+
+ + Synopsis +
+
+template<
+    typename Sequence,
+    typename F
+    >
+typename result_of::any<Sequence,F>::type any(
+    Sequence const& seq, F f);
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
seqA + model of Forward + Sequence, f(e) must be a valid expression, convertible + to bool, for each + element e in seq +The sequence + to search
fA + unary function objectThe search predicate
+
+
+ + Expression + semantics +
+
+any(seq, f);
+
+

+ Return type: bool +

+

+ Semantics: Returns true if and only + if f(e) + evaluates to true for some + element e in seq. +

+
+ + Complexity +
+

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

+
+ + Header +
+
+#include <boost/fusion/algorithm/query/any.hpp>
+
+
+ + Example +
+
+struct odd
+{
+    template<typename T>
+    bool operator()(T t) const
+    {
+        return t % 2;
+    }
+};
+...
+assert(any(make_vector(1,2), odd()));
+assert(!any(make_vector(2,4), odd()));
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/query/functions/count.html b/doc/html/fusion/algorithms/query/functions/count.html new file mode 100644 index 00000000..1b9740ff --- /dev/null +++ b/doc/html/fusion/algorithms/query/functions/count.html @@ -0,0 +1,134 @@ + + + +count + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

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

+
+ + Synopsis +
+
+template<
+    typename Sequence,
+    typename T
+    >
+typename result_of::count<Sequence, T>::type count(
+    Sequence const& seq, T const& t);
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
seqA + model of Forward + Sequence, e == t + must be a valid expression, convertible to bool, + for each element e + in seq +The + sequence to search
TAny + typeThe type to count
+
+
+ + Expression + Semantics +
+
+count(seq, t);
+
+

+ Return type: int +

+

+ Semantics: Returns the number of elements + of type T and equal to + t in seq. +

+
+ + Complexity +
+

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

+
+ + Header +
+
+#include <boost/fusion/algorithm/query/count.hpp>
+
+
+ + Example +
+
+const vector<double,int,int> vec(1.0,2,3);
+assert(count(vec,2) == 1);
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/query/functions/count_if.html b/doc/html/fusion/algorithms/query/functions/count_if.html new file mode 100644 index 00000000..5805c26a --- /dev/null +++ b/doc/html/fusion/algorithms/query/functions/count_if.html @@ -0,0 +1,133 @@ + + + +count_if + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the number of elements within a sequence with a type for which + a given unary function object evaluates to true. +

+
+ + Synopsis +
+
+template<
+    typename Sequence,
+    typename F
+    >
+typename result_of::count_if<Sequence, F>::type count_if(
+    Sequence const& seq, F f);
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
seqA + model of Forward + Sequence, f(e) is a valid expression, convertible + to bool, for each + element e in seq +The sequence + to search
fA + unary function objectThe search predicate
+
+
+ + Expression + Semantics +
+
+count_if(seq, f)
+
+

+ Return type: int +

+

+ Semantics: Returns the number of elements + 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>
+
+
+ + Example +
+
+const vector<int,int,int> vec(1,2,3);
+assert(count_if(vec,odd()) == 2);
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/query/functions/find.html b/doc/html/fusion/algorithms/query/functions/find.html new file mode 100644 index 00000000..6035ea75 --- /dev/null +++ b/doc/html/fusion/algorithms/query/functions/find.html @@ -0,0 +1,138 @@ + + + +find + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

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

+
+ + Synopsis +
+
+template<
+    typename Sequence,
+    typename T
+    >
+unspecified find(Sequence const& seq);
+
+template<
+    typename Sequence,
+    typename T
+    >
+unspecified find(Sequence& seq);
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
seqA + model of Forward + Sequence +The sequence to search
TAny + typeThe type to search for
+
+
+ + Expression + Semantics +
+
+find<T>(seq)
+
+

+ Return type: A model of the same iterator + category as the iterators of seq. +

+

+ Semantics: Returns an iterator to the + first element of seq + of type T, or end(seq) if there is no such element. Equivalent + 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>
+
+
+ + Example +
+
+const vector<char,int> vec('a','0');
+assert(*find<int>(vec) == '0');
+assert(find<double>(vec) == end(vec));
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/query/functions/find_if.html b/doc/html/fusion/algorithms/query/functions/find_if.html new file mode 100644 index 00000000..2b58c0dd --- /dev/null +++ b/doc/html/fusion/algorithms/query/functions/find_if.html @@ -0,0 +1,140 @@ + + + +find_if + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ Finds the first element within a sequence with a type for which a given + MPL Lambda Expression evaluates to boost::mpl::true_. +

+
+ + Description +
+
+ + Synopsis +
+
+template<
+    typename Sequence,
+    typename F
+    >
+unspecified find_if(Sequence const& seq);
+
+template<
+    typename Sequence,
+    typename F
+    >
+unspecified find_if(Sequence& seq);
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
seqA + model of Forward + Sequence +The sequence to search
FA + unary MPL Lambda ExpressionThe search predicate
+
+
+ + Expression + Semantics +
+
+find_if<F>(seq)
+
+

+ Return type: An iterator of the same + iterator category as the iterators of seq. +

+

+ Semantics: Returns the first element + of seq for which MPL + Lambda Expression F evaluates + to boost::mpl::true_, or end(seq) + 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>
+
+
+ + Example +
+
+const vector<double,int> vec(1.0,2);
+assert(*find_if<is_integral<mpl::_> >(vec) == 2);
+assert(find_if<is_class<mpl::_> >(vec) == end(vec));
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/query/functions/none.html b/doc/html/fusion/algorithms/query/functions/none.html new file mode 100644 index 00000000..c77b7964 --- /dev/null +++ b/doc/html/fusion/algorithms/query/functions/none.html @@ -0,0 +1,147 @@ + + + +none + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ For a sequence seq and + unary function object f, + none returns true if + f returns false for every + element of seq. +

+
+ + Synopsis +
+
+template<
+    typename Sequence,
+    typename F
+    >
+typename result_of::none<Sequence,F>::type none(
+    Sequence const& seq, F f);
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
seqA + model of Forward + Sequence, f(e) is a valid expression, convertible + to bool, for every + element e in seq +The sequence + to search
fA + unary function objectThe search predicate
+
+
+ + Expression + Semantics +
+
+none(seq, f);
+
+

+ Return type: bool +

+

+ Semantics: Returns true if and only + if f(e) + evaluates to false for every + 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>
+
+
+ + Example +
+
+struct odd
+{
+    template<typename T>
+    bool operator()(T t) const
+    {
+        return t % 2;
+    }
+};
+...
+assert(none(make_vector(2,4), odd()));
+assert(!none(make_vector(1,2), odd()));
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/query/metafunctions.html b/doc/html/fusion/algorithms/query/metafunctions.html new file mode 100644 index 00000000..544b0b11 --- /dev/null +++ b/doc/html/fusion/algorithms/query/metafunctions.html @@ -0,0 +1,47 @@ + + + +Metafunctions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/query/metafunctions/all.html b/doc/html/fusion/algorithms/query/metafunctions/all.html new file mode 100644 index 00000000..67f64d97 --- /dev/null +++ b/doc/html/fusion/algorithms/query/metafunctions/all.html @@ -0,0 +1,131 @@ + + + +all + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+
+all
+
+ + Description +
+

+ A metafunction returning the result type of all. +

+
+ + Synopsis +
+
+template<
+    typename Sequence,
+    typename F
+    >
+struct all
+{
+    typedef bool type;
+};
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
SequenceA + model of Forward + Sequence +Operation's argument
FA + model of unary Polymorphic + Function Object +Operation's argument
+
+
+ + Expression + Semantics +
+
+result_of::all<Sequence, F>::type
+
+

+ Return type: bool. +

+

+ Semantics: Returns the return type of + all + given a sequence of type Sequence + and a unary Polymorphic + Function Object of type F. + The return type is always bool. +

+
+ + Complexity +
+

+ Constant. +

+
+ + Header +
+
+#include <boost/fusion/algorithm/query/all.hpp>
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/query/metafunctions/any.html b/doc/html/fusion/algorithms/query/metafunctions/any.html new file mode 100644 index 00000000..e340607d --- /dev/null +++ b/doc/html/fusion/algorithms/query/metafunctions/any.html @@ -0,0 +1,131 @@ + + + +any + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+
+any
+
+ + Description +
+

+ A metafunction returning the result type of any. +

+
+ + Synopsis +
+
+template<
+    typename Sequence,
+    typename F
+    >
+struct any
+{
+    typedef bool type;
+};
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
SequenceA + model of Forward + Sequence +Operation's argument
FA + model of unary Polymorphic + Function Object +Operation's argument
+
+
+ + Expression + Semantics +
+
+result_of::any<Sequence, F>::type
+
+

+ Return type: bool. +

+

+ Semantics: Returns the return type of + any + given a sequence of type Sequence + and a unary Polymorphic + Function Object of type F. + The return type is always bool. +

+
+ + Complexity +
+

+ Constant. +

+
+ + Header +
+
+#include <boost/fusion/algorithm/query/any.hpp>
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/query/metafunctions/count.html b/doc/html/fusion/algorithms/query/metafunctions/count.html new file mode 100644 index 00000000..553c6e75 --- /dev/null +++ b/doc/html/fusion/algorithms/query/metafunctions/count.html @@ -0,0 +1,126 @@ + + + +count + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ A metafunction that returns the result type of count + given the sequence and search types. +

+
+ + Synopsis +
+
+template<
+    typename Sequence,
+    typename T
+    >
+struct count
+{
+    typedef int type;
+};
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementheading + Description
SequenceA + model of Forward + Sequence +Operation's argument
TAny + typeOperation's argument
+
+
+ + Expression + Semantics +
+
+result_of::count<T>::type
+
+

+ Return type: int. +

+

+ Semantics: Returns the return type of + count. The return type is always + int. +

+
+ + Complexity +
+

+ Constant. +

+
+ + Header +
+
+#include <boost/fusion/algorithm/query/count.hpp>
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/query/metafunctions/count_if.html b/doc/html/fusion/algorithms/query/metafunctions/count_if.html new file mode 100644 index 00000000..dbc3b485 --- /dev/null +++ b/doc/html/fusion/algorithms/query/metafunctions/count_if.html @@ -0,0 +1,125 @@ + + + +count_if + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ A metafunction that returns the result type of count_if + given the sequence and predicate types. +

+
+ + Synopsis +
+
+template<
+    typename Sequence,
+    typename Pred
+    >
+struct count_if
+{
+    typedef int type;
+};
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
SequenceA + model of Forward + Sequence +Operation's argument
PredA + unary function objectOperation's argument
+
+
+ + Expression + Semantics +
+
+result_of::count_if<Sequence, Pred>::type
+
+

+ Return type: int. +

+

+ Semantics: Returns the return type of + count_if. The return type is + always int. +

+
+ + Complexity +
+

+ Constant. +

+
+ + Header +
+
+#include <boost/fusion/algorithm/query/count_if.hpp>
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/query/metafunctions/find.html b/doc/html/fusion/algorithms/query/metafunctions/find.html new file mode 100644 index 00000000..4e580eac --- /dev/null +++ b/doc/html/fusion/algorithms/query/metafunctions/find.html @@ -0,0 +1,126 @@ + + + +find + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of find, + given the sequence and search types. +

+
+ + Synopsis +
+
+template<
+    typename Sequence,
+    typename T
+    >
+struct find
+{
+    typedef unspecified type;
+};
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
SequenceModel + of Forward + Sequence +Operation's argument
TAny + typeOperation's argument
+
+
+ + Expression + Semantics +
+
+result_of::find<Sequence, T>::type
+
+

+ Return type: A model of the same iterator + category as the iterators of Sequence. +

+

+ Semantics: Returns an iterator to the + first element of type T + in Sequence, or 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.hpp>
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/query/metafunctions/find_if.html b/doc/html/fusion/algorithms/query/metafunctions/find_if.html new file mode 100644 index 00000000..43bea426 --- /dev/null +++ b/doc/html/fusion/algorithms/query/metafunctions/find_if.html @@ -0,0 +1,127 @@ + + + +find_if + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of find_if + given the sequence and predicate types. +

+
+ + Synopsis +
+
+template<
+    typename Sequence,
+    typename Pred
+    >
+struct find_if
+{
+    typedef unspecified type;
+};
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
SequenceA + model of Forward + Sequence +Operation's argument
PredA + model of MPL Lambda ExpressionOperation's arguments
+
+
+ + Expression + Semantics +
+
+result_of::find_if<Sequence, Pred>::type
+
+

+ Return type: A model of the same iterator + category as the iterators of Sequence. +

+

+ Semantics: Returns an iterator to the + first element in Sequence + for which Pred evaluates + 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>
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/query/metafunctions/none.html b/doc/html/fusion/algorithms/query/metafunctions/none.html new file mode 100644 index 00000000..24bf4693 --- /dev/null +++ b/doc/html/fusion/algorithms/query/metafunctions/none.html @@ -0,0 +1,131 @@ + + + +none + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ A metafunction returning the result type of none. +

+
+ + Synopsis +
+
+template<
+    typename Sequence,
+    typename F
+    >
+struct none
+{
+    typedef bool type;
+};
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
SequenceA + model of Forward + Sequence +Operation's argument
FA + model of unary Polymorphic + Function Object +Operation's argument
+
+
+ + Expression + Semantics +
+
+result_of::none<Sequence, F>::type
+
+

+ Return type: bool. +

+

+ Semantics: Returns the return type of + none given a sequence of type + Sequence and a unary + Polymorphic + Function Object of type F. + The return type is always bool. +

+
+ + Complexity +
+

+ Constant. +

+
+ + Header +
+
+#include <boost/fusion/algorithm/query/none.hpp>
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/transformation.html b/doc/html/fusion/algorithms/transformation.html new file mode 100644 index 00000000..2df3fa7c --- /dev/null +++ b/doc/html/fusion/algorithms/transformation.html @@ -0,0 +1,65 @@ + + + +Transformation + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ + +

+ The transformation algorithms create new sequences out of existing sequences + by performing some sort of transformation. In reality the new sequences are + views onto the data in the original sequences. +

+
+ + + + + +
[Note]Note

+ As the transformation algorithms return views onto their input arguments, + it is important that the lifetime of the input arguments is greater than + the period during which you wish to use the results. +

+

+ + Header +

+
+#include <boost/fusion/algorithm/transformation.hpp>
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/transformation/functions.html b/doc/html/fusion/algorithms/transformation/functions.html new file mode 100644 index 00000000..49375ca0 --- /dev/null +++ b/doc/html/fusion/algorithms/transformation/functions.html @@ -0,0 +1,59 @@ + + + +Functions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/transformation/functions/clear.html b/doc/html/fusion/algorithms/transformation/functions/clear.html new file mode 100644 index 00000000..72c3dfb2 --- /dev/null +++ b/doc/html/fusion/algorithms/transformation/functions/clear.html @@ -0,0 +1,120 @@ + + + +clear + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ clear returns an empty sequence. +

+
+ + Synposis +
+
+template<
+    typename Sequence
+    >
+typename result_of::clear<Sequence const>::type clear(Sequence const& seq);
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
seqA + model of Forward + Sequence +Operation's argument
+
+
+ + Expression + Semantics +
+
+clear(seq);
+
+

+ Return type: A model of Forward + Sequence. +

+

+ Expression Semantics: Returns a sequence + with no elements. +

+
+ + Complexity +
+

+ Constant. +

+
+ + Header +
+
+#include <boost/fusion/algorithm/transformation/clear.hpp>
+
+
+ + Example +
+
+assert(clear(make_vector(1,2,3)) == make_vector());
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/transformation/functions/erase.html b/doc/html/fusion/algorithms/transformation/functions/erase.html new file mode 100644 index 00000000..9bb2bcd6 --- /dev/null +++ b/doc/html/fusion/algorithms/transformation/functions/erase.html @@ -0,0 +1,170 @@ + + + +erase + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns a new sequence, containing all the elements of the original except + those at a specified iterator, or between two iterators. +

+
+ + Synposis +
+
+template<
+    typename Sequence,
+    typename First
+    >
+typename result_of::erase<Sequence const, First>::type erase(
+    Sequence const& seq, First const& it1);
+
+template<
+    typename Sequence,
+    typename First,
+    typename Last
+    >
+typename result_of::erase<Sequence const, First, Last>::type erase(
+    Sequence const& seq, First const& it1, Last const& it2);
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + + + + + + +
ParametersRequirementDescription
seqA + model of Forward + Sequence +Operation's argument
it1A + model of Forward + Iterator +Iterator into seq +
it2A + model of Forward + Iterator +Iterator into seq + after it1 +
+
+
+ + Expression + Semantics +
+
+erase(seq, pos);
+
+

+ Return type: A model of Forward + Sequence. +

+

+ Semantics: Returns a new sequence, containing + all the elements of seq + except the element at pos. +

+
+erase(seq, first, last);
+
+

+ Return type: A model of Forward + Sequence. +

+

+ Semantics: Returns a new sequence, with + all the elements of seq, + 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>
+
+
+ + Example +
+
+const vector<int, double, char> vec(1, 2.0, 'c');
+assert(erase(vec, next(begin(vec))) == make_vector(1, 'c'));
+assert(erase(vec, next(begin(vec)), end(vec)) == make_vector(1));
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/transformation/functions/erase_key.html b/doc/html/fusion/algorithms/transformation/functions/erase_key.html new file mode 100644 index 00000000..dd349716 --- /dev/null +++ b/doc/html/fusion/algorithms/transformation/functions/erase_key.html @@ -0,0 +1,136 @@ + + + +erase_key + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ For an Associative + Sequence seq, + returns a Forward + Sequence containing all the elements of the original except those + with a given key. +

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

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
seqA + model of Associative + Sequence +Operation's argument
KeyAny + typeKey to erase
+
+
+ + Expression + Semantics +
+
+erase_key<Key>(seq);
+
+

+ Return type: A model of Forward + Sequence. +

+

+ Semantics: Returns a new sequence, containing + all the elements of seq, + except those with key Key. +

+
+ + Complexity +
+

+ Constant. Returns a view which is lazily evaluated. +

+
+ + Header +
+
+#include <boost/fusion/algorithm/transformation/erase_key.hpp>
+
+
+ + Example +
+
+assert(erase_key<int>(make_map<int, long>('a', 'b')) == make_map<long>('b'));
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/transformation/functions/filter.html b/doc/html/fusion/algorithms/transformation/functions/filter.html new file mode 100644 index 00000000..7c5d11ec --- /dev/null +++ b/doc/html/fusion/algorithms/transformation/functions/filter.html @@ -0,0 +1,133 @@ + + + +filter + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ For a given sequence, filter returns a new sequences containing only + the elements of a specified type. +

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

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
seqA + model of Forward + Sequence +Operation's argument
TAny + typeThe type to retain
+
+
+ + Expression + Semantics +
+
+filter<T>(seq);
+
+

+ Return type: A model of Forward + Sequence. +

+

+ Semantics: Returns a sequence containing + all the elements of seq + of type T. Equivalent + 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>
+
+
+ + Example +
+
+const vector<int,int,long,long> vec(1,2,3,4);
+assert(filter<int>(vec) == make_vector(1,2));
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/transformation/functions/filter_if.html b/doc/html/fusion/algorithms/transformation/functions/filter_if.html new file mode 100644 index 00000000..c39996d4 --- /dev/null +++ b/doc/html/fusion/algorithms/transformation/functions/filter_if.html @@ -0,0 +1,136 @@ + + + +filter_if + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ For a given sequence, filter_if returns a new sequences + containing only the elements with types for which a given MPL Lambda + Expression evaluates to boost::mpl::true_. +

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

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
seqA + model of Forward + Sequence +Operation's argument
PredA + unary MPL Lambda ExpressionThe predicate to filter + by
+
+
+ + Expression + Semantics +
+
+filter_if<Pred>(seq);
+
+

+ Return type: A model of Forward + Sequence. +

+

+ Semantics: Returns a sequence containing + all the elements of seq + with types for which Pred + evaluates to boost::mpl::true_. The order of the retained elements + 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>
+
+
+ + Example +
+
+const vector<int,int,double,double> vec(1,2,3.0,4.0);
+assert(filter_if<is_integral<mpl::_> >(vec) == make_vector(1,2));
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/transformation/functions/insert.html b/doc/html/fusion/algorithms/transformation/functions/insert.html new file mode 100644 index 00000000..b86ff1f3 --- /dev/null +++ b/doc/html/fusion/algorithms/transformation/functions/insert.html @@ -0,0 +1,144 @@ + + + +insert + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns a new sequence with all the elements of the original, an a new + element inserted the position described by a given iterator. +

+
+ + Synposis +
+
+template<
+    typename Sequence,
+    typename Pos,
+    typename T
+    >
+unspecified insert(Sequence const& seq, Pos const& pos, T const& t);
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
seqA + model of Forward + Sequence +Operation's argument
posA + model of Forward + Iterator +The position to insert at
tAny + typeThe value to insert
+
+
+ + Expression + Semantics +
+
+insert(seq, p, t);
+
+

+ Return type: A model of Forward + Sequence. +

+

+ Semantics: Returns a new sequence, containing + all the elements of seq, + in their original order, and a new element with the type and value of + t inserted at iterator + pos. +

+
+ + Complexity +
+

+ Constant. Returns a view which is lazily evaluated. +

+
+ + Header +
+
+#include <boost/fusion/algorithm/transformation/insert.hpp>
+
+
+ + Example +
+
+const vector<int,int> vec(1,2);
+assert(insert(vec, next(begin(vec)), 3) == make_vector(1,3,2));
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/transformation/functions/insert_range.html b/doc/html/fusion/algorithms/transformation/functions/insert_range.html new file mode 100644 index 00000000..9cb34546 --- /dev/null +++ b/doc/html/fusion/algorithms/transformation/functions/insert_range.html @@ -0,0 +1,148 @@ + + + +insert_range + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns a new sequence with another sequence inserted at a specified + iterator. +

+
+ + Synposis +
+
+template<
+    typename Sequence,
+    typename Pos,
+    typename Range
+    >
+typename result_of::insert_range<Sequence const, Pos, Range>::type insert_range(
+    Sequence const& seq, Pos const& pos, Range const& range);
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
seqA + model of Forward + Sequence +Operation's argument
posA + model of Forward + Iterator +The position to insert at
rangeA + model of Forward + Sequence +Range to insert
+
+
+ + Expression + Semantics +
+
+insert(seq, pos, range);
+
+

+ Return type: A model of Forward + Sequence. +

+

+ Semantics: Returns a new sequence, containing + all the elements of seq, + and the elements of range + inserted at iterator pos. + 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>
+
+
+ + Example +
+
+const vector<int,int> vec(1,2);
+assert(insert_range(vec, next(begin(vec)), make_vector(3,4)) == make_vector(1,3,4,2));
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/transformation/functions/join.html b/doc/html/fusion/algorithms/transformation/functions/join.html new file mode 100644 index 00000000..1573c20e --- /dev/null +++ b/doc/html/fusion/algorithms/transformation/functions/join.html @@ -0,0 +1,136 @@ + + + +join + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Takes 2 sequences and returns a sequence containing the elements of the + first followed by the elements of the second. +

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

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
lhsA + model of Forward + Sequence +Operation's argument
rhsA + model of Forward + Sequence +Operation's argument
+
+
+ + Expression + Semantics +
+
+join(lhs, rhs);
+
+

+ Return type: A model of Forward + Sequence. +

+

+ Semantics: Returns a sequence containing + all the elements of lhs + followed by all the elements of rhs. + The order of th elements is preserved. +

+
+ + Complexity +
+

+ Constant. Returns a view which is lazily evaluated. +

+
+ + Header +
+
+#include <boost/fusion/algorithm/transformation/join.hpp>
+
+
+ + Example +
+
+vector<int,char> v1(1, 'a');
+vector<int,char> v2(2, 'b');
+assert(join(v1, v2) == make_vector(1,'a',2,'b'));
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/transformation/functions/pop_back.html b/doc/html/fusion/algorithms/transformation/functions/pop_back.html new file mode 100644 index 00000000..caa44652 --- /dev/null +++ b/doc/html/fusion/algorithms/transformation/functions/pop_back.html @@ -0,0 +1,122 @@ + + + +pop_back + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

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

+
+ + Synopsis +
+
+template<
+    typename Sequence
+    >
+typename result_of::pop_back<Sequence const>::type pop_back(Sequence const& seq);
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
seqA + model of Forward + Sequence +Operation's argument
+
+
+ + Expression + Semantics +
+
+pop_back(seq);
+
+

+ Return type: A model of Forward + Sequence. +

+

+ Semantics: Returns a new sequence containing + all the elements of seq, + except the last element. The elements in the new sequence 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/pop_back.hpp>
+
+
+ + Example +
+
+assert(___pop_back__(make_vector(1,2,3)) == make_vector(1,2));
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/transformation/functions/pop_front.html b/doc/html/fusion/algorithms/transformation/functions/pop_front.html new file mode 100644 index 00000000..f9172e1e --- /dev/null +++ b/doc/html/fusion/algorithms/transformation/functions/pop_front.html @@ -0,0 +1,122 @@ + + + +pop_front + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

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

+
+ + Synopsis +
+
+template<
+    typename Sequence
+    >
+typename result_of::pop_front<Sequence const>::type pop_front(Sequence const& seq);
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
seqA + model of Forward + Sequence +Operation's argument
+
+
+ + Expression + Semantics +
+
+pop_front(seq);
+
+

+ Return type: A model of Forward + Sequence. +

+

+ Semantics: Returns a new sequence containing + all the elements of seq, + except the first element. The elements in the new sequence 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/pop_front.hpp>
+
+
+ + Example +
+
+assert(pop_front(make_vector(1,2,3)) == make_vector(2,3));
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/transformation/functions/push_back.html b/doc/html/fusion/algorithms/transformation/functions/push_back.html new file mode 100644 index 00000000..070431ee --- /dev/null +++ b/doc/html/fusion/algorithms/transformation/functions/push_back.html @@ -0,0 +1,132 @@ + + + +push_back + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

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

+
+ + Synopsis +
+
+template<
+    typename Sequence,
+    typename T
+    >
+typename result_of::push_back<Sequence, T>::type push_back(
+    Sequence const& seq, T const& t);
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
seqA + model of Forward + Sequence +Operation's argument
tAny + typeThe value to add to the end
+
+
+ + Expression + Semantics +
+
+push_back(seq, t);
+
+

+ Return type: A model of Forward + Sequence. +

+

+ Semantics: Returns a new sequence, containing + all the elements of seq, + and new element t appended + 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>
+
+
+ + Example +
+
+assert(push_back(make_vector(1,2,3),4) == make_vector(1,2,3,4));
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/transformation/functions/push_front.html b/doc/html/fusion/algorithms/transformation/functions/push_front.html new file mode 100644 index 00000000..b45d816f --- /dev/null +++ b/doc/html/fusion/algorithms/transformation/functions/push_front.html @@ -0,0 +1,133 @@ + + + +push_front + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

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

+
+ + Synopsis +
+
+template<
+    typename Sequence,
+    typename T
+    >
+typename result_of::push_front<Sequence, T>::type push_front(
+    Sequence const& seq, T const& t);
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
seqA + model of Forward + Sequence +Operation's argument
tAny + typeThe value to add to the beginning
+
+
+ + Expression + Semantics +
+
+push_back(seq, t);
+
+

+ Return type: A model of Forward + Sequence. +

+

+ Semantics: Returns a new sequence, containing + all the elements of seq, + and new element t appended + to the beginning. 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_front.hpp>
+
+
+ + Example +
+
+assert(push_front(make_vector(1,2,3),0) == make_vector(0,1,2,3));
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/transformation/functions/remove.html b/doc/html/fusion/algorithms/transformation/functions/remove.html new file mode 100644 index 00000000..8b4027fe --- /dev/null +++ b/doc/html/fusion/algorithms/transformation/functions/remove.html @@ -0,0 +1,133 @@ + + + +remove + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns a new sequence, with all the elements of the original sequence, + except those of a given type. +

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

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
seqA + model of Forward + Sequence +Operation's argument
TAny + typeType to remove
+
+
+ + Expression + Semantics +
+
+remove<T>(seq);
+
+

+ Return type: A model of Forward + Sequence. +

+

+ Semantics: Returns a new sequence, containing + all the elements of seq, + in their original order, except those of type T. + 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>
+
+
+ + Example +
+
+const vector<int,double> vec(1,2.0);
+assert(remove<double>(vec) == make_vector(1));
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/transformation/functions/remove_if.html b/doc/html/fusion/algorithms/transformation/functions/remove_if.html new file mode 100644 index 00000000..e18b9580 --- /dev/null +++ b/doc/html/fusion/algorithms/transformation/functions/remove_if.html @@ -0,0 +1,133 @@ + + + +remove_if + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns a new sequence, containing all the elements of the original except + those where a given unary function object evaluates to true. +

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

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
seqA + model of Forward + Sequence +Operation's argument
PredA + model of unary MPL Lambda ExpressionRemoval predicate
+
+
+ + Expression + Semantics +
+
+remove_if<Pred>(seq);
+
+

+ Return type: A model of Forward + Sequence. +

+

+ Semantics: Returns a new sequence, containing + all the elements of seq, + in their original order, except those elements with types for which + Pred evaluates to boost::mpl::true_. Equivalent to filter<boost::mpl::not_<Pred> >(seq). +

+
+ + Complexity +
+

+ Constant. Returns a view which is lazily evaluated. +

+
+ + Header +
+
+#include <boost/fusion/algorithm/transformation/remove_if.hpp>
+
+
+ + Example +
+
+const vector<int,double> vec(1,2.0);
+assert(remove_if<is_floating_point<mpl::_> >(vec) == make_vector(1));
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/transformation/functions/replace.html b/doc/html/fusion/algorithms/transformation/functions/replace.html new file mode 100644 index 00000000..30a80ed0 --- /dev/null +++ b/doc/html/fusion/algorithms/transformation/functions/replace.html @@ -0,0 +1,144 @@ + + + +replace + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Replaces each value within a sequence of a given type and value with + a new value. +

+
+ + Synopsis +
+
+template<
+    typename Sequence,
+    typename T
+    >
+typename result_of::replace<Sequence const, T>::type replace(
+    Sequence const& seq, T const& old_value, T const& new_value);
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
seqA + model of Forward + Sequence, e == old_value + is a valid expression, convertible to bool, + for each element e + in seq with type + convertible to T +Operation's + argument
old_valueAny + typeValue to replace
new_valueAny + typeReplacement value
+
+
+ + Expression + Semantics +
+
+replace(seq, old_value, new_value);
+
+

+ Return type: A model of Forward + Sequence. +

+

+ Semantics: Returns a new sequence with + all the values of seq + with new_value assigned + 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>
+
+
+ + Example +
+
+assert(replace(make_vector(1,2), 2, 3) == make_vector(1,3));
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/transformation/functions/replace_if.html b/doc/html/fusion/algorithms/transformation/functions/replace_if.html new file mode 100644 index 00000000..9840ea19 --- /dev/null +++ b/doc/html/fusion/algorithms/transformation/functions/replace_if.html @@ -0,0 +1,154 @@ + + + +replace_if + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Replaces each element of a given sequence for which an unary function + object evaluates to true + replaced with a new value. +

+
+ + Synopsis +
+
+template<
+    typename Sequence,
+    typename F,
+    typename T>
+typename result_of::replace_if<Sequence const, F, T>::type replace_if(
+    Sequence const& seq, F f, T const& new_value);
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
seqA + model of Forward + Sequence +Operation's argument
fA + function object for which f(e) is a valid expression, convertible + to bool, for each + element e in seq +Operation's + argument
new_valueAny + typeReplacement value
+
+
+ + Expression + Semantics +
+
+replace_if(seq, f, new_value);
+
+

+ Return type: A model of Forward + Sequence. +

+

+ Semantics: Returns a new sequence with + all the elements of seq, + with new_value assigned + to each element for which f + evaluates to true. +

+
+ + Complexity +
+

+ Constant. Returns a view which is lazily evaluated. +

+
+ + Header +
+
+#include <boost/fusion/algorithm/transformation/replace_if.hpp>
+
+
+ + Example +
+
+struct odd
+{
+    template<typename T>
+    bool operator()(T t) const
+    {
+        return t % 2;
+    }
+};
+...
+assert(replace_if(make_vector(1,2), odd(), 3) == make_vector(3,2));
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/transformation/functions/reverse.html b/doc/html/fusion/algorithms/transformation/functions/reverse.html new file mode 100644 index 00000000..0544fbbd --- /dev/null +++ b/doc/html/fusion/algorithms/transformation/functions/reverse.html @@ -0,0 +1,121 @@ + + + +reverse + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

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

+
+ + Synposis +
+
+template<
+    typename Sequence
+    >
+typename result_of::reverse<Sequence const>::type reverse(Sequence const& seq);
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
seqA + model of Bidirectional + Sequence +Operation's argument
+
+
+ + Expression + Semantics +
+
+reverse(seq);
+
+

+ Return type: A model of Bidirectional + Sequence. +

+

+ Semantics: Returns a new sequence containing + all the elements of seq + in reverse order. +

+
+ + Complexity +
+

+ Constant. Returns a view which is lazily evaluated. +

+
+ + Header +
+
+#include <boost/fusion/algorithm/transformation/reverse.hpp>
+
+
+ + Example +
+
+assert(reverse(make_vector(1,2,3)) == make_vector(3,2,1));
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/transformation/functions/transform.html b/doc/html/fusion/algorithms/transformation/functions/transform.html new file mode 100644 index 00000000..d7d71d7b --- /dev/null +++ b/doc/html/fusion/algorithms/transformation/functions/transform.html @@ -0,0 +1,231 @@ + + + +transform + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ For a sequence seq and + Polymorphic + Function Object F, + transform returns a new + sequence with elements created by applying F + to each element of seq. +

+
+ + Unary + version synopsis +
+
+template<
+    typename Sequence,
+    typename F
+    >
+typename result_of::transform<Sequence const, F>::type transform(
+    Sequence const& seq, F f);
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
seqA + model of Forward + Sequence +Operation's argument
fA + model of unary Polymorphic + Function Object where f(e) is a valid expression for each + element e of seq +Transformation + function
+
+
+ + Expression + Semantics +
+
+transform(seq, f);
+
+

+ Return type: A model of Forward + Sequence +

+

+ Semantics: Returns a new sequence, containing + the return values of f(e) for each element e + within seq. +

+
+ + Binary + version synopsis +
+
+template<
+    typename Sequence1,
+    typename Sequence2,
+    typename F
+    >
+typename result_of::transform<Sequence1 const, Sequence2 const, F>::type transform(
+    Sequence1 const& seq1, Sequence2 const& seq2, F f);
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
seq1A + model of Forward + Sequence +Operation's argument
seq2A + model of Forward + Sequence +Operation's argument
fA + model of binary Polymorphic + Function Object where f(e1, e2) is a valid expression for each + pair of elements e1 + and e2 of seq1 and seq2 + respectivelyTransformation function
+
+

+ Return type: A model of Forward + Sequence. +

+

+ Semantics: Returns a new sequence, containing + the return values of f(e1, e2) for each pair of elements e1 and e2 + within seq1 and seq2 respectively. +

+
+ + Complexity +
+

+ Constant. Returns a view which is lazily evaluated. +

+
+ + Header +
+
+#include <boost/fusion/algorithm/transformation/transform.hpp>
+
+
+ + Example +
+
+struct triple
+{
+    template<typename T>
+    struct apply
+    {
+        typedef T type;
+    };
+
+    template<typename T>
+    T operator()(T t) const
+    {
+        return t * 3;
+    };
+};
+...
+assert(transform(make_vector(1,2,3), triple()) == make_vector(3,6,9));
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/transformation/functions/zip.html b/doc/html/fusion/algorithms/transformation/functions/zip.html new file mode 100644 index 00000000..1a13b3de --- /dev/null +++ b/doc/html/fusion/algorithms/transformation/functions/zip.html @@ -0,0 +1,132 @@ + + + +zip + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+
+zip
+
+ + Description +
+

+ Zips sequences together to form a single sequence, whos members are tuples + of the members of the component sequences. +

+
+ + Synopsis +
+
+template<
+    typename Sequence1,
+    typename Sequence2,
+    ...
+    typename SequenceN
+    >
+typename result_of::zip<Sequence1, Sequence2, ... SequenceN>::type 
+zip(Sequence1 const& seq1, Sequence2 const& seq2, ... SequenceN const& seqN);
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
+seq1 to + seqN +Each + sequence is a model of Forward + Sequence.Operation's argument
+
+
+ + Expression + Semantics +
+
+zip(seq1, seq2, ... seqN);
+
+

+ Return type: A model of Forward + Sequence. +

+

+ Semantics: Returns a sequence containing + tuples of elements from sequences seq1 + to seqN. For example, + applying zip to tuples (1, 2, 3) and + ('a', 'b', 'c') would return ((1, 'a'),(2, 'b'),(3, 'c')) +

+
+ + Complexity +
+

+ Constant. Returns a view which is lazily evaluated. +

+
+ + Header +
+
+#include <boost/fusion/algorithm/transformation/zip.hpp>
+
+
+ + Example +
+
+vector<int,char> v1(1, 'a');
+vector<int,char> v2(2, 'b');
+assert(zip(v1, v2) == make_vector(make_vector(1, 2),make_vector('a', 'b'));
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/transformation/metafunctions.html b/doc/html/fusion/algorithms/transformation/metafunctions.html new file mode 100644 index 00000000..d9dbdf55 --- /dev/null +++ b/doc/html/fusion/algorithms/transformation/metafunctions.html @@ -0,0 +1,59 @@ + + + +Metafunctions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/clear.html b/doc/html/fusion/algorithms/transformation/metafunctions/clear.html new file mode 100644 index 00000000..780610ec --- /dev/null +++ b/doc/html/fusion/algorithms/transformation/metafunctions/clear.html @@ -0,0 +1,113 @@ + + + +clear + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of clear, given the input sequence + type. +

+
+ + Synopsis +
+
+template<
+    typename Sequence
+    >
+struct clear
+{
+    typedef unspecified type;
+};
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
SequenceAny + typeOperation's argument
+
+
+ + Expression + Semantics +
+
+result_of::clear<Sequence>::type
+
+

+ Return type: A model of Forward + Sequence. +

+

+ Semantics: Returns an empty sequence. +

+
+ + Complexity +
+

+ Constant. +

+
+ + Header +
+
+#include <boost/fusion/algorithm/transformation/clear.hpp>
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/erase.html b/doc/html/fusion/algorithms/transformation/metafunctions/erase.html new file mode 100644 index 00000000..403a7d9e --- /dev/null +++ b/doc/html/fusion/algorithms/transformation/metafunctions/erase.html @@ -0,0 +1,151 @@ + + + +erase + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ Returns the result type of erase, given the input sequence + and range delimiting iterator types. +

+
+ + Description +
+
+ + Synopsis +
+
+template<
+    typename Sequence,
+    typename It1,
+    typename It2 = unspecified>
+struct erase
+{
+    typedef unspecified type;
+};
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
SequenceA + model of Forward + Sequence +Operation's argument
It1A + model of Forward + Iterator +Operation's argument
It2A + model of Forward + Iterator +Operation's argument
+
+
+ + Expression + Semantics +
+
+result_of::erase<Sequence, It1>::type
+
+

+ Return type: A model of Forward + Sequence. +

+

+ Semantics: Returns a new sequence with + the element at It1 removed. +

+
+result_of::erase<Sequence, It1, It2>::type
+
+

+ Return type: A model of Forward + Sequence. +

+

+ Semantics: Returns a new sequence with + the elements between It1 + and It2 removed. +

+
+ + Complexity +
+

+ Constant. +

+
+ + Header +
+
+#include <boost/fusion/algorithm/transformation/erase.hpp>
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html b/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html new file mode 100644 index 00000000..f8e41c56 --- /dev/null +++ b/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html @@ -0,0 +1,127 @@ + + + +erase_key + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of erase_key, given the sequence + and key types. +

+
+ + Synopsis +
+
+template<
+    typename Sequence,
+    typename Key
+    >
+struct erase_key
+{
+    typedef unspecified type;
+};
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
SequenceA + model of Associative + Sequence +Operation's argument
KeyAny + typeKey type
+
+
+ + Expression + Semantics +
+
+result_of::erase_key<Sequence, Key>::type
+
+

+ Return type: A model of Associative + Sequence. +

+

+ Semantics: Returns a sequence with the + elements of Sequence, + except those with key Key. +

+
+ + Complexity +
+

+ Constant. +

+
+ + Header +
+
+#include <boost/fusion/algorithm/transformation/erase_key.hpp>
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/filter.html b/doc/html/fusion/algorithms/transformation/metafunctions/filter.html new file mode 100644 index 00000000..a921959a --- /dev/null +++ b/doc/html/fusion/algorithms/transformation/metafunctions/filter.html @@ -0,0 +1,128 @@ + + + +filter + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of filter given the sequence type + and type to retain. +

+
+ + Synopsis +
+
+template<
+    typename Sequence,
+    typename T
+    >
+struct filter
+{
+    typedef unspecified type;
+};
+
+
+

+ + Parameter +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
SequenceA + model of Forward + Sequence +Operation's argument
TAny + typeType to retain
+
+
+ + Expression + Semantics +
+
+result_of::filter<Sequence, T>::type
+
+

+ Return type: A model of Forward + Sequence. +

+

+ Semantics: Returns a sequence containing + the elements of Sequence + that are of type T. Equivalent + to result_of::filter_if<Sequence, boost::is_same<mpl::_, T> >::type. +

+
+ + Complexity +
+

+ Constant. +

+
+ + Header +
+
+#include <boost/fusion/algorithm/transformation/filter.hpp>
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html new file mode 100644 index 00000000..1caefb3c --- /dev/null +++ b/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html @@ -0,0 +1,128 @@ + + + +filter_if + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of filter_if given the sequence + and unary MPL Lambda Expression predicate type. +

+
+ + Synopsis +
+
+template<
+    typename Sequence,
+    typename Pred
+    >
+struct filter_if
+{
+    typedef unspecified type;
+};
+
+
+

+ + Parameter +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
SequenceA + model of Forward + Sequence +Operation's argument
PredA + unary MPL Lambda ExpressionType to retain
+
+
+ + Expression + Semantics +
+
+result_of::filter_if<Sequence, Pred>::type
+
+

+ Return type: A model of Forward + Sequence. +

+

+ Semantics: Returns a sequence containing + the elements of Sequence + for which Pred evaluates + to boost::mpl::true_. +

+
+ + Complexity +
+

+ Constant. +

+
+ + Header +
+
+#include <boost/fusion/algorithm/transformation/filter_if.hpp>
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/insert.html b/doc/html/fusion/algorithms/transformation/metafunctions/insert.html new file mode 100644 index 00000000..fca46001 --- /dev/null +++ b/doc/html/fusion/algorithms/transformation/metafunctions/insert.html @@ -0,0 +1,138 @@ + + + +insert + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of insert, given the sequence, + position iterator and insertion types. +

+
+ + Synopsis +
+
+template<
+    typename Sequence,
+    typename Position,
+    typename T
+    >
+struct insert
+{
+    typedef unspecified type;
+};
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
SequenceA + model of Forward + Sequence +Operation's argument
PositionA + model of Forward + Iterator +Operation's argument
TAny + typeOperation's argument
+
+
+ + Expression + Semantics +
+
+result_of::insert<Sequence, Position, T>::type
+
+

+ Return type: A model of Forward + Sequence. +

+

+ Semantics: Returns a sequence with an + element of type T inserted + at position Position + in Sequence. +

+
+ + Complexity +
+

+ Constant. +

+
+ + Header +
+
+#include <boost/fusion/algorithm/transformation/insert.hpp>
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html b/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html new file mode 100644 index 00000000..0337ea83 --- /dev/null +++ b/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html @@ -0,0 +1,141 @@ + + + +insert_range + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of insert_range, given the input + sequence, position iterator and insertion range types. +

+
+ + Synopsis +
+
+template<
+    typename Sequence,
+    typename Position,
+    typename Range
+    >
+struct insert_range
+{
+    typedef unspecified type;
+};
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
SequenceA + model of Forward + Sequence +Operation's argument
PositionA + model of Forward + Iterator +Operation's argument
RangeA + model of Forward + Sequence +Operation's argument
+
+
+ + Expression + Semantics +
+
+result_of::insert_range<Sequence, Position, Range>::type
+
+

+ Return type: A model of Forward + Sequence. +

+

+ Semantics: Returns a sequence with the + elements of Range inserted + at position Position + into Sequence. +

+
+ + Complexity +
+

+ Constant. +

+
+ + Header +
+
+#include <boost/fusion/algorithm/transformation/insert_range.hpp>
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/join.html b/doc/html/fusion/algorithms/transformation/metafunctions/join.html new file mode 100644 index 00000000..b031f52c --- /dev/null +++ b/doc/html/fusion/algorithms/transformation/metafunctions/join.html @@ -0,0 +1,92 @@ + + + +join + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

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

+
+ + Synopsis +
+
+template<
+    typename LhSequence,
+    typename RhSequence
+    >
+struct join
+{
+    typedef unspecified type;
+};
+
+
+ + Expression + Semantics +
+
+result_of::join<LhSequence, RhSequence>::type
+
+

+ Return type: A model of Forward + Sequence. +

+

+ Semantics: Returns a sequence containing + the elements of LhSequence + followed by the elements of RhSequence. + The order of the elements in the 2 sequences is preserved. +

+
+ + Complexity +
+

+ Constant. +

+
+ + Header +
+
+#include <boost/fusion/algorithm/transformation/join.hpp>
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html b/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html new file mode 100644 index 00000000..b869667c --- /dev/null +++ b/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html @@ -0,0 +1,118 @@ + + + +pop_back + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of pop_back, given the input sequence + type. +

+
+ + Synopsis +
+
+template<
+    typename Sequence
+    >
+struct pop_back
+{
+    typedef unspecified type;
+};
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
SequenceA + model of Forward + Sequence +Operation's argument
+
+
+ + Expression + Semantics +
+
+result_of::pop_back<Sequence>::type
+
+

+ Return type: A model of Forward + Sequence. +

+

+ Semantics: Returns a sequence with all + the elements of Sequence + except the last element. +

+
+ + Complexity +
+

+ Constant. +

+
+ + Header +
+
+#include <boost/fusion/algorithm/tranformation/pop_back.hpp>
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html b/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html new file mode 100644 index 00000000..1aeacfea --- /dev/null +++ b/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html @@ -0,0 +1,118 @@ + + + +pop_front + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of pop_front, given the input sequence + type. +

+
+ + Synopsis +
+
+template<
+    typename Sequence
+    >
+struct pop_front
+{
+    typedef unspecified type;
+};
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
SequenceA + model of Forward + Sequence +Operation's argument
+
+
+ + Expression + Semantics +
+
+result_of::pop_front<Sequence>::type
+
+

+ Return type: A model of Forward + Sequence. +

+

+ Semantics: Returns a sequence with all + the elements of Sequence + except the first element. +

+
+ + Complexity +
+

+ Constant. +

+
+ + Header +
+
+#include <boost/fusion/algorithm/transformation/pop_front.hpp>
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html b/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html new file mode 100644 index 00000000..3f78905b --- /dev/null +++ b/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html @@ -0,0 +1,128 @@ + + + +push_back + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of push_back, given the types of + the input sequence and element to push. +

+
+ + Synopsis +
+
+template<
+    typename Sequence,
+    typename T
+    >
+struct push_back
+{
+    typedef unspecified type;
+};
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
SequenceA + model of Forward + Sequence +Operation's argument
TAny + typeOperation's argument
+
+
+ + Expression + Semantics +
+
+result_of::push_back<Sequence, T>::type
+
+

+ Return type: A model of Forward + Sequence. +

+

+ Semantics: Returns a sequence with the + elements of Sequence + and an element of type T + added to the end. +

+
+ + Complexity +
+

+ Constant. +

+
+ + Header +
+
+#include <boost/fusion/algorithm/transformation/push_back.hpp>
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html b/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html new file mode 100644 index 00000000..5f8045df --- /dev/null +++ b/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html @@ -0,0 +1,128 @@ + + + +push_front + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of push_front, given the types + of the input sequence and element to push. +

+
+ + Synopsis +
+
+template<
+    typename Sequence,
+    typename T
+    >
+struct push_front
+{
+    typedef unspecified type;
+};
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
SequenceA + model of Forward + Sequence +Operation's argument
TAny + typeOperation's argument
+
+
+ + Expression + Semantics +
+
+result_of::push_front<Sequence, T>::type
+
+

+ Return type: A model of Forward + Sequence. +

+

+ Semantics: Returns a sequence with the + elements of Sequence + and an element of type T + added to the beginning. +

+
+ + Complexity +
+

+ Constant. +

+
+ + Header +
+
+#include <boost/fusion/algorithm/transformation/push_front.hpp>
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/remove.html b/doc/html/fusion/algorithms/transformation/metafunctions/remove.html new file mode 100644 index 00000000..bbd234f2 --- /dev/null +++ b/doc/html/fusion/algorithms/transformation/metafunctions/remove.html @@ -0,0 +1,128 @@ + + + +remove + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of remove, given the sequence and + removal types. +

+
+ + Synopsis +
+
+template<
+    typename Sequence,
+    typename T
+    >
+struct remove
+{
+    typedef unspecified type;
+};
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
SequenceA + model of Forward + Sequence +Operation's argument
TAny + typeRemove elements of this type
+
+
+ + Expression + Semantics +
+
+result_of::remove<Sequence, T>::type
+
+

+ Return type: A model of Forward + Sequence. +

+

+ Semantics: Returns a sequence containing + the elements of Sequence + not of type T. Equivalent + to result_of::replace_if<Sequence, boost::is_same<mpl::_, T> >::type. +

+
+ + Complexity +
+

+ Constant. +

+
+ + Header +
+
+#include <boost/fusion/algorithm/transformation/remove.hpp>
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html new file mode 100644 index 00000000..f673602c --- /dev/null +++ b/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html @@ -0,0 +1,130 @@ + + + +remove_if + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of remove_if, given the input sequence + and unary MPL Lambda Expression predicate types. +

+
+ + Synopsis +
+
+template<
+    typename Sequence,
+    typename Pred
+    >
+struct remove_if
+{
+    typedef unspecified type;
+};
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
SequenceA + model of Forward + Sequence +Operation's argument
PredA + model of unary MPL Lambda ExpressionRemove elements + which evaluate to boost::mpl::true_ +
+
+
+ + Expression + Semantics +
+
+result_of::remove_if<Sequence, Pred>::type
+
+

+ Return type: A model of Forward + Sequence. +

+

+ Semantics: Returns a sequence containing + the elements of Sequence + for which Pred evaluates + to boost::mpl::false_. +

+
+ + Complexity +
+

+ Constant. +

+
+ + Header +
+
+#include <boost/fusion/algorithm/transformation/remove_if.hpp>
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/replace.html b/doc/html/fusion/algorithms/transformation/metafunctions/replace.html new file mode 100644 index 00000000..ca5637d6 --- /dev/null +++ b/doc/html/fusion/algorithms/transformation/metafunctions/replace.html @@ -0,0 +1,126 @@ + + + +replace + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of replace, given the types of + the input sequence and element to replace. +

+
+ + Synopsis +
+
+template<
+    typename Sequence,
+    typename T
+    >
+struct replace
+{
+    typedef unspecified type;
+};
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
SequenceA + model of Forward + Sequence +Operation's argument
TAny + typeThe type of the search and replacement objects
+
+
+ + Expression + Semantics +
+
+result_of::replace<Sequence,T>::type
+
+

+ Return type: A model of Forward + Sequence. +

+

+ Semantics: Returns the return type of + replace. +

+
+ + Complexity +
+

+ Constant. +

+
+ + Header +
+
+#include <boost/fusion/algorithm/transformation/replace.hpp>
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html new file mode 100644 index 00000000..ae353135 --- /dev/null +++ b/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html @@ -0,0 +1,137 @@ + + + +replace_if + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of replace_if, given the types + of the sequence, Polymorphic + Function Object predicate and replacement object. +

+
+ + Synopsis +
+
+template<
+    typename Sequence,
+    typename F,
+    typename T>
+struct replace_if
+{
+    typedef unspecified type;
+};
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
SequenceA + model of Forward + Sequence +Operation's argument
FA + model of unary Polymorphic + Function Object +Replacement predicate
TAny + typeThe type of the replacement object
+
+
+ + Expression + Semantics +
+
+result_of::replace_if<Sequence,F,T>::type
+
+

+ Return type: A model of Forward + Sequence. +

+

+ Semantics: Returns the return type of + replace_if. +

+
+ + Complexity +
+

+ Constant. +

+
+ + Header +
+
+#include <boost/fusion/algorithm/transformation/replace_if.hpp>
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html b/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html new file mode 100644 index 00000000..600b47b3 --- /dev/null +++ b/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html @@ -0,0 +1,117 @@ + + + +reverse + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of reverse, given the input sequence + type. +

+
+ + Synopsis +
+
+template<
+    typename Sequence
+    >
+struct reverse
+{
+    typedef unspecified type;
+};
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
SequenceA + model of Bidirectional + Sequence +Operation's argument
+
+
+ + Expression + Semantics +
+
+result_of::reverse<Sequence>::type
+
+

+ Return type: A model of Bidirectional + Sequence. +

+

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

+
+ + Complexity +
+

+ Constant. +

+
+ + Header +
+
+#include <boost/fusion/algorithm/transformation/reverse.hpp>
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/transform.html b/doc/html/fusion/algorithms/transformation/metafunctions/transform.html new file mode 100644 index 00000000..d56a0602 --- /dev/null +++ b/doc/html/fusion/algorithms/transformation/metafunctions/transform.html @@ -0,0 +1,130 @@ + + + +transform + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result of type transform, given the sequence + and Polymorphic + Function Object types. +

+
+ + Synopsis +
+
+template<
+    typename Sequence,
+    typename F
+    >
+struct transform
+{
+    typedef unspecified type;
+};
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
SequenceA + model of Forward + Sequence Operation's argument
FA + model of unary Polymorphic + Function Object +Transformation function object
+
+
+ + Expression + Semantics +
+
+result_of::transform<Sequence, F>::type
+
+

+ Return type: A model of Forward + Sequence. +

+

+ Semantics: Returns a sequence with values + F::apply<E>::type for each element type E in Sequence. +

+
+ + Complexity +
+

+ Constant. +

+
+ + Header +
+
+#include <boost/fusion/algorithm/transformation/transform.hpp>
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/zip.html b/doc/html/fusion/algorithms/transformation/metafunctions/zip.html new file mode 100644 index 00000000..64611290 --- /dev/null +++ b/doc/html/fusion/algorithms/transformation/metafunctions/zip.html @@ -0,0 +1,95 @@ + + + +zip + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+
+zip
+
+ + Description +
+

+ Zips sequences together to form a single sequence, whos members are tuples + of the members of the component sequences. +

+
+ + Synopsis +
+
+template<
+    typename Sequence1,
+    typename Sequence2,
+    ...
+    typename SequenceN
+    >
+struct zip
+{
+    typedef unspecified type;
+};
+
+
+ + Expression + Semantics +
+
+result_of::zip<Sequence1, Sequence2, ... SequenceN>::type
+
+

+ Return type: A model of the most restrictive + traversal category of sequences Sequence1 + to SequenceN. +

+

+ Semantics: Return a sequence containing + tuples of elements from each sequence. For example, applying zip to tuples + (1, 2, 3) and ('a', 'b', 'c') would + return ((1, 'a'),(2, 'b'),(3, 'c')) +

+
+ + Complexity +
+

+ Constant. +

+
+ + Header +
+
+#include <boost/fusion/algorithm/transformation/zip.hpp>
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/change_log.html b/doc/html/fusion/change_log.html new file mode 100644 index 00000000..71050df0 --- /dev/null +++ b/doc/html/fusion/change_log.html @@ -0,0 +1,41 @@ + + + +Change log + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ This section summarizes significant changes to the Fusion library. +

+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/extension.html b/doc/html/fusion/extension.html new file mode 100644 index 00000000..be3d339c --- /dev/null +++ b/doc/html/fusion/extension.html @@ -0,0 +1,556 @@ + + + +Extension + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ The Fusion library is designed to be extensible, new sequences types can easily + be added. In fact, the library support for std::pair, + boost::array and MPL + sequences is entirely provided using the extension mechanism. +

+

+ The process for adding a new sequence type to Fusion is: +

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

+ + Our example +

+

+ In order to illustrate enabling a new sequence type for use with Fusion, we + are going to use the type: +

+
+namespace example
+{
+    struct example_struct
+    {
+        std::string name;
+        int age;
+        example_struct(
+            const std::string& n,
+            int a)
+            : name(n), age(a)
+        {}
+    };
+}
+
+

+ We are going to pretend that this type has been provided by a 3rd party library, + and therefore cannot be modified. We shall work through all the necessary steps + to enable example_struct to + serve as an Associative + Sequence as described in the Quick + Start guide. +

+

+ + Enabling Tag Dispatching +

+

+ The Fusion extensibility mechanism uses tag + dispatching to call the correct code for a given sequence + type. In order to exploit the tag dispatching mechanism we must first declare + a new tag type for the mechanism to use. For example: +

+
+namespace boost { namespace fusion {
+    struct example_sequence_tag; // Only definition needed
+}}
+
+

+ Next we need to enable the traits::tag_of + metafunction to return our newly chosen tag type for operations involving our + sequence. This is done by specializing traits::tag_of + for our sequence type. +

+
+#include <boost/fusion/support/tag_of_fwd.hpp>
+
+namespace boost { namespace fusion { namespace traits {
+    
+    template<>
+    struct tag_of<example_struct>
+    {
+        typedef example_sequence_tag type;
+    };
+}}}
+
+

+ traits::tag_of also has a second template argument, + that can be used in conjuction with boost::enable_if + to provide tag support for whole clases of types. This feature is not necessary + for our sequence, but for an example see the code in: +

+
+#include <boost/fusion/sequence/adapted/mpl/tag_of.hpp>
+
+

+ + Designing a + suitable iterator +

+

+ We need an iterator to describe positions, and provide access to the data within + our sequence. As it is straightforward to do, we are going to provide a random + access iterator in our example. +

+

+ We will use a simple design, in which the 2 members of example_struct + are given numbered indices, 0 for name + and 1 for age respectively. +

+
+template<typename Struct, int Pos>
+struct example_struct_iterator
+    : iterator_base<example_struct_iterator<Struct, Pos> >
+{
+    BOOST_STATIC_ASSERT(Pos >=0 && Pos < 3);
+    typedef Struct struct_type;
+    typedef mpl::int_<Pos> index;
+    typedef random_access_traversal_tag category;
+
+    example_struct_iterator(Struct& str)
+        : struct_(str) {}
+
+    Struct& struct_;
+};
+
+

+ A quick summary of the details of our iterator: +

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

+ We also need to enable tag + dispatching for our iterator type, with another specialization + of traits::tag_of: +

+
+namespace boost { namespace fusion {
+    struct example_struct_iterator_tag;
+
+    namespace traits
+    {
+        template<typename Struct, int Pos>
+        struct tag_of<boost::fusion::example_struct_iterator<Struct, Pos> >
+        {
+            typedef example_struct_iterator_tag type;
+        };
+    }
+}}
+
+

+ In isolation, the iterator implementation is pretty dry. Things should become + clearer as we add features to our implementation. +

+

+ + A first + couple of instructive features +

+

+ To start with, we will get the result_of::value_of metafunction working. To + do this, we provide a specialization of the boost::fusion::extension::value_of_impl + template for our iterator's tag type. +

+
+template<>
+struct value_of_impl<example_struct_iterator_tag>
+{
+    template<typename Iterator>
+    struct apply;
+
+    template<typename Struct>
+    struct apply<example_struct_iterator<Struct, 0> >
+    {
+        typedef std::string type;
+    };
+
+    template<typename Struct>
+    struct apply<example_struct_iterator<Struct, 1> >
+    {
+        typedef int type;
+    };
+};
+
+

+ The implementation itself is pretty simple, it just uses 2 partial specializations + to provide the type of the 2 different members of example_struct, + based on the index of the iterator. +

+

+ To understand how value_of_impl + is used by the library we will look at the implementation of value_of: +

+
+template <typename Iterator>
+struct value_of
+{
+    typedef typename
+        extension::value_of_impl<typename Iterator::ftag>::
+            template apply<Iterator>::type
+    type;
+};
+
+

+ So value_of + uses tag dispatching + to select an MPL Metafunction Class to provide its functionality. You will + notice this pattern throughout the implementation of Fusion. +

+

+ Ok, lets enable dereferencing of our iterator. In this case we must provide + a suitable specialization of deref_impl. +

+
+template<>
+struct deref_impl<example_struct_iterator_tag>
+{
+    template<typename Iterator>
+    struct apply;
+
+    template<typename Struct>
+    struct apply<example_struct_iterator<Struct, 0> >
+    {
+        typedef typename mpl::if_<
+            is_const<Struct>, std::string const&, std::string&>::type type;
+
+        static type
+        call(example_struct_iterator<Struct, 0> const& it)
+        {
+            return it.struct_.name;
+        }
+    };
+
+    template<typename Struct>
+    struct apply<example_struct_iterator<Struct, 1> >
+    {
+        typedef typename mpl::if_<
+            is_const<Struct>, int const&, int&>::type type;
+
+        static type
+        call(example_struct_iterator<Struct, 1> const& it)
+        {
+            return it.struct_.age;
+        }
+    };
+};
+
+

+ The use of deref_impl is very + similar to that of value_of_impl, + but it also provides some runtime functionality this time via the call static member function. To see how + deref_impl is used, lets have + a look at the implementation of deref: +

+
+namespace result_of
+{
+    template <typename Iterator>
+    struct deref
+    {
+        typedef typename
+            deref_impl<typename Iterator::ftag>::
+                template apply<Iterator>::type
+        type;
+    };
+}
+
+template <typename Iterator>
+typename result_of::deref<Iterator>::type
+deref(Iterator const& i)
+{
+    typename result_of::deref<Iterator>::type result =
+        extension::deref_impl<typename Iterator::ftag>::
+            template apply<Iterator>::call(i);
+    return result;
+}
+
+

+ So again result_of::deref uses tag + dispatching in exactly the same way as the value_of implementation. The runtime + functionality used by deref is provided by the call static function of the selected MPL + Metafunction Class. +

+

+ The actual implementation of deref_impl + is slightly more complex than that of value_of_impl. + We also need to implement the call + function, which returns a reference to the appropriate member of the underlying + sequence. We also require a little bit of metaprogramming to return const references if the underlying sequence + is const. +

+
+ + + + + +
[Note]Note

+ Although there is a fair amount of left to do to produce a fully fledged + Fusion sequence, value_of and deref illustrate all the signficant + concepts required. The remainder of the process is very repetitive, simply + requiring implementation of a suitable xxxx_impl + for each feature xxxx. +

+

+ + Implementing + the remaining iterator functionality +

+

+ Ok, now we have seen the way value_of and deref work, everything else will work + in pretty much the same way. Lets start with forward iteration, by providing + a next_impl: +

+
+template<>
+struct next_impl<example_struct_iterator_tag>
+{
+    template<typename Iterator>
+    struct apply
+    {
+        typedef typename Iterator::struct_type struct_type;
+        typedef typename Iterator::index index;
+        typedef example_struct_iterator<struct_type, index::value + 1> type;
+
+        static type
+        call(Iterator const& i)
+        {
+            return type(i.struct_);
+        }
+    };
+};
+
+

+ This should be very familiar from our deref_impl + implementation, we will be using this approach again and again now. Our design + is simply to increment the index + counter to move on to the next element. The various other iterator manipulations + we need to perform will all just involve simple calculations with the index variables. +

+

+ We also need to provide a suitable equal_to_impl + so that iterators can be correctly compared. A Bidirectional + Iterator will also need an implementation of prior_impl. + For a Random + Access Iterator distance_impl + and advance_impl also need + to be provided in order to satisfy the necessary complexity guarantees. As + our iterator is a Random + Access Iterator we will have to implement all of these functions. +

+

+ Full implementations of prior_impl, + advance_impl, distance_impl and equal_to_impl + are provided in the example code. +

+

+ + Implementing + the intrinsic functions of the sequence +

+

+ In order that Fusion can correctly identify our sequence as a Fusion sequence, + we need to enable is_sequence + for our sequence type. As usual we just create an impl + type specialized for our sequence tag: +

+
+template<>
+struct is_sequence_impl<example_sequence_tag>
+{
+    template<typename T>
+    struct apply : mpl::true_ {};
+};
+
+

+ We've some similar formalities to complete, providing category_of_impl + so Fusion can correctly identify our sequence type, and is_view_impl + so Fusion can correctly identify our sequence as not being a View + type. Implementations are provide in the example code. +

+

+ Now we've completed some formalities, on to more interesting features. Lets + get begin working so that we can get an + iterator to start accessing the data in our sequence. +

+
+template<>
+struct begin_impl<example_sequence_tag>
+{
+    template<typename Sequence>
+    struct apply
+    {
+        typedef example_struct_iterator<Sequence, 0> type;
+
+        static type
+        call(Sequence& seq)
+        {
+            return type(seq);
+        }
+    };
+};
+
+

+ The implementation uses the same ideas we have applied throughout, in this + case we are just creating one of the iterators we developed earlier, pointing + to the first element in the sequence. The implementation of end is very similar, and is provided + in the example code. +

+

+ For our Random + Access Sequence we will also need to implement size_impl, + value_at_impl and at_impl. +

+

+ + Enabling + our type as an associative container +

+

+ In order for example_struct + to serve as an associative container, we need to enable 3 lookup features, + at_key, value_at_key and has_key. We also need to provide an + implementation of the is_associative + trait so that our sequence can be correctly identified as an associative container. +

+

+ To implement at_key_impl we + need to associate the fields::age and + fields::age types described in the Quick + Start guide with the appropriate members of example_struct. + Our implementation is as follows: +

+
+template<>
+struct at_key_impl<example_sequence_tag>
+{
+    template<typename Sequence, typename Key>
+    struct apply;
+
+    template<typename Sequence>
+    struct apply<Sequence, fields::name>
+    {
+        typedef typename mpl::if_<
+            is_const<Sequence>,
+            std::string const&,
+            std::string&>::type type;
+
+        static type
+        call(Sequence& seq)
+        {
+            return seq.name;
+        };
+    };
+
+    template<typename Sequence>
+    struct apply<Sequence, fields::age>
+    {
+        typedef typename mpl::if_<
+            is_const<Sequence>,
+            int const&,
+            int&>::type type;
+
+        static type
+        call(Sequence& seq)
+        {
+            return seq.age;
+        };
+    };
+};
+
+

+ Its all very similar to the implementations we've seen previously, such as + deref_impl and value_of_impl. Instead of identifying the + members by index or position, we are now selecting them using the types fields::name and fields::age. The + implementations of value_at_key_impl + and has_key_impl are equally + straightforward, and are provided in the example code, along with an implementation + of is_associative_impl. +

+

+ + Summary +

+

+ We've now worked through the entire process for adding a new random access + sequence and we've also enabled our type to serve as an associative container. + The implementation was slightly longwinded, but followed a simple repeating + pattern. +

+

+ The support for std::pair, MPL + sequences, and boost::array all use the same approach, and provide + additional examples of the approach for a variety of types. +

+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/introduction.html b/doc/html/fusion/introduction.html new file mode 100644 index 00000000..9feadd71 --- /dev/null +++ b/doc/html/fusion/introduction.html @@ -0,0 +1,139 @@ + + + +Introduction + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ An advantage other languages such as Python and Lisp/ Scheme, ML and Haskell, + etc., over C++ is the ability to have heterogeneous containers that can hold + arbitrary element types. All the containers in the standard library can only + hold a specific type. A vector<int> + can only hold ints. A list<X> can + only hold elements of type X, + and so on. +

+

+ True, you can use inheritance to make the containers hold different types, + related through subclassing. However, you have to hold the objects through + a pointer or smart reference of some sort. Doing this, you'll have to rely + on virtual functions to provide polymorphic behavior since the actual type + is erased as soon as you store a pointer to a derived class to a pointer to + its base. The held objects must be related: you cannot hold objects of unrelated + types such as char, int, class X, float, + etc. Oh sure you can use something like Boost.Any + to hold arbitrary types, but then you pay more in terms of runtime costs and + due to the fact that you practically erased all type information, you'll have + to perform dangerous casts to get back the original type. +

+

+ The Boost.Tuple + library written by Jaakko + Jarvi provides heterogeneous containers in C++. The tuple + is a basic data structure that can hold heterogeneous types. It's a good first + step, but it's not complete. What's missing are the algorithms. It's nice that + we can store and retrieve data to and from tuples, pass them around as arguments + and return types. As it is, the Boost.Tuple + facility is already very useful. Yet, as soon as you use it more often, usage + patterns emerge. Eventually, you collect these patterns into algorithm libraries. +

+

+ Hmmm, kinda reminds us of STL right? Right! Can you imagine how it would be + like if you used STL without the algorithms? Everyone will have to reinvent + their own algorithm wheels. +

+

+ Fusion is a library and a framework similar to both STL + and the boost MPL. + The structure is modeled after MPL, + which is modeled after STL. + It is named "fusion" because the library is reminiscent of the "fusion" + of compile time meta-programming with runtime programming. The library inherently + has some interesting flavors and characteristics of both MPL + and STL. + It lives in the twilight zone between compile time meta-programming and run + time programming. STL + containers work on values. MPL containers work on types. Fusion containers + work on both types and values. +

+

+ Unlike MPL, Fusion + algorithms are lazy and non sequence-type preserving. What does that mean? + It means that when you operate on a sequence through a Fusion algorithm that + returns a sequence, the sequence returned may not be of the same class as the + original. This is by design. Runtime efficiency is given a high priority. Like + MPL, and unlike + STL, + fusion algorithms are functional in nature such that algorithms are non mutating + (no side effects). However, due to the high cost of returning full sequences + such as vectors and lists, Views are returned from Fusion + algorithms instead. For example, the transform algorithm does not actually + return a transformed version of the original sequence. transform returns a transform_view. This view holds a + reference to the original sequence plus the transform function. Iteration over + the transform_view + will apply the transform function over the sequence elements on demand. This + lazy evaluation scheme allows us to chain as many algorithms + as we want without incurring a high runtime penalty. +

+

+ The lazy evaluation scheme where algorithms return views + allows operations such as push_back to be totally generic. In + Fusion, push_back is actually a generic algorithm + that works on all sequences. Given an input sequence s + and a value x, Fusion's push_back 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. +

+

+ Fusion provides full round compatibility with MPL. + Fusion sequences are fully conforming MPL + 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. 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 + to a Fusion sequence. For example, there are times when it is convenient to + work solely on MPL + using pure MPL + sequences, then, convert them to Fusion sequences as a final step before actual + instantiation of real runtime objects with data. You have the best of both + worlds. +

+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterators.html b/doc/html/fusion/iterators.html new file mode 100644 index 00000000..2678a48b --- /dev/null +++ b/doc/html/fusion/iterators.html @@ -0,0 +1,59 @@ + + + +Iterators + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ + +

+ Like MPL and + STL, + iterators are a fundamental concept in Fusion. As with MPL + and STL + iterators describe positions, and provide access to data within an underlying + Sequence. +

+

+ + Header +

+
+#include <boost/fusion/iterator.hpp>
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterators/concepts.html b/doc/html/fusion/iterators/concepts.html new file mode 100644 index 00000000..303291b2 --- /dev/null +++ b/doc/html/fusion/iterators/concepts.html @@ -0,0 +1,60 @@ + + + +Concepts + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ + +

+ Fusion iterators are divided into different traversal categories. Forward + Iterator is the most basic concept. Bidirectional + Iterator is a refinement of Forward + Iterator. Random + Access Iterator is a refinement of Bidirectional + Iterator. +

+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterators/concepts/bidirectional_iterator.html b/doc/html/fusion/iterators/concepts/bidirectional_iterator.html new file mode 100644 index 00000000..7545c3a0 --- /dev/null +++ b/doc/html/fusion/iterators/concepts/bidirectional_iterator.html @@ -0,0 +1,245 @@ + + + +Bidirectional + Iterator + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

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

+
+

Notation

+
+
i
+
+ A Bidirectional Iterator +
+
I
+
+ A Bidirectional Iterator type +
+
M
+
+ An MPL + integral constant +
+
N
+
+ An integral constant +
+
+
+
+ + Refinement + of +
+

+ Forward Iterator +

+
+ + Expression + requirements +
+

+ In addition to the requirements defined in Forward + Iterator, the following expressions must be valid: +

+
+

+ +

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ExpressionReturn typeRuntime + Complexity
next(i)Bidirectional + IteratorConstant
prior(i)Bidirectional + IteratorConstant
advance_c<N>(i)Bidirectional + IteratorConstant
advance<M>(i)Bidirectional + IteratorConstant
+
+
+ + Meta + Expressions +
+
+

+ +

+ ++++ + + + + + + + + +
ExpressionCompile Time Complexity
result_of::prior<I>::typeAmortized constant + time
+
+
+ + Expression + Semantics +
+

+ The semantics of an expression are defined only where they differ from, + or are not defined in Forward + Iterator +

+
+

+ +

+ ++++ + + + + + + + + +
ExpressionSemantics
prior(i)An + iterator to the element preceding i +
+
+
+ + Invariants +
+

+ In addition to the invariants of Forward + Iterator, the following invariants always hold: +

+
+
+ + Models +
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterators/concepts/forward_iterator.html b/doc/html/fusion/iterators/concepts/forward_iterator.html new file mode 100644 index 00000000..5a37ee11 --- /dev/null +++ b/doc/html/fusion/iterators/concepts/forward_iterator.html @@ -0,0 +1,353 @@ + + + +Forward + Iterator + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ A Forward Iterator traverses a Sequence + allowing movement in only one direction through it's elements, one element + at a time. +

+
+

Notation

+
+
i, + j
+
+ Forward Iterators +
+
I, + J
+
+ Forward Iterator types +
+
M
+
+ An MPL + integral constant +
+
N
+
+ An integral constant +
+
+
+
+ + Expression + requirements +
+

+ A type models Forward Iterator if, in addition to being CopyConstructable, + the following expressions are valid: +

+
+

+ +

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ExpressionReturn typeRuntime + Complexity
next(i)Forward IteratorConstant
i == jConvertible to + boolConstant
i != jConvertible to + boolConstant
advance_c<N>(i)Forward IteratorConstant
advance<M>(i)Forward IteratorConstant
distance(i, j)result_of::distance<I, J>::typeConstant
deref(i)result_of::deref<I>::typeConstant
*iresult_of::deref<I>::typeConstant
+
+
+ + Meta + Expressions +
+
+

+ +

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ExpressionCompile Time Complexity
result_of::next<I>::typeAmortized constant + time
result_of::equal_to<I, J>::typeAmortized constant + time
result_of::advance_c<I, N>::typeLinear
result_of::advance<I ,M>::typeLinear
result_of::distance<I ,J>::typeLinear
result_of::deref<I>::typeAmortized constant + time
result_of::value_of<I>::typeAmortized constant + time
+
+
+ + Expression + Semantics +
+
+

+ +

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ExpressionSemantics
next(i)An + iterator to the element following i +
i == jIterator equality + comparison
i != jIterator inequality + comparison
advance_c<N>(i)An + iterator n elements after i + in the sequence
advance<M>(i)Equivalent + to advance_c<M::value>(i) +
distance(i, j)The + number of elements between i + and j +
deref(i)The + element at positioni +
*iEquivalent + to deref(i) +
+
+
+ + 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 +
  • +
  • +deref(i) + is equivalent to *i +
  • +
  • + If i == j then *i is equivalent to *j +
  • +
+
+ + Models +
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterators/concepts/random_access_iterator.html b/doc/html/fusion/iterators/concepts/random_access_iterator.html new file mode 100644 index 00000000..a348d272 --- /dev/null +++ b/doc/html/fusion/iterators/concepts/random_access_iterator.html @@ -0,0 +1,216 @@ + + + +Random + Access Iterator + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ A Random Access Iterator traverses a Sequence + moving in either direction, permitting efficient arbitrary distance movements + back and forward through the sequence. +

+
+

Notation

+
+
i, + j
+
+ Random Access Iterators +
+
I, + J
+
+ Random Access Iterator types +
+
M
+
+ An MPL + integral constant +
+
N
+
+ An integral constant +
+
+
+
+ + Refinement + of +
+

+ Bidirectional + Iterator +

+
+ + Expression + requirements +
+

+ In addition to the requirements defined in Bidirectional + Iterator, the following expressions must be valid: +

+
+

+ +

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ExpressionReturn typeRuntime + Complexity
next(i)Random + Access IteratorConstant
prior(i)Random + Access IteratorConstant
advance_c<N>(i)Random + Access IteratorConstant
advance<M>(i)Random + Access IteratorConstant
+
+
+ + Meta + Expressions +
+
+

+ +

+ ++++ + + + + + + + + + + + + + + + + + + +
ExpressionCompile Time Complexity
result_of::advance_c<I, N>::typeAmortized constant + time
result_of::advance<I, M>::typeAmortized constant + time
result_of::distance<I ,J>::typeAmortized constant + time
+
+
+ + Models +
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterators/functions.html b/doc/html/fusion/iterators/functions.html new file mode 100644 index 00000000..cad3aa28 --- /dev/null +++ b/doc/html/fusion/iterators/functions.html @@ -0,0 +1,52 @@ + + + +Functions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ + +

+ Fusion provides functions for manipulating iterators, analogous to the similar + functions from the MPL + library. +

+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterators/functions/advance.html b/doc/html/fusion/iterators/functions/advance.html new file mode 100644 index 00000000..e8af4632 --- /dev/null +++ b/doc/html/fusion/iterators/functions/advance.html @@ -0,0 +1,129 @@ + + + +advance + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Moves an iterator by a specified distance. +

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

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
iModel + of Forward + Iterator +Iterator to move relative to
NAn + MPL Integral ConstantNumber of positions to move
+
+
+ + Expression + Semantics +
+
+advance<M>(i);
+
+

+ Return type: A model of the same iterator + concept as i. +

+

+ Semantics: Returns an iterator to the + element M positions from + i. If i + is a Bidirectional + Iterator then M + may be negative. +

+
+ + Header +
+
+#include <boost/fusion/iterator/advance.hpp>
+
+
+ + Example +
+
+typedef vector<int,int,int> vec;
+
+vec v(1,2,3);
+assert(deref(advance<mpl::int_<2> >(begin(v))) == 3);
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterators/functions/advance_c.html b/doc/html/fusion/iterators/functions/advance_c.html new file mode 100644 index 00000000..ba10b387 --- /dev/null +++ b/doc/html/fusion/iterators/functions/advance_c.html @@ -0,0 +1,129 @@ + + + +advance_c + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Moves an iterator by a specified distance. +

+
+ + Synopsis +
+
+template<
+    typename I,
+    int N
+    >
+typename result_of::advance_c<I, N>::type advance_c(I const& i); 
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
iModel + of Forward + Iterator +Iterator to move relative to
NInteger + constantNumber of positions to move
+
+
+ + Expression + Semantics +
+
+advance_c<N>(i);
+
+

+ Return type: A model of the same iterator + concept as i. +

+

+ Semantics: Returns an iterator to the + element N positions from + i. If i + is a Bidirectional + Iterator then N + may be negative. +

+
+ + Header +
+
+#include <boost/fusion/iterator/advance.hpp>
+
+
+ + Example +
+
+typedef vector<int,int,int> vec;
+
+vec v(1,2,3);
+assert(deref(advance_c<2>(begin(v))) == 3);
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterators/functions/deref.html b/doc/html/fusion/iterators/functions/deref.html new file mode 100644 index 00000000..122f836f --- /dev/null +++ b/doc/html/fusion/iterators/functions/deref.html @@ -0,0 +1,117 @@ + + + +deref + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Deferences an iterator. +

+
+ + Synopsis +
+
+template<
+    typename I
+    >
+typename result_of::deref<I>::type deref(I const& i);
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
iModel + of Forward + Iterator +Operation's argument
+
+
+ + Expression + Semantics +
+
+deref(i);
+
+

+ Return type: result_of::deref<I>::type +

+

+ Semantics: Dereferences the iterator + i. +

+
+ + Header +
+
+#include <boost/fusion/iterator/deref.hpp>
+
+
+ + Example +
+
+typedef vector<int,int&> vec;
+
+int i(0);
+vec v(1,i);
+assert(deref(begin(v)) == 1);
+assert(deref(next(begin(v))) == 0);
+assert(&(deref(next(begin(v)))) == &i);
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterators/functions/distance.html b/doc/html/fusion/iterators/functions/distance.html new file mode 100644 index 00000000..5c85af91 --- /dev/null +++ b/doc/html/fusion/iterators/functions/distance.html @@ -0,0 +1,116 @@ + + + +distance + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the distance between 2 iterators. +

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

+ + Parameters +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
+i, j +Models of Forward Iterator + into the same sequenceThe start and end points of + the distance to be measured
+
+
+ + Expression + Semantics +
+
+distance(i,j);
+
+

+ Return type: int +

+

+ Semantics: Returns the distance between + iterators i and j. +

+
+ + Header +
+
+#include <boost/fusion/iterator/distance.hpp>
+
+
+ + Example +
+
+typedef vector<int,int,int> vec;
+
+vec v(1,2,3);
+assert(distance(begin(v), next(next(begin(v)))) == 2);
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterators/functions/next.html b/doc/html/fusion/iterators/functions/next.html new file mode 100644 index 00000000..d13a55fa --- /dev/null +++ b/doc/html/fusion/iterators/functions/next.html @@ -0,0 +1,117 @@ + + + +next + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Moves an iterator 1 position forwards. +

+
+ + Synopsis +
+
+template<
+    typename I
+    >
+typename result_of::next<I>::type next(I const& i);
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
iModel + of Forward + Iterator +Operation's argument
+
+
+ + Expression + Semantics +
+
+next(i);
+
+

+ Return type: A model of the same iterator + concept as i. +

+

+ Semantics: Returns an iterator to the + next element after i. +

+
+ + Header +
+
+#include <boost/fusion/iterator/next.hpp>
+
+
+ + Example +
+
+typedef vector<int,int,int> vec;
+
+vec v(1,2,3);
+assert(deref(begin(v)) == 1);
+assert(deref(next(begin(v))) == 2);
+assert(deref(next(next(begin(v)))) == 3);
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterators/functions/prior.html b/doc/html/fusion/iterators/functions/prior.html new file mode 100644 index 00000000..5404fe5c --- /dev/null +++ b/doc/html/fusion/iterators/functions/prior.html @@ -0,0 +1,116 @@ + + + +prior + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Moves an iterator 1 position backwards. +

+
+ + Synopsis +
+
+template<
+    typename I
+    >
+typename result_of::prior<I>::type prior(I const& i);
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
iModel + of Bidirectional + Iterator +Operation's argument
+
+
+ + Expression + Semantics +
+
+prior(i);
+
+

+ Return type: A model of the same iterator + concept as i. +

+

+ Semantics: Returns an iterator to the + element prior to i. +

+
+ + Header +
+
+#include <boost/fusion/iterator/prior.hpp>
+
+
+ + Example +
+
+typedef vector<int,int> vec;
+
+vec v(1,2);
+assert(deref(next(begin(v))) == 2);
+assert(deref(prior(next(begin(v)))) == 1);
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterators/metafunctions.html b/doc/html/fusion/iterators/metafunctions.html new file mode 100644 index 00000000..9f4cbefe --- /dev/null +++ b/doc/html/fusion/iterators/metafunctions.html @@ -0,0 +1,49 @@ + + + +Metafunctions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterators/metafunctions/advance.html b/doc/html/fusion/iterators/metafunctions/advance.html new file mode 100644 index 00000000..20ac0866 --- /dev/null +++ b/doc/html/fusion/iterators/metafunctions/advance.html @@ -0,0 +1,133 @@ + + + +advance + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Moves an iterator a specified distance. +

+
+ + Synopsis +
+
+template<
+    typename I,
+    typename M
+    >
+struct advance
+{
+    typedef unspecified type;
+};
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
IModel + of Forward + Iterator +Iterator to move relative to
MModel + of MPL Integral ConstantNumber of positions to move
+
+
+ + Expression + Semantics +
+
+result_of::advance<I,M>::type
+
+

+ Return type: A model of the same iterator + concept as I. +

+

+ Semantics: Returns an iterator a distance + M from I. + If I is a Bidirectional + Iterator then M + may be negative. +

+
+ + Header +
+
+#include <boost/fusion/iterator/advance.hpp>
+
+
+ + Example +
+
+typedef vector<int,double,char> vec;
+typedef result_of::begin<vec>::type first;
+typedef result_of::next<first>::type second;
+typedef result_of::next<second>::type third;
+
+BOOST_MPL_ASSERT((result_of::equal_to<result_of::advance<first, boost::mpl::int_<2> >::type, third>));
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterators/metafunctions/advance_c.html b/doc/html/fusion/iterators/metafunctions/advance_c.html new file mode 100644 index 00000000..322888b2 --- /dev/null +++ b/doc/html/fusion/iterators/metafunctions/advance_c.html @@ -0,0 +1,133 @@ + + + +advance_c + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Moves an iterator by a specified distance. +

+
+ + Synopsis +
+
+template<
+    typename I,
+    int N
+    >
+struct advance_c
+{
+    typedef unspecified type;
+};
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
IModel + of Forward + Iterator +Iterator to move relative to
NInteger + constantNumber of positions to move
+
+
+ + Expression + Semantics +
+
+result_of::advance_c<I, N>::type
+
+

+ Return type: A model of the same iterator + concept as I. +

+

+ Semantics: Returns an iterator a distance + N from I. + If I is a Bidirectional + Iterator then N + may be negative. Equivalent to result_of::advance<I, boost::mpl::int_<N> >::type. +

+
+ + Header +
+
+#include <boost/fusion/iterator/advance.hpp>
+
+
+ + Example +
+
+typedef vector<int,double,char> vec;
+typedef result_of::begin<vec>::type first;
+typedef result_of::next<first>::type second;
+typedef result_of::next<second>::type third;
+
+BOOST_MPL_ASSERT((result_of::equal_to<result_of::advance_c<first, 2>::type, third>));
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterators/metafunctions/deref.html b/doc/html/fusion/iterators/metafunctions/deref.html new file mode 100644 index 00000000..f25478d6 --- /dev/null +++ b/doc/html/fusion/iterators/metafunctions/deref.html @@ -0,0 +1,123 @@ + + + +deref + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

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

+
+ + Synposis +
+
+template<
+    typename I
+    >
+struct deref
+{
+    typedef unspecified type;
+};
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
IModel + of Forward + Iterator +Operation's argument
+
+
+ + Expression + Semantics +
+
+result_of::deref<I>::type
+
+

+ Return type: Any type +

+

+ Semantics: Returns the result of dereferencing + an iterator of type I. +

+
+ + Header +
+
+#include <boost/fusion/iterator/deref.hpp>
+
+
+ + Example +
+
+typedef vector<int,int&> vec;
+typedef const vec const_vec;
+typedef result_of::begin<vec>::type first;
+typedef result_of::next<first>::type second;
+
+typedef result_of::begin<const_vec>::type const_first;
+typedef result_of::next<const_first>::type const_second;
+
+BOOST_MPL_ASSERT((boost::is_same<result_of::deref<first>::type, int&>));
+BOOST_MPL_ASSERT((boost::is_same<result_of::deref<second>::type, int&>));
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterators/metafunctions/distance.html b/doc/html/fusion/iterators/metafunctions/distance.html new file mode 100644 index 00000000..33035d44 --- /dev/null +++ b/doc/html/fusion/iterators/metafunctions/distance.html @@ -0,0 +1,123 @@ + + + +distance + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the distance between two iterators. +

+
+ + Synopsis +
+
+template<
+    typename I,
+    typename J
+    >
+struct distance
+{
+    typedef unspecified type;
+};
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
+I, J +Models of Forward Iterator + into the same sequenceThe start and end points of + the distance to be measured
+
+
+ + Expression + Semantics +
+
+result_of::distance<I, J>::type
+
+

+ Return type: A model of MPL Integral Constant. +

+

+ Semantics: Returns the distance between + iterators of types I and + J. +

+
+ + Header +
+
+#include <boost/fusion/iterator/distance.hpp>
+
+
+ + Example +
+
+typedef vector<int,double,char> vec;
+typedef result_of::begin<vec>::type first;
+typedef result_of::next<first>::type second;
+typedef result_of::next<second>::type third;
+typedef result_of::distance<first,third>::type dist;
+
+BOOST_MPL_ASSERT_RELATION(dist::value, ==, 2);
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterators/metafunctions/equal_to.html b/doc/html/fusion/iterators/metafunctions/equal_to.html new file mode 100644 index 00000000..e7e34a05 --- /dev/null +++ b/doc/html/fusion/iterators/metafunctions/equal_to.html @@ -0,0 +1,120 @@ + + + +equal_to + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns a true-valued MPL Integral Constant if I + and J are equal. +

+
+ + Synopsis +
+
+template<
+    typename I,
+    typename J
+    >
+struct equal_to
+{
+    typedef unspecified type;
+};
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
+I, J +Any fusion iteratorsOperation's + arguments
+
+
+ + Expression + Semantics +
+
+result_of::equal_to<I, J>::type
+
+

+ Return type: A model of MPL Integral Constant. +

+

+ Semantics: Returns boost::mpl::true_ + if I and J are iterators to the same position. + Returns boost::mpl::false_ otherwise. +

+
+ + Header +
+
+#include <boost/fusion/iterator/equal_to.hpp>
+
+
+ + Example +
+
+typedef vector<int,double> vec;
+typedef result_of::begin<vec>::type first;
+typedef result_of::end<vec>::type last;
+BOOST_MPL_ASSERT((result_of::equal_to<first, first>));
+BOOST_MPL_ASSERT_NOT((result_of::equal_to<first,last>));
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterators/metafunctions/next.html b/doc/html/fusion/iterators/metafunctions/next.html new file mode 100644 index 00000000..9d0aa196 --- /dev/null +++ b/doc/html/fusion/iterators/metafunctions/next.html @@ -0,0 +1,118 @@ + + + +next + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the type of the next iterator in a sequence. +

+
+ + Synposis +
+
+template<
+    typename I
+    >
+struct next
+{
+    typedef unspecified type;
+};
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
IModel + of Forward + Iterator +Operation's argument
+
+
+ + Expression + Semantics +
+
+result_of::next<I>::type
+
+

+ Return type: A model of the same iterator + concept as I. +

+

+ Semantics: Returns an iterator to the + next element in the sequence after I. +

+
+ + Header +
+
+#include <boost/fusion/iterator/next.hpp>
+
+
+ + Example +
+
+typedef vector<int,double> vec;
+typedef result_of::next<result_of::begin<vec>::type>::type second;
+
+BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<second>::type, double>));
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterators/metafunctions/prior.html b/doc/html/fusion/iterators/metafunctions/prior.html new file mode 100644 index 00000000..577864f9 --- /dev/null +++ b/doc/html/fusion/iterators/metafunctions/prior.html @@ -0,0 +1,121 @@ + + + +prior + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the type of the previous iterator in a sequence. +

+
+ + Synopsis +
+
+template<
+    typename I
+    >
+struct prior
+{
+    typedef unspecified type;
+};
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
IModel + of Bidirectional + Iterator +Operation's argument
+
+
+ + Expression + Semantics +
+
+result_of::prior<I>::type
+
+

+ Return type: A model of the same iterator + concept as I. +

+

+ Semantics: Returns an iterator to the + previous element in the sequence before I. +

+
+ + Header +
+
+#include <boost/fusion/iterator/prior.hpp>
+
+
+ + Example +
+
+typedef vector<int,double> vec;
+typedef result_of::next<result_of::begin<vec>::type>::type second;
+
+BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<second>::type, double>));
+
+typedef result_of::prior<second>::type first;
+BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<first>::type, int>));
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterators/metafunctions/value_of.html b/doc/html/fusion/iterators/metafunctions/value_of.html new file mode 100644 index 00000000..75f07033 --- /dev/null +++ b/doc/html/fusion/iterators/metafunctions/value_of.html @@ -0,0 +1,121 @@ + + + +value_of + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the type stored at the position of an iterator. +

+
+ + Synopsis +
+
+template<
+    typename I
+    >
+struct value_of
+{
+    typedef unspecified type;
+};
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
IModel + of Forward + Iterator +Operation's argument
+
+
+ + Expression + Semantics +
+
+result_of::value_of<I>::type
+
+

+ Return type: Any type +

+

+ Semantics: Returns the type stored in + a sequence at iterator position I. +

+
+ + Header +
+
+#include <boost/fusion/iterator/value_of.hpp>
+
+
+ + Example +
+
+typedef vector<int,int&,const int&> vec;
+typedef result_of::begin<vec>::type first;
+typedef result_of::next<first>::type second;
+typedef result_of::next<second>::type third;
+
+BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<first>::type, int>));
+BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<second>::type, int&>));
+BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<third>::type, const int&>));
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterators/operators.html b/doc/html/fusion/iterators/operators.html new file mode 100644 index 00000000..707d5964 --- /dev/null +++ b/doc/html/fusion/iterators/operators.html @@ -0,0 +1,51 @@ + + + +Operators + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ + +

+ Overloaded operators are provided to provide a more natural syntax for dereferencing + iterators, and comparing them for equality. +

+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterators/operators/operator_equality.html b/doc/html/fusion/iterators/operators/operator_equality.html new file mode 100644 index 00000000..a786fe8d --- /dev/null +++ b/doc/html/fusion/iterators/operators/operator_equality.html @@ -0,0 +1,110 @@ + + + + Operator + == + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Compares 2 iterators for equality. +

+
+ + Synopsis +
+
+template<
+    typename I,
+    typename J
+    >
+unspecified operator==(I const& i, J const& i);
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
+i, j +Any fusion iteratorsOperation's + arguments
+
+
+ + Expression + Semantics +
+
+i == j
+
+

+ Return type: Convertible to bool. +

+

+ Semantics: Equivalent to result_of::equal_to<I,J>::value + where I and J are the types of i + and j respectively. +

+
+ + Header +
+
+#include <boost/fusion/iterator/equal_to.hpp>
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterators/operators/operator_inequality.html b/doc/html/fusion/iterators/operators/operator_inequality.html new file mode 100644 index 00000000..2ad8299f --- /dev/null +++ b/doc/html/fusion/iterators/operators/operator_inequality.html @@ -0,0 +1,106 @@ + + + + Operator + != + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Compares 2 iterators for inequality. +

+
+ + Synopsis +
+
+template<
+    typename I,
+    typename J
+    >
+unspecified operator==(I const& i, J const& i);
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
+i, j +Any fusion iteratorsOperation's + arguments
+
+
+ + Expression + Semantics +
+

+ Return type: Convertible to bool. +

+

+ Semantics: Equivalent to !result_of::equal_to<I,J>::value + where I and J are the types of i + and j respectively. +

+
+ + Header +
+
+#include <boost/fusion/iterator/equal_to.hpp>
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/iterators/operators/operator_unary_star.html b/doc/html/fusion/iterators/operators/operator_unary_star.html new file mode 100644 index 00000000..4b719f69 --- /dev/null +++ b/doc/html/fusion/iterators/operators/operator_unary_star.html @@ -0,0 +1,121 @@ + + + + Operator + * + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Dereferences an iterator. +

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

+ + Parameters +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
iModel + of Forward + Iterator +Operation's argument
+
+
+ + Expression + Semantics +
+
+*i
+
+

+ Return type: Equivalent to the return + type of deref(i). +

+

+ Semantics: Equivalent to deref(i). +

+
+ + Header +
+
+#include <boost/fusion/iterator/deref.hpp>
+
+
+ + Example +
+
+typedef vector<int,int&> vec;
+
+int i(0);
+vec v(1,i);
+assert(*begin(v) == 1);
+assert(*next(begin(v)) == 0);
+assert(&(*next(begin(v))) == &i);
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/notes.html b/doc/html/fusion/notes.html new file mode 100644 index 00000000..b1987d63 --- /dev/null +++ b/doc/html/fusion/notes.html @@ -0,0 +1,254 @@ + + + +Notes + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ + Recursive Inlined + Functions +

+

+ An interesting peculiarity of functions like at when applied to a Forward + Sequence like list is that what could have been + linear runtime complexity effectively becomes constant O(1) due to compiler + optimization of C++ inlined functions, however deeply recursive (up to a certain + compiler limit of course). Compile time complexity remains linear. +

+

+ + Overloaded Functions +

+

+ Associative sequences use function overloading to implement membership testing + and type associated key lookup. This amounts to constant runtime and amortized + constant compile time complexities. There is an overloaded function, f(k), for each key type k. The compiler chooses the appropriate function + given a key, k. +

+

+ + Tag Dispatching +

+

+ Tag dispatching is a generic programming technique for selecting template specializations. + There are typically 3 components involved in the tag dispatching mechanism: +

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

+ For example, the fusion result_of::begin metafunction + is implemented as follows: +

+
+template <typename Sequence>
+struct begin
+{
+    typedef typename
+        result_of::begin_impl<typename traits::tag_of<Sequence>::type>::
+        template apply<Sequence>::type
+    type;
+};
+
+

+ In the case: +

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

+ + Extensibility +

+

+ Unlike MPL, there + is no extensibe sequence concept in fusion. This does not mean that Fusion + sequences are not extensible. In fact, all Fusion sequences are inherently + extensible. It is just that the manner of sequence extension in Fusion is diferent + from both STL + and MPL on account + of the lazy nature of fusion Algorithms. + STL + containers extend themselves in place though member functions such as push_back and insert. MPL + sequences, on the other hand, are extended through "intrinsic" functions + that actually return whole sequences. MPL + is purely functional and can not have side effects. For example, MPL's + push_back does not actually + mutate an mpl::vector. It can't do that. Instead, it returns + an extended mpl::vector. +

+

+ Like MPL, Fusion + too is purely functional and can not have side effects. With runtime efficiency + in mind, Fusion sequences are extended through generic functions that return + Views. Views + are sequences that do not actually contain data, but instead impart an alternative + presentation over the data from one or more underlying sequences. Views + are proxies. They provide an efficient yet purely functional way to work on + potentially expensive sequence operations. For example, given a vector, Fusion's push_back returns a joint_view, instead of an actual extended + vector. + A joint_view + holds a reference to the original sequence plus the appended data --making + it very cheap to pass around. +

+

+ + Element Conversion +

+

+ Functions that take in elemental values to form sequences (e.g. make_list) convert their arguments + to something suitable to be stored as a sequence element. In general, the element + types are stored as plain values. Example: +

+
+make_list(1, 'x')
+
+

+ returns a list<int, char>. +

+

+ There are a few exceptions, however. +

+

+ Arrays: +

+

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

+
+make_list("Donald", "Daisy")
+
+

+ creates a list + of type +

+
+list<const char (&)[7], const char (&)[6]>
+
+

+ Function pointers: +

+

+ Function pointers are deduced to the plain non-reference type (i.e. to plain + function pointer). Example: +

+
+void f(int i);
+  ...
+make_list(&f);
+
+

+ creates a list + of type +

+
+list<void (*)(int)>
+
+

+ + boost::ref +

+

+ Fusion's generation functions (e.g. make_list) by default stores the element + types as plain non-reference types. Example: +

+
+void foo(const A& a, B& b) {
+    ...
+    make_list(a, b)
+
+

+ creates a list + of type +

+
+list<A, B>
+
+

+ Sometimes the plain non-reference type is not desired. You can use boost::ref + and boost::cref to store references or const references + (respectively) instead. The mechanism does not compromise const correctness + since a const object wrapped with ref results in a tuple element with const + reference type (see the fifth code line below). Examples: +

+

+ For example: +

+
+A a; B b; const A ca = a;
+make_list(cref(a), b);          // creates list<const A&, B>
+make_list(ref(a), b);           // creates list<A&, B>
+make_list(ref(a), cref(b));     // creates list<A&, const B&>
+make_list(cref(ca));            // creates list<const A&>
+make_list(ref(ca));             // creates list<const A&>
+
+

+ See Boost.Ref for + details. +

+
+

+

[14] + 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). +

+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/organization.html b/doc/html/fusion/organization.html new file mode 100644 index 00000000..3e75a427 --- /dev/null +++ b/doc/html/fusion/organization.html @@ -0,0 +1,198 @@ + + + +Organization + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ The library is organized into layers of modules, with each module addressing + a particular area of responsibility. A module may not depend on modules in + higher layers. +

+

+ The library is organized in three layers: +

+

+ + Layers +

+

+ fusion_org +

+

+ The entire library is found in the "boost/fusion" directory. Modules + are organized in directories. Each module has its own header file placed in + the same directory with the actual module-directory. For example, there exists + "boost/fusion/support.hpp" in the same directory as "boost/fusion/support". + Everything, except those found inside "detail" directories, is public. + The library is header-only. There is no need to build object files to link + against. +

+

+ + Directory +

+
    +
  • + tuple +
  • +
  • + algorithm +
      +
    • + iteration +
    • +
    • + query +
    • +
    • + transformation +
    • +
    +
  • +
  • + sequence +
      +
    • + adapted +
        +
      • + array +
      • +
      • + mpl +
      • +
      • + std_pair +
      • +
      +
    • +
    • + comparison +
    • +
    • + container +
        +
      • + list +
      • +
      • + map +
      • +
      • + set +
      • +
      • + vector +
      • +
      +
    • +
    • + conversion +
    • +
    • + generation +
    • +
    • + intrinsic +
    • +
    • + io +
    • +
    • + utility +
    • +
    • + view +
        +
      • + filter_view +
      • +
      • + iterator_range +
      • +
      • + joint_view +
      • +
      • + reverse_view +
      • +
      • + single_view +
      • +
      • + transform_view +
      • +
      • + zip_view +
      • +
      +
    • +
    +
  • +
  • + iterator +
  • +
  • + support +
  • +
+

+ + Example +

+

+ If, for example, you want to use list, + depending on the granularity that you desire, you may do so by including one + of +

+
+#include <boost/fusion/sequence.hpp>
+#include <boost/fusion/sequence/container.hpp>
+#include <boost/fusion/sequence/container/list.hpp>
+
+

+ The first includes all sequences. The second includes all of sequence containers. + The third includes only list  + [3] + . +

+
+

+

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

+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/preface.html b/doc/html/fusion/preface.html new file mode 100644 index 00000000..9fc7c33d --- /dev/null +++ b/doc/html/fusion/preface.html @@ -0,0 +1,159 @@ + + + +Preface + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ Algorithms + Data Structures = Programs. +

+

+ --Niklaus Wirth +

+

+ + Description +

+

+ Fusion is a library for working with hetrogenous collections of data, commonly + referred to as tuples. A set of containers (vector, list, set and map) is provided, + along with views that provide a transformed presentation of their underlying + data. Collectively the containers and views are referred to as sequences, and + Fusion has a suite of algorithms that operate upon the various sequence types, + using an iterator concept that binds everything together. +

+

+ The architecture is modeled after MPL + which in turn is modeled after STL. + It is named "fusion" because the library is a "fusion" + of compile time metaprogramming with runtime programming. +

+

+ + Motivation +

+

+ Tuples are powerful beasts. After having developed two significant projects + (Spirit and Phoenix) + that relied heavily metaprogramming, it became apparent that tuples are a powerful + means to simplify otherwise tricky tasks; especially those that require a combination + of metaprogramming and manipulation of heterogenous data types with values. + While MPL is + an extremely powerful metaprogramming tool, MPL + focuses on type manipulation only. Ultimately, you'll have to map these types + to real values to make them useful in the runtime world where all the real + action takes place. +

+

+ As Spirit and Phoenix + evolved, patterns and idioms related to tuple manipulation emerged. Soon, it + became clear that those patterns and idioms were best assembled in a tuples + algorithms library. David + Abrahams outlined such a scheme in 2002. At that time, it just so happened + that Spirit and Phoenix + had an adhoc collection of tuple manipulation and traversal routines. It was + an instant AHA! moment. +

+

+ + How to use this manual +

+

+ Some icons are used to mark certain topics indicative of their relevance. These + icons precede some text to indicate: +

+
+

+ + Icons +

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IconNameMeaning
noteNoteInformation provided + is auxiliary but will give the reader a deeper insight into a specific + topic. May be skipped.
alertAlertInformation provided + is of utmost importance.
cautionCautionA mild warning.
tipTipA potentially useful + and helpful piece of information.
+
+

+ This documentation is automatically generated by Boost QuickBook documentation + tool. QuickBook can be found in the Boost + Tools. +

+

+ + Support +

+

+ Please direct all questions to Spirit's mailing list. You can subscribe to + the Spirit + Mailing List. The mailing list has a searchable archive. A search link + to this archive is provided in Spirit's + home page. You may also read and post messages to the mailing list through + Spirit General + NNTP news portal (thanks to Gmane). + The news group mirrors the mailing list. Here is a link to the archives: http://news.gmane.org/gmane.comp.parsers.spirit.general. +

+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/quick_start.html b/doc/html/fusion/quick_start.html new file mode 100644 index 00000000..fb9c7ab2 --- /dev/null +++ b/doc/html/fusion/quick_start.html @@ -0,0 +1,260 @@ + + + +Quick Start + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ I assume the reader is already familiar with tuples (Boost.Tuple) + and its ancestor std::pair. The tuple is a generalization of std::pair + for multiple heterogeneous elements (triples, quadruples, etc.). The tuple + is more or less a synonym for fusion's vector. +

+

+ For starters, we shall include all of Fusion's _sequence_s + [1] + : +

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

+ Let's begin with a vector  + [2] + : +

+
+vector<int, char, std::string> stuff(1, 'x', "howdy");
+int i = at_c<0>(stuff);
+char ch = at_c<1>(stuff);
+std::string s = at_c<2>(stuff);
+
+

+ Just replace tuple for vector + and get for at_c and this is exactly like + Boost.Tuple. + Actually, either names can be used interchangeably. Yet, the similarity ends + there. You can do a lot more with Fusion vector or tuple. + Let's see some examples. +

+

+ + Print the vector + as XML +

+

+ First, let's include the algorithms: +

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

+ Now, let's write a function object that prints XML of the form <type>data</type> + for each member in the tuple. +

+
+struct print_xml
+{
+    template <typename T>
+    void operator()(T const& x) const
+    {
+        std::cout 
+            << '<' << typeid(x).name() << '>'
+            << x
+            << "</" << typeid(x).name() << '>'
+            ;
+    }
+};
+
+

+ Now, finally: +

+
+for_each(stuff, print_xml());
+
+

+ That's it! for_each is a fusion algorithm. + It is a generic algorithm similar to STL's. + It iterates over the sequence and calls a user supplied function. In our case, + it calls print_xml's operator() for + each element in stuff. +

+
+ + + + + +
[Caution]Caution

+ The result of typeid(x).name() is platform specific. The code here is + just for exposition. Of course you already know that :-) +

+

+ for_each is generic. With + print_xml, you can use it to + print just about any Fusion Sequence. +

+

+ + Print only pointers +

+

+ Let's get a little cleverer. Say we wish to write a generic + function that takes in an arbitrary sequence and XML prints only those elements + which are pointers. Ah, easy. First, let's include the is_pointer + boost type trait: +

+
+#include <boost/type_traits/is_pointer.hpp>
+
+

+ Then, simply: +

+
+template <typename Sequence>
+void xml_print_pointers(Sequence const& seq)
+{
+    for_each(filter_if<boost::is_pointer<_> >(seq), print_xml());
+}
+
+

+ filter_if is another Fusion + algorithm. It returns a filter_view, a conforming Fusion sequence. + This view reflects only those elements that pass the given predicate. In this + case, the predicate is boost::is_pointer<_>. + This "filtered view" is then passed to the for_each algorithm, which then prints + the "filtered view" as XML. +

+

+ Easy, right? +

+

+ + Associative tuples +

+

+ Ok, moving on... +

+

+ Apart from vector, fusion has a couple + of other sequence types to choose from. Each sequence has its own characteristics. + We have list, set, map, plus a multitude of views that provide various ways to present + the sequences. +

+

+ Fusion's map associate types with elements. + It can be used as a cleverer replacement of the struct. + Example: +

+
+namespace fields
+{
+    struct name;
+    struct age;
+}
+
+typedef map<
+    fusion::pair<fields::name, std::string>
+  , fusion::pair<fields::age, int> > 
+person;
+
+

+ map + is an associative sequence. Its elements are Fusion pairs which differ somewhat + from std::pair. Fusion pairs only contain one member, + with the type of their second template parameter. The first type parameter + of the pair is used as an index to the associated element in the sequence. + For example, given a a_person + of type, person, you can do: +

+
+using namespace fields;
+std::string person_name = at_key<name>(a_person);
+int person_age = at_key<age>(a_person);
+
+

+ Why go through all this trouble, you say? Well, for one, unlike the struct, we are dealing with a generic data structure. + There are a multitude of facilities available at your disposal provided out + of the box with fusion or written by others. With these facilities, introspection + comes for free, for example. We can write one serialization function (well, + two, if you consider loading and saving) that will work for all your fusion + maps. + Example: +

+
+struct saver
+{
+    template <typename Pair>
+    void operator()(Pair const& data) const
+    {
+        some_archive << data.second;
+    }
+};
+
+template <typename Stuff>
+void save(Stuff const& stuff)
+{
+    for_each(stuff, saver());
+}
+
+

+ The save function is generic + and will work for all types of stuff + regardless if it is a person, + a dog or a whole alternate_universe. +

+

+ + Tip of the Iceberg +

+

+ And... we've barely scratched the surface! You can compose and expand the data + structures, remove elements from the structures, find specific data types, + query the elements, filter out types for inspection, transform data structures, + etc. What you've seen is just the tip of the iceberg. +

+
+

+

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

+

[2] + 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. +

+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/references.html b/doc/html/fusion/references.html new file mode 100644 index 00000000..ef4f7188 --- /dev/null +++ b/doc/html/fusion/references.html @@ -0,0 +1,67 @@ + + + +References + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHome +
+
+ +
    +
  1. +New + Iterator Concepts, David Abrahams, Jeremy Siek, Thomas Witt, 2004-11-01. +
  2. +
  3. +The Boost + Tuple Library, Jaakko Jarvi, 2001. +
  4. +
  5. +Spirit Parser Library, + Joel de Guzman, 2001-2006. +
  6. +
  7. +The Boost MPL Library, + Aleksey Gurtovoy and David Abrahams, 2002-2004. +
  8. +
  9. +Boost Array, + Nicolai Josuttis, 2002-2004. +
  10. +
  11. +Standard Template Library Programmer's + Guide, Hewlett-Packard Company, 1994. +
  12. +
  13. +Boost.Ref, Jaakko + Jarvi, Peter Dimov, Douglas Gregor, Dave Abrahams, 1999-2002. +
  14. +
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHome +
+ + diff --git a/doc/html/fusion/sequences.html b/doc/html/fusion/sequences.html new file mode 100644 index 00000000..005938a7 --- /dev/null +++ b/doc/html/fusion/sequences.html @@ -0,0 +1,65 @@ + + + +Sequences + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ + +

+ Like MPL, the + Sequence is a fundamental concept in Fusion. A Sequence may or may not actually + store or contain data. Containers + are sequences that hold data. Views, + on the other hand, are sequences that do not store any data. Instead, they + are proxies that impart an alternative presentation over another sequence. + All models of Sequence have an associated Iterator + type that can be used to iterate through the Sequence's elements. +

+

+ + Header +

+
+#include <boost/fusion/sequence.hpp>
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/adapted.html b/doc/html/fusion/sequences/adapted.html new file mode 100644 index 00000000..9de14eed --- /dev/null +++ b/doc/html/fusion/sequences/adapted.html @@ -0,0 +1,70 @@ + + + +Adapted + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ + +

+ Fusion provides a couple of adapters for other sequences such as std::pair, + MPL sequences, + and boost::array. These adapters are written using + Fusion's non-intrusive Extension + mechanism. If you wish to use these sequences with fusion, simply include + the necessary files and they will be regarded as first-class, fully conforming + fusion sequences + [4] + . +

+

+ + Header +

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

+

[4] + Fusion sequences may also be adapted as fully conforming MPL + sequences (see Intrinsics). + That way, we can have 2-way adaptation to and from MPL + and Fusion +

+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/adapted/boost__array.html b/doc/html/fusion/sequences/adapted/boost__array.html new file mode 100644 index 00000000..2ed12fca --- /dev/null +++ b/doc/html/fusion/sequences/adapted/boost__array.html @@ -0,0 +1,79 @@ + + + +boost::array + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ This module provides adapters for boost::array. + Including the module header makes boost::array + a fully conforming Random + Access Sequence. +

+
+ + Header +
+
+#include <boost/fusion/sequence/adapted/array.hpp>
+
+
+ + Model of +
+ +
+ + Example +
+
+boost::array<int,3> arr = {{1,2,3}};
+
+std::cout << *begin(arr) << std::endl;
+std::cout << *next(begin(arr)) << std::endl;
+std::cout << *advance_c<2>(begin(arr)) << std::endl;
+std::cout << *prior(end(arr)) << std::endl;
+std::cout << at_c<2>(arr) << std::endl;
+
+
+ + See also +
+

+ Boost.Array Library +

+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/adapted/mpl_sequence.html b/doc/html/fusion/sequences/adapted/mpl_sequence.html new file mode 100644 index 00000000..378644b8 --- /dev/null +++ b/doc/html/fusion/sequences/adapted/mpl_sequence.html @@ -0,0 +1,95 @@ + + + +mpl sequence + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ This module provides adapters for MPL + sequences. Including the module header makes all MPL + sequences fully conforming fusion sequences. +

+
+ + Header +
+
+#include <boost/fusion/sequence/adapted/mpl.hpp>
+
+
+ + Model of +
+
+
+ + Example +
+
+mpl::vector_c<int, 123, 456> vec_c;
+fusion::vector2<int, long> v(vec_c);
+std::cout << at_c<0>(v) << std::endl;
+std::cout << at_c<1>(v) << std::endl;
+
+v = mpl::vector_c<int, 456, 789>();
+std::cout << at_c<0>(v) << std::endl;
+std::cout << at_c<1>(v) << std::endl;
+
+
+ + See also +
+

+ MPL +

+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/adapted/std__pair.html b/doc/html/fusion/sequences/adapted/std__pair.html new file mode 100644 index 00000000..d3a434c0 --- /dev/null +++ b/doc/html/fusion/sequences/adapted/std__pair.html @@ -0,0 +1,77 @@ + + + +std::pair + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ This module provides adapters for std::pair. + Including the module header makes std::pair + a fully conforming Random + Access Sequence. +

+
+ + Header +
+
+#include <boost/fusion/sequence/adapted/std_pair.hpp>
+
+
+ + Model of +
+ +
+ + Example +
+
+std::pair<int, std::string> p(123, "Hola!!!");
+std::cout << at_c<0>(p) << std::endl;
+std::cout << at_c<1>(p) << std::endl;
+std::cout << p << std::endl;
+
+
+ + See also +
+

+ std::pair, + TR1 and std::pair +

+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/concepts.html b/doc/html/fusion/sequences/concepts.html new file mode 100644 index 00000000..6983f910 --- /dev/null +++ b/doc/html/fusion/sequences/concepts.html @@ -0,0 +1,80 @@ + + + +Concepts + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ + +

+ Fusion Sequences are organized into a hierarchy of concepts. +

+

+ + Traversal +

+

+ Fusion's sequence traversal related concepts parallel Fusion's Iterator + Concepts. Forward + Sequence is the most basic concept. Bidirectional + Sequence is a refinement of Forward + Sequence. Random + Access Sequence is a refinement of Bidirectional + Sequence. These concepts pertain to sequence traversal. +

+

+ + Associativity +

+

+ The Associative + Sequence concept is orthogonal to traversal. An Associative Sequence + allows efficient retrieval of elements based on keys. +

+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/concepts/associative_sequence.html b/doc/html/fusion/sequences/concepts/associative_sequence.html new file mode 100644 index 00000000..cc0878cd --- /dev/null +++ b/doc/html/fusion/sequences/concepts/associative_sequence.html @@ -0,0 +1,228 @@ + + + +Associative + Sequence + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ An Associative Sequence allows efficient retrieval of elements based on + keys. Like associative sequences in MPL, + and unlike associative containers in STL, + Fusion associative sequences have no implied ordering relation. Instead, + type identity is used to impose an equivalence relation on keys, and the + order in which sequence elements are traversed during iteration is left + unspecified. In addition, unlike STL, + Associative Sequences have mutable iterators. This is due to the fact that + there is no associated ordering relation and the runtime value of the keys + themselves do not have any effect on the associativity of the sequence. +

+
+

Notation

+
+
s
+
+ An Associative Sequence +
+
S
+
+ An Associative Sequence type +
+
K
+
+ An arbitrary key type +
+
o
+
+ An arbitrary object +
+
e
+
+ A Sequence element +
+
+
+
+ + Valid + Expressions +
+

+ For any Associative Sequence the following expressions must be valid: +

+
+

+ +

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
ExpressionReturn typeType RequirementsRuntime + Complexity
has_key<K>(s)MPL + Boolean Constant. Convertible to bool. Constant
at_key<K>(s)Any + type Constant
at_key<K>(s) = oAny + type +s + is mutable and e = o, + where e is the first + element in the sequence, is a valid expression.Constant
+
+
+ + Result + Type Expressions +
+
+

+ +

+ ++++ + + + + + + + + + + + + + + + + + + +
ExpressionCompile Time Complexity
result_of::has_key<S, K>::typeAmortized constant + time
result_of::at_key<S, K>::typeAmortized constant + time
result_of::value_at_key<S, K>::typeAmortized constant + time
+
+

+ note result_of::at_key<S, K> + returns the actual type returned by at_key<K>(s). In + most cases, this is a reference. Hence, there is no way to know the exact + element type using result_of::at_key<S, K>.The + element at K may actually + be a reference to begin with. For this purpose, you can use result_of::value_at_key<S, N>. +

+
+ + Expression + Semantics +
+
+

+ +

+ ++++ + + + + + + + + + + + + + + +
ExpressionSemantics
has_key<K>(s)A + boolean Integral Constant c + such that c::value == true if and only if there is one or + more elements with the key k + in s; see has_key.
at_key<K>(s)The + element associated with the key K + in the sequence s; + see at.
+
+
+ + Models +
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/concepts/bidirectional_sequence.html b/doc/html/fusion/sequences/concepts/bidirectional_sequence.html new file mode 100644 index 00000000..8937bd21 --- /dev/null +++ b/doc/html/fusion/sequences/concepts/bidirectional_sequence.html @@ -0,0 +1,236 @@ + + + +Bidirectional + Sequence + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ A Bidirectional Sequence is a Forward + Sequence whose iterators model Bidirectional + Iterator. +

+
+ + Refinement + of +
+

+ Forward Sequence +

+
+

Notation

+
+
s
+
+ A Forward Sequence +
+
S
+
+ A Forward Sequence type +
+
o
+
+ An arbitrary object +
+
e
+
+ A Sequence element +
+
+
+
+ + Valid + Expressions +
+

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

+
+

+ +

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ExpressionReturn typeType RequirementsRuntime + Complexity
begin(s)Bidirectional + Iterator Constant
end(s)Bidirectional + Iterator Constant
back(s)Any + type Constant
back(s) = oAny + type +s + is mutable and e = o, + where e is the first + element in the sequence, is a valid expression.Constant
+
+
+ + Result + Type Expressions +
+
+

+ +

+ ++++ + + + + + + + + + + + + + + + + + + +
ExpressionCompile Time Complexity
result_of::begin<S>::typeAmortized constant + time
result_of::end<S>::typeAmortized constant + time
result_of::back<S>::typeAmortized constant + time
+
+
+ + Expression + Semantics +
+

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

+
+

+ +

+ ++++ + + + + + + + + +
ExpressionSemantics
back(s)The + last element in the sequence; see back.
+
+
+ + Models +
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/concepts/forward_sequence.html b/doc/html/fusion/sequences/concepts/forward_sequence.html new file mode 100644 index 00000000..dd460d28 --- /dev/null +++ b/doc/html/fusion/sequences/concepts/forward_sequence.html @@ -0,0 +1,289 @@ + + + +Forward + Sequence + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ A Forward Sequence is a Sequence whose elements are arranged in a definite + order. The ordering is guaranteed not to change from iteration to iteration. + The requirement of a definite ordering allows the definition of element-by-element + 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
+
+ A Forward Sequence +
+
S
+
+ A Forward Sequence type +
+
o
+
+ An arbitrary object +
+
e
+
+ A Sequence element +
+
+
+
+ + Valid + Expressions +
+

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

+
+

+ +

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ExpressionReturn typeType RequirementsRuntime + Complexity
begin(s)Forward Iterator Constant
end(s)Forward Iterator Constant
size(s)MPL + Integral Constant. Convertible to int. Constant
empty(s)MPL + Boolean Constant. Convertible to bool. Constant
front(s)Any + type Constant
front(s) = oAny + type +s + is mutable and e = o, + where e is the first + element in the sequence, is a valid expression.Constant
+
+
+ + Result + Type Expressions +
+
+

+ +

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
ExpressionCompile Time Complexity
result_of::begin<S>::typeAmortized constant + time
result_of::end<S>::typeAmortized constant + time
result_of::size<S>::typeUnspecified
result_of::empty<S>::typeConstant time
result_of::front<S>::typeAmortized constant + time
+
+
+ + Expression + Semantics +
+
+

+ +

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

+ For any Forward Sequence s the following invariants always hold: +

+
    +
  • +[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. +
  • +
  • +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. +
  • +
+
+ + Models +
+ +
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/concepts/random_access_sequence.html b/doc/html/fusion/sequences/concepts/random_access_sequence.html new file mode 100644 index 00000000..f031f3ac --- /dev/null +++ b/doc/html/fusion/sequences/concepts/random_access_sequence.html @@ -0,0 +1,255 @@ + + + +Random + Access Sequence + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ A Random Access Sequence is a Bidirectional + Sequence whose iterators model Random + Access Iterator. It guarantees constant time access to arbitrary + sequence elements. +

+
+ + Refinement + of +
+

+ Bidirectional + Sequence +

+
+

Notation

+
+
s
+
+ A Random Access Sequence +
+
S
+
+ A Random Access Sequence type +
+
N
+
+ An integral constant +
+
o
+
+ An arbitrary object +
+
e
+
+ A Sequence element +
+
+
+
+ + Valid + Expressions +
+

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

+
+

+ +

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ExpressionReturn typeType RequirementsRuntime + Complexity
begin(s)Random + Access Iterator Constant
end(s)Random + Access Iterator Constant
at<N>(s)Any + type Constant
at<N>(s) = oAny + type +s + is mutable and e = o, + where e is the first + element in the sequence, is a valid expression.Constant
+
+
+ + Result + Type Expressions +
+
+

+ +

+ ++++ + + + + + + + + + + + + + + + + + + + + + + +
ExpressionCompile Time Complexity
result_of::begin<S>::typeAmortized constant + time
result_of::end<S>::typeAmortized constant + time
result_of::at<S, N>::typeAmortized constant + time
result_of::value_at<S, N>::typeAmortized constant + time
+
+

+ note result_of::at<S, N> + returns the actual type returned by at<N>(s). In + most cases, this is a reference. Hence, there is no way to know the exact + element type using result_of::at<S, N>.The + element at N may actually + be a reference to begin with. For this purpose, you can use result_of::value_at<S, N>. +

+
+ + Expression + Semantics +
+

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

+
+

+ +

+ ++++ + + + + + + + + +
ExpressionSemantics
at<N>(s)The + Nth element from the beginning of the sequence; see at.
+
+
+ + Models +
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/containers.html b/doc/html/fusion/sequences/containers.html new file mode 100644 index 00000000..b5c6ef0a --- /dev/null +++ b/doc/html/fusion/sequences/containers.html @@ -0,0 +1,58 @@ + + + +Containers + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ + +

+ Fusion provides a few predefined sequences out of the box. These containers + actually hold heterogenously typed data; unlike Views. + These containers are more or less counterparts of those in STL. +

+

+ + Header +

+
+#include <boost/fusion/sequence/container.hpp>
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/containers/cons.html b/doc/html/fusion/sequences/containers/cons.html new file mode 100644 index 00000000..006b7e29 --- /dev/null +++ b/doc/html/fusion/sequences/containers/cons.html @@ -0,0 +1,236 @@ + + + +cons + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ cons is a simple Forward Sequence. + It is a lisp style recursive list structure where car + is the head and cdr + is the tail: usually another cons structure or nil: the empty list. Fusion's list is built on top of this more + primitive data structure. It is more efficient than vector when the target sequence + is constructed piecemeal (a data at a time). The runtime cost of access + to each element is peculiarly constant (see Recursive + Inlined Functions). +

+
+ + Header +
+
+#include <boost/fusion/sequence/container/list/cons.hpp>
+
+
+ + Synopsis +
+
+template <typename Car, typename Cdr = nil>
+struct cons;
+
+
+ + Template + parameters +
+
+

+ +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterDescriptionDefault
CarHead + type 
CdrTail + typenil
+
+
+ + Model of +
+ +
+

Notation

+
+
nil
+
+ An empty cons +
+
C
+
+ A cons type +
+
l, + l2
+
+ Instances of cons +
+
car
+
+ An arbitrary data +
+
cdr
+
+ Another cons list +
+
s
+
+ A Forward + Sequence +
+
N
+
+ An Integral Constant +
+
+
+
+ + Expression + Semantics +
+

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

+
+

+ +

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ExpressionSemantics
nil()Creates + an empty list.
C()Creates + a cons with default constructed elements.
C(car)Creates + a cons with car head + and default constructed tail.
C(car, cdr)Creates + a cons with car head + and cdr tail.
C(s)Copy + constructs a cons from a Forward + Sequence, s.
l = sAssigns to a cons, + l, from a Forward + Sequence, s.
at<N>(l)The + Nth element from the beginning of the sequence; see at.
+
+

+ note at<N>(l) is + provided for convenience and compatibility with the original Boost.Tuple + library, despite cons being + a Forward Sequence + only (at is supposed to + be a Random + Access Sequence requirement). The runtime complexity of at is constant (see Recursive + Inlined Functions). +

+
+ + Example +
+
+cons<int, cons<float> > l(12, cons<float>(5.5f));
+std::cout << at<0>(l) << std::endl;
+std::cout << at<1>(l) << std::endl;
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/containers/list.html b/doc/html/fusion/sequences/containers/list.html new file mode 100644 index 00000000..83ee0ff4 --- /dev/null +++ b/doc/html/fusion/sequences/containers/list.html @@ -0,0 +1,228 @@ + + + +list + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ list is a Forward + Sequence of heterogenous typed data built on top of cons. It is more efficient than + vector + when the target sequence is constructed piecemeal (a data at a time). The + runtime cost of access to each element is peculiarly constant (see Recursive Inlined Functions). +

+
+ + Header +
+
+#include <boost/fusion/sequence/container/list.hpp>
+#include <boost/fusion/sequence/container/list/list_forward.hpp>
+
+
+ + Synopsis +
+
+template <
+    typename T0 = unspecified
+  , typename T1 = unspecified
+  , typename T2 = unspecified
+    ...
+  , typename TN = unspecified
+>
+struct list;
+
+

+ The variadic class interface accepts 0 + to FUSION_MAX_LIST_SIZE + elements, where FUSION_MAX_LIST_SIZE + is a user definable predefined maximum that defaults to 10. + Example: +

+
+list<int, char, double>
+
+

+ You may define the preprocessor constant FUSION_MAX_LIST_SIZE + before including any Fusion header to change the default. Example: +

+
+#define FUSION_MAX_LIST_SIZE 20
+
+
+ + Template + parameters +
+
+

+ +

+ +++++ + + + + + + + + + + +
ParameterDescriptionDefault
+T0...TN +Element typesunspecified-type
+
+
+ + Model of +
+ +
+

Notation

+
+
L
+
+ A list type +
+
l
+
+ An instance of list +
+
e0...en
+
+ Heterogeneous values +
+
s
+
+ A Forward + Sequence +
+
N
+
+ An Integral Constant +
+
+
+
+ + Expression + Semantics +
+

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

+
+

+ +

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
ExpressionSemantics
L()Creates + a list with default constructed elements.
L(e0, e1,... en)Creates + a list with elements e0...en.
L(s)Copy + constructs a list from a Forward + Sequence, s.
l = sAssigns to a list, + l, from a Forward + Sequence, s.
at<N>(l)The + Nth element from the beginning of the sequence; see at.
+
+

+ note at<n>(l) is + provided for convenience and compatibility with the original Boost.Tuple + library, despite list being + a Forward Sequence + only (at is supposed to be a Random + Access Sequence requirement). The runtime complexity of at is constant (see Recursive + Inlined Functions). +

+
+ + Example +
+
+list<int, float> l(12, 5.5f);
+std::cout << at<0>(l) << std::endl;
+std::cout << at<1>(l) << std::endl;
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/containers/map.html b/doc/html/fusion/sequences/containers/map.html new file mode 100644 index 00000000..e04c36b2 --- /dev/null +++ b/doc/html/fusion/sequences/containers/map.html @@ -0,0 +1,225 @@ + + + +map + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+

+map

+
+ + Description +
+

+ map is an Associative + Sequence of heteregenous typed data elements. Each element is a + key/data pair (see fusion::pair) + where the key has no data (type only). Type identity is used to impose + an equivalence relation on keys. A map may contain at most one element + for each key. Membership testing and element key lookup has constant runtime + complexity (see Overloaded + Functions). +

+
+ + Header +
+
+#include <boost/fusion/sequence/container/map.hpp>
+
+
+ + Synopsis +
+
+template <
+    typename T0 = unspecified
+  , typename T1 = unspecified
+  , typename T2 = unspecified
+    ...
+  , typename TN = unspecified
+>
+struct map;
+
+

+ The variadic class interface accepts 0 + to FUSION_MAX_MAP_SIZE + elements, where FUSION_MAX_MAP_SIZE + is a user definable predefined maximum that defaults to 10. + Example: +

+
+map<pair<int, char>, pair<char, char>, pair<double, char> >
+
+

+ You may define the preprocessor constant FUSION_MAX_MAP_SIZE + before including any Fusion header to change the default. Example: +

+
+#define FUSION_MAX_MAP_SIZE 20
+
+
+ + Template + parameters +
+
+

+ +

+ +++++ + + + + + + + + + + +
ParameterDescriptionDefault
+T0...TN +Element typesunspecified-type
+
+
+ + Model of +
+ +
+

Notation

+
+
M
+
+ A map type +
+
m
+
+ An instance of map +
+
e0...en
+
+ Heterogeneous key/value pairs (see fusion::pair) +
+
s
+
+ A Forward + Sequence +
+
+
+
+ + Expression + Semantics +
+

+ Semantics of an expression is defined only where it differs from, or is + not defined in Random + Access Sequence and Associative + Sequence. +

+
+

+ +

+ ++++ + + + + + + + + + + + + + + + + + + + + + + +
ExpressionSemantics
M()Creates + a map with default constructed elements.
M(e0, e1,... en)Creates + a map with element pairs e0...en.
M(s)Copy + constructs a map from a Forward + Sequence s.
m = sAssigns to a map, + m, from a Forward + Sequence s.
+
+
+ + Example +
+
+typedef map<
+    pair<int, char>
+  , pair<double, std::string> > 
+map_type;
+
+map_type m(
+    make_pair<int>('X')
+  , make_pair<double>("Men"));
+
+std::cout << at<int>(m) << std::endl;
+std::cout << at<double>(m) << std::endl;
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/containers/set.html b/doc/html/fusion/sequences/containers/set.html new file mode 100644 index 00000000..b3b553ce --- /dev/null +++ b/doc/html/fusion/sequences/containers/set.html @@ -0,0 +1,217 @@ + + + +set + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+

+set

+
+ + Description +
+

+ set is an Associative + Sequence of heteregenous typed data elements. Type identity is used + to impose an equivalence relation on keys. The element's type is its key. + A set may contain at most one element for each key. Membership testing + and element key lookup has constant runtime complexity (see Overloaded + Functions). +

+
+ + Header +
+
+#include <boost/fusion/sequence/container/set.hpp>
+
+
+ + Synopsis +
+
+template <
+    typename T0 = unspecified
+  , typename T1 = unspecified
+  , typename T2 = unspecified
+    ...
+  , typename TN = unspecified
+>
+struct set;
+
+

+ The variadic class interface accepts 0 + to FUSION_MAX_SET_SIZE + elements, where FUSION_MAX_SET_SIZE + is a user definable predefined maximum that defaults to 10. + Example: +

+
+set<int, char, double>
+
+

+ You may define the preprocessor constant FUSION_MAX_SET_SIZE + before including any Fusion header to change the default. Example: +

+
+#define FUSION_MAX_SET_SIZE 20
+
+
+ + Template + parameters +
+
+

+ +

+ +++++ + + + + + + + + + + +
ParameterDescriptionDefault
+T0...TN +Element typesunspecified-type
+
+
+ + Model of +
+ +
+

Notation

+
+
S
+
+ A set type +
+
s
+
+ An instance of set +
+
e0...en
+
+ Heterogeneous values +
+
fs
+
+ A Forward + Sequence +
+
+
+
+ + Expression + Semantics +
+

+ Semantics of an expression is defined only where it differs from, or is + not defined in Random + Access Sequence and Associative + Sequence. +

+
+

+ +

+ ++++ + + + + + + + + + + + + + + + + + + + + + + +
ExpressionSemantics
S()Creates + a set with default constructed elements.
S(e0, e1,... en)Creates + a set with elements e0...en.
S(fs)Copy + constructs a set from a Forward + Sequence fs.
s = fsAssigns to a set, + s, from a Forward + Sequence fs.
+
+
+ + Example +
+
+typedef set<int, float> S;
+S s(12, 5.5f);
+std::cout << at_key<int>(s) << std::endl;
+std::cout << at_key<float>(s) << std::endl;
+std::cout << result_of::has_key<S, double>::value << std::endl;
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/containers/vector.html b/doc/html/fusion/sequences/containers/vector.html new file mode 100644 index 00000000..788f029b --- /dev/null +++ b/doc/html/fusion/sequences/containers/vector.html @@ -0,0 +1,247 @@ + + + +vector + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ vector is a Random + Access Sequence of heterogenous typed data structured as a simple + struct where each element + is held as a member variable. vector + is the simplest of the Fusion sequence container, and in many cases the + most efficient. +

+
+ + Header +
+
+#include <boost/fusion/sequence/container/vector.hpp>
+#include <boost/fusion/sequence/container/vector/vector_forward.hpp>
+
+// numbered forms
+#include <boost/fusion/sequence/container/vector/vector10.hpp>
+#include <boost/fusion/sequence/container/vector/vector20.hpp>
+#include <boost/fusion/sequence/container/vector/vector30.hpp>
+#include <boost/fusion/sequence/container/vector/vector40.hpp>
+#include <boost/fusion/sequence/container/vector/vector50.hpp>
+
+
+ + Synopsis +
+

+ Numbered forms +

+
+template <>
+struct vector0;
+
+template <typename T0>
+struct vector1;
+
+template <typename T0, typename T1>
+struct vector2;
+
+template <typename T0, typename T1, typename T2>
+struct vector3;
+
+...
+
+template <typename T0, typename T1, typename T2..., typename TN>
+struct vectorN;
+
+

+ Variadic form +

+
+template <
+    typename T0 = unspecified
+  , typename T1 = unspecified
+  , typename T2 = unspecified
+    ...
+  , typename TN = unspecified
+>
+struct vector;
+
+

+ The numbered form accepts the exact number of elements. Example: +

+
+vector3<int, char, double>
+
+

+ The variadic form accepts 0 + to FUSION_MAX_VECTOR_SIZE + elements, where FUSION_MAX_VECTOR_SIZE + is a user definable predefined maximum that defaults to 10. + Example: +

+
+vector<int, char, double>
+
+

+ You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE + before including any Fusion header to change the default. Example: +

+
+#define FUSION_MAX_VECTOR_SIZE 20
+
+
+ + Template + parameters +
+
+

+ +

+ +++++ + + + + + + + + + + +
ParameterDescriptionDefault
+T0...TN +Element typesunspecified
+
+
+ + Model of +
+ +
+

Notation

+
+
v
+
+ Instance of vector +
+
V
+
+ A vector type +
+
e0...en
+
+ Heterogeneous values +
+
s
+
+ A Forward + Sequence +
+
+
+
+ + Expression + Semantics +
+

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

+
+

+ +

+ ++++ + + + + + + + + + + + + + + + + + + + + + + +
ExpressionSemantics
V()Creates + a vector with default constructed elements.
V(e0, e1,... en)Creates + a vector with elements e0...en.
V(s)Copy + constructs a vector from a Forward + Sequence, s.
v = sAssigns to a vector, + v, from a Forward + Sequence, s.
+
+
+ + Example +
+
+vector<int, float> v(12, 5.5f);
+std::cout << at_c<0>(v) << std::endl;
+std::cout << at_c<1>(v) << std::endl;
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/conversion.html b/doc/html/fusion/sequences/conversion.html new file mode 100644 index 00000000..4a468867 --- /dev/null +++ b/doc/html/fusion/sequences/conversion.html @@ -0,0 +1,53 @@ + + + +Conversion + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ + +

+ All fusion sequences can be converted to one of the Containers + types using one of these conversion functions. +

+

+ + Header +

+
+#include <boost/fusion/sequence/conversion.hpp>
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/conversion/functions.html b/doc/html/fusion/sequences/conversion/functions.html new file mode 100644 index 00000000..ad31a4c8 --- /dev/null +++ b/doc/html/fusion/sequences/conversion/functions.html @@ -0,0 +1,44 @@ + + + +Functions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/conversion/functions/as_list.html b/doc/html/fusion/sequences/conversion/functions/as_list.html new file mode 100644 index 00000000..092b2d68 --- /dev/null +++ b/doc/html/fusion/sequences/conversion/functions/as_list.html @@ -0,0 +1,114 @@ + + + +as_list + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Convert a fusion sequence to a list. +

+
+ + Synopsis +
+
+template <typename Sequence>
+typename result_of::as_list<Sequence>::type
+as_list(Sequence& seq);
+
+template <typename Sequence>
+typename result_of::as_list<Sequence const>::type
+as_list(Sequence const& seq);
+
+
+ + Parameters +
+
+

+ +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
seqAn + instance of SequenceThe sequence to convert.
+
+
+ + Expression + Semantics +
+
+as_list(seq);
+
+

+ Return type: result_of::as_list<Sequence>::type +

+

+ Semantics: Convert a fusion sequence, + seq, to a list. +

+
+ + Header +
+
+#include <boost/fusion/sequence/conversion/as_list.hpp>
+
+
+ + Example +
+
+as_list(make_vector('x', 123, "hello"))
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/conversion/functions/as_map.html b/doc/html/fusion/sequences/conversion/functions/as_map.html new file mode 100644 index 00000000..ced5fbfb --- /dev/null +++ b/doc/html/fusion/sequences/conversion/functions/as_map.html @@ -0,0 +1,121 @@ + + + +as_map + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Convert a fusion sequence to a map. +

+
+ + Synopsis +
+
+template <typename Sequence>
+typename result_of::as_map<Sequence>::type
+as_map(Sequence& seq);
+
+template <typename Sequence>
+typename result_of::as_map<Sequence const>::type
+as_map(Sequence const& seq);
+
+
+ + Parameters +
+
+

+ +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
seqAn + instance of SequenceThe sequence to convert.
+
+
+ + Expression + Semantics +
+
+as_map(seq);
+
+

+ Return type: result_of::as_map<Sequence>::type +

+

+ Semantics: Convert a fusion sequence, + seq, to a map. +

+

+ Precondition: The elements of the sequence + are assumed to be __fusionpair_s. + There may be no duplicate fusion::pair key types. +

+
+ + Header +
+
+#include <boost/fusion/sequence/conversion/as_map.hpp>
+
+
+ + Example +
+
+as_map(make_vector(
+    make_pair<int>('X')
+  , make_pair<double>("Men")))
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/conversion/functions/as_set.html b/doc/html/fusion/sequences/conversion/functions/as_set.html new file mode 100644 index 00000000..982a76d8 --- /dev/null +++ b/doc/html/fusion/sequences/conversion/functions/as_set.html @@ -0,0 +1,118 @@ + + + +as_set + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Convert a fusion sequence to a set. +

+
+ + Synopsis +
+
+template <typename Sequence>
+typename result_of::as_set<Sequence>::type
+as_set(Sequence& seq);
+
+template <typename Sequence>
+typename result_of::as_set<Sequence const>::type
+as_set(Sequence const& seq);
+
+
+ + Parameters +
+
+

+ +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
seqAn + instance of SequenceThe sequence to convert.
+
+
+ + Expression + Semantics +
+
+as_set(seq);
+
+

+ Return type: result_of::as_set<Sequence>::type +

+

+ Semantics: Convert a fusion sequence, + seq, to a set. +

+

+ Precondition: There may be no duplicate + key types. +

+
+ + Header +
+
+#include <boost/fusion/sequence/conversion/as_set.hpp>
+
+
+ + Example +
+
+as_set(make_vector('x', 123, "hello"))
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/conversion/functions/as_vector.html b/doc/html/fusion/sequences/conversion/functions/as_vector.html new file mode 100644 index 00000000..de557ba4 --- /dev/null +++ b/doc/html/fusion/sequences/conversion/functions/as_vector.html @@ -0,0 +1,114 @@ + + + +as_vector + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Convert a fusion sequence to a vector. +

+
+ + Synopsis +
+
+template <typename Sequence>
+typename result_of::as_vector<Sequence>::type
+as_vector(Sequence& seq);
+
+template <typename Sequence>
+typename result_of::as_vector<Sequence const>::type
+as_vector(Sequence const& seq);
+
+
+ + Parameters +
+
+

+ +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
seqAn + instance of SequenceThe sequence to convert.
+
+
+ + Expression + Semantics +
+
+as_vector(seq);
+
+

+ Return type: result_of::as_vector<Sequence>::type +

+

+ Semantics: Convert a fusion sequence, + seq, to a vector. +

+
+ + Header +
+
+#include <boost/fusion/sequence/conversion/as_vector.hpp>
+
+
+ + Example +
+
+as_vector(make_list('x', 123, "hello"))
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/conversion/metafunctions.html b/doc/html/fusion/sequences/conversion/metafunctions.html new file mode 100644 index 00000000..9241e198 --- /dev/null +++ b/doc/html/fusion/sequences/conversion/metafunctions.html @@ -0,0 +1,44 @@ + + + +Metafunctions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_list.html b/doc/html/fusion/sequences/conversion/metafunctions/as_list.html new file mode 100644 index 00000000..5b00a350 --- /dev/null +++ b/doc/html/fusion/sequences/conversion/metafunctions/as_list.html @@ -0,0 +1,112 @@ + + + +as_list + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of as_list. +

+
+ + Synopsis +
+
+template <typename Sequence>
+struct as_list;
+
+
+ + Parameters +
+
+

+ +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
SequenceA + fusion Sequence +The + sequence type to convert.
+
+
+ + Expression + Semantics +
+
+result_of::as_list<Sequence>::type;
+
+

+ Return type: A list with same elements as the + input sequence, Sequence. +

+

+ Semantics: Convert a fusion sequence, + Sequence, to a list. +

+
+ + Header +
+
+#include <boost/fusion/sequence/conversion/as_list.hpp>
+
+
+ + Example +
+
+result_of::as_list<vector<char, int> >::type
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_map.html b/doc/html/fusion/sequences/conversion/metafunctions/as_map.html new file mode 100644 index 00000000..2de03b86 --- /dev/null +++ b/doc/html/fusion/sequences/conversion/metafunctions/as_map.html @@ -0,0 +1,119 @@ + + + +as_map + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of as_map. +

+
+ + Synopsis +
+
+template <typename Sequence>
+struct as_map;
+
+
+ + Parameters +
+
+

+ +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
SequenceA + fusion Sequence +The + sequence to convert.
+
+
+ + Expression + Semantics +
+
+result_of::as_map<Sequence>::type;
+
+

+ Return type: A map with same elements as the + input sequence, Sequence. +

+

+ Semantics: Convert a fusion sequence, + Sequence, to a map. +

+

+ Precondition: The elements of the sequence + are assumed to be __fusionpair_s. + There may be no duplicate fusion::pair key types. +

+
+ + Header +
+
+#include <boost/fusion/sequence/conversion/as_map.hpp>
+
+
+ + Example +
+
+result_of::as_map<vector<
+    fusion::pair<int, char>
+  , fusion::pair<double, std::string> > >::type
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_set.html b/doc/html/fusion/sequences/conversion/metafunctions/as_set.html new file mode 100644 index 00000000..b5a1a707 --- /dev/null +++ b/doc/html/fusion/sequences/conversion/metafunctions/as_set.html @@ -0,0 +1,116 @@ + + + +as_set + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of as_set. +

+
+ + Synopsis +
+
+template <typename Sequence>
+struct as_set;
+
+
+ + Parameters +
+
+

+ +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
SequenceA + fusion Sequence +The + sequence to convert.
+
+
+ + Expression + Semantics +
+
+result_of::as_set<Sequence>::type;
+
+

+ Return type: A set with same elements as the + input sequence, Sequence. +

+

+ Semantics: Convert a fusion sequence, + Sequence, to a set. +

+

+ Precondition: There may be no duplicate + key types. +

+
+ + Header +
+
+#include <boost/fusion/sequence/conversion/as_set.hpp>
+
+
+ + Example +
+
+result_of::as_set<vector<char, int> >::type
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html b/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html new file mode 100644 index 00000000..6d39ef78 --- /dev/null +++ b/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html @@ -0,0 +1,112 @@ + + + +as_vector + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of as_vector. +

+
+ + Synopsis +
+
+template <typename Sequence>
+struct as_vector;
+
+
+ + Parameters +
+
+

+ +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
SequenceA + fusion Sequence +The + sequence to convert.
+
+
+ + Expression + Semantics +
+
+result_of::as_vector<Sequence>::type;
+
+

+ Return type: A vector with same elements as + the input sequence, Sequence. +

+

+ Semantics: Convert a fusion sequence, + Sequence, to a vector. +

+
+ + Header +
+
+#include <boost/fusion/sequence/conversion/as_vector.hpp>
+
+
+ + Example +
+
+result_of::as_vector<list<char, int> >::type
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/generation.html b/doc/html/fusion/sequences/generation.html new file mode 100644 index 00000000..0dd9d6fd --- /dev/null +++ b/doc/html/fusion/sequences/generation.html @@ -0,0 +1,52 @@ + + + +Generation + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ + +

+ These are the functions that you can use to generate various forms of Containers from elemental values. +

+

+ + Header +

+
+#include <boost/fusion/sequence/generation.hpp>
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/generation/functions.html b/doc/html/fusion/sequences/generation/functions.html new file mode 100644 index 00000000..202070ae --- /dev/null +++ b/doc/html/fusion/sequences/generation/functions.html @@ -0,0 +1,48 @@ + + + +Functions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/generation/functions/list_tie.html b/doc/html/fusion/sequences/generation/functions/list_tie.html new file mode 100644 index 00000000..48f800b4 --- /dev/null +++ b/doc/html/fusion/sequences/generation/functions/list_tie.html @@ -0,0 +1,126 @@ + + + +list_tie + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Constructs a tie using a list sequence. +

+
+ + Synopsis +
+
+template <typename T0, typename T1,... typename TN>
+list<T0&, T1&,... TN&>
+list_tie(T0& x0, T1& x1... TN& xN);
+
+

+ The variadic function accepts 0 + to FUSION_MAX_LIST_SIZE + elements, where FUSION_MAX_LIST_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_LIST_SIZE + before including any Fusion header to change the default. Example: +

+
+#define FUSION_MAX_LIST_SIZE 20
+
+
+ + Parameters +
+
+

+ +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
x0, x1,... xNInstances of + T0, T1,... TN +The arguments + to list_tie +
+
+
+ + Expression + Semantics +
+
+list_tie(x0, x1,... xN);
+
+

+ Return type: list<T0&, T1&,... + TN&> +

+

+ Semantics: Create a list of references from x0, x1,... xN. +

+
+ + Header +
+
+#include <boost/fusion/sequence/generation/list_tie.hpp>
+
+
+ + Example +
+
+int i = 123;
+double d = 123.456;
+list_tie(i, d)
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/generation/functions/make_cons.html b/doc/html/fusion/sequences/generation/functions/make_cons.html new file mode 100644 index 00000000..5163e06a --- /dev/null +++ b/doc/html/fusion/sequences/generation/functions/make_cons.html @@ -0,0 +1,137 @@ + + + +make_cons + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Create a cons from car + (head) and optional cdr + (tail). +

+
+ + Synopsis +
+
+template <typename Car>
+typename result_of::make_cons<Car>::type
+make_cons(Car const& car);
+
+template <typename Car, typename Cdr>
+typename result_of::make_cons<Car, Cdr>::type
+make_cons(Car const& car, Cdr const& cdr);
+
+
+ + Parameters +
+
+

+ +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
carInstance + of Car +The + list's head
cdrInstance + of Cdr +The + list's tail (optional)
+
+
+ + Expression + Semantics +
+
+make_cons(car, cdr);
+
+

+ Return type: result_of::make_cons<Car, Cdr>::type or result_of::make_cons<Car>::type +

+

+ Semantics: Create a cons from car + (head) and optional cdr + (tail). +

+
+ + Header +
+
+#include <boost/fusion/sequence/generation/make_cons.hpp>
+
+
+ + Example +
+
+make_cons('x', make_cons(123))
+
+
+ + See + also +
+

+ boost::ref +

+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/generation/functions/make_list.html b/doc/html/fusion/sequences/generation/functions/make_list.html new file mode 100644 index 00000000..8804b024 --- /dev/null +++ b/doc/html/fusion/sequences/generation/functions/make_list.html @@ -0,0 +1,131 @@ + + + +make_list + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Create a list from one or more values. +

+
+ + Synopsis +
+
+template <typename T0, typename T1,... typename TN>
+typename result_of::make_list<T0, T1,... TN>::type
+make_list(T0 const& x0, T1 const& x1... TN const& xN);
+
+

+ The variadic function accepts 0 + to FUSION_MAX_LIST_SIZE + elements, where FUSION_MAX_LIST_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_LIST_SIZE + before including any Fusion header to change the default. Example: +

+
+#define FUSION_MAX_LIST_SIZE 20
+
+
+ + Parameters +
+
+

+ +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
x0, x1,... xNInstances of + T0, T1,... TN +The arguments + to make_list +
+
+
+ + Expression + Semantics +
+
+make_list(x0, x1,... xN);
+
+

+ Return type: result_of::make_list<T0, T1,... TN>::type +

+

+ Semantics: Create a list from x0, x1,... xN. +

+
+ + Header +
+
+#include <boost/fusion/sequence/generation/make_list.hpp>
+
+
+ + Example +
+
+make_list(123, "hello", 12.5)
+
+
+ + See + also +
+

+ boost::ref +

+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/generation/functions/make_map.html b/doc/html/fusion/sequences/generation/functions/make_map.html new file mode 100644 index 00000000..a475dbb6 --- /dev/null +++ b/doc/html/fusion/sequences/generation/functions/make_map.html @@ -0,0 +1,159 @@ + + + +make_map + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Create a map from one or more key/data + pairs. +

+
+ + Synopsis +
+
+template <
+    typename K0, typename K1,... typename KN
+  , typename T0, typename T1,... typename TN>
+typename result_of::make_map<K0, K0,... KN, T0, T1,... TN>::type
+make_map(T0 const& x0, T1 const& x1... TN const& xN);
+
+

+ The variadic function accepts 0 + to FUSION_MAX_VECTOR_SIZE + [10] + elements, where FUSION_MAX_VECTOR_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_VECTOR_SIZE + before including any Fusion header to change the default. Example: +

+
+#define FUSION_MAX_VECTOR_SIZE 20
+
+
+ + Parameters +
+
+

+ +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
K0, K1,... KNThe key typesKeys + associated with x0, x1,... xN +
x0, x1,... xNInstances of + T0, T1,... TN +The arguments + to make_map +
+
+
+ + Expression + Semantics +
+
+make_map<K0, K1,... KN>(x0, x1,... xN);
+
+

+ Return type: result_of::make_map<K0, K0,... KN, T0, T1,... TN>::type +

+

+ Semantics: Create a map from K0, K1,... KN + keys and x0, x1,... xN data. +

+

+ Precondition: There may be no duplicate + key types. +

+
+ + Header +
+
+#include <boost/fusion/sequence/generation/make_map.hpp>
+
+
+ + Example +
+
+make_map(
+    make_pair<int>('X')
+  , make_pair<double>("Men"))
+
+
+ + See + also +
+

+ boost::ref, + fusion::pair +

+
+

+

[10] + map is implemented + in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE +

+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/generation/functions/make_set.html b/doc/html/fusion/sequences/generation/functions/make_set.html new file mode 100644 index 00000000..7298b243 --- /dev/null +++ b/doc/html/fusion/sequences/generation/functions/make_set.html @@ -0,0 +1,143 @@ + + + +make_set + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Create a set from one or more values. +

+
+ + Synopsis +
+
+template <typename T0, typename T1,... typename TN>
+typename result_of::make_set<T0, T1,... TN>::type
+make_set(T0 const& x0, T1 const& x1... TN const& xN);
+
+

+ The variadic function accepts 0 + to FUSION_MAX_VECTOR_SIZE + [9] + elements, where FUSION_MAX_VECTOR_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_VECTOR_SIZE + before including any Fusion header to change the default. Example: +

+
+#define FUSION_MAX_VECTOR_SIZE 20
+
+
+ + Parameters +
+
+

+ +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
x0, x1,... xNInstances of + T0, T1,... TN +The arguments + to make_set +
+
+
+ + Expression + Semantics +
+
+make_set(x0, x1,... xN);
+
+

+ Return type: result_of::make_set<T0, T1,... TN>::type +

+

+ Semantics: Create a set from x0, x1,... xN. +

+

+ Precondition: There may be no duplicate + key types. +

+
+ + Header +
+
+#include <boost/fusion/sequence/generation/make_set.hpp>
+
+
+ + Example +
+
+make_set(123, "hello", 12.5)
+
+
+ + See + also +
+

+ boost::ref +

+
+

+

[9] + set is implemented + in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE +

+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/generation/functions/make_vector.html b/doc/html/fusion/sequences/generation/functions/make_vector.html new file mode 100644 index 00000000..2deac697 --- /dev/null +++ b/doc/html/fusion/sequences/generation/functions/make_vector.html @@ -0,0 +1,131 @@ + + + +make_vector + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Create a vector from one or more values. +

+
+ + Synopsis +
+
+template <typename T0, typename T1,... typename TN>
+typename result_of::make_vector<T0, T1,... TN>::type
+make_vector(T0 const& x0, T1 const& x1... TN const& xN);
+
+

+ The variadic function accepts 0 + to FUSION_MAX_VECTOR_SIZE + elements, where FUSION_MAX_VECTOR_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_VECTOR_SIZE + before including any Fusion header to change the default. Example: +

+
+#define FUSION_MAX_VECTOR_SIZE 20
+
+
+ + Parameters +
+
+

+ +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
x0, x1,... xNInstances of + T0, T1,... TN +The arguments + to make_vector +
+
+
+ + Expression + Semantics +
+
+make_vector(x0, x1,... xN);
+
+

+ Return type: result_of::make_vector<T0, T1,... TN>::type +

+

+ Semantics: Create a vector from x0, x1,... xN. +

+
+ + Header +
+
+#include <boost/fusion/sequence/generation/make_vector.hpp>
+
+
+ + Example +
+
+make_vector(123, "hello", 12.5)
+
+
+ + See + also +
+

+ boost::ref +

+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/generation/functions/tiers.html b/doc/html/fusion/sequences/generation/functions/tiers.html new file mode 100644 index 00000000..9a4defb4 --- /dev/null +++ b/doc/html/fusion/sequences/generation/functions/tiers.html @@ -0,0 +1,99 @@ + + + +Tiers + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ Tiers are sequences, where all elements are non-const reference types. + They are constructed with a call to a couple of tie + function templates. The succeeding sections document the various tier + flavors. +

+ +

+ Example: +

+
+int i; char c; double d; 
+  ...
+vector_tie(i, c, a);
+
+

+ 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)) + [11] + . +

+

+ A tie can be used to 'unpack' another tuple into + variables. E.g.: +

+
+int i; char c; double d; 
+vector_tie(i, c, d) = make_vector(1,'a', 5.5);
+std::cout << i << " " <<  c << " " << d;
+
+

+ This code prints 1 a 5.5 to the standard output stream. A sequence unpacking + operation like this is found for example in ML and Python. It is convenient + when calling functions which return sequences. +

+
+ + Ignore +
+

+ There is also an object called ignore which allows + you to ignore an element assigned by a sequence. The idea is that a function + may return a sequence, only part of which you are interested in. For + example: +

+
+char c;
+vector_tie(ignore, c) = make_vector(1, 'a');
+
+
+

+

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

+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/generation/functions/vector_tie.html b/doc/html/fusion/sequences/generation/functions/vector_tie.html new file mode 100644 index 00000000..ccd43dd8 --- /dev/null +++ b/doc/html/fusion/sequences/generation/functions/vector_tie.html @@ -0,0 +1,126 @@ + + + +vector_tie + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Constructs a tie using a vector sequence. +

+
+ + Synopsis +
+
+template <typename T0, typename T1,... typename TN>
+vector<T0&, T1&,... TN&>
+vector_tie(T0& x0, T1& x1... TN& xN);
+
+

+ The variadic function accepts 0 + to FUSION_MAX_VECTOR_SIZE + elements, where FUSION_MAX_VECTOR_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_VECTOR_SIZE + before including any Fusion header to change the default. Example: +

+
+#define FUSION_MAX_VECTOR_SIZE 20
+
+
+ + Parameters +
+
+

+ +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
x0, x1,... xNInstances of + T0, T1,... TN +The arguments + to vector_tie +
+
+
+ + Expression + Semantics +
+
+vector_tie(x0, x1,... xN);
+
+

+ Return type: vector<T0&, T1&,... + TN&> +

+

+ Semantics: Create a vector of references from x0, x1,... xN. +

+
+ + Header +
+
+#include <boost/fusion/sequence/generation/vector_tie.hpp>
+
+
+ + Example +
+
+int i = 123;
+double d = 123.456;
+vector_tie(i, d)
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/generation/metafunctions.html b/doc/html/fusion/sequences/generation/metafunctions.html new file mode 100644 index 00000000..3143a7b0 --- /dev/null +++ b/doc/html/fusion/sequences/generation/metafunctions.html @@ -0,0 +1,47 @@ + + + +MetaFunctions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/generation/metafunctions/list_tie.html b/doc/html/fusion/sequences/generation/metafunctions/list_tie.html new file mode 100644 index 00000000..dc11981f --- /dev/null +++ b/doc/html/fusion/sequences/generation/metafunctions/list_tie.html @@ -0,0 +1,121 @@ + + + +list_tie + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of list_tie. +

+
+ + Synopsis +
+
+template <typename T0, typename T1,... typename TN>
+struct list_tie;
+
+

+ The variadic function accepts 0 + to FUSION_MAX_LIST_SIZE + elements, where FUSION_MAX_LIST_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_LIST_SIZE + before including any Fusion header to change the default. Example: +

+
+#define FUSION_MAX_LIST_SIZE 20
+
+
+ + Parameters +
+
+

+ +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
T0, T1,... TNAny typeThe + arguments to list_tie +
+
+
+ + Expression + Semantics +
+
+result_of::list_tie<T0, T1,... TN>::type;
+
+

+ Return type: list<T0&, T1&,... + TN&> +

+

+ Semantics: Create a list of references from T0, T1,... TN. +

+
+ + Header +
+
+#include <boost/fusion/sequence/generation/list_tie.hpp>
+
+
+ + Example +
+
+result_of::list_tie<int, double>::type
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_cons.html b/doc/html/fusion/sequences/generation/metafunctions/make_cons.html new file mode 100644 index 00000000..5e3c7339 --- /dev/null +++ b/doc/html/fusion/sequences/generation/metafunctions/make_cons.html @@ -0,0 +1,122 @@ + + + +make_cons + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of make_cons. +

+
+ + Synopsis +
+
+template <typename Car, typename Cdr = nil>
+struct make_cons;
+
+
+ + Parameters +
+
+

+ +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
CarAny + typeThe list's head type
CdrA + cons +The + list's tail type (optional)
+
+
+ + Expression + Semantics +
+
+result_of::make_cons<Car, Cdr>::type
+
+

+ Return type: A cons with head element, Car, of type converted following the + rules for element + conversion, and tail, Cdr. +

+

+ Semantics: Create a cons from Car + (head) and optional Cdr + (tail). +

+
+ + Header +
+
+#include <boost/fusion/sequence/generation/make_cons.hpp>
+
+
+ + Example +
+
+result_of::make_cons<char, result_of::make_cons<int>::type>::type
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_list.html b/doc/html/fusion/sequences/generation/metafunctions/make_list.html new file mode 100644 index 00000000..acc31cef --- /dev/null +++ b/doc/html/fusion/sequences/generation/metafunctions/make_list.html @@ -0,0 +1,122 @@ + + + +make_list + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of make_list. +

+
+ + Synopsis +
+
+template <typename T0, typename T1,... typename TN>
+struct make_list;
+
+

+ The variadic function accepts 0 + to FUSION_MAX_LIST_SIZE + elements, where FUSION_MAX_LIST_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_LIST_SIZE + before including any Fusion header to change the default. Example: +

+
+#define FUSION_MAX_LIST_SIZE 20
+
+
+ + Parameters +
+
+

+ +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
T0, T1,... TNAny typeTemplate + arguments to make_list +
+
+
+ + Expression + Semantics +
+
+result_of::make_list<T0, T1,... TN>::type
+
+

+ Return type: A list with elements of types + converted following the rules for element + conversion. +

+

+ Semantics: Create a list from T0, T1,... TN. +

+
+ + Header +
+
+#include <boost/fusion/sequence/generation/make_list.hpp>
+
+
+ + Example +
+
+result_of::make_list<int, const char(&)[7], double>::type
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_map.html b/doc/html/fusion/sequences/generation/metafunctions/make_map.html new file mode 100644 index 00000000..a9983836 --- /dev/null +++ b/doc/html/fusion/sequences/generation/metafunctions/make_map.html @@ -0,0 +1,153 @@ + + + +make_map + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of make_map. +

+
+ + Synopsis +
+
+template <
+    typename K0, typename K1,... typename KN
+  , typename T0, typename T1,... typename TN>
+struct make_map;
+
+

+ The variadic function accepts 0 + to FUSION_MAX_VECTOR_SIZE + [13] + elements, where FUSION_MAX_VECTOR_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_VECTOR_SIZE + before including any Fusion header to change the default. Example: +

+
+#define FUSION_MAX_VECTOR_SIZE 20
+
+
+ + Parameters +
+
+

+ +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
K0, K1,... KNAny typeKeys + associated with T0, T1,... TN +
T0, T1,... TNAny typeData + associated with keys K0, K1,... KN +
+
+
+ + Expression + Semantics +
+
+resulf_of::make_map<K0, K1,... KN, T0, T1,... TN>::type;
+
+

+ Return type: result_of::make_map<K0, K0,... KN, T0, T1,... TN>::type +

+

+ Semantics: A map with fusion::pair elements where the second_type is converted following + the rules for element + conversion. +

+

+ Precondition: There may be no duplicate + key types. +

+
+ + Header +
+
+#include <boost/fusion/sequence/generation/make_map.hpp>
+
+
+ + Example +
+
+result_of::make_map<int, double, char, double>::type
+
+
+ + See + also +
+

+ fusion::pair +

+
+

+

[13] + map is implemented + in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE +

+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_set.html b/doc/html/fusion/sequences/generation/metafunctions/make_set.html new file mode 100644 index 00000000..317ea0c3 --- /dev/null +++ b/doc/html/fusion/sequences/generation/metafunctions/make_set.html @@ -0,0 +1,134 @@ + + + +make_set + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of make_set. +

+
+ + Synopsis +
+
+template <typename T0, typename T1,... typename TN>
+struct make_set;
+
+

+ The variadic function accepts 0 + to FUSION_MAX_VECTOR_SIZE + [12] + elements, where FUSION_MAX_VECTOR_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_VECTOR_SIZE + before including any Fusion header to change the default. Example: +

+
+#define FUSION_MAX_VECTOR_SIZE 20
+
+
+ + Parameters +
+
+

+ +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
T0, T1,... TNAny typeThe + arguments to make_set +
+
+
+ + Expression + Semantics +
+
+result_of::make_set<T0, T1,... TN>::type
+
+

+ Return type: A set with elements of types converted + following the rules for element + conversion. +

+

+ Semantics: Create a set from T0, T1,... TN. +

+

+ Precondition: There may be no duplicate + key types. +

+
+ + Header +
+
+#include <boost/fusion/sequence/generation/make_set.hpp>
+
+
+ + Example +
+
+result_of::make_set<int, char, double>::type
+
+
+

+

[12] + set is implemented + in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE +

+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_vector.html b/doc/html/fusion/sequences/generation/metafunctions/make_vector.html new file mode 100644 index 00000000..572041c0 --- /dev/null +++ b/doc/html/fusion/sequences/generation/metafunctions/make_vector.html @@ -0,0 +1,122 @@ + + + +make_vector + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of make_vector. +

+
+ + Synopsis +
+
+template <typename T0, typename T1,... typename TN>
+struct make_vector;
+
+

+ The variadic function accepts 0 + to FUSION_MAX_VECTOR_SIZE + elements, where FUSION_MAX_VECTOR_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_VECTOR_SIZE + before including any Fusion header to change the default. Example: +

+
+#define FUSION_MAX_VECTOR_SIZE 20
+
+
+ + Parameters +
+
+

+ +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
T0, T1,... TNAny typeTemplate + arguments to make_vector +
+
+
+ + Expression + Semantics +
+
+result_of::make_vector<T0, T1,... TN>::type
+
+

+ Return type: A vector with elements of types + converted following the rules for element + conversion. +

+

+ Semantics: Create a vector from T0, T1,... TN. +

+
+ + Header +
+
+#include <boost/fusion/sequence/generation/make_list.hpp>
+
+
+ + Example +
+
+result_of::make_vector<int, const char(&)[7], double>::type
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html b/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html new file mode 100644 index 00000000..7a81eb16 --- /dev/null +++ b/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html @@ -0,0 +1,121 @@ + + + +vector_tie + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of vector_tie. +

+
+ + Synopsis +
+
+template <typename T0, typename T1,... typename TN>
+struct vector_tie;
+
+

+ The variadic function accepts 0 + to FUSION_MAX_VECTOR_SIZE + elements, where FUSION_MAX_VECTOR_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_VECTOR_SIZE + before including any Fusion header to change the default. Example: +

+
+#define FUSION_MAX_VECTOR_SIZE 20
+
+
+ + Parameters +
+
+

+ +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
T0, T1,... TNAny typeThe + arguments to vector_tie +
+
+
+ + Expression + Semantics +
+
+result_of::vector_tie<T0, T1,... TN>::type;
+
+

+ Return type: vector<T0&, T1&,... + TN&> +

+

+ Semantics: Create a vector of references from T0, T1,... TN. +

+
+ + Header +
+
+#include <boost/fusion/sequence/generation/vector_tie.hpp>
+
+
+ + Example +
+
+result_of::vector_tie<int, double>::type
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/intrinsics.html b/doc/html/fusion/sequences/intrinsics.html new file mode 100644 index 00000000..d3896d63 --- /dev/null +++ b/doc/html/fusion/sequences/intrinsics.html @@ -0,0 +1,66 @@ + + + +Intrinsics + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ + +

+ Intrinsics form the essential interface of Fusion _sequence_s. + STL + 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] + . +

+

+ + Header +

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

+

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

+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/intrinsics/functions.html b/doc/html/fusion/sequences/intrinsics/functions.html new file mode 100644 index 00000000..37df07d8 --- /dev/null +++ b/doc/html/fusion/sequences/intrinsics/functions.html @@ -0,0 +1,50 @@ + + + +Functions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/intrinsics/functions/at.html b/doc/html/fusion/sequences/intrinsics/functions/at.html new file mode 100644 index 00000000..aeeb6343 --- /dev/null +++ b/doc/html/fusion/sequences/intrinsics/functions/at.html @@ -0,0 +1,139 @@ + + + +at + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+
+at
+
+ + Description +
+

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

+
+ + Synopsis +
+
+template <typename N, typename Sequence>
+typename result_of::at<Sequence, N>::type
+at(Sequence& seq);
+
+template <typename N, typename Sequence>
+typename result_of::at<Sequence const, N>::type
+at(Sequence const& seq);
+
+
+ + Parameters +
+
+

+ +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
seqModel + of Random + Access Sequence +The sequence we wish to investigate.
NAn + MPL + integral constantAn index from the beginning of + the sequence.
+
+
+ + Expression + Semantics +
+
+at<N>(seq);
+
+

+ Return type: Returns a reference to + the N-th element from the beginning of the sequence seq + if seq is mutable and + e = o, where e + is the N-th element from the beginning of the sequence, is a valid expression. + Else, returns a type convertable to the N-th element from the beginning + of the sequence. +

+

+ Precondition: 0 <= N::value < size(s) +

+

+ Semantics: Equivalent to +

+
+deref(advance<N>(begin(s)))
+
+
+ + Header +
+
+#include <boost/fusion/sequence/intrinsic/at.hpp>
+
+
+ + Example +
+
+vector<int, int, int> v(1, 2, 3);
+assert(at<mpl::int_<1> >(v) == 2);
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/intrinsics/functions/at_c.html b/doc/html/fusion/sequences/intrinsics/functions/at_c.html new file mode 100644 index 00000000..0ffc2615 --- /dev/null +++ b/doc/html/fusion/sequences/intrinsics/functions/at_c.html @@ -0,0 +1,138 @@ + + + +at_c + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

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

+
+ + Synopsis +
+
+template <int N, typename Sequence>
+typename result_of::at_c<Sequence, N>::type
+at_c(Sequence& seq);
+
+template <int N, typename Sequence>
+typename result_of::at_c<Sequence const, N>::type
+at_c(Sequence const& seq);
+
+
+ + Parameters +
+
+

+ +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
seqModel + of Random + Access Sequence +The sequence we wish to investigate.
NAn + integral constantAn index from the beginning of + the sequence.
+
+
+ + Expression + Semantics +
+
+at_c<N>(seq);
+
+

+ Return type: Returns a reference to + the N-th element from the beginning of the sequence seq + if seq is mutable and + e = o, where e + is the N-th element from the beginning of the sequence, is a valid expression. + Else, returns a type convertable to the N-th element from the beginning + of the sequence. +

+

+ Precondition: 0 <= N < size(s) +

+

+ Semantics: Equivalent to +

+
+deref(advance<N>(begin(s)))
+
+
+ + Header +
+
+#include <boost/fusion/sequence/intrinsic/at_c.hpp>
+
+
+ + Example +
+
+vector<int, int, int> v(1, 2, 3);
+assert(at_c<1>(v) == 2);
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/intrinsics/functions/at_key.html b/doc/html/fusion/sequences/intrinsics/functions/at_key.html new file mode 100644 index 00000000..f448522c --- /dev/null +++ b/doc/html/fusion/sequences/intrinsics/functions/at_key.html @@ -0,0 +1,134 @@ + + + +at_key + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the element associated with a Key from the sequence. +

+
+ + Synopsis +
+
+template <typename Key, typename Sequence>
+typename result_of::at_key<Sequence, Key>::type
+at_key(Sequence& seq);
+
+template <typename Key, typename Sequence>
+typename result_of::at_key<Sequence const, Key>::type
+at_key(Sequence const& seq);
+
+
+ + Parameters +
+
+

+ +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
seqModel + of Associative + Sequence +The sequence we wish to investigate.
KeyAny + typeThe queried key.
+
+
+ + Expression + Semantics +
+
+at_key<Key>(seq);
+
+

+ Return type: Returns a reference to + the element associated with Key from the sequence seq + if seq is mutable and + e = o, where e + is the element associated with Key, is a valid expression. Else, returns + a type convertable to the element associated with Key. +

+

+ Precondition: has_key<Key>(seq) == true +

+

+ Semantics: Returns the element associated + with Key. +

+
+ + Header +
+
+#include <boost/fusion/sequence/intrinsic/at_key.hpp>
+
+
+ + Example +
+
+set<int, char, bool> s(1, 'x', true);
+assert(at_key<char>(s) == 'x');
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/intrinsics/functions/back.html b/doc/html/fusion/sequences/intrinsics/functions/back.html new file mode 100644 index 00000000..3f4a5021 --- /dev/null +++ b/doc/html/fusion/sequences/intrinsics/functions/back.html @@ -0,0 +1,126 @@ + + + +back + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the last element in the sequence. +

+
+ + Synopsis +
+
+template <typename Sequence>
+typename result_of::back<Sequence>::type
+back(Sequence& seq);
+
+template <typename Sequence>
+typename result_of::back<Sequence const>::type
+back(Sequence const& seq);
+
+
+ + Parameters +
+
+

+ +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
seqModel + of Bidirectional + Sequence +The sequence we wish to investigate.
+
+
+ + Expression + Semantics +
+
+back(seq);
+
+

+ Return type: Returns a reference to + the last element in the sequence seq + if seq is mutable and + e = o, where e + is the last element in the sequence, is a valid expression. Else, returns + a type convertable to the last element in the sequence. +

+

+ Precondition: empty(seq) == false +

+

+ Semantics: Returns the last element + in the sequence. +

+
+ + Header +
+
+#include <boost/fusion/sequence/intrinsic/back.hpp>
+
+
+ + Example +
+
+vector<int, int, int> v(1, 2, 3);
+assert(back(v) == 3);
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/intrinsics/functions/begin.html b/doc/html/fusion/sequences/intrinsics/functions/begin.html new file mode 100644 index 00000000..755c9c85 --- /dev/null +++ b/doc/html/fusion/sequences/intrinsics/functions/begin.html @@ -0,0 +1,134 @@ + + + +begin + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

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

+
+ + Synopsis +
+
+template <typename Sequence>
+typename result_of::begin<Sequence>::type
+begin(Sequence& seq);
+
+template <typename Sequence>
+typename result_of::begin<Sequence const>::type
+begin(Sequence const& seq);
+
+
+ + Parameters +
+
+

+ +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
seqModel + of Forward + Sequence +The sequence we wish to get an iterator + from.
+
+
+ + Expression + Semantics +
+
+begin(seq);
+
+

+ Return type: Forward + Iterator if seq + is a Forward + Sequence else, Bidirectional + Iterator if seq + is a Bidirectional + Sequence else, Random + Access Iterator if seq + is a Random + Access Sequence. +

+

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

+
+ + Header +
+
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+
+
+ + Example +
+
+vector<int, int, int> v(1, 2, 3);
+assert(deref(begin(v)) == 1);
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/intrinsics/functions/empty.html b/doc/html/fusion/sequences/intrinsics/functions/empty.html new file mode 100644 index 00000000..84e4b147 --- /dev/null +++ b/doc/html/fusion/sequences/intrinsics/functions/empty.html @@ -0,0 +1,116 @@ + + + +empty + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns a type convertible to bool + that evaluates to true if + the sequence is empty, else, evaluates to false. +

+
+ + Synopsis +
+
+template <typename Sequence>
+typename result_of::empty<Sequence>::type
+empty(Sequence const& seq);
+
+
+ + Parameters +
+
+

+ +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
seqModel + of Forward + Sequence +The sequence we wish to investigate.
+
+
+ + Expression + Semantics +
+
+empty(seq);
+
+

+ Return type: Convertible to bool. +

+

+ Semantics: Evaluates to true if the sequence is empty, else, evaluates + to false. +

+
+ + Header +
+
+#include <boost/fusion/sequence/intrinsic/empty.hpp>
+
+
+ + Example +
+
+vector<int, int, int> v(1, 2, 3);
+assert(empty(v) == false);
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/intrinsics/functions/end.html b/doc/html/fusion/sequences/intrinsics/functions/end.html new file mode 100644 index 00000000..41d27f73 --- /dev/null +++ b/doc/html/fusion/sequences/intrinsics/functions/end.html @@ -0,0 +1,134 @@ + + + +end + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+
+end
+
+ + Description +
+

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

+
+ + Synopsis +
+
+template <typename Sequence>
+typename result_of::end<Sequence>::type
+end(Sequence& seq);
+
+template <typename Sequence>
+typename result_of::end<Sequence const>::type
+end(Sequence const& seq);
+
+
+ + Parameters +
+
+

+ +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
seqModel + of Forward + Sequence +The sequence we wish to get an iterator + from.
+
+
+ + Expression + Semantics +
+
+end(seq);
+
+

+ Return type: Forward + Iterator if seq + is a Forward + Sequence else, Bidirectional + Iterator if seq + is a Bidirectional + Sequence else, Random + Access Iterator if seq + is a Random + Access Sequence. +

+

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

+
+ + Header +
+
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+
+
+ + Example +
+
+vector<int, int, int> v(1, 2, 3);
+assert(deref(prior(end(v))) == 3);
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/intrinsics/functions/front.html b/doc/html/fusion/sequences/intrinsics/functions/front.html new file mode 100644 index 00000000..fad5941d --- /dev/null +++ b/doc/html/fusion/sequences/intrinsics/functions/front.html @@ -0,0 +1,126 @@ + + + +front + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the first element in the sequence. +

+
+ + Synopsis +
+
+template <typename Sequence>
+typename result_of::front<Sequence>::type
+front(Sequence& seq);
+
+template <typename Sequence>
+typename result_of::front<Sequence const>::type
+front(Sequence const& seq);
+
+
+ + Parameters +
+
+

+ +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
seqModel + of Forward + Sequence +The sequence we wish to investigate.
+
+
+ + Expression + Semantics +
+
+front(seq);
+
+

+ Return type: Returns a reference to + the first element in the sequence seq + if seq is mutable and + e = o, where e + is the first element in the sequence, is a valid expression. Else, returns + a type convertable to the first element in the sequence. +

+

+ Precondition: empty(seq) == false +

+

+ Semantics: Returns the first element + in the sequence. +

+
+ + Header +
+
+#include <boost/fusion/sequence/intrinsic/front.hpp>
+
+
+ + Example +
+
+vector<int, int, int> v(1, 2, 3);
+assert(front(v) == 1);
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/intrinsics/functions/has_key.html b/doc/html/fusion/sequences/intrinsics/functions/has_key.html new file mode 100644 index 00000000..aabd7a1a --- /dev/null +++ b/doc/html/fusion/sequences/intrinsics/functions/has_key.html @@ -0,0 +1,125 @@ + + + +has_key + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns a type convertible to bool + that evaluates to true if + the sequence contains an element associated with a Key, else, evaluates + to false. +

+
+ + Synopsis +
+
+template <typename Key, typename Sequence>
+typename result_of::has_key<Sequence, Key>::type
+has_key(Sequence const& seq);
+
+
+ + Parameters +
+
+

+ +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
seqModel + of Associative + Sequence +The sequence we wish to investigate.
KeyAny + typeThe queried key.
+
+
+ + Expression + Semantics +
+
+has_key<Key>(seq);
+
+

+ Return type: Convertible to bool. +

+

+ Semantics: Evaluates to true if the sequence contains an element + associated with Key, else, evaluates to false. +

+
+ + Header +
+
+#include <boost/fusion/sequence/intrinsic/has_key.hpp>
+
+
+ + Example +
+
+set<int, char, bool> s(1, 'x', true);
+assert(has_key<char>(s) == true);
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/intrinsics/functions/size.html b/doc/html/fusion/sequences/intrinsics/functions/size.html new file mode 100644 index 00000000..a01e55ae --- /dev/null +++ b/doc/html/fusion/sequences/intrinsics/functions/size.html @@ -0,0 +1,115 @@ + + + +size + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns a type convertible to int + that evaluates the number of elements in the sequence. +

+
+ + Synopsis +
+
+template <typename Sequence>
+typename result_of::size<Sequence>::type
+size(Sequence const& seq);
+
+
+ + Parameters +
+
+

+ +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
seqModel + of Forward + Sequence +The sequence we wish to investigate.
+
+
+ + Expression + Semantics +
+
+size(seq);
+
+

+ Return type: Convertible to int. +

+

+ Semantics: Returns the number of elements + in the sequence. +

+
+ + Header +
+
+#include <boost/fusion/sequence/intrinsic/size.hpp>
+
+
+ + Example +
+
+vector<int, int, int> v(1, 2, 3);
+assert(size(v) == 3);
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions.html b/doc/html/fusion/sequences/intrinsics/metafunctions.html new file mode 100644 index 00000000..eafb7ed6 --- /dev/null +++ b/doc/html/fusion/sequences/intrinsics/metafunctions.html @@ -0,0 +1,53 @@ + + + +Metafunctions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/at.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at.html new file mode 100644 index 00000000..9b703c5b --- /dev/null +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/at.html @@ -0,0 +1,134 @@ + + + +at + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+
+at
+
+ + Description +
+

+ Returns the result type of at + [6] + . +

+
+ + Synopsis +
+
+template<
+    typename Seq,
+    typename N>
+struct at
+{
+    typedef unspecified type;
+};
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
SeqA + model of Forward + Sequence +Argument sequence
NAn + MPL Integral ConstantIndex of element
+
+
+ + Expression + Semantics +
+
+result_of::at<Seq, N>::type
+
+

+ Return type: Any type. +

+

+ Semantics: Returns the result type of + using at to access the Nth element of Seq. +

+
+ + Header +
+
+#include <boost/fusion/sequence/intrinsic/at.hpp>
+
+
+ + Example +
+
+typedef vector<int,float,char> vec;
+BOOST_MPL_ASSERT((boost::is_same<result_of::at<vec, boost::mpl::int_<1> >::type, float&>));
+
+
+

+

[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 +

+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html new file mode 100644 index 00000000..5f0d7fa8 --- /dev/null +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html @@ -0,0 +1,134 @@ + + + +at_c + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of at_c + [7] + . +

+
+ + Synopsis +
+
+template<
+    typename Seq,
+    int M>
+struct at_c
+{
+    typedef unspecified type;
+};
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
SeqA + model of Forward + Sequence +Argument sequence
MPositive + integer indexIndex of element
+
+
+ + Expression + Semantics +
+
+result_of::at_c<Seq, M>::type
+
+

+ Return type: Any type +

+

+ Semantics: Returns the result type of + using at_c to access the Mth element of Seq. +

+
+ + Header +
+
+#include <boost/fusion/sequence/intrinsic/at.hpp>
+
+
+ + Example +
+
+typedef vector<int,float,char> vec;
+BOOST_MPL_ASSERT((boost::is_same<result_of::at_c<vec, 1>::type, float&>));
+
+
+

+

[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 +

+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html new file mode 100644 index 00000000..39c8141f --- /dev/null +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html @@ -0,0 +1,136 @@ + + + +at_key + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of at_key + [8] + . +

+
+ + Synopsis +
+
+template<
+    typename Seq,
+    typename Key>
+struct at_key
+{
+    typedef unspecified type;
+};
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
SeqA + model of Forward + Sequence +Argument sequence
KeyAny + typeKey type
+
+
+ + Expression + Semantics +
+
+result_of::at_key<Seq, Key>::type
+
+

+ Return type: Any type. +

+

+ Semantics: Returns the result of using + at_key to access the element + with key type Key in + Seq. +

+
+ + Header +
+
+#include <boost/fusion/sequence/intrinsic/at_key.hpp>
+
+
+ + Example +
+
+typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
+BOOST_MPL_ASSERT((boost::is_same<result_of::at_key<mymap, int>::type, char&>));
+
+
+

+

[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 +

+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/back.html b/doc/html/fusion/sequences/intrinsics/metafunctions/back.html new file mode 100644 index 00000000..f76bb7c4 --- /dev/null +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/back.html @@ -0,0 +1,113 @@ + + + +back + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of back. +

+
+ + Synopsis +
+
+template<typename Seq>
+struct back
+{
+    typedef unspecified type;
+};
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
SeqA + model of Forward + Sequence +Argument sequence
+
+
+ + Expression + Semantics +
+
+result_of::back<Seq>::type
+
+

+ Return type: Any type +

+

+ Semantics: The type returned by dereferencing + 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>
+
+
+ + Example +
+
+typedef vector<int,char> vec;
+BOOST_MPL_ASSERT((boost::is_same<result_of::back<vec>::type, char&>));
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html b/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html new file mode 100644 index 00000000..b5b70462 --- /dev/null +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html @@ -0,0 +1,115 @@ + + + +begin + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of begin. +

+
+ + Synopsis +
+
+template<typename Seq>
+struct begin
+{
+    typedef unspecified type;
+};
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
SeqA + model of Forward + Sequence +Argument sequence
+
+
+ + Expression + Semantics +
+
+result_of::begin<Seq>::type
+
+

+ Return type: An iterator modelling the + same traversal concept as Seq. +

+

+ Semantics: Returns the type of an iterator + to the first element of Seq. +

+
+ + Header +
+
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+
+
+ + Example +
+
+typedef vector<int> vec;
+typedef result_of::begin<vec>::type it;
+BOOST_MPL_ASSERT((boost::is_same<result_of::deref<it>::type, int&>))
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html b/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html new file mode 100644 index 00000000..4f9b6938 --- /dev/null +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html @@ -0,0 +1,117 @@ + + + +empty + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of empty. +

+
+ + Synopsis +
+
+template<typename Seq>
+struct empty
+{
+    typedef unspecified type;
+};
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
SeqA + model of Forward + Sequence +Argument sequence
+
+
+ + Expression + Semantics +
+
+result_of::empty<Seq>::type
+
+

+ Return type: An MPL Integral Constant +

+

+ Semantics: Returns mpl::true_ + if Seq has zero elements, + mpl::false_ otherwise. +

+
+ + Header +
+
+#include <boost/fusion/sequence/intrinsic/empty.hpp>
+
+
+ + Example +
+
+typedef vector<> empty_vec;
+typedef vector<int,float,char> vec;
+
+BOOST_MPL_ASSERT((result_of::empty<empty_vec>));
+BOOST_MPL_ASSERT_NOT((result_of::empty<vec>));
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/end.html b/doc/html/fusion/sequences/intrinsics/metafunctions/end.html new file mode 100644 index 00000000..a08bad3d --- /dev/null +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/end.html @@ -0,0 +1,115 @@ + + + +end + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+
+end
+
+ + Description +
+

+ Returns the result type of end. +

+
+ + Synopsis +
+
+template<typename Seq>
+struct end
+{
+    typedef unspecified type;
+};
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
SeqA + model of Forward + Sequence +Argument sequence
+
+
+ + Expression + Semantics +
+
+result_of::end<Seq>::type
+
+

+ Return type: A model of the same traversal + concept as Seq. +

+

+ Semantics: Returns the type of an iterator + one past the end of Seq. +

+
+ + Header +
+
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+
+
+ + Example +
+
+typedef vector<int> vec;
+typedef result_of::prior<result_of::end<vec>::type>::type first;
+BOOST_MPL_ASSERT((result_of::equal_to<first, result_of::begin<vec>::type>))
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/front.html b/doc/html/fusion/sequences/intrinsics/metafunctions/front.html new file mode 100644 index 00000000..33a20b05 --- /dev/null +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/front.html @@ -0,0 +1,114 @@ + + + +front + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of front. +

+
+ + Synopsis +
+
+template<typename Seq>
+struct front
+{
+    typedef unspecified type;
+};
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
SeqA + model of Forward + Sequence +Argument sequence
+
+
+ + Expression + Semantics +
+
+result_of::front<Seq>::type
+
+

+ Return type: Any type +

+

+ Semantics: The type returned by dereferencing + an iterator to the first element in Seq. + Equivalent to result_of::deref<result_of::begin<Seq>::type>::type. +

+
+ + Header +
+
+#include <boost/fusion/sequence/intrinsic/front.hpp>
+
+
+ + Example +
+
+typedef vector<int,char> vec;
+BOOST_MPL_ASSERT((boost::is_same<result_of::front<vec>::type, int&>));
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html new file mode 100644 index 00000000..fef877f4 --- /dev/null +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html @@ -0,0 +1,126 @@ + + + +has_key + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of has_key. +

+
+ + Synopsis +
+
+template<
+    typename Seq,
+    typename Key>
+struct has_key
+{
+    typedef unspecified type;
+};
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
SeqA + model of Forward + Sequence +Argument sequence
KeyAny + typeKey type
+
+
+ + Expression + Semantics +
+
+result_of::has_key<Seq, Key>::type
+
+

+ Return type: An MPL Integral Constant. +

+

+ Semantics: Returns mpl::true_ + if Seq contains an element + with key type Key, returns + mpl::false_ otherwise. +

+
+ + Header +
+
+#include <boost/fusion/sequence/intrinsic/has_key.hpp>
+
+
+ + Example +
+
+typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
+BOOST_MPL_ASSERT((result_of::has_key<mymap, int>));
+BOOST_MPL_ASSERT_NOT((result_of::has_key<mymap, void*>));
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/size.html b/doc/html/fusion/sequences/intrinsics/metafunctions/size.html new file mode 100644 index 00000000..b21ab597 --- /dev/null +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/size.html @@ -0,0 +1,114 @@ + + + +size + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the result type of size. +

+
+ + Synopsis +
+
+template<typename Seq>
+struct size
+{
+    typedef unspecified type;
+};
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
SeqA + model of Forward + Sequence +Argument sequence
+
+
+ + Expression + Semantics +
+
+result_of::size<Seq>::type
+
+

+ Return type: An MPL Integral Constant. +

+

+ Semantics: Returns the number of elements + in Seq. +

+
+ + Header +
+
+#include <boost/fusion/sequence/intrinsic/size.hpp>
+
+
+ + Example +
+
+typedef vector<int,float,char> vec;
+typedef result_of::size<vec>::type size_mpl_integral_constant;
+BOOST_MPL_ASSERT_RELATION(size_mpl_integral_constant::value, ==, 3);
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html new file mode 100644 index 00000000..fdb2d75a --- /dev/null +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html @@ -0,0 +1,123 @@ + + + +value_at + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the actual type at a given index from the Sequence. +

+
+ + Synopsis +
+
+template<
+    typename Seq,
+    typename N>
+struct value_at
+{
+    typedef unspecified type;
+};
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
SeqA + model of Forward + Sequence +Argument sequence
NAn + MPL Integral ConstantIndex of element
+
+
+ + Expression + Semantics +
+
+result_of::value_at<Seq, N>::type
+
+

+ Return type: Any type. +

+

+ Semantics: Returns the actual type at + the Nth element of Seq. +

+
+ + Header +
+
+#include <boost/fusion/sequence/intrinsic/value_at.hpp>
+
+
+ + Example +
+
+typedef vector<int,float,char> vec;
+BOOST_MPL_ASSERT((boost::is_same<result_of::value_at<vec, boost::mpl::int_<1> >::type, float>));
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html new file mode 100644 index 00000000..85d9fda2 --- /dev/null +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html @@ -0,0 +1,123 @@ + + + +value_at_c + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the actual type at a given index from the Sequence. +

+
+ + Synopsis +
+
+template<
+    typename Seq,
+    int M>
+struct value_at_c
+{
+    typedef unspecified type;
+};
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
SeqA + model of Forward + Sequence +Argument sequence
MPositive + integer indexIndex of element
+
+
+ + Expression + Semantics +
+
+result_of::value_at_c<Seq, M>::type
+
+

+ Return type: Any type +

+

+ Semantics: Returns the actual type at + the Mth element of Seq. +

+
+ + Header +
+
+#include <boost/fusion/sequence/intrinsic/value_at.hpp>
+
+
+ + Example +
+
+typedef vector<int,float,char> vec;
+BOOST_MPL_ASSERT((boost::is_same<result_of::value_at_c<vec, 1>::type, float>));
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html new file mode 100644 index 00000000..31de542b --- /dev/null +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html @@ -0,0 +1,124 @@ + + + +value_at_key + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Returns the actual element type associated with a Key from the Sequence. +

+
+ + Synopsis +
+
+template<
+    typename Seq,
+    typename Key>
+struct value_at_key
+{
+    typedef unspecified type;
+};
+
+
+

+ + Parameters +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
SeqA + model of Forward + Sequence +Argument sequence
KeyAny + typeKey type
+
+
+ + Expression + Semantics +
+
+result_of::value_at_key<Seq, Key>::type
+
+

+ Return type: Any type. +

+

+ Semantics: Returns the actual element + type associated with key type Key + in Seq. +

+
+ + Header +
+
+#include <boost/fusion/sequence/intrinsic/value_at_key.hpp>
+
+
+ + Example +
+
+typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
+BOOST_MPL_ASSERT((boost::is_same<result_of::at_key<mymap, int>::type, char>));
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/operators.html b/doc/html/fusion/sequences/operators.html new file mode 100644 index 00000000..ea5ab678 --- /dev/null +++ b/doc/html/fusion/sequences/operators.html @@ -0,0 +1,47 @@ + + + +Operators + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ + +

+ These operators, like the Algorithms, + work generically on all Fusion sequences. All conforming Fusion sequences + automatically get these operators for free. +

+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/operators/comparison.html b/doc/html/fusion/sequences/operators/comparison.html new file mode 100644 index 00000000..95ae379c --- /dev/null +++ b/doc/html/fusion/sequences/operators/comparison.html @@ -0,0 +1,67 @@ + + + +Comparison + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ + +

+ The Comparison operators: ==, + !=, <, + <=, >= + and >= work generically + on all Fusion sequences. Comparison operators are "short- circuited": + elementary comparisons start from the first elements and are performed + only until the result is clear. +

+
+ + Header +
+
+#include <boost/fusion/sequence/comparison.hpp>
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/operators/comparison/equal.html b/doc/html/fusion/sequences/operators/comparison/equal.html new file mode 100644 index 00000000..2310081d --- /dev/null +++ b/doc/html/fusion/sequences/operators/comparison/equal.html @@ -0,0 +1,136 @@ + + + +equal + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ Compare two sequences for equality. +

+
+ + Synopsis +
+
+template <typename Seq1, typename Seq2>
+bool
+operator==(Seq1 const& a, Seq2 const& b);
+
+
+ + Parameters +
+
+

+ +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
a, bInstances of + Sequence + +_sequence_s to compare
+
+
+ + Expression + Semantics +
+
+a == b
+
+

+ Return type: bool +

+

+ Requirements: +

+

+ For each element, e1, + in sequence a, and for + each element, e2, in + sequence b, a == b is a valid expression returning a + type that is convertible to bool. +

+

+ An attempt to compare two Sequences of different lengths results in a + compile time error. +

+

+ Semantics: +

+

+ For each element, e1, + in sequence a, and for + each element, e2, in + sequence b, e1 == e2 returns true. For any 2 zero length + _sequence_s, e and f, e == f returns + true. +

+
+ + Header +
+
+#include <boost/fusion/sequence/comparison/equal_to.hpp>
+
+
+ + Example +
+
+vector<int, char> v1(5, 'a');
+vector<int, char> v2(5, 'a');
+assert(v1 == v2);
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/operators/comparison/greater_than.html b/doc/html/fusion/sequences/operators/comparison/greater_than.html new file mode 100644 index 00000000..f10608af --- /dev/null +++ b/doc/html/fusion/sequences/operators/comparison/greater_than.html @@ -0,0 +1,130 @@ + + + +greater + than + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ Lexicographically compare two sequences. +

+
+ + Synopsis +
+
+template <typename Seq1, typename Seq2>
+bool
+operator>(Seq1 const& a, Seq2 const& b);
+
+
+ + Parameters +
+
+

+ +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
a, bInstances of + Sequence + +_sequence_s to compare
+
+
+ + Expression + Semantics +
+
+a > b
+
+

+ Return type: bool +

+

+ Requirements: +

+

+ For each element, e1, + in sequence a, and for + each element, e2, in + sequence b, a < b is a valid expression returning a + type that is convertible to bool. +

+

+ An attempt to compare two Sequences of different lengths results in a + compile time error. +

+

+ Semantics: Returns b < a. +

+
+ + Header +
+
+#include <boost/fusion/sequence/comparison/less_equal.hpp>
+
+
+ + Example +
+
+vector<int, float> v1(4, 3.3f);
+vector<short, float> v2(5, 3.3f);
+vector<long, double> v3(5, 4.4);
+assert(v2 > v1);
+assert(v3 > v2);
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html b/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html new file mode 100644 index 00000000..c559a726 --- /dev/null +++ b/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html @@ -0,0 +1,129 @@ + + + +greater + than equal + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ Lexicographically compare two sequences. +

+
+ + Synopsis +
+
+template <typename Seq1, typename Seq2>
+bool
+operator>=(Seq1 const& a, Seq2 const& b);
+
+
+ + Parameters +
+
+

+ +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
a, bInstances of + Sequence + +_sequence_s to compare
+
+
+ + Expression + Semantics +
+
+a >= b
+
+

+ Return type: bool +

+

+ Requirements: +

+

+ For each element, e1, + in sequence a, and for + each element, e2, in + sequence b, a < b is a valid expression returning a + type that is convertible to bool. +

+

+ An attempt to compare two Sequences of different lengths results in a + compile time error. +

+

+ Semantics: Returns !(a < b). +

+
+ + Header +
+
+#include <boost/fusion/sequence/comparison/greater_equal.hpp>
+
+
+ + Example +
+
+vector<int, float> v1(4, 3.3f);
+vector<short, float> v2(5, 3.3f);
+vector<long, double> v3(5, 4.4);
+assert(v2 >= v1);
+assert(v3 >= v2);
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/operators/comparison/less_than.html b/doc/html/fusion/sequences/operators/comparison/less_than.html new file mode 100644 index 00000000..674810b8 --- /dev/null +++ b/doc/html/fusion/sequences/operators/comparison/less_than.html @@ -0,0 +1,132 @@ + + + +less + than + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ Lexicographically compare two sequences. +

+
+ + Synopsis +
+
+template <typename Seq1, typename Seq2>
+bool
+operator<(Seq1 const& a, Seq2 const& b);
+
+
+ + Parameters +
+
+

+ +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
a, bInstances of + Sequence + +_sequence_s to compare
+
+
+ + Expression + Semantics +
+
+a < b
+
+

+ Return type: bool +

+

+ Requirements: +

+

+ For each element, e1, + in sequence a, and for + each element, e2, in + sequence b, a < b is a valid expression returning a + type that is convertible to bool. +

+

+ An attempt to compare two Sequences of different lengths results in a + compile time error. +

+

+ Semantics: Returns the lexicographical + comparison of between a + and b. +

+
+ + Header +
+
+#include <boost/fusion/sequence/comparison/less.hpp>
+
+
+ + Example +
+
+vector<int, float> v1(4, 3.3f);
+vector<short, float> v2(5, 3.3f);
+vector<long, double> v3(5, 4.4);
+assert(v1 < v2);
+assert(v2 < v3);
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/operators/comparison/less_than_equal.html b/doc/html/fusion/sequences/operators/comparison/less_than_equal.html new file mode 100644 index 00000000..4a26df94 --- /dev/null +++ b/doc/html/fusion/sequences/operators/comparison/less_than_equal.html @@ -0,0 +1,130 @@ + + + +less + than equal + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ Lexicographically compare two sequences. +

+
+ + Synopsis +
+
+template <typename Seq1, typename Seq2>
+bool
+operator<=(Seq1 const& a, Seq2 const& b);
+
+
+ + Parameters +
+
+

+ +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
a, bInstances of + Sequence + +_sequence_s to compare
+
+
+ + Expression + Semantics +
+
+a <= b
+
+

+ Return type: bool +

+

+ Requirements: +

+

+ For each element, e1, + in sequence a, and for + each element, e2, in + sequence b, a < b is a valid expression returning a + type that is convertible to bool. +

+

+ An attempt to compare two Sequences of different lengths results in a + compile time error. +

+

+ Semantics: Returns !(b < a). +

+
+ + Header +
+
+#include <boost/fusion/sequence/comparison/less_equal.hpp>
+
+
+ + Example +
+
+vector<int, float> v1(4, 3.3f);
+vector<short, float> v2(5, 3.3f);
+vector<long, double> v3(5, 4.4);
+assert(v1 <= v2);
+assert(v2 <= v3);
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/operators/comparison/not_equal.html b/doc/html/fusion/sequences/operators/comparison/not_equal.html new file mode 100644 index 00000000..3852e2fa --- /dev/null +++ b/doc/html/fusion/sequences/operators/comparison/not_equal.html @@ -0,0 +1,132 @@ + + + +not + equal + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ Compare two sequences for inequality. +

+
+ + Synopsis +
+
+template <typename Seq1, typename Seq2>
+bool
+operator!=(Seq1 const& a, Seq2 const& b);
+
+
+ + Parameters +
+
+

+ +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
a, bInstances of + Sequence + +_sequence_s to compare
+
+
+ + Expression + Semantics +
+
+a != b
+
+

+ Return type: bool +

+

+ Requirements: +

+

+ For each element, e1, + in sequence a, and for + each element, e2, in + sequence b, a == b is a valid expression returning a + type that is convertible to bool. +

+

+ An attempt to compare two Sequences of different lengths results in a + compile time error. +

+

+ Semantics: +

+

+ Returns !(a == b). +

+
+ + Header +
+
+#include <boost/fusion/sequence/comparison/not_equal_to.hpp>
+
+
+ + Example +
+
+vector<int, char> v3(5, 'b');
+vector<int, char> t4(2, 'a');
+assert(v1 != v3);
+assert(v1 != t4);
+assert(!(v1 != v2));
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/operators/i_o.html b/doc/html/fusion/sequences/operators/i_o.html new file mode 100644 index 00000000..1c2eb76a --- /dev/null +++ b/doc/html/fusion/sequences/operators/i_o.html @@ -0,0 +1,134 @@ + + + +I/O + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+

+I/O

+
+
in
+
out
+
+

+ The I/O operators: << + and >> work generically + on all Fusion sequences. The global operator<< has been overloaded for generic + output streams such that _sequence_s + are output by recursively calling operator<< for each element. Analogously, + the global operator>> + has been overloaded to extract _sequence_s + from generic input streams by recursively calling operator>> for each element. +

+

+ The default delimiter between the elements is space, and the Sequence + is enclosed in parenthesis. For Example: +

+
+vector<float, int, std::string> a(1.0f, 2, std::string("Howdy folks!");
+cout << a; 
+
+

+ outputs the vector as: (1.0 2 Howdy folks!) +

+

+ The library defines three manipulators for changing the default behavior: +

+
+

Manipulators

+
+
tuple_open(arg)
+
+ Defines the character that is output before the first element. +
+
tuple_close(arg)
+
+ Defines the character that is output after the last element. +
+
tuple_delimiter(arg)
+
+ Defines the delimiter character between elements. +
+
+
+

+ The argument to tuple_open, + tuple_close and tuple_delimiter may be a char, wchar_t, + a C-string, or a wide C-string. +

+

+ Example: +

+
+std::cout << tuple_open('[') << tuple_close(']') << tuple_delimiter(", ") << a;
+
+

+ outputs the same vector, a + as: [1.0, 2, Howdy folks!] +

+

+ The same manipulators work with operator>> and istream + as well. Suppose the std::cin + stream contains the following data: +

+
+(1 2 3) [4:5]
+
+

+ The code: +

+
+vector<int, int, int> i;
+vector<int, int> j;
+
+std::cin >> i;
+std::cin >> set_open('[') >> set_close(']') >> set_delimiter(':');
+std::cin >> j;
+
+

+ reads the data into the _vector_s + i and j. +

+

+ Note that extracting _sequence_s + with std::string or C-style string elements does + not generally work, since the streamed Sequence + representation may not be unambiguously parseable. +

+
+ + Header +
+
+#include <boost/fusion/sequence/io.hpp>
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/operators/i_o/in.html b/doc/html/fusion/sequences/operators/i_o/in.html new file mode 100644 index 00000000..002fd6d2 --- /dev/null +++ b/doc/html/fusion/sequences/operators/i_o/in.html @@ -0,0 +1,120 @@ + + + +in + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+
+in
+
+ + Description +
+

+ Read a Sequence from an input + stream. +

+
+ + Synopsis +
+
+template <typename IStream, typename Sequence>
+IStream&
+operator>>(IStream& is, Sequence& seq);
+
+
+ + Parameters +
+
+

+ +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
isAn input stream.Stream to + extract information from.
seqA Sequence.The + sequence to read.
+
+
+ + Expression + Semantics +
+
+is >> seq
+
+

+ Return type: IStream& +

+

+ Semantics: For each element, e, in sequence, seq, + call is >> e. +

+
+ + Header +
+
+#include <boost/fusion/sequence/io/in.hpp>
+
+
+ + Example +
+
+vector<int, std::string, char> v;
+std::cin >> v;
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/operators/i_o/out.html b/doc/html/fusion/sequences/operators/i_o/out.html new file mode 100644 index 00000000..b0c27168 --- /dev/null +++ b/doc/html/fusion/sequences/operators/i_o/out.html @@ -0,0 +1,119 @@ + + + +out + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+
+out
+
+ + Description +
+

+ Write a Sequence to an output + stream. +

+
+ + Synopsis +
+
+template <typename OStream, typename Sequence>
+OStream&
+operator<<(OStream& os, Sequence& seq);
+
+
+ + Parameters +
+
+

+ +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterRequirementDescription
osAn output stream.Stream + to write information to.
seqA Sequence.The + sequence to write.
+
+
+ + Expression + Semantics +
+
+os << seq
+
+

+ Return type: OStream& +

+

+ Semantics: For each element, e, in sequence, seq, + call os << e. +

+
+ + Header +
+
+#include <boost/fusion/sequence/io/out.hpp>
+
+
+ + Example +
+
+std::cout << make_vector(123, "Hello", 'x') << std::endl;
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/views.html b/doc/html/fusion/sequences/views.html new file mode 100644 index 00000000..e820f532 --- /dev/null +++ b/doc/html/fusion/sequences/views.html @@ -0,0 +1,63 @@ + + + +Views + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ + +

+ Views are sequences that do not actually contain data, but instead impart + an alternative presentation over the data from one or more underlying sequences. + Views are proxies. They provide an efficient yet purely functional way to + work on potentially expensive sequence operations. Views are inherently lazy. + Their elements are only computed on demand only when the elements of the + underlying sequence(s) are actually accessed. Views' lazy nature make them + very cheap to copy and be passed around by value. +

+

+ + Header +

+
+#include <boost/fusion/sequence/view.hpp>
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/views/filter_view.html b/doc/html/fusion/sequences/views/filter_view.html new file mode 100644 index 00000000..522a59ef --- /dev/null +++ b/doc/html/fusion/sequences/views/filter_view.html @@ -0,0 +1,192 @@ + + + +filter_view + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ filter_view is a view into + a subset of its underlying sequence's elements satisfying a given predicate + (an MPL metafunction). + The filter_view presents + only those elements for which its predicate evaluates to mpl::true_. +

+
+ + Header +
+
+#include <boost/fusion/sequence/view/filter_view.hpp>
+
+
+ + Synopsis +
+
+template <typename Sequence, typename Pred>
+struct filter_view;
+
+
+ + Template + parameters +
+
+

+ +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterDescriptionDefault
SequenceA + Forward + Sequence + 
PredUnary + Metafunction returning an mpl::bool_ + 
+
+
+ + Model of +
+ +
+

Notation

+
+
F
+
+ A filter_view type +
+
f, + f2
+
+ Instances of filter_view +
+
s
+
+ A Forward + Sequence +
+
+
+
+ + Expression + Semantics +
+

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

+
+

+ +

+ ++++ + + + + + + + + + + + + + + + + + + +
ExpressionSemantics
F(s)Creates + a filter_view given + a sequence, s.
F(f)Copy + constructs a filter_view + from another filter_view, + f.
f = f2Assigns to a + filter_view, f, from another filter_view, + f2.
+
+
+ + Example +
+
+using boost::mpl::_;
+using boost::mpl::not_;
+using boost::is_class;
+
+typedef vector<std::string, char, long, bool, double> vector_type;
+
+vector_type v("a-string", '@', 987654, true, 6.6);
+filter_view<vector_type const, not_<is_class<_> > > view(v);
+std::cout << view << std::endl;
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/views/iterator_range.html b/doc/html/fusion/sequences/views/iterator_range.html new file mode 100644 index 00000000..504c2891 --- /dev/null +++ b/doc/html/fusion/sequences/views/iterator_range.html @@ -0,0 +1,197 @@ + + + +iterator_range + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ iterator_range presents + a sub-range of its underlying sequence delimited by a pair of iterators. +

+
+ + Header +
+
+#include <boost/fusion/sequence/view/iterator_range.hpp>
+
+
+ + Synopsis +
+
+template <typename First, typename Last>
+struct iterator_range;
+
+
+ + Template + parameters +
+
+

+ +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterDescriptionDefault
FirstA + fusion Iterator + 
LastA + fusion Iterator + 
+
+
+ + Model of +
+ +
+

Notation

+
+
IR
+
+ An iterator_range type +
+
f
+
+ An instance of First +
+
l
+
+ An instance of Last +
+
ir, + ir2
+
+ Instances of iterator_range +
+
+
+
+ + Expression + Semantics +
+

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

+
+

+ +

+ ++++ + + + + + + + + + + + + + + + + + + +
ExpressionSemantics
IR(f, l)Creates + an iterator_range + given iterators, f + and l.
IR(ir)Copy + constructs an iterator_range + from another iterator_range, + ir.
ir = ir2Assigns to a + iterator_range, + ir, from another + iterator_range, + ir2.
+
+
+ + Example +
+
+char const* s = "Ruby";
+typedef vector<int, char, double, char const*> vector_type;
+vector_type vec(1, 'x', 3.3, s);
+
+typedef result_of::begin<vector_type>::type A;
+typedef result_of::end<vector_type>::type B;
+typedef result_of::next<A>::type C;
+typedef result_of::prior<B>::type D;
+
+C c(vec);
+D d(vec);
+
+iterator_range<C, D> range(c, d);
+std::cout << range << std::endl;
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/views/joint_view.html b/doc/html/fusion/sequences/views/joint_view.html new file mode 100644 index 00000000..7cc7416a --- /dev/null +++ b/doc/html/fusion/sequences/views/joint_view.html @@ -0,0 +1,191 @@ + + + +joint_view + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ joint_view presents a view + which is a concatenation of two sequences. +

+
+ + Header +
+
+#include <boost/fusion/sequence/view/joint_view.hpp>
+
+
+ + Synopsis +
+
+template <typename Sequence1, typename Sequence2>
+struct joint_view;
+
+
+ + Template + parameters +
+
+

+ +

+ +++++ + + + + + + + + + + + + + + + + + +
ParameterDescriptionDefault
Sequence1A + Forward + Sequence + 
Sequence2A + Forward + Sequence + 
+
+
+ + Model of +
+ +
+

Notation

+
+
JV
+
+ A joint_view type +
+
s1
+
+ An instance of Sequence1 +
+
s2
+
+ An instance of Sequence2 +
+
jv, + jv2
+
+ Instances of joint_view +
+
+
+
+ + Expression + Semantics +
+

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

+
+

+ +

+ ++++ + + + + + + + + + + + + + + + + + + +
ExpressionSemantics
JV(s1, s2)Creates + a joint_view given + sequences, s1 and + s2.
JV(jv)Copy + constructs a joint_view + from another joint_view, + jv.
jv = jv2Assigns to a + joint_view, jv, from another joint_view, jv2.
+
+
+ + Example +
+
+vector<int, char> v1(3, 'x');
+vector<std::string, int> v2("hello", 123);
+joint_view<
+    vector<int, char>
+  , vector<std::string, int>
+> view(v1, v2);
+std::cout << view << std::endl;
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/views/reverse_view.html b/doc/html/fusion/sequences/views/reverse_view.html new file mode 100644 index 00000000..e2d7fbf3 --- /dev/null +++ b/doc/html/fusion/sequences/views/reverse_view.html @@ -0,0 +1,171 @@ + + + +reverse_view + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ reverse_view presents a + reversed view of underlying sequence. The first element will be its last + and the last element will be its first. +

+
+ + Header +
+
+#include <boost/fusion/sequence/view/reverse_view.hpp>
+
+
+ + Synopsis +
+
+template <typename Sequence>
+struct reverse_view;
+
+
+ + Template + parameters +
+
+

+ +

+ +++++ + + + + + + + + + + +
ParameterDescriptionDefault
SequenceA + Bidirectional + Sequence + 
+
+
+ + Model of +
+ +
+

Notation

+
+
RV
+
+ A reverse_view type +
+
s
+
+ An instance of Sequence +
+
rv, + rv2
+
+ Instances of reverse_view +
+
+
+
+ + Expression + Semantics +
+

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

+
+

+ +

+ ++++ + + + + + + + + + + + + + + + + + + +
ExpressionSemantics
RV(s)Creates + a unary reverse_view + given sequence, s.
RV(rv)Copy + constructs a reverse_view + from another reverse_view, + rv.
rv = rv2Assigns to a + reverse_view, rv, from another reverse_view, rv2.
+
+
+ + Example +
+
+typedef vector<int, short, double> vector_type;
+vector_type vec(2, 5, 3.3);
+
+reverse_view<vector_type> reverse(vec);
+std::cout << reverse << std::endl;
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/views/single_view.html b/doc/html/fusion/sequences/views/single_view.html new file mode 100644 index 00000000..1edc1b25 --- /dev/null +++ b/doc/html/fusion/sequences/views/single_view.html @@ -0,0 +1,164 @@ + + + +single_view + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ single_view is a view into + a value as a single element sequence. +

+
+ + Header +
+
+#include <boost/fusion/sequence/view/single_view.hpp>
+
+
+ + Synopsis +
+
+template <typename T>
+struct single_view;
+
+
+ + Template + parameters +
+
+

+ +

+ +++++ + + + + + + + + + + +
ParameterDescriptionDefault
TAny + type 
+
+
+ + Model of +
+ +
+

Notation

+
+
S
+
+ A single_view type +
+
s, + s2
+
+ Instances of single_view +
+
x
+
+ An instance of T +
+
+
+
+ + Expression + Semantics +
+

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

+
+

+ +

+ ++++ + + + + + + + + + + + + + + + + + + +
ExpressionSemantics
S(x)Creates + a single_view from + x.
S(s)Copy + constructs a single_view + from another single_view, + s.
s = s2Assigns to a + single_view, s, from another single_view, + s2.
+
+
+ + Example +
+
+single_view<int> view(3);
+std::cout << view << std::endl;
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/views/transform_view.html b/doc/html/fusion/sequences/views/transform_view.html new file mode 100644 index 00000000..139601d3 --- /dev/null +++ b/doc/html/fusion/sequences/views/transform_view.html @@ -0,0 +1,280 @@ + + + +transform_view + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ transform_view presents + a transformed view of its underlying sequence given a unary Polymorphic + Function Object. The transform_view + inherits the traversal characteristics (see Sequence + Traversal Concept) of its underlying sequence. +

+
+ + Header +
+
+#include <boost/fusion/sequence/view/transform_view.hpp>
+
+
+ + Synopsis +
+

+ Unary Version +

+
+template <typename Sequence, typename F>
+struct transform_view;
+
+

+ Binary Version +

+
+template <typename Sequence1, typename Sequence2, typename F>
+struct transform_view;
+
+
+ + Template + parameters +
+
+

+ +

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterDescriptionDefault
SequenceA + Forward + Sequence + 
Sequence1A + Forward + Sequence + 
Sequence2A + Forward + Sequence + 
FA + Polymorphic + Function Object + 
+
+
+ + Model of +
+
+
+

Notation

+
+
TV
+
+ A transform_view type +
+
BTV
+
+ A binary transform_view + type +
+
UTV
+
+ A unary transform_view + type +
+
f
+
+ An instance of F +
+
s
+
+ An instance of Sequence +
+
s1
+
+ An instance of Sequence1 +
+
s2
+
+ An instance of Sequence2 +
+
tv, + tv2
+
+ Instances of transform_view +
+
+
+
+ + Expression + Semantics +
+

+ Semantics of an expression is defined only where it differs from, or is + not defined in Forward + Sequence, Bidirectional + Sequence or Random + Access Sequence depending on the traversal characteristics (see + Sequence Traversal + Concept) of its underlying sequence. +

+
+

+ +

+ ++++ + + + + + + + + + + + + + + + + + + + + + + +
ExpressionSemantics
UTV(s, f)Creates + a unary transform_view + given sequence, s + and unary Polymorphic + Function Object, f.
BTV(s1, s2, f)Creates + a binary transform_view + given sequences, s1 + and s2 and unary + Polymorphic + Function Object, f.
TV(tv)Copy + constructs a transform_view + from another transform_view, + tv.
tv = tv2Assigns to a + transform_view, + tv, from another + transform_view, + tv2.
+
+
+ + Example +
+
+struct square
+{
+    template <typename T>
+    struct result
+    {
+        typedef T type;
+    };
+
+    template <typename T>
+    T operator()(T x) const
+    {
+        return x * x;
+    }
+};
+
+typedef vector<int, short, double> vector_type;
+vector_type vec(2, 5, 3.3);
+
+transform_view<vector_type, square> transform(vec, square());
+std::cout << transform << std::endl;
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/views/zip_view.html b/doc/html/fusion/sequences/views/zip_view.html new file mode 100644 index 00000000..30e29b55 --- /dev/null +++ b/doc/html/fusion/sequences/views/zip_view.html @@ -0,0 +1,176 @@ + + + +zip_view + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ zip_view presents a view + which iterates over a collection of _sequence_s + in parallel. A zip_view + is constructed from a Sequence + of references to the component _sequence_s. +

+
+ + Header +
+
+#include <boost/fusion/sequence/view/zip_view.hpp>
+
+
+ + Synopsis +
+
+template <typename Sequences>
+struct zip_view;
+
+
+ + Template + parameters +
+
+

+ +

+ +++++ + + + + + + + + + + +
ParameterDescriptionDefault
SequencesA + Forward + Sequence of references to other Fusion _sequence_s 
+
+
+ + Model of +
+ +
+

Notation

+
+
ZV
+
+ A joint_view type +
+
s
+
+ An instance of Sequences +
+
zv1, + zv2
+
+ Instances of ZV +
+
+
+
+ + Expression + Semantics +
+

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

+
+

+ +

+ ++++ + + + + + + + + + + + + + + + + + + +
ExpressionSemantics
ZV(s)Creates + a zip_view given + a sequence of references to the component _sequence_s.
ZV(zv1)Copy + constructs a zip_view + from another zip_view, + zv.
zv1 = zv2Assigns + to a zip_view, zv, from another zip_view, zv2.
+
+
+ + Example +
+
+typedef vector<int,int> vec1;
+typedef vector<char,char> vec2;
+vec1 v1(1,2);
+vec2 v2('a','b');
+typedef vector<vec1&, vec2&> sequences;
+std::cout << zip_view<sequences>(sequences(v1, v2)) << std::endl; // ((1 a) (2 b))
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/support.html b/doc/html/fusion/support.html new file mode 100644 index 00000000..532ba0f4 --- /dev/null +++ b/doc/html/fusion/support.html @@ -0,0 +1,48 @@ + + + +Support + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ + +

+ A couple of classes and metafunctions provide basic support for Fusion. +

+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/support/category_of.html b/doc/html/fusion/support/category_of.html new file mode 100644 index 00000000..52e3b9e1 --- /dev/null +++ b/doc/html/fusion/support/category_of.html @@ -0,0 +1,164 @@ + + + +category_of + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ + Description +

+

+ A metafunction that establishes the conceptual classification of a particular + Sequence or Iterator + (see Iterator Concepts and + Sequence Concepts). +

+

+ + Synopsis +

+
+namespace traits
+{
+    template <typename T>
+    struct category_of 
+    {
+        typedef unspecified type;
+    };
+}
+
+

+ + Parameters +

+
+

+ +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
TAny + typeThe type to query.
+
+

+ + Expression + Semantics +

+
+typedef traits::category_of<T>::type category;
+
+

+ Return type: +

+

+ For Iterators, the return type is derived from one of: +

+
+struct incrementable_traversal_tag {};
+
+struct single_pass_traversal_tag
+    : incrementable_traversal_tag {};
+
+struct forward_traversal_tag
+    : single_pass_traversal_tag {};
+
+struct bidirectional_traversal_tag
+    : forward_traversal_tag {};
+
+struct random_access_traversal_tag
+    : bidirectional_traversal_tag {};
+
+

+ For Sequences, the return type is derived from one of: +

+
+struct incrementable_sequence_tag {};
+
+struct single_pass_sequence_tag
+    : incrementable_sequence_tag {};
+
+struct forward_sequence_tag
+    : single_pass_sequence_tag {};
+
+struct bidirectional_sequence_tag
+    : forward_sequence_tag {};
+
+struct random_access_sequence_tag
+    : bidirectional_sequence_tag {};
+
+

+ And optionally from: +

+
+struct associative_sequence_tag {};
+
+

+ Semantics: Establishes the conceptual classification + of a particular Sequence or Iterator. +

+

+ + Header +

+
+#include <boost/fusion/support/category_of.hpp>
+
+

+ + Example +

+
+using boost::is_base_of;
+typedef traits::category_of<list<> >::type list_category;
+typedef traits::category_of<vector<> >::type vector_category;
+BOOST_MPL_ASSERT(( is_base_of<forward_sequence_tag, list_category> ));
+BOOST_MPL_ASSERT(( is_base_of<random_access_sequence_tag, vector_category> ));
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/support/is_sequence.html b/doc/html/fusion/support/is_sequence.html new file mode 100644 index 00000000..c937264d --- /dev/null +++ b/doc/html/fusion/support/is_sequence.html @@ -0,0 +1,126 @@ + + + +is_sequence + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ + Description +

+

+ Metafunction that evaluates to mpl::true_ + if a certain type T is a + conforming Fusion Sequence, mpl::false_ + otherwise. This may be specialized to accomodate clients which provide Fusion + conforming sequences. +

+

+ + Synopsis +

+
+namespace traits
+{
+    template <typename T>
+    struct is_sequence 
+    {
+        typedef unspecified type;
+    };
+}
+
+

+ + Parameters +

+
+

+ +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
TAny + typeThe type to query.
+
+

+ + Expression + Semantics +

+
+typedef traits::is_sequence<T>::type c;
+
+

+ Return type: An MPL Boolean Constant. +

+

+ Semantics: Metafunction that evaluates to + mpl::true_ if a certain type T + is a conforming Fusion sequence, mpl::false_ + otherwise. +

+

+ + Header +

+
+#include <boost/fusion/support/is_sequence.hpp>
+
+

+ + Example +

+
+BOOST_MPL_ASSERT_NOT(( traits::is_sequence< std::vector<int> > ));
+BOOST_MPL_ASSERT_NOT(( is_sequence< int > ));
+BOOST_MPL_ASSERT(( traits::is_sequence<list<> > ));
+BOOST_MPL_ASSERT(( traits::is_sequence<list<int> > ));
+BOOST_MPL_ASSERT(( traits::is_sequence<vector<> > ));
+BOOST_MPL_ASSERT(( traits::is_sequence<vector<int> > ));
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/support/is_view.html b/doc/html/fusion/support/is_view.html new file mode 100644 index 00000000..fedd2a6a --- /dev/null +++ b/doc/html/fusion/support/is_view.html @@ -0,0 +1,130 @@ + + + +is_view + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ + Description +

+

+ Metafunction that evaluates to mpl::true_ + if a certain type T is a + conforming Fusion View, mpl::false_ + otherwise. A view is a specialized sequence that does not actually contain + data. Views hold sequences which may be other views. In general, views are + held by other views by value, while non-views are held by other views by + reference. is_view may be + specialized to accomodate clients providing Fusion conforming views. +

+

+ + Synopsis +

+
+namespace traits
+{
+    template <typename T>
+    struct is_view 
+    {
+        typedef unspecified type;
+    };
+}
+
+

+ + Parameters +

+
+

+ +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
TAny + typeThe type to query.
+
+

+ + Expression Semantics +

+
+typedef traits::is_view<T>::type c;
+
+

+ Return type: An MPL Boolean Constant. +

+

+ Semantics: Metafunction that evaluates to + mpl::true_ if a certain type T + is a conforming Fusion view, mpl::false_ + otherwise. +

+

+ + Header +

+
+#include <boost/fusion/support/is_view.hpp>
+
+

+ + Example +

+
+BOOST_MPL_ASSERT_NOT(( traits::is_view<std::vector<int> > ));
+BOOST_MPL_ASSERT_NOT(( traits::is_view<int> ));
+
+using boost::mpl::_
+using boost::is_pointer;
+typedef vector<int*, char, long*, bool, double> vector_type;
+typedef filter_view<vector_type, is_pointer<_> > filter_view_type;
+BOOST_MPL_ASSERT(( traits::is_view<filter_view_type> ));
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/support/pair.html b/doc/html/fusion/support/pair.html new file mode 100644 index 00000000..4535ab65 --- /dev/null +++ b/doc/html/fusion/support/pair.html @@ -0,0 +1,212 @@ + + + +pair + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ + Description +

+

+ Fusion pair type is a half + runtime pair. A half runtime pair is similar to a std::pair, + but, unlike std::pair, + the first type does not have data. It is used as elements in _map_s, + for example. +

+

+ + Synopsis +

+
+template <typename First, typename Second>
+struct pair;
+
+

+ + Template parameters +

+
+

+ +

+ ++++ + + + + + + + + + + + + + + +
ParameterDescription
FirstThe first type. This is purely a type. No + data is held.
SecondThe second type. This contains data.
+
+
+

Notation

+
+
P
+
+ Fusion pair type +
+
p, + p2
+
+ Fusion pairs +
+
F, + S
+
+ Arbitrary types +
+
s
+
+ Value of type S +
+
o
+
+ Output stream +
+
i
+
+ Input stream +
+
+
+

+ + Expression Semantics +

+
+

+ +

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ExpressionSemantics
P::first_typeThe type + of the first template parameter, F.
P::second_typeThe type + of the second template parameter, S.
P()Default + construction.
P(s)Construct + a pair given value for the second type, s.
P(p2)Copy + constructs a pair from another pair, p2.
p = p2Assigns a pair, + p1, from another pair, p2.
make_pair<F>(s)Make a pair given the first + type, F, and a value + for the second type, s. + The second type assumes the type of s +
o << pOutput p to output stream, o.
i >> pInput p from input stream, i.
p == p2Tests two pairs + for equality.
p != p2Tests two pairs + for inequality.
+
+

+ + Header +

+
+#include <boost/fusion/support/pair.hpp>
+
+

+ + Example +

+
+pair<int, char> p('X');
+std::cout << p << std::endl;
+std::cout << make_pair<int>('X') << std::endl;
+assert((p == make_pair<int>('X')));
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/support/tag_of.html b/doc/html/fusion/support/tag_of.html new file mode 100644 index 00000000..012840fb --- /dev/null +++ b/doc/html/fusion/support/tag_of.html @@ -0,0 +1,130 @@ + + + +tag_of + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ + Description +

+

+ All conforming Fusion sequences and iterators have an associated tag type. + The purpose of the tag is to enable tag + dispatching from Intrinsic + functions to implementations appropriate for the type. The default implementation + of tag_of returns T::ftag + for a given type T, if such + a member typedef exists. +

+

+ This metafunction may be specialized to accomodate clients providing Fusion + conforming sequences. +

+

+ + Synopsis +

+
+namespace traits
+{
+    template<typename Sequence>
+    struct tag_of 
+    {
+        typedef unspecified type;
+    };
+}
+
+

+ namespace traits { template<typename Sequence> struct tag_of { typedef + unspecified type; }; } [heading Parameters] +

+
+

+ +

+ +++++ + + + + + + + + + + +
ParameterRequirementDescription
TAny + typeThe type to query.
+
+

+ + Expression Semantics +

+
+typedef traits::tag_of<T>::type tag;
+
+

+ Return type: Any type. +

+

+ Semantics: Returns the tag type associated + with T. +

+

+ + Header +

+
+#include <boost/fusion/support/tag_of.hpp>
+
+

+ + Example +

+
+typedef traits::is_sequence<list<> tag1;
+typedef traits::is_sequence<list<int> > tag2;
+typedef traits::is_sequence<vector<> > tag3;
+typedef traits::is_sequence<vector<int> > tag4;
+
+BOOST_MPL_ASSERT((boost::is_same<tag1, tag2>));
+BOOST_MPL_ASSERT((boost::is_same<tag3, tag4>));
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/tuples.html b/doc/html/fusion/tuples.html new file mode 100644 index 00000000..f3881d14 --- /dev/null +++ b/doc/html/fusion/tuples.html @@ -0,0 +1,53 @@ + + + +Tuples + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ + +

+ The TR1 technical report describes extensions to the C++ standard library. + Many of these extensions will be considered for the next iteration of the C++ + standard. TR1 describes a tuple type, and support for treating std::pair + as a type of tuple. +

+

+ Fusion provides full support for the TR1 + Tuple interface, and the extended uses of std::pair described + in the TR1 document. +

+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/tuples/class_template_tuple.html b/doc/html/fusion/tuples/class_template_tuple.html new file mode 100644 index 00000000..26b5015d --- /dev/null +++ b/doc/html/fusion/tuples/class_template_tuple.html @@ -0,0 +1,79 @@ + + + +Class template tuple + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ + +

+ Fusion's implementation of the TR1 + Tuple is also a fusion Forward + Sequence. As such the fusion tuple type provides a lot of functionality + beyond that required by TR1. +

+

+ Currently tuple is basically a synonym for vector, although this may be changed + in future releases of fusion. +

+

+ + Synopsis +

+
+template<
+    typename T1 = unspecified,
+    typename T2 = unspecified,
+    ...
+    typename TN = unspecified>
+class tuple;
+
+

+ + Header +

+
+#include <boost/fusion/tuple.hpp>
+
+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/tuples/class_template_tuple/construction.html b/doc/html/fusion/tuples/class_template_tuple/construction.html new file mode 100644 index 00000000..abb7f4bd --- /dev/null +++ b/doc/html/fusion/tuples/class_template_tuple/construction.html @@ -0,0 +1,128 @@ + + + +Construction + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ The TR1 + Tuple type provides a default constructor, a constructor that takes + initializers for all of its elements, a copy constructor, and a converting + copy constructor. The details of the various constructors are described + in this section. +

+
+ + Specification +
+
+

Notation

+
+
T1 + ... TN, + U1 ... + UN
+
+ Tuple element types +
+
P1 + ... PN
+
+ Parameter types +
+
Ti, + Ui
+
+ The type of the ith element + of a tuple +
+
Pi
+
+ The type of the ith parameter +
+
+
+
+tuple();
+
+

+ Requirements: Each Ti + is default constructable. +

+

+ Semantics: Default initializes each element + of the tuple. +

+
+tuple(P1,P2,...,PN);
+
+

+ Requirements: Each Pi + is Ti if Ti is a reference type, const Ti& otherwise. +

+

+ Semantics: Copy initializes each element + with the corresponding parameter. +

+
+tuple(const tuple& t);
+
+

+ Requirements: Each Ti + should be copy constructable. +

+

+ Semantics: Copy constructs each element + of *this + with the corresponding element of t. +

+
+template<typename U1, typename U2, ..., typename UN>
+tuple(const tuple<U1, U2, ..., UN>& t);
+
+

+ Requirements: Each Ti + shall be constructible from the corresponding Ui. +

+

+ Semantics: Constructs each element of + *this + with the corresponding element of t. +

+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/tuples/class_template_tuple/element_access.html b/doc/html/fusion/tuples/class_template_tuple/element_access.html new file mode 100644 index 00000000..3dc0ab26 --- /dev/null +++ b/doc/html/fusion/tuples/class_template_tuple/element_access.html @@ -0,0 +1,90 @@ + + + +Element + access + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ The TR1 + Tuple provides the get + function to provide access to it's elements by zero based numeric index. +

+
+ + Specification +
+
+template<int I, T>
+RJ get(T& t);
+
+

+ Requires: 0 < I <= N. + The program is ill formed if I + is out of bounds. T is + any fusion sequence type, including tuple. +

+

+ Return type: RJ + is equivalent to result_of::at_c<I,T>::type. +

+

+ Returns: A reference to the Ith element of T. +

+
+template<int I, typename T>
+PJ get(T const& t);
+
+

+ Requires: 0 < I <= N. + The program is ill formed if I + is out of bounds. T is + any fusion sequence type, including tuple. +

+

+ Return type: PJ + is equivalent to result_of::at_c<I,T>::type. +

+

+ Returns: A const reference to the Ith element of T. +

+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/tuples/class_template_tuple/relational_operators.html b/doc/html/fusion/tuples/class_template_tuple/relational_operators.html new file mode 100644 index 00000000..7b2e0296 --- /dev/null +++ b/doc/html/fusion/tuples/class_template_tuple/relational_operators.html @@ -0,0 +1,191 @@ + + + +Relational + operators + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ The TR1 + Tuple provides the standard boolean relational operators. +

+
+ + Specification +
+
+

Notation

+
+
T1 + ... TN, + U1 ... + UN
+
+ Tuple element types +
+
P1 + ... PN
+
+ Parameter types +
+
Ti, + Ui
+
+ The type of the ith element + of a tuple +
+
Pi
+
+ The type of the ith parameter +
+
+
+
+template<typename T1, typename T2, ..., typename TN,
+         typename U1, typename U2, ..., typename UN>
+bool operator==(
+    const tuple<T1, T2, ..., TN>& lhs,
+    const tuple<U1, U2, ..., UN>& rhs);
+
+

+ Requirements: For all i, + 1 <= i < N, get<i>(lhs) == get<i>(rhs) + is a valid expression returning a type that is convertible to bool. +

+

+ Semantics: Returns true + if and only if get<i>(lhs) == get<i>(rhs) + for all i. For any 2 zero + length tuples e and f, e == f + returns true. +

+
+template<typename T1, typename T2, ..., typename TN,
+         typename U1, typename U2, ..., typename UN>
+bool operator<(
+    const tuple<T1, T2, ..., TN>& lhs,
+    const tuple<U1, U2, ..., UN>& rhs);
+
+

+ Requirements: For all i, + 1 <= i < N, get<i>(lhs) < get<i>(rhs) + is a valid expression returning a type that is convertible to bool. +

+

+ Semantics: Returns the lexicographical + comparison of between lhs + and rhs. +

+
+template<typename T1, typename T2, ..., typename TN,
+         typename U1, typename U2, ..., typename UN>
+bool operator!=(
+    const tuple<T1, T2, ..., TN>& lhs,
+    const tuple<U1, U2, ..., UN>& rhs);
+
+

+ Requirements: For all i, + 1 <= i < N, get<i>(lhs) == get<i>(rhs) + is a valid expression returning a type that is convertible to bool. +

+

+ Semantics: Returns !(lhs == rhs). +

+
+template<typename T1, typename T2, ..., typename TN,
+         typename U1, typename U2, ..., typename UN>
+bool operator<=(
+    const tuple<T1, T2, ..., TN>& lhs,
+    const tuple<U1, U2, ..., UN>& rhs);
+
+

+ Requirements: For all i, + 1 <= i < N, get<i>(rhs) < get<i>(lhs) + is a valid expression returning a type that is convertible to bool. +

+

+ Semantics: Returns !(rhs < lhs) +

+
+template<typename T1, typename T2, ..., typename TN,
+         typename U1, typename U2, ..., typename UN>
+bool operator>(
+    const tuple<T1, T2, ..., TN>& lhs,
+    const tuple<U1, U2, ..., UN>& rhs);
+
+

+ Requirements: For all i, + 1 <= i < N, get<i>(rhs) < get<i>(lhs) + is a valid expression returning a type that is convertible to bool. +

+

+ Semantics: Returns rhs < lhs. +

+
+template<typename T1, typename T2, ..., typename TN,
+         typename U1, typename U2, ..., typename UN>
+bool operator>=(
+    const tuple<T1, T2, ..., TN>& lhs,
+    const tuple<U1, U2, ..., UN>& rhs);
+
+

+ Requirements: For all i, + 1 <= i < N, get<i>(lhs) < get<i>(rhs) + is a valid expression returning a type that is convertible to bool. +

+

+ Semantics: Returns !(lhs < rhs). +

+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html b/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html new file mode 100644 index 00000000..6b73088b --- /dev/null +++ b/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html @@ -0,0 +1,79 @@ + + + +Tuple + creation functions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ TR1 describes 2 utility functions for creating _tr1tuple_s. make_tuple + builds a tuple out of it's argument list, and tie + builds a tuple of references to it's arguments. The details of these creation + functions are described in this section. +

+
+ + Specification +
+
+template<typename T1, typename T2, ..., typename TN>
+tuple<V1, V2, ..., VN> make_tuple(const T1& t1, const T2& t2, ..., const TN& tn);
+
+

+ Where Vi is X& + if the cv-unqualified type Ti + is reference_wrapper<X>, + otherwise Vi is Ti. +

+

+ Returns: tuple<V1, V2, ..., VN>(t1, t2, ..., tN) +

+
+template<typename T1, typename T2, ..., typename TN>
+tuple<T1&, T2&, ..., TN&> tie(T1& t1, T2& t2, ..., TN& tn);
+
+

+ Returns: tuple<T1&, T2&, ..., + TN&>(t1, t2, ..., tN). When argument ti + is ignore, assigning any + value to the corresponding tuple element has has no effect. +

+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html b/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html new file mode 100644 index 00000000..9062b1a2 --- /dev/null +++ b/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html @@ -0,0 +1,83 @@ + + + +Tuple + helper classes + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ The TR1 + Tuple provides 2 helper traits, for compile time access to the + tuple size, and the element types. +

+
+ + Specification +
+
+tuple_size<T>::value
+
+

+ Requires: T + is any fusion sequence type, including tuple. +

+

+ Type: MPL Integral Constant +

+

+ Value: The number of elements in the sequence. + Equivalent to result_of::size<T>::type. +

+
+tuple_element<I, T>::type
+
+

+ Requires: T + is any fusion sequence type, including tuple. + 0 <= I < N or the program is ill formed. +

+

+ Value: The type of the Ith + element of T. Equivalent + to result_of::value_at<I,T>::type. +

+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/tuples/pairs.html b/doc/html/fusion/tuples/pairs.html new file mode 100644 index 00000000..72e067ab --- /dev/null +++ b/doc/html/fusion/tuples/pairs.html @@ -0,0 +1,101 @@ + + + +Pairs + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ + Description +

+

+ The TR1 + Tuple interface is specified to provide uniform access to std::pair + as if it were a 2 element tuple. +

+

+ + Specification +

+
+tuple_size<std::pair<T1, T2> >::value
+
+

+ Type: An MPL Integral Constant +

+

+ Value: Returns 2, the number of elements + in a pair. +

+
+tuple_element<0, std::pair<T1, T2> >::type
+
+

+ Type: T1 +

+

+ Value: Returns the type of the first element + of the pair +

+
+tuple_element<1, std::pair<T1, T2> >::type
+
+

+ Type: T2 +

+

+ Value: Returns thetype of the second element + of the pair +

+
+template<int I, typename T1, typename T2>
+P& get(std::pair<T1, T2>& pr);
+
+template<int I, typename T1, typename T2>
+const P& get(const std::pair<T1, T2>& pr);
+
+

+ Type: If I == 0 P is T1, + else if I == 1 P + is T2 else the program is + ill-formed. +

+

+ Returns: pr.first + if I == 0 else pr.second.[*Returns: + pr.first if I == 0 else + pr.second. +

+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/images/alert.png b/doc/html/images/alert.png new file mode 100755 index 0000000000000000000000000000000000000000..b4645bc7e7cd81f2818bf22aa898e95f89f7b154 GIT binary patch literal 603 zcmeAS@N?(olHy`uVBq!ia0y~yV31^BU=ZVAW?*1oN<7}ez`(#Bl2vQw%VQUVy#($c(b7<_!Z&&*`7 zwYIFTuIA!kP?6(!`t<3^g$y0J3{Q73WQH(YSjJ#(AQj-}VXe>LZ_gkv$q?hiVP&Xj ztS4or%^)MjpsB?1|Nnp9pi5p13=F0vL4Lvi$p8#BTQ7jZgtNdSvY3H^>jMZgI;}C8 z!N9FSxfgB=H7N+NC77H_+N#nawR{=RqTMBX)(LXL|IjinhDSdCyWWZ3S$0kBOZbahGm>{cU3L4X z*xaKNrl+L*2&>`tT{GF}sK6TCoSy58@94C>csZ@3se0z)OD!J`ePg?KNk!eRu!nuZ zwIuy5g5`UyU*2!`JMiPV^UIVvmW1t{f1*^~1#9h_jDIZO*R6JmbN8&QBXd?)zY=(& z`HG+Mis#k2-hNM1nwI_8efYU@yAuCZhY42|Be;Juo!svFUA16}A_D^hgQu&X%Q~lo FCIA+53ZVc1 literal 0 HcmV?d00001 diff --git a/doc/html/images/caution.png b/doc/html/images/caution.png new file mode 100644 index 0000000000000000000000000000000000000000..5b7809ca4a9c8d778087522e5ce04b6e90099595 GIT binary patch literal 1250 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4rT@hhU+WOo?>8NW(e>Jab;j&;NV~o5MYpy zU{F+KFf?Rva$<;zVn|MA$j)XcE@r5%W@u?)XlW_#>0#*UDemd%nKFf8%9P?MQ>y38 zVVEwkZjIWyHF@jSt$X(}?A@Du?i|Cp zbLXyIW4Lzh+_h`h?%iX!chB(NJdh*`E$$X&!4}4&+z{J`|sZwzJC|^ z{$1kxcf;@BzyJTw@c+NS|Nj#IN5NBISn~R-X--a%afBxQ|J!3zMjr_SU zk_iHr)f*lf{$5^Qz}I)@3FlWvw(w~u=1P@VsTP+$RNGvxbHL-(%M6nc6`{zlU zjGQJeveps+!&Jb&mD)L@hA} z1_tL6*NBqf{Irtt#G+IN2MuLS&)mfHRNut(%;anZ6Fnn63k6F{eFF=914D)6qRirw zN{8Ia;*!i{z0_j8l+uFyyb`_S{M?DV6n8K%Fld2|%S_KpEGaEYWk@zRFt#waFg8d` zG)YZPF-fe)lBATd3a!N{b-$VA&f+n^|#(~yCI Ofx*+&&t;ucLK6T%G-N*j literal 0 HcmV?d00001 diff --git a/doc/html/images/fusion_org.png b/doc/html/images/fusion_org.png new file mode 100644 index 0000000000000000000000000000000000000000..3bb56539d6f91cf0025ac6a5ca804cea46388cb0 GIT binary patch literal 1849 zcmeAS@N?(olHy`uVBq!ia0y~yV4TUoz!1&B%)r1fO^4$<0|Ntdv6E*A2M5RPhyD*3 z7#Latd_r8gxw)S`dv@l`nVB_o}QlgxOhoP$$R(iSy@>fIdWv?%$aFvX_}gv0{j9kEiGPN zUW$r}PEJn6#l->~99~Xdd3kwGR!)kNihH+i)l^hWOG}H7i)*N_5BRz8F9QREPDzko z@P8D*fWkxP-2cY^l!1YPv%n*=n1O-o0|+xZtudLwz`&qd;u=vBoS#-wo>-L1;G39S zl%JcLl9{OBmRXcqo?nz*tl%4=U}Rum(q6XaJOcykV^0^ykcv5PXTL34Wh3Io>LuWF z@54-k4CXUGR`31)ySkhs>{p?itL|@^Z?i6Dtobm3HRbS?v-O)jd_7{0%{Sl0Ji9WU z`@Zlar6`>QwMs?3q!TKdqbmq?@x@;b!O7 zS&Tx={-stnua+6QRjCDDFuQo^qE5DX^85!Ab4u2irc7F(dwNx*)vVSt7RI^%CcPI{ z_SIBP_jcbrK{EYVg}z+H#2)9^3;MEWH&q#1eUdV>OuIKl{nOILk=OFvWDadg%A0rd zkj>?g)SGhC`_dveN=8rHyP|ETU9D$D<}8_Y=}N2479>8GOqnpVQ6v*l8>RO+H}Pb>$zlc>&o+HqyW>2@i@xuPt9gI^_wJxOW^#>t_wl`pczAeH1XJ4L z8;w7`=4nZ+o^Q8P?PPD-lEAK$iR)$etv@z>lI!wwx67YPA9voeOQS;DZ}qP|hd$o@ zviNoX2FbLVyIJ)TGd{1nYp}w@#UQNg#JT3uw@J@uywtwO-geVA^>~j&99Qf??KJDw z#J{@UU-IPmcZzd`DKBc<5#IJsvDhzWqb*jq#)iuX&#@@%6;=vj{#WM*FUxZ=saPm>o-l{H^>yLYwhnGFZN_Oegt zHfpPN6IyVi;IKI>k59q9e;Xyw&WY!3E(e*DDg5;GiFIn3+>+&Cr!&(H{mmBpytv&N zzR99XsL(1cVZKQ2gI|7WZ`_l3ez&N6meTKT~pD`i*l}<+sUgI(p&Ulbt_Toc(os+u7N*wvTsP`ApGyR-|+Bm|gga zo2$-<=KHTcdn6#+wO3&8+Os~|dp{dE#Pf^Z`r-BGW73D`D#h;@HB9%q6o@~O4>vQO zQOp0}G1H+F`r<~{L2w zpLp!Fyoo}&s$c-Ojn^6bnny}^h4!7HgZE!+Go7{|D*+r)R zd!fuwCbzyYcM}>ke|kZqMrEmP96;6^YHwZVX=h^(XJlpQSSd_vu#%6g=$fe}BAZYthcC zYCUa};GV6K1qq2u+d0*WKl_x;N?$WmcX8#j?UL)$7x2BF#l|;nUG@3e>vOVL=UG#DiN7GS6%b%DwcU5ua6(*+nzF*onKLh6zO-%YmOy{sw6wJU|Nk%gvq74Hfq|za z$S?Rm0x$^OKX;CSfq}EYBeIx*fm;ZK886+f`@_J%pjzS@Q4*Y=R#Ki=l*-_nm|T>f zo0^iDsNj}alvU8YOY t9}F9JU6`43jMG5vNQA&8NcoN_f;wr$vARr(hAt9lu zscC6x>EvV>6{VS+EaBwj6ciMco$ZvI98_E!l$@NLot<4>UER|o(bHqOcQ41TYc{y!?kM?_wFg)yJvXsp5^oB z9Pi&Vyniq7|3Ab3{~Z7S3p{_W`TV)z`}cpO z$(;G%_wGG* z?AW<;=dNA5cJJQ3=g*(NfB*jb_wWDz|6hCQ@I3|w2F4_BcNgdM3%p4T42R|DNig) zWpL0?*7VFxOi%SqOwUZtRxr^s(z8&owA44S&^IttNG{4OE~#|Ltt>9dOx8;+)=McZ z$j>X$OU}=oxJz*d0|SE=*tpE}yu^~yqEv=t literal 0 HcmV?d00001 diff --git a/doc/html/images/next.png b/doc/html/images/next.png new file mode 100755 index 0000000000000000000000000000000000000000..59800b4e87f60c0e3383ede2b384b9be0f5ffe8d GIT binary patch literal 336 zcmeAS@N?(olHy`uVBq!ia0y~yU=Rjj7G?$phK4%r{|pQa%*9TgAsieWw;%dHU|?WS z3GfMV6&Dfg?(8r&Hr}>%OQ656nzF)*4nJa0`Jj)#l9-t%+}PK^d+g590~2^trx_V+aGYt)W#Kgko@Q{~>i6>w}LxPb)_bi1gN;4a>^d{wcURt*495hZOYc8|NsA=8=F$dz`$Tq666>BpLD?B9j=thz`(#+;1OBOz`*qZgc+UI zn9N{cU{Eb_jVKAuPb(=;EJ|hYO-wGz&rMCqOjK~oEJ`iUFUl@f@QqL~GB7Y{FI#h- zfq_xR)5S5QVovU)+hxrP02oy7clOl(|F;(fCx<^{O+3$d{!GJf zAT>%@)+Kac%o^ zm8~at%dZNSg`XDA>HpujeRb(tA@xWH1+`xhu}_a!eJ{ORYJcMi$Ma>cBHv0)HBxa4 zSGC~^nY{G5@1(nj{7!xJ-s1V$LbWCK_xDFLe3_MRf4msHv}xJrfBaF7=BYjUcQ!FF PFfe$!`njxgN@xNAS|c%7 literal 0 HcmV?d00001 diff --git a/doc/html/images/prev.png b/doc/html/images/prev.png new file mode 100755 index 0000000000000000000000000000000000000000..d88a40f923e3c554125f01cd366707c60cfcad04 GIT binary patch literal 334 zcmeAS@N?(olHy`uVBq!ia0y~yU=Rjj7G?$phK4%r{|pQa%*9TgAsieWw;%dHU|?WS z3GfMV6&DdqOG`60Hr}>%%ZlYo1O0u~loc*tzSP~>;p||S5Et|R|Noh1c$yg)73T~N2spa`a*~JRJ5eh~I1}5!gYtAz;Fo=OPI2WZRmSpDVDTHL^rZN~B=o=X8 z8<-ql-^0nkz!2u?;uumfC;0|1OPoRyGxLNShYX~Tl_Wf9G1_imu)%RA9}mw<0X2^e zQioc&m}WXSvRw^OFi2qFa&lm1W^U?K=~^Ook|m{hVvche^Q6-g?(V)Vn8U=toEqFE UkjD9gfq{X+)78&qol`;+00?PtqyPW_ literal 0 HcmV?d00001 diff --git a/doc/html/images/smiley.png b/doc/html/images/smiley.png new file mode 100755 index 0000000000000000000000000000000000000000..30a77f71ce16872d046a1a5d6fd698a2f65a3f62 GIT binary patch literal 867 zcmeAS@N?(olHy`uVBq!ia0y~yU=U|uV36QoW?*1YTQtp`fq{X!*vT`5gM;JtL;nX1 z42*&SJ|V8+B7&<|tz5IBw4@*~EXexT*H!m!O?Pp!sH>^CckiyDuKJ|Dl+(w%CQay1 zOYu8%=FGd73zHKgmoF}|u{3I~kKDVXVbQ_`9c`_Fz7{iQrl~4QMTGi1fByW=jcKLD z*?C#s*_rWAAIx@f)c16=+qAB-t1T`u&hzVsWjnTSn>lml<@5cSX&!B@jUfSci{|F_ z_w^KKXB!)+#6)_3`t<4gwQEt~&MzL%J+!ao-_JD<@64PzGws6Z-hv$8-Me=7btN{` zl~t96rKP3$c$&I9TcsogXQl?mL%y{W;-5&-92C)*?h!W?b)Wnj^{5*w_%-mE4Lj!$7BYguC zr{Y6*7#J8-K`Mgt(@M${i&7bU6O)Vbb5m0?6BXPti&D$;i?WLqd?OT$3=B-#%hsG{ zU|`huba4!+n3FrHHoVC|#v<-Y&ynX`2+ z)ci{*-@n^>-frGI_MA-9eHCQCFMs-NiTvCzJ8a&6h<9#D<(d3(^{E}JLTitR9GSK2 z$*O4*8tU!OHS*&Yg~mSMD)7~hd93j+u`cf5MM<4*zJ;yfFKhYEn9bv3Xeg3g;K-G= z;q?Q<5Qk-d*rznCncd{p+umG~t-YZ3L%_f9;YyrSd?k7nE}0j~xg-T!p1r_pXw_8J z^q9XtRP=q)pSk7_!?YePxacL!`8E4~v$oZii_iB4y^t?YSBana!LlH(Q{_whcc+EB z6^^opPM-68`QEg&=hc<^;brIeKBf1+k=uTZ@Aa)4^R8_EExPXM@|~g)-OB%bBP#i` ie0$=QHXfdLO8@!p%oni+1)dBH3=E#GelF{r5}E*N2(Kal literal 0 HcmV?d00001 diff --git a/doc/html/images/tip.png b/doc/html/images/tip.png new file mode 100755 index 0000000000000000000000000000000000000000..9f596b0b88eb42562b2d0b0e30d054509be42af2 GIT binary patch literal 640 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4rT@hhU+WOo?>8NU@ms@4B_D5xc$)o0Rsa= zZ-7sTtD>UflSfBq&1}s`kJ`U?skgWH)2B~oOmF`E^TxIg4+D?5M~H-?Y?- zI&~E<1_lQGk|4j}{|LZEaktF(-D? z%Sp`&0xgDm?d}|!0v)M>{a+K-KKU!3@9L8LOa5Z1>0OX+j1SY)GfWc?{l8U z$2VD9PtNu%kvS~%Xw8E;=95FN9-q3V{gPE~*|fjR%QkDRKeb=t2Ll5GgQu&X%Q~lo FCIFO8ExiB$ literal 0 HcmV?d00001 diff --git a/doc/html/images/up.png b/doc/html/images/up.png new file mode 100755 index 0000000000000000000000000000000000000000..17d9c3ec491ae1ba22188ce85985623c92ffa9be GIT binary patch literal 370 zcmeAS@N?(olHy`uVBq!ia0y~yU=Rjj7G?$phK4%r{|pQa%*9TgAsieWw;%dHU|?X- z3h)VW6&DdqOG|Thu-mqE%ZlYoyE{8BU%nLR@2jS)FmvY2qel)W#Kk;%^zi@x|I?Un z*fKCM@RbDl1^-6|46X<6oM2#J;4JWnEM{Qf76M_$OLy!3FfcHvmbgZg1m~xflqVLY zGWaGY7v<-srer26xMdclmgg5`7c2NiC>R+Sn6#IzInThrAO_OlT$Gwvl9`{U5R#dj z%3x@qZ(yu%U~+tY4<`cyLy@P8V@SoEspmFwHW&!FJyeg_(XezvV9WvAI|r@_>dZZG zPW6aiOT!J--9O?NG0%AP;}ge|4lDQN4=-}8`?JGwx}?mMnO)OdyQdu$nQCjPRV}jm z$u!Qa8E-cQ-r3Nz>Y(YPTd#BPEH+&8GWqfD!}4*53%dA!%#3$cIv;a~fq{X+)78&q Iol`;+0POUaApigX literal 0 HcmV?d00001 diff --git a/doc/html/images/warning.png b/doc/html/images/warning.png new file mode 100644 index 0000000000000000000000000000000000000000..1c33db8f34a8b42b373179b46a2d8d8a10e061a9 GIT binary patch literal 1241 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4rT@hhU+WOo?>8NW(e>JaphoO5CF?5GB9W| zFc>m0I59AIF)#!%FhnshWHT@nGcZ&$Ftji*^e`|?VPKe2T|Fl#Xiikroa*YO3=B&x zEth(EEp2I8I%UezrAyZ`FswB+TsvjTRtAQxnwndCdbZA)vvujxty{P5WnkF5cJ1D+ zTaPg?91{>YCLwX`*s*gA4Ce#{&Phm|)6~4iz;I1d^V+p*_ZS%N-Mjakf#JEL;`8Uv z-!m}0=iqq%{{43bhVS3M|7T$MKMF=efJz}yVEuRs0|NtNlDE4HLkFv@2Ll7c3r`ov zkcwNmlWOyu3izvS7ejxP>R-!INP5f(XN|IS^C^Iyp?`SUk1vQO?s(K&l| zi|Nkt0@~*ymDp65*E-HED6u(s{Mfrxmah{JrgAMTIq)Du?nC5nnYTRgThA|azEdIl zD^uvV>~q(b?>`Fd;xnAbe7so1I$-&keKN}|vNNOCvX<~g{)wp7{&hR__v^cBU*Gq* zV3YS!cBPWsl#eNWc|~nAXWMOB8tQWBuXo=4>}cytyX_5F^Az{bVJ>7~U~n#RjVKAu zPb(=;EJ|f?&`{R&%uP&B^-WCAOwLv?(KFJsP_VSrH?Yt*FjPn`$}BFabjYnNF3C*R zOD)z*DJ{s)E742N&z-nSaR&nfgBIAh%=Em(lG377hGY|?B=Z!b6jL*k#Ka_13kwTN zLrZf@a|7cv1EVApQ-8txlNlHo_&~Y>64O%|j7%zwOtcNO4T_>U4H+017(8A5T-G@y GGywozG)2h( literal 0 HcmV?d00001 diff --git a/doc/html/index.html b/doc/html/index.html new file mode 100644 index 00000000..2d4024f4 --- /dev/null +++ b/doc/html/index.html @@ -0,0 +1,66 @@ + + + +Chapter 1. Fusion 2.0 + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
Next
+
+
+

+Chapter 1. Fusion 2.0

+

+Joel de Guzman +

+

+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) +

+
+
+ +
+ + + +

Last revised: August 16, 2006 at 16:16:24 GMT

+
+
Next
+ + diff --git a/doc/introduction.qbk b/doc/introduction.qbk new file mode 100644 index 00000000..d8f3f880 --- /dev/null +++ b/doc/introduction.qbk @@ -0,0 +1,81 @@ +[section Introduction] + +An advantage other languages such as Python and Lisp/ Scheme, ML and +Haskell, etc., over C++ is the ability to have heterogeneous containers +that can hold arbitrary element types. All the containers in the standard +library can only hold a specific type. A `vector` can only hold +`int`s. A `list` can only hold elements of type `X`, and so on. + +True, you can use inheritance to make the containers hold different types, +related through subclassing. However, you have to hold the objects through +a pointer or smart reference of some sort. Doing this, you'll have to rely +on virtual functions to provide polymorphic behavior since the actual type +is erased as soon as you store a pointer to a derived class to a pointer to +its base. The held objects must be related: you cannot hold objects of +unrelated types such as `char`, `int`, `class X`, `float`, etc. Oh sure you +can use something like __boost_any__ to hold arbitrary types, but then you +pay more in terms of runtime costs and due to the fact that you practically +erased all type information, you'll have to perform dangerous casts to get +back the original type. + +The __tuple__ library written by __jaakko_jarvi__ provides heterogeneous +containers in C++. The `tuple` is a basic data structure that can hold +heterogeneous types. It's a good first step, but it's not complete. What's +missing are the algorithms. It's nice that we can store and retrieve data +to and from tuples, pass them around as arguments and return types. As it +is, the __tuple__ facility is already very useful. Yet, as soon as you use +it more often, usage patterns emerge. Eventually, you collect these +patterns into algorithm libraries. + +Hmmm, kinda reminds us of STL right? Right! Can you imagine how it would be +like if you used STL without the algorithms? Everyone will have to reinvent +their own /algorithm/ wheels. + +Fusion is a library and a framework similar to both __stl__ and the boost +__mpl__. The structure is modeled after __mpl__, which is modeled +after __stl__. It is named "fusion" because the library is reminiscent of +the "fusion" of compile time meta-programming with runtime programming. The +library inherently has some interesting flavors and characteristics of both +__mpl__ and __stl__. It lives in the twilight zone between compile time +meta-programming and run time programming. __stl__ containers work on +values. MPL containers work on types. Fusion containers work on both types +and values. + +Unlike __mpl__, Fusion algorithms are lazy and non sequence-type +preserving. What does that mean? It means that when you operate on a +sequence through a Fusion algorithm that returns a sequence, the sequence +returned may not be of the same class as the original. This is by design. +Runtime efficiency is given a high priority. Like __mpl__, and unlike +__stl__, fusion algorithms are functional in nature such that algorithms +are non mutating (no side effects). However, due to the high cost of +returning full sequences such as vectors and lists, /Views/ are returned +from Fusion algorithms instead. For example, the __transform__ algorithm +does not actually return a transformed version of the original sequence. +__transform__ returns a __transform_view__. This view holds a reference to +the original sequence plus the transform function. Iteration over the +__transform_view__ will apply the transform function over the sequence +elements on demand. This /lazy/ evaluation scheme allows us to chain as +many algorithms as we want without incurring a high runtime penalty. + +The /lazy/ evaluation scheme where algorithms return views allows +operations such as __push_back__ to be totally generic. In Fusion, +__push_back__ is actually a generic algorithm that works on all sequences. +Given an input sequence `s` and a value `x`, Fusion's __push_back__ +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. + +Fusion provides full round compatibility with __mpl__. Fusion sequences are +fully conforming __mpl__ 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. 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 to a Fusion sequence. For +example, there are times when it is convenient to work solely on __mpl__ +using pure __mpl__ sequences, then, convert them to Fusion sequences as a +final step before actual instantiation of real runtime objects with data. +You have the best of both worlds. + +[endsect] diff --git a/doc/iterators.qbk b/doc/iterators.qbk new file mode 100644 index 00000000..1607242a --- /dev/null +++ b/doc/iterators.qbk @@ -0,0 +1,855 @@ +[section Iterators] +Like __mpl__ and __stl__, iterators are a fundamental concept in Fusion. +As with __mpl__ and __stl__ iterators describe positions, and +provide access to data within an underlying __sequence__. + +[heading Header] + #include + +[section Concepts] + +Fusion iterators are divided into different traversal categories. +__forward_iterator__ is the most basic concept. __bidirectional_iterator__ +is a refinement of __forward_iterator__. __random_access_iterator__ is a +refinement of __bidirectional_iterator__. + +[section Forward Iterator] + +[heading Description] +A Forward Iterator traverses a __sequence__ allowing movement in only one direction through +it's elements, one element at a time. + +[variablelist Notation + [[`i`, `j`] [Forward Iterators]] + [[`I`, `J`] [Forward Iterator types]] + [[`M`] [An __mpl__ integral constant]] + [[`N`] [An integral constant]] +] + +[heading Expression requirements] +A type models Forward Iterator if, in addition to being CopyConstructable, +the following expressions are valid: + +[table + [[Expression] [Return type] [Runtime Complexity]] + [[`__next__(i)`] [__forward_iterator__] [Constant]] + [[`i == j`] [Convertible to bool] [Constant]] + [[`i != j`] [Convertible to bool] [Constant]] + [[`__advance_c__(i)`] [__forward_iterator__] [Constant]] + [[`__advance__(i)`] [__forward_iterator__] [Constant]] + [[`__distance__(i, j)`] [`__result_of_distance__::type`][Constant]] + [[`__deref__(i)`] [`__result_of_deref__::type`] [Constant]] + [[`*i`] [`__result_of_deref__::type`] [Constant]] +] + +[heading Meta Expressions] +[table + [[Expression] [Compile Time Complexity]] + [[`__result_of_next__::type`] [Amortized constant time]] + [[`__result_of_equal_to__::type`] [Amortized constant time]] + [[`__result_of_advance_c__::type`] [Linear]] + [[`__result_of_advance__::type`] [Linear]] + [[`__result_of_distance__::type`] [Linear]] + [[`__result_of_deref__::type`] [Amortized constant time]] + [[`__result_of_value_of__::type`] [Amortized constant time]] +] + +[heading Expression Semantics] +[ +table + [[Expression] [Semantics]] + [[`__next__(i)`] [An iterator to the element following `i`]] + [[`i == j`] [Iterator equality comparison]] + [[`i != j`] [Iterator inequality comparison]] + [[`__advance_c__(i)`] [An iterator n elements after `i` in the sequence]] + [[`__advance__(i)`] [Equivalent to `advance_c(i)`]] + [[`__distance__(i, j)`] [The number of elements between `i` and `j`]] + [[`__deref__(i)`] [The element at position`i`]] + [[`*i`] [Equivalent to `deref(i)`]] +] + +[heading Invariants] +The following invariants always hold: + +* `!(i == j) == (i != j)` +* `__next__(i) == __advance_c__<1>(i)` +* `__distance__(i, __advance_c__(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` + +[heading Models] +* __std_pair__ iterator +* __boost_array__ iterator +* __vector__ iterator +* __cons__ iterator +* __list__ iterator +* __set__ iterator +* __map__ iterator +* __single_view__ iterator +* __filter_view__ iterator +* __iterator_range__ iterator +* __joint_view__ iterator +* __transform_view__ iterator +* __reverse_view__ iterator + +[endsect] + +[section Bidirectional Iterator] +[heading Description] +A Bidirectional Iterator traverses a __sequence__ allowing movement in either direction one +element at a time. + +[variablelist Notation + [[`i`] [A Bidirectional Iterator]] + [[`I`] [A Bidirectional Iterator type]] + [[`M`] [An __mpl__ integral constant]] + [[`N`] [An integral constant]] +] + +[heading Refinement of] +__forward_iterator__ + +[heading Expression requirements] +In addition to the requirements defined in __forward_iterator__, +the following expressions must be valid: + +[table + [[Expression] [Return type] [Runtime Complexity]] + [[`__next__(i)`] [__bidirectional_iterator__] [Constant]] + [[`__prior__(i)`] [__bidirectional_iterator__] [Constant]] + [[`__advance_c__(i)`] [__bidirectional_iterator__] [Constant]] + [[`__advance__(i)`] [__bidirectional_iterator__] [Constant]] +] + +[heading Meta Expressions] +[table + [[Expression] [Compile Time Complexity]] + [[`__result_of_prior__::type`] [Amortized constant time]] +] + +[heading Expression Semantics] +The semantics of an expression are defined only where they differ from, or are not defined +in __forward_iterator__ + +[table + [[Expression] [Semantics]] + [[`__prior__(i)`] [An iterator to the element preceding `i`]] +] + +[heading Invariants] +In addition to the invariants of __forward_iterator__, +the following invariants always hold: + +* `__prior__(__next__(i)) == i && __prior__(__next__(i)) == __next__(__prior__(i))` +* `__prior__(i) == __advance_c__<-1>(i)` +* Using `__prior__` to traverse a sequence will never return a previously seen position + +[heading Models] +* __std_pair__ iterator +* __boost_array__ iterator +* __vector__ iterator +* __iterator_range__ (where adapted sequence is a __bidirectional_sequence__) +* __transform_view__ (where adapted sequence is a __bidirectional_sequence__) +* __reverse_view__ + +[endsect] + +[section Random Access Iterator] +[heading Description] +A Random Access Iterator traverses a __sequence__ moving in either direction, +permitting efficient arbitrary distance movements back and forward through the +sequence. + +[variablelist Notation + [[`i`, `j`] [Random Access Iterators]] + [[`I`, `J`] [Random Access Iterator types]] + [[`M`] [An __mpl__ integral constant]] + [[`N`] [An integral constant]] +] + +[heading Refinement of] +__bidirectional_iterator__ + +[heading Expression requirements] +In addition to the requirements defined in __bidirectional_iterator__, +the following expressions must be valid: + +[table + [[Expression] [Return type] [Runtime Complexity]] + [[`__next__(i)`] [__random_access_iterator__] [Constant]] + [[`__prior__(i)`] [__random_access_iterator__] [Constant]] + [[`__advance_c__(i)`] [__random_access_iterator__] [Constant]] + [[`__advance__(i)`] [__random_access_iterator__] [Constant]] +] + +[heading Meta Expressions] +[table + [[Expression] [Compile Time Complexity]] + [[`__result_of_advance_c__::type`] [Amortized constant time]] + [[`__result_of_advance__::type`] [Amortized constant time]] + [[`__result_of_distance__::type`] [Amortized constant time]] +] + +[heading Models] +* __vector__ iterator +* __std_pair__ iterator +* __boost_array__ iterator +* __iterator_range__ iterator (where adapted sequence is a __random_access_sequence__) +* __transform_view__ iterator (where adapted sequence is a __random_access_sequence__) +* __reverse_view__ iterator (where adapted sequence is a __random_access_sequence__) + +[endsect] + +[endsect] + +[section Functions] +Fusion provides functions for manipulating iterators, analogous to the similar functions +from the __mpl__ library. + +[section deref] + +[heading Description] +Deferences an iterator. + +[heading Synopsis] + template< + typename I + > + typename __result_of_deref__::type deref(I const& i); + +[table Parameters + [[Parameter] [Requirement] [Description]] + [[`i`] [Model of __forward_iterator__] [Operation's argument]] +] + +[heading Expression Semantics] + __deref__(i); + +[*Return type]: `__result_of_deref__::type` + +[*Semantics]: Dereferences the iterator `i`. + +[heading Header] + #include + +[heading Example] + typedef __vector__ vec; + + int i(0); + vec v(1,i); + assert(__deref__(__begin__(v)) == 1); + assert(__deref__(__next__(__begin__(v))) == 0); + assert(&(__deref__(__next__(__begin__(v)))) == &i); + +[endsect] + +[section next] + +[heading Description] +Moves an iterator 1 position forwards. + +[heading Synopsis] + template< + typename I + > + typename __result_of_next__::type next(I const& i); + +[table Parameters + [[Parameter] [Requirement] [Description]] + [[`i`] [Model of __forward_iterator__] [Operation's argument]] +] + +[heading Expression Semantics] + next(i); + +[*Return type]: A model of the same iterator concept as `i`. + +[*Semantics]: Returns an iterator to the next element after `i`. + +[heading Header] + #include + +[heading Example] + typedef __vector__ vec; + + vec v(1,2,3); + assert(__deref__(__begin__(v)) == 1); + assert(__deref__(__next__(__begin__(v))) == 2); + assert(__deref__(__next__(__next__(__begin__(v)))) == 3); + +[endsect] + +[section prior] + +[heading Description] +Moves an iterator 1 position backwards. + +[heading Synopsis] + template< + typename I + > + typename __result_of_prior__::type prior(I const& i); + +[table Parameters + [[Parameter] [Requirement] [Description]] + [[`i`] [Model of __bidirectional_iterator__] [Operation's argument]] +] + +[heading Expression Semantics] + __prior__(i); + +[*Return type]: A model of the same iterator concept as `i`. + +[*Semantics]: Returns an iterator to the element prior to `i`. + +[heading Header] + #include + +[heading Example] + typedef __vector__ vec; + + vec v(1,2); + assert(__deref__(__next__(__begin__(v))) == 2); + assert(__deref__(__prior__(__next__(__begin__(v)))) == 1); + +[endsect] + +[section distance] + +[heading Description] +Returns the distance between 2 iterators. + +[heading Synopsis] + template< + typename I, + typename J + > + typename __result_of_distance__::type distance(I const& i, J const& j); + +[table Parameters + [[Parameter] [Requirement] [Description]] + [[`i`, `j`] [Models of __forward_iterator__ into the same sequence] [The start and end points of the distance to be measured]] +] + +[heading Expression Semantics] + __distance__(i,j); + +[*Return type]: `int` + +[*Semantics]: Returns the distance between iterators `i` and `j`. + +[heading Header] + #include + +[heading Example] + typedef __vector__ vec; + + vec v(1,2,3); + assert(__distance__(__begin__(v), __next__(__next__(__begin__(v)))) == 2); + +[endsect] + +[section advance] + +[heading Description] +Moves an iterator by a specified distance. + +[heading Synopsis] + template< + typename I, + typename M + > + typename __result_of_advance__::type advance(I const& i); + +[table Parameters + [[Parameter] [Requirement] [Description]] + [[`i`] [Model of __forward_iterator__] [Iterator to move relative to]] + [[`N`] [An __mpl_integral_constant__] [Number of positions to move]] +] + +[heading Expression Semantics] + __advance__(i); + +[*Return type]: A model of the same iterator concept as `i`. + +[*Semantics]: Returns an iterator to the element `M` positions from `i`. If `i` is a __bidirectional_iterator__ then `M` may be negative. + +[heading Header] + #include + +[heading Example] + typedef __vector__ vec; + + vec v(1,2,3); + assert(__deref__(__advance__ >(__begin__(v))) == 3); + +[endsect] + +[section advance_c] + +[heading Description] +Moves an iterator by a specified distance. + +[heading Synopsis] + template< + typename I, + int N + > + typename __result_of_advance_c__::type advance_c(I const& i); + +[table Parameters + [[Parameter] [Requirement] [Description]] + [[`i`] [Model of __forward_iterator__] [Iterator to move relative to]] + [[`N`] [Integer constant] [Number of positions to move]] +] + +[heading Expression Semantics] + __advance_c__(i); + +[*Return type]: A model of the same iterator concept as `i`. + +[*Semantics]: Returns an iterator to the element `N` positions from `i`. If `i` is a __bidirectional_iterator__ then `N` may be negative. + +[heading Header] + #include + +[heading Example] + typedef __vector__ vec; + + vec v(1,2,3); + assert(__deref__(__advance_c__<2>(__begin__(v))) == 3); + +[endsect] + +[endsect] + +[section Operators] +Overloaded operators are provided to provide a more natural syntax for dereferencing iterators, and comparing them for equality. + +[section:operator_unary_star Operator *] + +[heading Description] +Dereferences an iterator. + +[heading Synopsis] + template< + typename I + > + typename __result_of_deref__::type operator*(__unspecified__ const& i); + +[table Parameters + [[Parameter] [Requirement] [Description]] + [[`i`] [Model of __forward_iterator__] [Operation's argument]] +] + +[heading Expression Semantics] + *i + +[*Return type]: Equivalent to the return type of `__deref__(i)`. + +[*Semantics]: Equivalent to `__deref__(i)`. + +[heading Header] + #include + +[heading Example] + typedef __vector__ vec; + + int i(0); + vec v(1,i); + assert(*__begin__(v) == 1); + assert(*__next__(__begin__(v)) == 0); + assert(&(*__next__(__begin__(v))) == &i); + +[endsect] + +[section:operator_equality Operator ==] + +[heading Description] +Compares 2 iterators for equality. + +[heading Synopsis] + template< + typename I, + typename J + > + __unspecified__ operator==(I const& i, J const& i); + +[table Parameters + [[Parameter] [Requirement] [Description]] + [[`i`, `j`] [Any fusion iterators] [Operation's arguments]] +] + +[heading Expression Semantics] + i == j + +[*Return type]: Convertible to `bool`. + +[*Semantics]: Equivalent to `__result_of_equal_to__::value` where `I` and `J` are the types of `i` and `j` respectively. + +[heading Header] + #include + +[endsect] + +[section:operator_inequality Operator !=] + +[heading Description] +Compares 2 iterators for inequality. + +[heading Synopsis] + template< + typename I, + typename J + > + __unspecified__ operator==(I const& i, J const& i); + +[table Parameters + [[Parameter] [Requirement] [Description]] + [[`i`, `j`] [Any fusion iterators] [Operation's arguments]] +] + +[heading Expression Semantics] + +[*Return type]: Convertible to `bool`. + +[*Semantics]: Equivalent to `!__result_of_equal_to__::value` where `I` and `J` are the types of `i` and `j` respectively. + +[heading Header] + #include + +[endsect] + +[endsect] + +[section Metafunctions] + +[section value_of] + +[heading Description] + +Returns the type stored at the position of an iterator. + +[heading Synopsis] + template< + typename I + > + struct value_of + { + typedef __unspecified__ type; + }; + +[table Parameters + [[Parameter] [Requirement] [Description]] + [[`I`] [Model of __forward_iterator__] [Operation's argument]] +] + +[heading Expression Semantics] + __result_of_value_of__::type + +[*Return type]: Any type + +[*Semantics]: Returns the type stored in a sequence at iterator position `I`. + +[heading Header] + #include + +[heading Example] + typedef __vector__ vec; + typedef __result_of_begin__::type first; + typedef __result_of_next__::type second; + typedef __result_of_next__::type third; + + BOOST_MPL_ASSERT((boost::is_same<__result_of_value_of__::type, int>)); + BOOST_MPL_ASSERT((boost::is_same<__result_of_value_of__::type, int&>)); + BOOST_MPL_ASSERT((boost::is_same<__result_of_value_of__::type, const int&>)); + +[endsect] + +[section deref] + +[heading Description] +Returns the type that will be returned by dereferencing an iterator. + +[heading Synposis] + template< + typename I + > + struct deref + { + typedef __unspecified__ type; + }; + +[table Parameters + [[Parameter] [Requirement] [Description]] + [[`I`] [Model of __forward_iterator__] [Operation's argument]] +] + +[heading Expression Semantics] + __result_of_deref__::type + +[*Return type]: Any type + +[*Semantics]: Returns the result of dereferencing an iterator of type `I`. + +[heading Header] + #include + +[heading Example] + typedef __vector__ vec; + typedef const vec const_vec; + typedef __result_of_begin__::type first; + typedef __result_of_next__::type second; + + typedef __result_of_begin__::type const_first; + typedef __result_of_next__::type const_second; + + BOOST_MPL_ASSERT((boost::is_same<__result_of_deref__::type, int&>)); + BOOST_MPL_ASSERT((boost::is_same<__result_of_deref__::type, int&>)); + +[endsect] + +[section next] + +[heading Description] +Returns the type of the next iterator in a sequence. + +[heading Synposis] + template< + typename I + > + struct next + { + typedef __unspecified__ type; + }; + +[table Parameters + [[Parameter] [Requirement] [Description]] + [[`I`] [Model of __forward_iterator__] [Operation's argument]] +] + +[heading Expression Semantics] + __result_of_next__::type + +[*Return type]: A model of the same iterator concept as `I`. + +[*Semantics]: Returns an iterator to the next element in the sequence after `I`. + +[heading Header] + #include + +[heading Example] + typedef __vector__ vec; + typedef __result_of_next__<__result_of_begin__::type>::type second; + + BOOST_MPL_ASSERT((boost::is_same<__result_of_value_of__::type, double>)); + +[endsect] + +[section prior] + +[heading Description] +Returns the type of the previous iterator in a sequence. + +[heading Synopsis] + template< + typename I + > + struct prior + { + typedef __unspecified__ type; + }; + +[table Parameters + [[Parameter] [Requirement] [Description]] + [[`I`] [Model of __bidirectional_iterator__] [Operation's argument]] +] + +[heading Expression Semantics] + __result_of_prior__::type + +[*Return type]: A model of the same iterator concept as `I`. + +[*Semantics]: Returns an iterator to the previous element in the sequence before `I`. + +[heading Header] + #include + +[heading Example] + typedef __vector__ vec; + typedef __result_of_next__<__result_of_begin__::type>::type second; + + BOOST_MPL_ASSERT((boost::is_same<__result_of_value_of__::type, double>)); + + typedef __result_of_prior__::type first; + BOOST_MPL_ASSERT((boost::is_same<__result_of_value_of__::type, int>)); + +[endsect] + +[section equal_to] + +[heading Description] +Returns a true-valued __mpl_integral_constant__ if `I` and `J` are equal. + +[heading Synopsis] + template< + typename I, + typename J + > + struct equal_to + { + typedef __unspecified__ type; + }; + +[table Parameters + [[Parameter] [Requirement] [Description]] + [[`I`, `J`] [Any fusion iterators] [Operation's arguments]] +] + +[heading Expression Semantics] + __result_of_equal_to__::type + +[*Return type]: A model of __mpl_integral_constant__. + +[*Semantics]: Returns `boost::mpl::true_` if `I` and `J` are iterators to the same position. Returns `boost::mpl::false_` otherwise. + +[heading Header] + #include + +[heading Example] + typedef __vector__ vec; + typedef __result_of_begin__::type first; + typedef __result_of_end__::type last; + BOOST_MPL_ASSERT((__result_of_equal_to__)); + BOOST_MPL_ASSERT_NOT((__result_of_equal_to__)); + +[endsect] + +[section distance] + +[heading Description] +Returns the distance between two iterators. + +[heading Synopsis] + template< + typename I, + typename J + > + struct distance + { + typedef __unspecified__ type; + }; + +[table Parameters + [[Parameter] [Requirement] [Description]] + [[`I`, `J`] [Models of __forward_iterator__ into the same sequence] [The start and end points of the distance to be measured]] +] + +[heading Expression Semantics] + __result_of_distance__::type + +[*Return type]: A model of __mpl_integral_constant__. + +[*Semantics]: Returns the distance between iterators of types `I` and `J`. + +[heading Header] + #include + +[heading Example] + typedef __vector__ vec; + typedef __result_of_begin__::type first; + typedef __result_of_next__::type second; + typedef __result_of_next__::type third; + typedef __result_of_distance__::type dist; + + BOOST_MPL_ASSERT_RELATION(dist::value, ==, 2); + +[endsect] + +[section advance] + +[heading Description] +Moves an iterator a specified distance. + +[heading Synopsis] + template< + typename I, + typename M + > + struct advance + { + typedef __unspecified__ type; + }; + +[table Parameters + [[Parameter] [Requirement] [Description]] + [[`I`] [Model of __forward_iterator__] [Iterator to move relative to]] + [[`M`] [Model of __mpl_integral_constant__] [Number of positions to move]] +] + +[heading Expression Semantics] + __result_of_advance__::type + +[*Return type]: A model of the same iterator concept as `I`. + +[*Semantics]: Returns an iterator a distance `M` from `I`. If `I` is a __bidirectional_iterator__ then `M` may be negative. + +[heading Header] + #include + +[heading Example] + typedef __vector__ vec; + typedef __result_of_begin__::type first; + typedef __result_of_next__::type second; + typedef __result_of_next__::type third; + + BOOST_MPL_ASSERT((__result_of_equal_to__<__result_of_advance__ >::type, third>)); + +[endsect] + +[section advance_c] + +[heading Description] +Moves an iterator by a specified distance. + +[heading Synopsis] + template< + typename I, + int N + > + struct advance_c + { + typedef __unspecified__ type; + }; + +[table Parameters + [[Parameter] [Requirement] [Description]] + [[`I`] [Model of __forward_iterator__] [Iterator to move relative to]] + [[`N`] [Integer constant] [Number of positions to move]] +] + +[heading Expression Semantics] + __result_of_advance_c__::type + +[*Return type]: A model of the same iterator concept as `I`. + +[*Semantics]: Returns an iterator a distance `N` from `I`. If `I` is a __bidirectional_iterator__ then `N` may be negative. Equivalent to `__result_of_advance__ >::type`. + +[heading Header] + #include + +[heading Example] + typedef __vector__ vec; + typedef __result_of_begin__::type first; + typedef __result_of_next__::type second; + typedef __result_of_next__::type third; + + BOOST_MPL_ASSERT((__result_of_equal_to__<__result_of_advance_c__::type, third>)); + +[endsect] + +[endsect] + +[endsect] + diff --git a/doc/notes.qbk b/doc/notes.qbk new file mode 100644 index 00000000..f6fab805 --- /dev/null +++ b/doc/notes.qbk @@ -0,0 +1,146 @@ +[section Notes] + +[heading Recursive Inlined Functions] + +An interesting peculiarity of functions like __at__ when applied to a +__forward_sequence__ like __list__ is that what could have been linear +runtime complexity effectively becomes constant O(1) due to compiler +optimization of C++ inlined functions, however deeply recursive (up to a +certain compiler limit of course). Compile time complexity remains linear. + +[heading Overloaded Functions] + +Associative sequences use function overloading to implement membership +testing and type associated key lookup. This amounts to constant runtime +and amortized constant compile time complexities. There is an overloaded +function, `f(k)`, for each key /type/ `k`. The compiler chooses the +appropriate function given a key, `k`. + +[heading Tag Dispatching] + +Tag dispatching is a generic programming technique for selecting template +specializations. There are typically 3 components involved in the tag +dispatching mechanism: + +# A type for which an appropriate template specialization is required +# A metafunction that associates the type with a tag type +# A template that is specialized for the tag type + +For example, the fusion `result_of::begin` metafunction is implemented +as follows: + + template + struct begin + { + typedef typename + result_of::begin_impl::type>:: + template apply::type + type; + }; + +In the case: + +# `Sequence` is the type for which a suitable implementation of + `result_of::begin_impl` is required +# `traits::tag_of` is the metafunction that associates `Sequence` + with an appropriate tag +# `result_of::begin_impl` is the template which is specialized to provide + an implementation for each tag type + +[heading Extensibility] + +Unlike __mpl__, there is no extensibe sequence concept in fusion. This does +not mean that Fusion sequences are not extensible. In fact, all Fusion +sequences are inherently extensible. It is just that the manner of sequence +extension in Fusion is diferent from both __stl__ and __mpl__ on account of +the lazy nature of fusion __algorithms__. __stl__ containers extend +themselves in place though member functions such as __push_back__ and +__insert__. __mpl__ sequences, on the other hand, are extended through +"intrinsic" functions that actually return whole sequences. __mpl__ is +purely functional and can not have side effects. For example, __mpl__'s +`push_back` does not actually mutate an `mpl::vector`. It can't do that. +Instead, it returns an extended `mpl::vector`. + +Like __mpl__, Fusion too is purely functional and can not have side +effects. With runtime efficiency in mind, Fusion sequences are extended +through generic functions that return __views__. __views__ are sequences +that do not actually contain data, but instead impart an alternative +presentation over the data from one or more underlying sequences. __views__ +are proxies. They provide an efficient yet purely functional way to work on +potentially expensive sequence operations. For example, given a __vector__, +Fusion's __push_back__ returns a __joint_view__, instead of an actual +extended __vector__. A __joint_view__ holds a reference to the original +sequence plus the appended data --making it very cheap to pass around. + +[heading Element Conversion] + +Functions that take in elemental values to form sequences (e.g. +__make_list__) convert their arguments to something suitable to be stored +as a sequence element. In general, the element types are stored as plain +values. Example: + + __make_list__(1, 'x') + +returns a __list__``. + +There are a few exceptions, however. + +[*Arrays:] + +Array arguments are deduced to reference to const types. For example +[footnote 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 __note_boost_ref__).]: + + __make_list__("Donald", "Daisy") + +creates a __list__ of type + + __list__ + +[*Function pointers:] + +Function pointers are deduced to the plain non-reference type (i.e. to +plain function pointer). Example: + + void f(int i); + ... + __make_list__(&f); + +creates a __list__ of type + + __list__ + +[heading boost::ref] + +Fusion's generation functions (e.g. __make_list__) by default stores the +element types as plain non-reference types. Example: + + void foo(const A& a, B& b) { + ... + __make_list__(a, b) + +creates a __list__ of type + + __list__ + +Sometimes the plain non-reference type is not desired. You can use +`boost::ref` and `boost::cref` to store references or const references +(respectively) instead. The mechanism does not compromise const correctness +since a const object wrapped with ref results in a tuple element with const +reference type (see the fifth code line below). Examples: + +For example: + + A a; B b; const A ca = a; + __make_list__(cref(a), b); // creates list + __make_list__(ref(a), b); // creates list + __make_list__(ref(a), cref(b)); // creates list + __make_list__(cref(ca)); // creates list + __make_list__(ref(ca)); // creates list + +See __boost_ref__ for details. + +[endsect] + diff --git a/doc/organization.qbk b/doc/organization.qbk new file mode 100644 index 00000000..cff048f8 --- /dev/null +++ b/doc/organization.qbk @@ -0,0 +1,68 @@ +[section Organization] + +The library is organized into layers of modules, with each module addressing a particular +area of responsibility. A module may not depend on modules in higher layers. + +The library is organized in three layers: + +[heading Layers] + +[:[$images/fusion_org.png]] + +The entire library is found in the "boost/fusion" directory. Modules are +organized in directories. Each module has its own header file placed in the +same directory with the actual module-directory. For example, there exists +"boost/fusion/support.hpp" in the same directory as "boost/fusion/support". +Everything, except those found inside "detail" directories, is public. The +library is header-only. There is no need to build object files to link +against. + +[heading Directory] + +* tuple +* algorithm + * iteration + * query + * transformation +* sequence + * adapted + * array + * mpl + * std_pair + * comparison + * container + * list + * map + * set + * vector + * conversion + * generation + * intrinsic + * io + * utility + * view + * filter_view + * iterator_range + * joint_view + * reverse_view + * single_view + * transform_view + * zip_view +* iterator +* support + +[heading Example] + +If, for example, you want to use `list`, depending on the granularity that +you desire, you may do so by including one of + + #include + #include + #include + +The first includes all sequences. The second includes all of sequence +containers. The third includes only `list` [footnote Modules may contain +smaller components. Header file information for each component will be +provided as part of the component's documentation.]. + +[endsect] diff --git a/doc/preface.qbk b/doc/preface.qbk new file mode 100644 index 00000000..1c838c66 --- /dev/null +++ b/doc/preface.qbk @@ -0,0 +1,68 @@ +[section Preface] + +[:['["Algorithms + Data Structures = Programs.]]] +[:*--Niklaus Wirth*] + +[heading Description] + +Fusion is a library for working with hetrogenous collections of data, +commonly referred to as tuples. A set of containers (vector, list, set and map) +is provided, along with views that provide a transformed presentation +of their underlying data. Collectively the containers and views are referred to +as sequences, and Fusion has a suite of algorithms that operate upon the +various sequence types, using an iterator concept that binds everything +together. + +The architecture is modeled after __mpl__ which in turn is modeled after +__stl__. It is named "fusion" because the library is a "fusion" of compile +time metaprogramming with runtime programming. + +[heading Motivation] + +Tuples are powerful beasts. After having developed two significant projects +(__spirit__ and __phoenix__) that relied heavily metaprogramming, it +became apparent that tuples are a powerful means to simplify otherwise tricky +tasks; especially those that require a combination of metaprogramming and +manipulation of heterogenous data types with values. While __mpl__ is an +extremely powerful metaprogramming tool, __mpl__ focuses on type +manipulation only. Ultimately, you'll have to map these types to real +values to make them useful in the runtime world where all the real action +takes place. + +As __spirit__ and __phoenix__ evolved, patterns and idioms related to tuple +manipulation emerged. Soon, it became clear that those patterns and idioms +were best assembled in a tuples algorithms library. __david_abrahams__ +outlined such a scheme in 2002. At that time, it just so happened that +__spirit__ and __phoenix__ had an adhoc collection of tuple manipulation +and traversal routines. It was an instant /AHA!/ moment. + +[heading How to use this manual] + +Some icons are used to mark certain topics indicative of their relevance. +These icons precede some text to indicate: + +[table Icons + [[Icon] [Name] [Meaning]] + [[__note__] [Note] [Information provided is auxiliary but will + give the reader a deeper insight into a specific + topic. May be skipped.]] + [[__alert__] [Alert] [Information provided is of utmost importance.]] + [[__caution__] [Caution] [A mild warning.]] + [[__tip__] [Tip] [A potentially useful and helpful piece of + information.]] +] + +This documentation is automatically generated by Boost QuickBook documentation +tool. QuickBook can be found in the __boost_tools__. + +[heading Support] + +Please direct all questions to Spirit's mailing list. You can subscribe to the +__spirit_list__. The mailing list has a searchable archive. A search link to +this archive is provided in __spirit__'s home page. You may also read and post +messages to the mailing list through __spirit_general__ (thanks to __gmane__). +The news group mirrors the mailing list. Here is a link to the archives: +__mlist_archive__. + +[endsect] + diff --git a/doc/quick_start.qbk b/doc/quick_start.qbk new file mode 100644 index 00000000..8857b5ea --- /dev/null +++ b/doc/quick_start.qbk @@ -0,0 +1,159 @@ +[section Quick Start] + +I assume the reader is already familiar with tuples (__tuple__) and its +ancestor `std::pair`. The tuple is a generalization of `std::pair` for +multiple heterogeneous elements (triples, quadruples, etc.). The tuple is +more or less a synonym for fusion's `__vector__`. + +For starters, we shall include all of Fusion's __sequence__s [footnote There +are finer grained header files available if you wish to have more control +over which components to include (see section __organization__ for +details).]: + + #include + +Let's begin with a `__vector__` [footnote 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.]: + + __vector__ stuff(1, 'x', "howdy"); + int i = __at_c__<0>(stuff); + char ch = __at_c__<1>(stuff); + std::string s = __at_c__<2>(stuff); + +Just replace `tuple` for `__vector__` and `get` for `__at_c__` and this is exactly +like __tuple__. Actually, either names can be used interchangeably. Yet, +the similarity ends there. You can do a lot more with Fusion `__vector__` or +`tuple`. Let's see some examples. + +[heading Print the vector as XML] + +First, let's include the algorithms: + + #include + +Now, let's write a function object that prints XML of the form data +for each member in the tuple. + + struct print_xml + { + template + void operator()(T const& x) const + { + std::cout + << '<' << typeid(x).name() << '>' + << x + << "' + ; + } + }; + +Now, finally: + + __for_each__(stuff, print_xml()); + +That's it! `__for_each__` is a fusion algorithm. It is a generic algorithm +similar to __stl__'s. It iterates over the sequence and calls a user +supplied function. In our case, it calls `print_xml`'s `operator()` for +each element in `stuff`. + +[caution The result of `typeid(x).name()` is platform specific. The code +here is just for exposition. Of course you already know that :-)] + +`__for_each__` is generic. With `print_xml`, you can use it to print just about +any Fusion __sequence__. + +[heading Print only pointers] + +Let's get a little cleverer. Say we wish to write a /generic/ function +that takes in an arbitrary sequence and XML prints only those elements +which are pointers. Ah, easy. First, let's include the `is_pointer` boost +type trait: + + #include + +Then, simply: + + template + void xml_print_pointers(Sequence const& seq) + { + __for_each__(__filter_if__ >(seq), print_xml()); + } + +`__filter_if__` is another Fusion algorithm. It returns a __filter_view__, +a conforming Fusion sequence. This view reflects only those elements that +pass the given predicate. In this case, the predicate is +`boost::is_pointer<_>`. This "filtered view" is then passed to the +__for_each__ algorithm, which then prints the "filtered view" as XML. + +Easy, right? + +[heading Associative tuples] + +Ok, moving on... + +Apart from `__vector__`, fusion has a couple of other sequence types to choose +from. Each sequence has its own characteristics. We have `__list__`, `__set__`, +`__map__`, plus a multitude of `views` that provide various ways to present the +sequences. + +Fusion's `__map__` associate types with elements. It can be used as a cleverer +replacement of the `struct`. Example: + + namespace fields + { + struct name; + struct age; + } + + typedef __map__< + __fusion_pair__ + , __fusion_pair__ > + person; + +`__map__` is an associative sequence. Its elements are Fusion pairs which differ +somewhat from `std::pair`. Fusion pairs only contain one member, with the type of +their second template parameter. The first type parameter of the pair is used as an +index to the associated element in the sequence. For example, given a `a_person` +of type, `person`, you can do: + + using namespace fields; + std::string person_name = __at_key__(a_person); + int person_age = __at_key__(a_person); + +Why go through all this trouble, you say? Well, for one, unlike the +`struct`, we are dealing with a generic data structure. There are a +multitude of facilities available at your disposal provided out of the box +with fusion or written by others. With these facilities, introspection +comes for free, for example. We can write one serialization function (well, +two, if you consider loading and saving) that will work for all your fusion +`__map__`s. Example: + + struct saver + { + template + void operator()(Pair const& data) const + { + some_archive << data.second; + } + }; + + template + void save(Stuff const& stuff) + { + __for_each__(stuff, saver()); + } + +The `save` function is generic and will work for all types of `stuff` +regardless if it is a `person`, a `dog` or a whole `alternate_universe`. + +[heading Tip of the Iceberg] + +And... we've barely scratched the surface! You can compose and expand the +data structures, remove elements from the structures, find specific data +types, query the elements, filter out types for inspection, transform data +structures, etc. What you've seen is just the tip of the iceberg. + +[endsect] + diff --git a/doc/references.qbk b/doc/references.qbk new file mode 100644 index 00000000..840e83a3 --- /dev/null +++ b/doc/references.qbk @@ -0,0 +1,19 @@ +[section References] + +# [@http://boost.org/libs/iterator/doc/new-iter-concepts.html New Iterator Concepts], + David Abrahams, Jeremy Siek, Thomas Witt, 2004-11-01. +# [@http://boost.org/libs/tuple/doc/tuple_users_guide.html The Boost Tuple Library], + Jaakko Jarvi, 2001. +# [@http://www.boost.org/libs/spirit/ Spirit Parser Library], + Joel de Guzman, 2001-2006. +# [@http://www.boost.org/libs/mpl/ The Boost MPL Library], + Aleksey Gurtovoy and David Abrahams, 2002-2004. +# [@http://www.boost.org/doc/html/array.html Boost Array], + Nicolai Josuttis, 2002-2004. +# [@http://www.sgi.com/tech/stl/ Standard Template Library Programmer's Guide], + Hewlett-Packard Company, 1994. +# [@http://www.boost.org/doc/html/ref.html Boost.Ref], + Jaakko Jarvi, Peter Dimov, Douglas Gregor, Dave Abrahams, 1999-2002. + +[endsect] + diff --git a/doc/sequences.qbk b/doc/sequences.qbk new file mode 100644 index 00000000..627ed680 --- /dev/null +++ b/doc/sequences.qbk @@ -0,0 +1,3804 @@ +[section Sequences] + +Like __mpl__, the Sequence is a fundamental concept in Fusion. A Sequence +may or may not actually store or contain data. __containers__ are sequences +that hold data. __views__, on the other hand, are sequences that do not +store any data. Instead, they are proxies that impart an alternative +presentation over another sequence. All models of Sequence have an +associated __iterator__ type that can be used to iterate through the +Sequence's elements. + +[heading Header] + + #include + +[section Concepts] + +Fusion Sequences are organized into a hierarchy of concepts. + +[heading Traversal] + +Fusion's sequence traversal related concepts parallel Fusion's +__iterator_concepts__. __forward_sequence__ is the most basic concept. +__bidirectional_sequence__ is a refinement of __forward_sequence__. +__random_access_sequence__ is a refinement of __bidirectional_sequence__. +These concepts pertain to sequence traversal. + +[heading Associativity] + +The __associative_sequence__ concept is orthogonal to traversal. An Associative +Sequence allows efficient retrieval of elements based on keys. + +[section Forward Sequence] + +[heading Description] + +A Forward Sequence is a Sequence whose elements are arranged in a definite +order. The ordering is guaranteed not to change from iteration to +iteration. The requirement of a definite ordering allows the definition of +element-by-element equality (if the container's element type is Equality +Comparable) and of lexicographical ordering (if the container's element +type is LessThan Comparable). + +[variablelist Notation + [[`s`] [A Forward Sequence]] + [[`S`] [A Forward Sequence type]] + [[`o`] [An arbitrary object]] + [[`e`] [A Sequence element]] +] + +[heading Valid Expressions] + +For any Forward Sequence the following expressions must be valid: + +[table + [[Expression] [Return type] [Type Requirements] [Runtime Complexity]] + [[`__begin__(s)`] [__forward_iterator__] [] [Constant]] + [[`__end__(s)`] [__forward_iterator__] [] [Constant]] + [[`__size__(s)`] [__mpl_integral_constant__. + Convertible to int.] [] [Constant]] + [[`__empty__(s)`] [__mpl_boolean_constant__. + Convertible to bool.] [] [Constant]] + [[`__front__(s)`] [Any type] [] [Constant]] + [[`__front__(s) = o`] [Any type] [`s` is mutable and + `e = o`, where `e` + is the first element + in the sequence, is + a valid expression.] [Constant]] +] + +[heading Result Type Expressions] + +[table + [[Expression] [Compile Time Complexity]] + [[`__result_of_begin__::type`] [Amortized constant time]] + [[`__result_of_end__::type`] [Amortized constant time]] + [[`__result_of_size__::type`] [Unspecified]] + [[`__result_of_empty__::type`] [Constant time]] + [[`__result_of_front__::type`] [Amortized constant time]] +] + +[heading Expression Semantics] + +[table + [[Expression] [Semantics]] + [[`__begin__(s)`] [An iterator to the first element of the sequence; see __begin__.]] + [[`__end__(s)`] [A past-the-end iterator to the sequence; see __end__.]] + [[`__size__(s)`] [The size of the sequence; see __size__.]] + [[`__empty__(s)`] [A boolean Integral Constant `c` such that + `c::value == true` if and only if the sequence + is empty; see __empty__.]] + [[`__front__(s)`] [The first element in the sequence; see __front__.]] +] + +[heading Invariants] + +For any Forward Sequence s the following invariants always hold: + +* `[__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. +* `__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. + +[heading Models] + +* __std_pair__ +* __boost_array__ +* __vector__ +* __cons__ +* __list__ +* __set__ +* __map__ +* __single_view__ +* __filter_view__ +* __iterator_range__ +* __joint_view__ +* __transform_view__ +* __reverse_view__ + +[endsect] + +[section Bidirectional Sequence] + +[heading Description] + +A Bidirectional Sequence is a __forward_sequence__ whose iterators model +__bidirectional_iterator__. + +[heading Refinement of] + +__forward_sequence__ + +[variablelist Notation + [[`s`] [A Forward Sequence]] + [[`S`] [A Forward Sequence type]] + [[`o`] [An arbitrary object]] + [[`e`] [A Sequence element]] +] + +[heading Valid Expressions] + +In addition to the requirements defined in __forward_sequence__, for any +Bidirectional Sequence the following must be met: + +[table + [[Expression] [Return type] [Type Requirements] [Runtime Complexity]] + [[`__begin__(s)`] [__bidirectional_iterator__] [] [Constant]] + [[`__end__(s)`] [__bidirectional_iterator__] [] [Constant]] + [[`__back__(s)`] [Any type] [] [Constant]] + [[`__back__(s) = o`] [Any type] [`s` is mutable and + `e = o`, where `e` + is the first element + in the sequence, is + a valid expression.] [Constant]] +] + +[heading Result Type Expressions] + +[table + [[Expression] [Compile Time Complexity]] + [[`__result_of_begin__::type`] [Amortized constant time]] + [[`__result_of_end__::type`] [Amortized constant time]] + [[`__result_of_back__::type`] [Amortized constant time]] +] + +[heading Expression Semantics] + +The semantics of an expression are defined only where they differ from, or +are not defined in __forward_sequence__. + +[table + [[Expression] [Semantics]] + [[`__back__(s)`] [The last element in the sequence; see __back__.]] +] + +[heading Models] + +* __std_pair__ +* __boost_array__ +* __vector__ +* __iterator_range__ (where adapted sequence is a Bidirectional Sequence) +* __transform_view__ (where adapted sequence is a Bidirectional Sequence) +* __reverse_view__ + +[endsect] + +[section Random Access Sequence] + +[heading Description] + +A Random Access Sequence is a __bidirectional_sequence__ whose iterators +model __random_access_iterator__. It guarantees constant time access to +arbitrary sequence elements. + +[heading Refinement of] + +__bidirectional_sequence__ + +[variablelist Notation + [[`s`] [A Random Access Sequence]] + [[`S`] [A Random Access Sequence type]] + [[`N`] [An integral constant]] + [[`o`] [An arbitrary object]] + [[`e`] [A Sequence element]] +] + +[heading Valid Expressions] + +In addition to the requirements defined in __bidirectional_sequence__, for +any Random Access Sequence the following must be met: + +[table + [[Expression] [Return type] [Type Requirements] [Runtime Complexity]] + [[`__begin__(s)`] [__random_access_iterator__] [] [Constant]] + [[`__end__(s)`] [__random_access_iterator__] [] [Constant]] + [[`__at__(s)`] [Any type] [] [Constant]] + [[`__at__(s) = o`] [Any type] [`s` is mutable and + `e = o`, where `e` + is the first element + in the sequence, is + a valid expression.] [Constant]] +] + +[heading Result Type Expressions] + +[table + [[Expression] [Compile Time Complexity]] + [[`__result_of_begin__::type`] [Amortized constant time]] + [[`__result_of_end__::type`] [Amortized constant time]] + [[`__result_of_at__::type`] [Amortized constant time]] + [[`__result_of_value_at__::type`] [Amortized constant time]] +] + +[blurb __note__ `__result_of_at__` returns the actual type returned by +`__at__(s)`. In most cases, this is a reference. Hence, there is no way to +know the exact element type using `__result_of_at__`.The element at `N` +may actually be a reference to begin with. For this purpose, you can use +`__result_of_value_at__`.] + +[heading Expression Semantics] + +The semantics of an expression are defined only where they differ from, or +are not defined in __bidirectional_sequence__. + +[table + [[Expression] [Semantics]] + [[`__at__(s)`] [The Nth element from the beginning of the sequence; see __at__.]] +] + +[heading Models] + +* __std_pair__ +* __boost_array__ +* __vector__ +* __iterator_range__ (where adapted sequence is a Random Access Sequence) +* __transform_view__ (where adapted sequence is a Random Access Sequence) +* __reverse_view__ + +[endsect] + +[section Associative Sequence] + +[heading Description] + +An Associative Sequence allows efficient retrieval of elements based on keys. +Like associative sequences in __mpl__, and unlike associative containers in +__stl__, Fusion associative sequences have no implied ordering relation. +Instead, type identity is used to impose an equivalence relation on keys, and +the order in which sequence elements are traversed during iteration is left +unspecified. In addition, unlike __stl__, Associative Sequences have mutable +iterators. This is due to the fact that there is no associated ordering relation +and the runtime value of the keys themselves do not have any effect on the +associativity of the sequence. + + +[variablelist Notation + [[`s`] [An Associative Sequence]] + [[`S`] [An Associative Sequence type]] + [[`K`] [An arbitrary /key/ type]] + [[`o`] [An arbitrary object]] + [[`e`] [A Sequence element]] +] + +[heading Valid Expressions] + +For any Associative Sequence the following expressions must be valid: + +[table + [[Expression] [Return type] [Type Requirements] [Runtime Complexity]] + [[`__has_key__(s)`] [__mpl_boolean_constant__. + Convertible to bool.] [] [Constant]] + [[`__at_key__(s)`] [Any type] [] [Constant]] + [[`__at_key__(s) = o`] [Any type] [`s` is mutable and + `e = o`, where `e` + is the first element + in the sequence, is + a valid expression.] [Constant]] +] + +[heading Result Type Expressions] + +[table + [[Expression] [Compile Time Complexity]] + [[`__result_of_has_key__::type`] [Amortized constant time]] + [[`__result_of_at_key__::type`] [Amortized constant time]] + [[`__result_of_value_at_key__::type`] [Amortized constant time]] +] + +[blurb __note__ `__result_of_at_key__` returns the actual type returned +by `__at_key__(s)`. In most cases, this is a reference. Hence, there is no +way to know the exact element type using `__result_of_at_key__`.The +element at `K` may actually be a reference to begin with. For this purpose, +you can use `__result_of_value_at_key__`.] + +[heading Expression Semantics] + +[table + [[Expression] [Semantics]] + [[`__has_key__(s)`] [A boolean Integral Constant `c` such that + `c::value == true` if and only if there is + one or more elements with the key `k` in `s`; + see __has_key__.]] + [[`__at_key__(s)`] [The element associated with the key + `K` in the sequence `s`; see __at__.]] +] + +[heading Models] + +* __set__ +* __map__ + +[endsect] + +[endsect] + +[section Containers] + +Fusion provides a few predefined sequences out of the box. These +/containers/ actually hold heterogenously typed data; unlike +__views__. These containers are more or less counterparts of those in __stl__. + +[heading Header] + + #include + +[section vector] + +[heading Description] + +`vector` is a __random_access_sequence__ of heterogenous typed +data structured as a simple `struct` where each element is held +as a member variable. `vector` is the simplest of the Fusion +sequence container, and in many cases the most efficient. + +[heading Header] + + #include + #include + + // numbered forms + #include + #include + #include + #include + #include + +[heading Synopsis] + +[*Numbered forms] + + template <> + struct vector0; + + template + struct vector1; + + template + struct vector2; + + template + struct vector3; + + ... + + template + struct vectorN; + +[*Variadic form] + + template < + typename T0 = __unspecified__ + , typename T1 = __unspecified__ + , typename T2 = __unspecified__ + ... + , typename TN = __unspecified__ + > + struct vector; + +The numbered form accepts the exact number of elements. Example: + + vector3 + +The variadic form accepts `0` to `FUSION_MAX_VECTOR_SIZE` elements, where +`FUSION_MAX_VECTOR_SIZE` is a user definable predefined maximum that +defaults to `10`. Example: + + vector + +You may define the preprocessor constant `FUSION_MAX_VECTOR_SIZE` before +including any Fusion header to change the default. Example: + + #define FUSION_MAX_VECTOR_SIZE 20 + +[heading Template parameters] + +[table + [[Parameter] [Description] [Default]] + [[`T0`...`TN`] [Element types] [['unspecified]]] +] + +[heading Model of] + +* __random_access_sequence__ + +[variablelist Notation + [[`v`] [Instance of `vector`]] + [[`V`] [A `vector` type]] + [[`e0`...`en`] [Heterogeneous values]] + [[`s`] [A __forward_sequence__]] +] + +[heading Expression Semantics] + +Semantics of an expression is defined only where it differs from, or is not +defined in __random_access_sequence__. + +[table + [[Expression] [Semantics]] + [[`V()`] [Creates a vector with default constructed elements.]] + [[`V(e0, e1,... en)`] [Creates a vector with elements `e0`...`en`.]] + [[`V(s)`] [Copy constructs a vector from a __forward_sequence__, `s`.]] + [[`v = s`] [Assigns to a vector, `v`, from a __forward_sequence__, `s`.]] +] + +[heading Example] + + vector v(12, 5.5f); + std::cout << __at_c__<0>(v) << std::endl; + std::cout << __at_c__<1>(v) << std::endl; + +[endsect] + +[section cons] + +[heading Description] + +`cons` is a simple __forward_sequence__. It is a lisp style recursive list +structure where `car` is the /head/ and `cdr` is the /tail/: usually +another cons structure or `nil`: the empty list. Fusion's __list__ is built +on top of this more primitive data structure. It is more efficient than +__vector__ when the target sequence is constructed piecemeal (a data at a +time). The runtime cost of access to each element is peculiarly constant +(see __recursive_inline__). + +[heading Header] + + #include + +[heading Synopsis] + + template + struct cons; + +[heading Template parameters] + +[table + [[Parameter] [Description] [Default]] + [[`Car`] [Head type] []] + [[`Cdr`] [Tail type] [`nil`]] +] + +[heading Model of] + +* __forward_sequence__ + +[variablelist Notation + [[`nil`] [An empty `cons`]] + [[`C`] [A `cons` type]] + [[`l`, `l2`] [Instances of `cons`]] + [[`car`] [An arbitrary data]] + [[`cdr`] [Another `cons` list]] + [[`s`] [A __forward_sequence__]] + [[`N`] [An Integral Constant]] +] + +[heading Expression Semantics] + +Semantics of an expression is defined only where it differs from, or is not +defined in __forward_sequence__. + +[table + [[Expression] [Semantics]] + [[`nil()`] [Creates an empty list.]] + [[`C()`] [Creates a cons with default constructed elements.]] + [[`C(car)`] [Creates a cons with `car` head and default constructed tail.]] + [[`C(car, cdr)`] [Creates a cons with `car` head and `cdr` tail.]] + [[`C(s)`] [Copy constructs a cons from a __forward_sequence__, `s`.]] + [[`l = s`] [Assigns to a cons, `l`, from a __forward_sequence__, `s`.]] + [[`__at__(l)`] [The Nth element from the beginning of the sequence; see __at__.]] +] + +[blurb __note__ `__at__(l)` is provided for convenience and compatibility +with the original __tuple__ library, despite `cons` being a +__forward_sequence__ only (`at` is supposed to be a +__random_access_sequence__ requirement). The runtime complexity of __at__ is +constant (see __recursive_inline__).] + +[heading Example] + + cons > l(12, cons(5.5f)); + std::cout << __at__<0>(l) << std::endl; + std::cout << __at__<1>(l) << std::endl; + +[endsect] + +[section list] + +[heading Description] + +`list` is a __forward_sequence__ of heterogenous typed data built on top of +__cons__. It is more efficient than __vector__ when the target sequence is +constructed piecemeal (a data at a time). The runtime cost of access to +each element is peculiarly constant (see __recursive_inline__). + +[heading Header] + + #include + #include + +[heading Synopsis] + + template < + typename T0 = __unspecified__ + , typename T1 = __unspecified__ + , typename T2 = __unspecified__ + ... + , typename TN = __unspecified__ + > + struct list; + +The variadic class interface accepts `0` to `FUSION_MAX_LIST_SIZE` +elements, where `FUSION_MAX_LIST_SIZE` is a user definable predefined +maximum that defaults to `10`. Example: + + list + +You may define the preprocessor constant `FUSION_MAX_LIST_SIZE` before +including any Fusion header to change the default. Example: + + #define FUSION_MAX_LIST_SIZE 20 + +[heading Template parameters] + +[table + [[Parameter] [Description] [Default]] + [[`T0`...`TN`] [Element types] [['unspecified-type]]] +] + +[heading Model of] + +* __forward_sequence__ + +[variablelist Notation + [[`L`] [A `list` type]] + [[`l`] [An instance of `list`]] + [[`e0`...`en`] [Heterogeneous values]] + [[`s`] [A __forward_sequence__]] + [[`N`] [An Integral Constant]] +] + +[heading Expression Semantics] + +Semantics of an expression is defined only where it differs from, or is not +defined in __forward_sequence__. + +[table + [[Expression] [Semantics]] + [[`L()`] [Creates a list with default constructed elements.]] + [[`L(e0, e1,... en)`] [Creates a list with elements `e0`...`en`.]] + [[`L(s)`] [Copy constructs a list from a __forward_sequence__, `s`.]] + [[`l = s`] [Assigns to a list, `l`, from a __forward_sequence__, `s`.]] + [[`__at__(l)`] [The Nth element from the beginning of the sequence; see __at__.]] +] + +[blurb __note__ `__at__(l)` is provided for convenience and compatibility +with the original __tuple__ library, despite `list` being a +__forward_sequence__ only (__at__ is supposed to be a +__random_access_sequence__ requirement). The runtime complexity of __at__ is +constant (see __recursive_inline__).] + +[heading Example] + + list l(12, 5.5f); + std::cout << __at__<0>(l) << std::endl; + std::cout << __at__<1>(l) << std::endl; + +[endsect] + +[section set] + +[heading Description] + +set is an __associative_sequence__ of heteregenous typed data elements. +Type identity is used to impose an equivalence relation on keys. The +element's type is its key. A set may contain at most one element for each +key. Membership testing and element key lookup has constant runtime +complexity (see __overloaded_functions__). + +[heading Header] + + #include + +[heading Synopsis] + + template < + typename T0 = __unspecified__ + , typename T1 = __unspecified__ + , typename T2 = __unspecified__ + ... + , typename TN = __unspecified__ + > + struct set; + +The variadic class interface accepts `0` to `FUSION_MAX_SET_SIZE` elements, +where `FUSION_MAX_SET_SIZE` is a user definable predefined maximum that +defaults to `10`. Example: + + set + +You may define the preprocessor constant `FUSION_MAX_SET_SIZE` before +including any Fusion header to change the default. Example: + + #define FUSION_MAX_SET_SIZE 20 + +[heading Template parameters] + +[table + [[Parameter] [Description] [Default]] + [[`T0`...`TN`] [Element types] [['unspecified-type]]] +] + +[heading Model of] + +* __associative_sequence__ +* __forward_sequence__ + +[variablelist Notation + [[`S`] [A `set` type]] + [[`s`] [An instance of `set`]] + [[`e0`...`en`] [Heterogeneous values]] + [[`fs`] [A __forward_sequence__]] +] + +[heading Expression Semantics] + +Semantics of an expression is defined only where it differs from, or is not +defined in __random_access_sequence__ and __associative_sequence__. + +[table + [[Expression] [Semantics]] + [[`S()`] [Creates a set with default constructed elements.]] + [[`S(e0, e1,... en)`] [Creates a set with elements `e0`...`en`.]] + [[`S(fs)`] [Copy constructs a set from a __forward_sequence__ `fs`.]] + [[`s = fs`] [Assigns to a set, `s`, from a __forward_sequence__ `fs`.]] +] + +[heading Example] + + typedef set S; + S s(12, 5.5f); + std::cout << __at_key__(s) << std::endl; + std::cout << __at_key__(s) << std::endl; + std::cout << __result_of_has_key__::value << std::endl; + +[endsect] + +[section map] + +[heading Description] + +map is an __associative_sequence__ of heteregenous typed data elements. +Each element is a key/data pair (see __fusion_pair__) where the key has no +data (type only). Type identity is used to impose an equivalence relation +on keys. A map may contain at most one element for each key. Membership +testing and element key lookup has constant runtime complexity (see +__overloaded_functions__). + +[heading Header] + + #include + +[heading Synopsis] + + template < + typename T0 = __unspecified__ + , typename T1 = __unspecified__ + , typename T2 = __unspecified__ + ... + , typename TN = __unspecified__ + > + struct map; + +The variadic class interface accepts `0` to `FUSION_MAX_MAP_SIZE` elements, +where `FUSION_MAX_MAP_SIZE` is a user definable predefined maximum that +defaults to `10`. Example: + + map<__pair__, __pair__, __pair__ > + +You may define the preprocessor constant `FUSION_MAX_MAP_SIZE` before +including any Fusion header to change the default. Example: + + #define FUSION_MAX_MAP_SIZE 20 + +[heading Template parameters] + +[table + [[Parameter] [Description] [Default]] + [[`T0`...`TN`] [Element types] [['unspecified-type]]] +] + +[heading Model of] + +* __associative_sequence__ +* __forward_sequence__ + +[variablelist Notation + [[`M`] [A `map` type]] + [[`m`] [An instance of `map`]] + [[`e0`...`en`] [Heterogeneous key/value pairs (see __fusion_pair__)]] + [[`s`] [A __forward_sequence__]] +] + +[heading Expression Semantics] + +Semantics of an expression is defined only where it differs from, or is not +defined in __random_access_sequence__ and __associative_sequence__. + +[table + [[Expression] [Semantics]] + [[`M()`] [Creates a map with default constructed elements.]] + [[`M(e0, e1,... en)`] [Creates a map with element pairs `e0`...`en`.]] + [[`M(s)`] [Copy constructs a map from a __forward_sequence__ `s`.]] + [[`m = s`] [Assigns to a map, `m`, from a __forward_sequence__ `s`.]] +] + +[heading Example] + + typedef map< + __pair__ + , __pair__ > + map_type; + + map_type m( + __fusion_make_pair__('X') + , __fusion_make_pair__("Men")); + + std::cout << __at__(m) << std::endl; + std::cout << __at__(m) << std::endl; + +[endsect] + +[endsect] + +[section Views] + +Views are sequences that do not actually contain data, but instead impart +an alternative presentation over the data from one or more underlying +sequences. Views are proxies. They provide an efficient yet purely +functional way to work on potentially expensive sequence operations. Views +are inherently lazy. Their elements are only computed on demand only when +the elements of the underlying sequence(s) are actually accessed. Views' +lazy nature make them very cheap to copy and be passed around by value. + +[heading Header] + + #include + +[section single_view] + +`single_view` is a view into a value as a single element sequence. + +[heading Header] + + #include + +[heading Synopsis] + + template + struct single_view; + +[heading Template parameters] + +[table + [[Parameter] [Description] [Default]] + [[`T`] [Any type] []] +] + +[heading Model of] + +* __forward_sequence__ + +[variablelist Notation + [[`S`] [A `single_view` type]] + [[`s`, `s2`] [Instances of `single_view`]] + [[`x`] [An instance of `T`]] +] + +[heading Expression Semantics] + +Semantics of an expression is defined only where it differs from, or is not +defined in __forward_sequence__. + +[table + [[Expression] [Semantics]] + [[`S(x)`] [Creates a `single_view` from `x`.]] + [[`S(s)`] [Copy constructs a `single_view` from another `single_view`, `s`.]] + [[`s = s2`] [Assigns to a `single_view`, `s`, from another `single_view`, `s2`.]] +] + +[heading Example] + + single_view view(3); + std::cout << view << std::endl; + +[endsect] + +[section filter_view] + +[heading Description] + +`filter_view` is a view into a subset of its underlying sequence's elements +satisfying a given predicate (an __mpl__ metafunction). The `filter_view` +presents only those elements for which its predicate evaluates to +`mpl::true_`. + +[heading Header] + + #include + +[heading Synopsis] + + template + struct filter_view; + +[heading Template parameters] + +[table + [[Parameter] [Description] [Default]] + [[`Sequence`] [A __forward_sequence__] []] + [[`Pred`] [Unary Metafunction + returning an `mpl::bool_`] []] +] + +[heading Model of] + +* __forward_sequence__ + +[variablelist Notation + [[`F`] [A `filter_view` type]] + [[`f`, `f2`] [Instances of `filter_view`]] + [[`s`] [A __forward_sequence__]] +] + +[heading Expression Semantics] + +Semantics of an expression is defined only where it differs from, or is not +defined in __forward_sequence__. + +[table + [[Expression] [Semantics]] + [[`F(s)`] [Creates a `filter_view` given a sequence, `s`.]] + [[`F(f)`] [Copy constructs a `filter_view` from another `filter_view`, `f`.]] + [[`f = f2`] [Assigns to a `filter_view`, `f`, from another `filter_view`, `f2`.]] +] + +[heading Example] + + using boost::mpl::_; + using boost::mpl::not_; + using boost::is_class; + + typedef __vector__ vector_type; + + vector_type v("a-string", '@', 987654, true, 6.6); + filter_view > > view(v); + std::cout << view << std::endl; + +[endsect] + +[section iterator_range] + +[heading Description] + +`iterator_range` presents a sub-range of its underlying sequence delimited +by a pair of iterators. + +[heading Header] + + #include + +[heading Synopsis] + + template + struct iterator_range; + +[heading Template parameters] + +[table + [[Parameter] [Description] [Default]] + [[`First`] [A fusion __iterator__] []] + [[`Last`] [A fusion __iterator__] []] +] + +[heading Model of] + +* __forward_sequence__ + +[variablelist Notation + [[`IR`] [An `iterator_range` type]] + [[`f`] [An instance of `First`]] + [[`l`] [An instance of `Last`]] + [[`ir`, `ir2`] [Instances of `iterator_range`]] +] + +[heading Expression Semantics] + +Semantics of an expression is defined only where it differs from, or is not +defined in __forward_sequence__. + +[table + [[Expression] [Semantics]] + [[`IR(f, l)`] [Creates an `iterator_range` given iterators, `f` and `l`.]] + [[`IR(ir)`] [Copy constructs an `iterator_range` from another `iterator_range`, `ir`.]] + [[`ir = ir2`] [Assigns to a `iterator_range`, `ir`, from another `iterator_range`, `ir2`.]] +] + +[heading Example] + + char const* s = "Ruby"; + typedef __vector__ vector_type; + vector_type vec(1, 'x', 3.3, s); + + typedef __result_of_begin__::type A; + typedef __result_of_end__::type B; + typedef __result_of_next__::type C; + typedef __result_of_prior__::type D; + + C c(vec); + D d(vec); + + iterator_range range(c, d); + std::cout << range << std::endl; + +[endsect] + +[section joint_view] + +[heading Description] + +`joint_view` presents a view which is a concatenation of two sequences. + +[heading Header] + + #include + +[heading Synopsis] + + template + struct joint_view; + +[heading Template parameters] + +[table + [[Parameter] [Description] [Default]] + [[`Sequence1`] [A __forward_sequence__] []] + [[`Sequence2`] [A __forward_sequence__] []] +] + +[heading Model of] + +* __forward_sequence__ + +[variablelist Notation + [[`JV`] [A `joint_view` type]] + [[`s1`] [An instance of `Sequence1`]] + [[`s2`] [An instance of `Sequence2`]] + [[`jv`, `jv2`] [Instances of `joint_view`]] +] + +[heading Expression Semantics] + +Semantics of an expression is defined only where it differs from, or is not +defined in __forward_sequence__. + +[table + [[Expression] [Semantics]] + [[`JV(s1, s2)`] [Creates a `joint_view` given sequences, `s1` and `s2`.]] + [[`JV(jv)`] [Copy constructs a `joint_view` from another `joint_view`, `jv`.]] + [[`jv = jv2`] [Assigns to a `joint_view`, `jv`, from another `joint_view`, `jv2`.]] +] + +[heading Example] + + __vector__ v1(3, 'x'); + __vector__ v2("hello", 123); + joint_view< + __vector__ + , __vector__ + > view(v1, v2); + std::cout << view << std::endl; + +[endsect] + +[section zip_view] + +[heading Description] + +`zip_view` presents a view which iterates over a collection of __sequence__s in parallel. A `zip_view` +is constructed from a __sequence__ of references to the component __sequence__s. + +[heading Header] + + #include + +[heading Synopsis] + + template + struct zip_view; + +[heading Template parameters] + +[table + [[Parameter] [Description] [Default]] + [[`Sequences`] [A __forward_sequence__ of references to other Fusion __sequence__s] []] +] + +[heading Model of] + +* __forward_sequence__ + +[variablelist Notation + [[`ZV`] [A `joint_view` type]] + [[`s`] [An instance of `Sequences`]] + [[`zv1`, `zv2`] [Instances of `ZV`]] +] + +[heading Expression Semantics] + +Semantics of an expression is defined only where it differs from, or is not +defined in __forward_sequence__. + +[table + [[Expression] [Semantics]] + [[`ZV(s)`] [Creates a `zip_view` given a sequence of references to the component __sequence__s.]] + [[`ZV(zv1)`] [Copy constructs a `zip_view` from another `zip_view`, `zv`.]] + [[`zv1 = zv2`] [Assigns to a `zip_view`, `zv`, from another `zip_view`, `zv2`.]] +] + +[heading Example] + typedef __vector__ vec1; + typedef __vector__ vec2; + vec1 v1(1,2); + vec2 v2('a','b'); + typedef __vector__ sequences; + std::cout << zip_view(sequences(v1, v2)) << std::endl; // ((1 a) (2 b)) + +[endsect] + +[section transform_view] + +`transform_view` presents a transformed view of its underlying sequence +given a unary __poly_func_obj__. The `transform_view` inherits the +traversal characteristics (see __traversal_concept__) of its underlying +sequence. + +[heading Header] + + #include + +[heading Synopsis] + +[*Unary Version] + + template + struct transform_view; + +[*Binary Version] + + template + struct transform_view; + +[heading Template parameters] + +[table + [[Parameter] [Description] [Default]] + [[`Sequence`] [A __forward_sequence__] []] + [[`Sequence1`] [A __forward_sequence__] []] + [[`Sequence2`] [A __forward_sequence__] []] + [[`F`] [A __poly_func_obj__] []] +] + +[heading Model of] + +* __forward_sequence__, __bidirectional_sequence__ or +__random_access_sequence__ depending on the traversal characteristics (see +__traversal_concept__) of its underlying sequence. + +[variablelist Notation + [[`TV`] [A `transform_view` type]] + [[`BTV`] [A binary `transform_view` type]] + [[`UTV`] [A unary `transform_view` type]] + [[`f`] [An instance of `F`]] + [[`s`] [An instance of `Sequence`]] + [[`s1`] [An instance of `Sequence1`]] + [[`s2`] [An instance of `Sequence2`]] + [[`tv`, `tv2`] [Instances of `transform_view`]] +] + +[heading Expression Semantics] + +Semantics of an expression is defined only where it differs from, or is not +defined in __forward_sequence__, __bidirectional_sequence__ or +__random_access_sequence__ depending on the traversal characteristics (see +__traversal_concept__) of its underlying sequence. + +[table + [[Expression] [Semantics]] + [[`UTV(s, f)`] [Creates a unary `transform_view` given sequence, + `s` and unary __poly_func_obj__, `f`.]] + [[`BTV(s1, s2, f)`] [Creates a binary `transform_view` given sequences, `s1` and `s2` + and unary __poly_func_obj__, `f`.]] + [[`TV(tv)`] [Copy constructs a `transform_view` from another `transform_view`, `tv`.]] + [[`tv = tv2`] [Assigns to a `transform_view`, `tv`, from another `transform_view`, `tv2`.]] +] + +[heading Example] + + struct square + { + template + struct result + { + typedef T type; + }; + + template + T operator()(T x) const + { + return x * x; + } + }; + + typedef __vector__ vector_type; + vector_type vec(2, 5, 3.3); + + transform_view transform(vec, square()); + std::cout << transform << std::endl; + +[endsect] + +[section reverse_view] + +`reverse_view` presents a reversed view of underlying sequence. The first +element will be its last and the last element will be its first. + +[heading Header] + + #include + +[heading Synopsis] + + template + struct reverse_view; + +[heading Template parameters] + +[table + [[Parameter] [Description] [Default]] + [[`Sequence`] [A __bidirectional_sequence__] []] +] + +[heading Model of] + +* __bidirectional_sequence__ + +[variablelist Notation + [[`RV`] [A `reverse_view` type]] + [[`s`] [An instance of `Sequence`]] + [[`rv`, `rv2`] [Instances of `reverse_view`]] +] + +[heading Expression Semantics] + +Semantics of an expression is defined only where it differs from, or is not +defined in __bidirectional_sequence__. + +[table + [[Expression] [Semantics]] + [[`RV(s)`] [Creates a unary `reverse_view` given sequence, `s`.]] + [[`RV(rv)`] [Copy constructs a `reverse_view` from another `reverse_view`, `rv`.]] + [[`rv = rv2`] [Assigns to a `reverse_view`, `rv`, from another `reverse_view`, `rv2`.]] +] + +[heading Example] + + typedef __vector__ vector_type; + vector_type vec(2, 5, 3.3); + + reverse_view reverse(vec); + std::cout << reverse << std::endl; + +[endsect] + +[endsect] + +[section Adapted] + +Fusion provides a couple of adapters for other sequences such as +`std::pair`, __mpl__ sequences, and `boost::array`. These adapters are +written using Fusion's non-intrusive __extension__ mechanism. If you wish +to use these sequences with fusion, simply include the necessary files and +they will be regarded as first-class, fully conforming fusion sequences +[footnote Fusion sequences may also be adapted as fully conforming __mpl__ +sequences (see __intrinsics__). That way, we can have 2-way adaptation to +and from __mpl__ and Fusion]. + +[heading Header] + + #include + +[section std::pair] + +This module provides adapters for `std::pair`. Including the module header +makes `std::pair` a fully conforming __random_access_sequence__. + +[heading Header] + + #include + +[heading Model of] + +* __random_access_sequence__ + +[heading Example] + + std::pair p(123, "Hola!!!"); + std::cout << __at_c__<0>(p) << std::endl; + std::cout << __at_c__<1>(p) << std::endl; + std::cout << p << std::endl; + +[heading See also] + +__std_pair_doc__, __tr1_tuple_pair__ + +[endsect] + +[section mpl sequence] + +This module provides adapters for __mpl__ sequences. Including the module +header makes all __mpl__ sequences fully conforming fusion sequences. + +[heading Header] + + #include + +[heading Model of] + +* __forward_sequence__ (If the __mpl__ sequence is a forward sequence.) +* __bidirectional_sequence__ (If the __mpl__ sequence is a bidirectional sequence.) +* __random_access_sequence__ (If the __mpl__ sequence is a random access sequence.) + +[heading Example] + + mpl::vector_c vec_c; + fusion::vector2 v(vec_c); + std::cout << __at_c__<0>(v) << std::endl; + std::cout << __at_c__<1>(v) << std::endl; + + v = mpl::vector_c(); + std::cout << __at_c__<0>(v) << std::endl; + std::cout << __at_c__<1>(v) << std::endl; + +[heading See also] + +__mpl__ + +[endsect] + +[section boost::array] + +This module provides adapters for `boost::array`. Including the module +header makes `boost::array` a fully conforming __random_access_sequence__. + +[heading Header] + + #include + +[heading Model of] + +* __random_access_sequence__ + +[heading Example] + + boost::array arr = {{1,2,3}}; + + std::cout << *__begin__(arr) << std::endl; + std::cout << *__next__(__begin__(arr)) << std::endl; + std::cout << *__advance_c__<2>(__begin__(arr)) << std::endl; + std::cout << *__prior__(__end__(arr)) << std::endl; + std::cout << __at_c__<2>(arr) << std::endl; + +[heading See also] + +__boost_array_library__ + +[endsect] + +[endsect] + +[section Intrinsics] + +Intrinsics form the essential interface of Fusion __sequence__s. __stl__ +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__[footnote In practice, many of intrinsic functions +have default implementations that will work in majority of cases]. + +[heading Header] + + #include + +[section Functions] + +[section begin] + +[heading Description] + +Returns an iterator pointing to the first element in the sequence. + +[heading Synopsis] + + template + typename __result_of_begin__::type + begin(Sequence& seq); + + template + typename __result_of_begin__::type + begin(Sequence const& seq); + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`seq`] [Model of __forward_sequence__] [The sequence we wish to get an iterator from.]] +] + +[heading Expression Semantics] + + begin(seq); + +[*Return type]: __forward_iterator__ if `seq` is a __forward_sequence__ +else, __bidirectional_iterator__ if `seq` is a __bidirectional_sequence__ +else, __random_access_iterator__ if `seq` is a __random_access_sequence__. + +[*Semantics]: Returns an iterator pointing to the first element in the sequence. + +[heading Header] + + #include + +[heading Example] + + __vector__ v(1, 2, 3); + assert(__deref__(begin(v)) == 1); + +[endsect] + +[section end] + +[heading Description] + +Returns an iterator pointing to one element past the end of the sequence. + +[heading Synopsis] + + template + typename __result_of_end__::type + end(Sequence& seq); + + template + typename __result_of_end__::type + end(Sequence const& seq); + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`seq`] [Model of __forward_sequence__] [The sequence we wish to get an iterator from.]] +] + +[heading Expression Semantics] + + end(seq); + +[*Return type]: __forward_iterator__ if `seq` is a __forward_sequence__ +else, __bidirectional_iterator__ if `seq` is a __bidirectional_sequence__ +else, __random_access_iterator__ if `seq` is a __random_access_sequence__. + +[*Semantics]: Returns an iterator pointing to one element past the end of +the sequence. + +[heading Header] + + #include + +[heading Example] + + __vector__ v(1, 2, 3); + assert(__deref__(__prior__(end(v))) == 3); + +[endsect] + +[section empty] + +[heading Description] + +Returns a type convertible to `bool` that evaluates to `true` if the +sequence is empty, else, evaluates to `false`. + +[heading Synopsis] + + template + typename __result_of_empty__::type + empty(Sequence const& seq); + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`seq`] [Model of __forward_sequence__] [The sequence we wish to investigate.]] +] + +[heading Expression Semantics] + + empty(seq); + +[*Return type]: Convertible to `bool`. + +[*Semantics]: Evaluates to `true` if the sequence is empty, else, evaluates +to `false`. + +[heading Header] + + #include + +[heading Example] + + __vector__ v(1, 2, 3); + assert(empty(v) == false); + +[endsect] + +[section front] + +[heading Description] + +Returns the first element in the sequence. + +[heading Synopsis] + + template + typename __result_of_front__::type + front(Sequence& seq); + + template + typename __result_of_front__::type + front(Sequence const& seq); + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`seq`] [Model of __forward_sequence__] [The sequence we wish to investigate.]] +] + +[heading Expression Semantics] + + front(seq); + +[*Return type]: Returns a reference to the first element in the sequence +`seq` if `seq` is mutable and `e = o`, where `e` is the first element in +the sequence, is a valid expression. Else, returns a type convertable to +the first element in the sequence. + +[*Precondition]: `__empty__(seq) == false` + +[*Semantics]: Returns the first element in the sequence. + +[heading Header] + + #include + +[heading Example] + + __vector__ v(1, 2, 3); + assert(front(v) == 1); + +[endsect] + +[section back] + +[heading Description] + +Returns the last element in the sequence. + +[heading Synopsis] + + template + typename __result_of_back__::type + back(Sequence& seq); + + template + typename __result_of_back__::type + back(Sequence const& seq); + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`seq`] [Model of __bidirectional_sequence__] [The sequence we wish to investigate.]] +] + +[heading Expression Semantics] + + back(seq); + +[*Return type]: Returns a reference to the last element in the sequence +`seq` if `seq` is mutable and `e = o`, where `e` is the last element in the +sequence, is a valid expression. Else, returns a type convertable to the +last element in the sequence. + +[*Precondition]: `__empty__(seq) == false` + +[*Semantics]: Returns the last element in the sequence. + +[heading Header] + + #include + +[heading Example] + + __vector__ v(1, 2, 3); + assert(back(v) == 3); + +[endsect] + +[section size] + +[heading Description] + +Returns a type convertible to `int` that evaluates the number of elements +in the sequence. + +[heading Synopsis] + + template + typename __result_of_size__::type + size(Sequence const& seq); + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`seq`] [Model of __forward_sequence__] [The sequence we wish to investigate.]] +] + +[heading Expression Semantics] + + size(seq); + +[*Return type]: Convertible to `int`. + +[*Semantics]: Returns the number of elements in the sequence. + +[heading Header] + + #include + +[heading Example] + + __vector__ v(1, 2, 3); + assert(size(v) == 3); + +[endsect] + +[section at] + +[heading Description] + +Returns the N-th element from the beginning of the sequence. + +[heading Synopsis] + + template + typename __result_of_at__::type + at(Sequence& seq); + + template + typename __result_of_at__::type + at(Sequence const& seq); + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`seq`] [Model of __random_access_sequence__] [The sequence we wish to investigate.]] + [[`N`] [An __mpl__ integral constant] [An index from the beginning of the + sequence.]] +] + +[heading Expression Semantics] + + at(seq); + +[*Return type]: Returns a reference to the N-th element from the beginning +of the sequence `seq` if `seq` is mutable and `e = o`, where `e` is the N-th +element from the beginning of the sequence, is a valid expression. Else, +returns a type convertable to the N-th element from the beginning of the +sequence. + +[*Precondition]: `0 <= N::value < __size__(s)` + +[*Semantics]: Equivalent to + + __deref__(__advance__(__begin__(s))) + +[heading Header] + + #include + +[heading Example] + + __vector__ v(1, 2, 3); + assert(at >(v) == 2); + +[endsect] + +[section at_c] + +[heading Description] + +Returns the N-th element from the beginning of the sequence. + +[heading Synopsis] + + template + typename __result_of_at_c__::type + at_c(Sequence& seq); + + template + typename __result_of_at_c__::type + at_c(Sequence const& seq); + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`seq`] [Model of __random_access_sequence__] [The sequence we wish to investigate.]] + [[`N`] [An integral constant] [An index from the beginning of the + sequence.]] +] + +[heading Expression Semantics] + + at_c(seq); + +[*Return type]: Returns a reference to the N-th element from the beginning +of the sequence `seq` if `seq` is mutable and `e = o`, where `e` is the N-th +element from the beginning of the sequence, is a valid expression. Else, +returns a type convertable to the N-th element from the beginning of the +sequence. + +[*Precondition]: `0 <= N < __size__(s)` + +[*Semantics]: Equivalent to + + __deref__(__advance__(__begin__(s))) + +[heading Header] + + #include + +[heading Example] + + __vector__ v(1, 2, 3); + assert(at_c<1>(v) == 2); + +[endsect] + +[section has_key] + +[heading Description] + +Returns a type convertible to `bool` that evaluates to `true` if the +sequence contains an element associated with a Key, else, evaluates to +`false`. + +[heading Synopsis] + + template + typename __result_of_has_key__::type + has_key(Sequence const& seq); + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`seq`] [Model of __associative_sequence__] [The sequence we wish to investigate.]] + [[`Key`] [Any type] [The queried key.]] +] + +[heading Expression Semantics] + + has_key(seq); + +[*Return type]: Convertible to `bool`. + +[*Semantics]: Evaluates to `true` if the sequence contains an element +associated with Key, else, evaluates to `false`. + +[heading Header] + + #include + +[heading Example] + + __set__ s(1, 'x', true); + assert(has_key(s) == true); + +[endsect] + +[section at_key] + +[heading Description] + +Returns the element associated with a Key from the sequence. + +[heading Synopsis] + + template + typename __result_of_at_key__::type + at_key(Sequence& seq); + + template + typename __result_of_at_key__::type + at_key(Sequence const& seq); + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`seq`] [Model of __associative_sequence__] [The sequence we wish to investigate.]] + [[`Key`] [Any type] [The queried key.]] +] + +[heading Expression Semantics] + + at_key(seq); + +[*Return type]: Returns a reference to the element associated with Key from +the sequence `seq` if `seq` is mutable and `e = o`, where `e` is the +element associated with Key, is a valid expression. Else, returns a type +convertable to the element associated with Key. + +[*Precondition]: `has_key(seq) == true` + +[*Semantics]: Returns the element associated with Key. + +[heading Header] + + #include + +[heading Example] + + __set__ s(1, 'x', true); + assert(at_key(s) == 'x'); + +[endsect] + +[endsect] + +[section Metafunctions] + +[section begin] + +[heading Description] +Returns the result type of __begin__. + +[heading Synopsis] + template + struct begin + { + typedef __unspecified__ type; + }; + +[table Parameters + [[Parameter] [Requirement] [Description]] + [[`Seq`][A model of __forward_sequence__][Argument sequence]] +] + +[heading Expression Semantics] + result_of::begin::type + +[*Return type]: An iterator modelling the same traversal concept as `Seq`. + +[*Semantics]: Returns the type of an iterator to the first element of `Seq`. + +[heading Header] + #include + +[heading Example] + typedef __vector__ vec; + typedef __result_of_begin__::type it; + BOOST_MPL_ASSERT((boost::is_same<__result_of_deref__::type, int&>)) + +[endsect] + +[section end] + +[heading Description] +Returns the result type of __end__. + +[heading Synopsis] + template + struct end + { + typedef __unspecified__ type; + }; + +[table Parameters + [[Parameter] [Requirement] [Description]] + [[`Seq`][A model of __forward_sequence__][Argument sequence]] +] + +[heading Expression Semantics] + result_of::end::type + +[*Return type]: A model of the same traversal concept as `Seq`. + +[*Semantics]: Returns the type of an iterator one past the end of `Seq`. + +[heading Header] + #include + +[heading Example] + typedef __vector__ vec; + typedef __result_of_prior__<__result_of_end__::type>::type first; + BOOST_MPL_ASSERT((__result_of_equal_to__::type>)) + +[endsect] + +[section empty] + +[heading Description] +Returns the result type of __empty__. + +[heading Synopsis] + template + struct empty + { + typedef __unspecified__ type; + }; + +[table Parameters + [[Parameter] [Requirement] [Description]] + [[`Seq`][A model of __forward_sequence__][Argument sequence]] +] + +[heading Expression Semantics] + result_of::empty::type + +[*Return type]: An __mpl_integral_constant__ + +[*Semantics]: Returns `mpl::true_` if `Seq` has zero elements, `mpl::false_` otherwise. + +[heading Header] + #include + +[heading Example] + typedef __vector__<> empty_vec; + typedef __vector__ vec; + + BOOST_MPL_ASSERT((__result_of_empty__)); + BOOST_MPL_ASSERT_NOT((__result_of_empty__)); + +[endsect] + +[section front] + +[heading Description] +Returns the result type of __front__. + +[heading Synopsis] + template + struct front + { + typedef __unspecified__ type; + }; + +[table Parameters + [[Parameter] [Requirement] [Description]] + [[`Seq`][A model of __forward_sequence__][Argument sequence]] +] + +[heading Expression Semantics] + result_of::front::type + +[*Return type]: Any type + +[*Semantics]: The type returned by dereferencing an iterator to the first element in `Seq`. Equivalent to `__result_of_deref__<__result_of_begin__::type>::type`. + +[heading Header] + #include + +[heading Example] + typedef __vector__ vec; + BOOST_MPL_ASSERT((boost::is_same<__result_of_front__::type, int&>)); + +[endsect] + +[section back] + +[heading Description] +Returns the result type of __back__. + +[heading Synopsis] + template + struct back + { + typedef __unspecified__ type; + }; + +[table Parameters + [[Parameter] [Requirement] [Description]] + [[`Seq`][A model of __forward_sequence__][Argument sequence]] +] + +[heading Expression Semantics] + result_of::back::type + +[*Return type]: Any type + +[*Semantics]: The type returned by dereferencing an iterator to the last element in the sequence. Equivalent to `__result_of_deref__<__result_of_prior__<__result_of_end__::type>::type>::type`. + +[heading Header] + #include + +[heading Example] + typedef __vector__ vec; + BOOST_MPL_ASSERT((boost::is_same<__result_of_back__::type, char&>)); + +[endsect] + +[section size] + +[heading Description] +Returns the result type of __size__. + +[heading Synopsis] + template + struct size + { + typedef __unspecified__ type; + }; + +[table Parameters + [[Parameter] [Requirement] [Description]] + [[`Seq`][A model of __forward_sequence__][Argument sequence]] +] + +[heading Expression Semantics] + result_of::size::type + +[*Return type]: An __mpl_integral_constant__. + +[*Semantics]: Returns the number of elements in `Seq`. + +[heading Header] + #include + +[heading Example] + typedef __vector__ vec; + typedef __result_of_size__::type size_mpl_integral_constant; + BOOST_MPL_ASSERT_RELATION(size_mpl_integral_constant::value, ==, 3); + +[endsect] + +[section at] + +[heading Description] + +Returns the result type of __at__[footnote __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__]. + +[heading Synopsis] + template< + typename Seq, + typename N> + struct at + { + typedef __unspecified__ type; + }; + +[table Parameters + [[Parameter] [Requirement] [Description]] + [[`Seq`][A model of __forward_sequence__][Argument sequence]] + [[`N`][An __mpl_integral_constant__][Index of element]] +] + +[heading Expression Semantics] + result_of::at::type + +[*Return type]: Any type. + +[*Semantics]: Returns the result type of using __at__ to access the `N`th element of `Seq`. + +[heading Header] + #include + +[heading Example] + typedef __vector__ vec; + BOOST_MPL_ASSERT((boost::is_same<__result_of_at__ >::type, float&>)); + +[endsect] + +[section at_c] + +[heading Description] + +Returns the result type of __at_c__[footnote __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__]. + +[heading Synopsis] + template< + typename Seq, + int M> + struct at_c + { + typedef __unspecified__ type; + }; + +[table Parameters + [[Parameter] [Requirement] [Description]] + [[`Seq`][A model of __forward_sequence__][Argument sequence]] + [[`M`][Positive integer index][Index of element]] +] + +[heading Expression Semantics] + result_of::at_c::type + +[*Return type]: Any type + +[*Semantics]: Returns the result type of using __at_c__ to access the `M`th element of `Seq`. + +[heading Header] + #include + +[heading Example] + typedef __vector__ vec; + BOOST_MPL_ASSERT((boost::is_same<__result_of_at_c__::type, float&>)); + +[endsect] + +[section value_at] + +[heading Description] + +Returns the actual type at a given index from the __sequence__. + +[heading Synopsis] + template< + typename Seq, + typename N> + struct value_at + { + typedef __unspecified__ type; + }; + +[table Parameters + [[Parameter] [Requirement] [Description]] + [[`Seq`][A model of __forward_sequence__][Argument sequence]] + [[`N`][An __mpl_integral_constant__][Index of element]] +] + +[heading Expression Semantics] + result_of::value_at::type + +[*Return type]: Any type. + +[*Semantics]: Returns the actual type at the `N`th element of `Seq`. + +[heading Header] + #include + +[heading Example] + typedef __vector__ vec; + BOOST_MPL_ASSERT((boost::is_same<__result_of_value_at__ >::type, float>)); + +[endsect] + +[section value_at_c] + +[heading Description] + +Returns the actual type at a given index from the __sequence__. + +[heading Synopsis] + template< + typename Seq, + int M> + struct value_at_c + { + typedef __unspecified__ type; + }; + +[table Parameters + [[Parameter] [Requirement] [Description]] + [[`Seq`][A model of __forward_sequence__][Argument sequence]] + [[`M`][Positive integer index][Index of element]] +] + +[heading Expression Semantics] + result_of::value_at_c::type + +[*Return type]: Any type + +[*Semantics]: Returns the actual type at the `M`th element of `Seq`. + +[heading Header] + #include + +[heading Example] + typedef __vector__ vec; + BOOST_MPL_ASSERT((boost::is_same<__result_of_value_at_c__::type, float>)); + +[endsect] + +[section has_key] + +[heading Description] +Returns the result type of __has_key__. + +[heading Synopsis] + template< + typename Seq, + typename Key> + struct has_key + { + typedef __unspecified__ type; + }; + +[table Parameters + [[Parameter] [Requirement] [Description]] + [[`Seq`][A model of __forward_sequence__][Argument sequence]] + [[`Key`][Any type][Key type]] +] + +[heading Expression Semantics] + result_of::has_key::type + +[*Return type]: An __mpl_integral_constant__. + +[*Semantics]: Returns `mpl::true_` if `Seq` contains an element with key type `Key`, returns `mpl::false_` otherwise. + +[heading Header] + #include + +[heading Example] + typedef __map__<__pair__, __pair__, __pair__ > mymap; + BOOST_MPL_ASSERT((__result_of_has_key__)); + BOOST_MPL_ASSERT_NOT((__result_of_has_key__)); + +[endsect] + +[section at_key] + +[heading Description] + +Returns the result type of __at_key__[footnote __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__]. + +[heading Synopsis] + template< + typename Seq, + typename Key> + struct at_key + { + typedef __unspecified__ type; + }; + +[table Parameters + [[Parameter] [Requirement] [Description]] + [[`Seq`][A model of __forward_sequence__][Argument sequence]] + [[`Key`][Any type][Key type]] +] + +[heading Expression Semantics] + result_of::at_key::type + +[*Return type]: Any type. + +[*Semantics]: Returns the result of using __at_key__ to access the element with key type `Key` in `Seq`. + +[heading Header] + #include + +[heading Example] + typedef __map__<__pair__, __pair__, __pair__ > mymap; + BOOST_MPL_ASSERT((boost::is_same<__result_of_at_key__::type, char&>)); + +[endsect] + +[section value_at_key] + +[heading Description] +Returns the actual element type associated with a Key from the __sequence__. + +[heading Synopsis] + template< + typename Seq, + typename Key> + struct value_at_key + { + typedef __unspecified__ type; + }; + +[table Parameters + [[Parameter] [Requirement] [Description]] + [[`Seq`][A model of __forward_sequence__][Argument sequence]] + [[`Key`][Any type][Key type]] +] + +[heading Expression Semantics] + result_of::value_at_key::type + +[*Return type]: Any type. + +[*Semantics]: Returns the actual element type associated with key type +`Key` in `Seq`. + +[heading Header] + #include + +[heading Example] + typedef __map__<__pair__, __pair__, __pair__ > mymap; + BOOST_MPL_ASSERT((boost::is_same<__result_of_at_key__::type, char>)); + +[endsect] + +[endsect] + +[endsect] + +[section Generation] + +These are the functions that you can use to generate various forms of +__containers__ from elemental values. + +[heading Header] + + #include + +[section Functions] + +[section make_list] + +[heading Description] + +Create a __list__ from one or more values. + +[heading Synopsis] + + template + typename __result_of_make_list__::type + make_list(T0 const& x0, T1 const& x1... TN const& xN); + +The variadic function accepts `0` to `FUSION_MAX_LIST_SIZE` elements, where +`FUSION_MAX_LIST_SIZE` is a user definable predefined maximum that defaults +to `10`. You may define the preprocessor constant `FUSION_MAX_LIST_SIZE` +before including any Fusion header to change the default. Example: + + #define FUSION_MAX_LIST_SIZE 20 + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`x0, x1,... xN`] [Instances of `T0, T1,... TN`] [The arguments to `make_list`]] +] + +[heading Expression Semantics] + + make_list(x0, x1,... xN); + +[*Return type]: __result_of_make_list__`::type` + +[*Semantics]: Create a __list__ from `x0, x1,... xN`. + +[heading Header] + + #include + +[heading Example] + + make_list(123, "hello", 12.5) + +[heading See also] + +__note_boost_ref__ + +[endsect] + +[section make_cons] + +[heading Description] + +Create a __cons__ from `car` (/head/) and optional `cdr` (/tail/). + +[heading Synopsis] + + template + typename __result_of_make_cons__::type + make_cons(Car const& car); + + template + typename __result_of_make_cons__::type + make_cons(Car const& car, Cdr const& cdr); + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`car`] [Instance of `Car`] [The list's head]] + [[`cdr`] [Instance of `Cdr`] [The list's tail (optional)]] +] + +[heading Expression Semantics] + + make_cons(car, cdr); + +[*Return type]: __result_of_make_cons__`::type` or +__result_of_make_cons__`::type` + +[*Semantics]: Create a __cons__ from `car` (/head/) and optional `cdr` (/tail/). + +[heading Header] + + #include + +[heading Example] + + make_cons('x', make_cons(123)) + +[heading See also] + +__note_boost_ref__ + +[endsect] + +[section make_vector] + +[heading Description] + +Create a __vector__ from one or more values. + +[heading Synopsis] + + template + typename __result_of_make_vector__::type + make_vector(T0 const& x0, T1 const& x1... TN const& xN); + +The variadic function accepts `0` to `FUSION_MAX_VECTOR_SIZE` elements, +where `FUSION_MAX_VECTOR_SIZE` is a user definable predefined maximum that +defaults to `10`. You may define the preprocessor constant +`FUSION_MAX_VECTOR_SIZE` before including any Fusion header to change the +default. Example: + + #define FUSION_MAX_VECTOR_SIZE 20 + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`x0, x1,... xN`] [Instances of `T0, T1,... TN`] [The arguments to `make_vector`]] +] + +[heading Expression Semantics] + + make_vector(x0, x1,... xN); + +[*Return type]: __result_of_make_vector__`::type` + +[*Semantics]: Create a __vector__ from `x0, x1,... xN`. + +[heading Header] + + #include + +[heading Example] + + make_vector(123, "hello", 12.5) + +[heading See also] + +__note_boost_ref__ + +[endsect] + +[section make_set] + +[heading Description] + +Create a __set__ from one or more values. + +[heading Synopsis] + + template + typename __result_of_make_set__::type + make_set(T0 const& x0, T1 const& x1... TN const& xN); + +The variadic function accepts `0` to `FUSION_MAX_VECTOR_SIZE`[footnote +`set` is implemented in terms of the vector. That is why we reuse +`FUSION_MAX_VECTOR_SIZE`] elements, where `FUSION_MAX_VECTOR_SIZE` is a user +definable predefined maximum that defaults to `10`. You may define the +preprocessor constant `FUSION_MAX_VECTOR_SIZE` before including any Fusion +header to change the default. Example: + + #define FUSION_MAX_VECTOR_SIZE 20 + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`x0, x1,... xN`] [Instances of `T0, T1,... TN`] [The arguments to `make_set`]] +] + +[heading Expression Semantics] + + make_set(x0, x1,... xN); + +[*Return type]: __result_of_make_set__`::type` + +[*Semantics]: Create a __set__ from `x0, x1,... xN`. + +[*Precondition]: There may be no duplicate key types. + +[heading Header] + + #include + +[heading Example] + + make_set(123, "hello", 12.5) + +[heading See also] + +__note_boost_ref__ + +[endsect] + +[section make_map] + +[heading Description] + +Create a __map__ from one or more key/data pairs. + +[heading Synopsis] + + template < + typename K0, typename K1,... typename KN + , typename T0, typename T1,... typename TN> + typename __result_of_make_map__::type + make_map(T0 const& x0, T1 const& x1... TN const& xN); + +The variadic function accepts `0` to `FUSION_MAX_VECTOR_SIZE`[footnote +`map` is implemented in terms of the vector. That is why we reuse +`FUSION_MAX_VECTOR_SIZE`] elements, where `FUSION_MAX_VECTOR_SIZE` is a user +definable predefined maximum that defaults to `10`. You may define the +preprocessor constant `FUSION_MAX_VECTOR_SIZE` before including any Fusion +header to change the default. Example: + + #define FUSION_MAX_VECTOR_SIZE 20 + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`K0, K1,... KN`] [The key types] [Keys associated with `x0, x1,... xN`]] + [[`x0, x1,... xN`] [Instances of `T0, T1,... TN`] [The arguments to `make_map`]] +] + +[heading Expression Semantics] + + make_map(x0, x1,... xN); + +[*Return type]: __result_of_make_map__`::type` + +[*Semantics]: Create a __map__ from `K0, K1,... KN` keys and +`x0, x1,... xN` data. + +[*Precondition]: There may be no duplicate key types. + +[heading Header] + + #include + +[heading Example] + + make_map( + __fusion_make_pair__('X') + , __fusion_make_pair__("Men")) + +[heading See also] + +__note_boost_ref__, __fusion_pair__ + +[endsect] + +[section Tiers] + +Tiers are sequences, where all elements are non-const reference types. They +are constructed with a call to a couple of /tie/ function templates. The +succeeding sections document the various /tier/ flavors. + +* __list_tie__ +* __vector_tie__ + +Example: + + int i; char c; double d; + ... + __vector_tie__(i, c, a); + +The __vector_tie__ function creates a __vector__ of type +`__vector__`. The same result could be achieved with the call +__make_vector__(__boost_ref_call__(i), __boost_ref_call__(c), __boost_ref_call__(a)) +[footnote see __boost_ref__ for details about `ref`]. + +A /tie/ can be used to 'unpack' another tuple into variables. E.g.: + + int i; char c; double d; + __vector_tie__(i, c, d) = __make_vector__(1,'a', 5.5); + std::cout << i << " " << c << " " << d; + +This code prints 1 a 5.5 to the standard output stream. A sequence +unpacking operation like this is found for example in ML and Python. It is +convenient when calling functions which return sequences. + +[heading Ignore] + +There is also an object called /ignore/ which allows you to ignore an +element assigned by a sequence. The idea is that a function may return a +sequence, only part of which you are interested in. For example: + + char c; + __vector_tie__(ignore, c) = __make_vector__(1, 'a'); + +[endsect] + +[section list_tie] + +[heading Description] + +Constructs a tie using a __list__ sequence. + +[heading Synopsis] + + template + __list__ + list_tie(T0& x0, T1& x1... TN& xN); + +The variadic function accepts `0` to `FUSION_MAX_LIST_SIZE` elements, where +`FUSION_MAX_LIST_SIZE` is a user definable predefined maximum that defaults +to `10`. You may define the preprocessor constant `FUSION_MAX_LIST_SIZE` +before including any Fusion header to change the default. Example: + + #define FUSION_MAX_LIST_SIZE 20 + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`x0, x1,... xN`] [Instances of `T0, T1,... TN`] [The arguments to `list_tie`]] +] + +[heading Expression Semantics] + + list_tie(x0, x1,... xN); + +[*Return type]: __list__ + +[*Semantics]: Create a __list__ of references from `x0, x1,... xN`. + +[heading Header] + + #include + +[heading Example] + + int i = 123; + double d = 123.456; + list_tie(i, d) + +[endsect] + +[section vector_tie] + +[heading Description] + +Constructs a tie using a __vector__ sequence. + +[heading Synopsis] + + template + __vector__ + vector_tie(T0& x0, T1& x1... TN& xN); + +The variadic function accepts `0` to `FUSION_MAX_VECTOR_SIZE` elements, +where `FUSION_MAX_VECTOR_SIZE` is a user definable predefined maximum that +defaults to `10`. You may define the preprocessor constant +`FUSION_MAX_VECTOR_SIZE` before including any Fusion header to change the +default. Example: + + #define FUSION_MAX_VECTOR_SIZE 20 + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`x0, x1,... xN`] [Instances of `T0, T1,... TN`] [The arguments to `vector_tie`]] +] + +[heading Expression Semantics] + + vector_tie(x0, x1,... xN); + +[*Return type]: __vector__ + +[*Semantics]: Create a __vector__ of references from `x0, x1,... xN`. + +[heading Header] + + #include + +[heading Example] + + int i = 123; + double d = 123.456; + vector_tie(i, d) + +[endsect] + +[endsect] + +[section MetaFunctions] + +[section make_list] + +[heading Description] + +Returns the result type of __make_list__. + +[heading Synopsis] + + template + struct make_list; + +The variadic function accepts `0` to `FUSION_MAX_LIST_SIZE` elements, where +`FUSION_MAX_LIST_SIZE` is a user definable predefined maximum that defaults +to `10`. You may define the preprocessor constant `FUSION_MAX_LIST_SIZE` +before including any Fusion header to change the default. Example: + + #define FUSION_MAX_LIST_SIZE 20 + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`T0, T1,... TN`] [Any type] [Template arguments to `make_list`]] +] + +[heading Expression Semantics] + + result_of::make_list::type + +[*Return type]: A __list__ with elements of types converted following the +rules for __element_conversion__. + +[*Semantics]: Create a __list__ from `T0, T1,... TN`. + +[heading Header] + + #include + +[heading Example] + + result_of::make_list::type + +[endsect] + +[section make_cons] + +[heading Description] + +Returns the result type of __make_cons__. + +[heading Synopsis] + + template + struct make_cons; + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`Car`] [Any type] [The list's head type]] + [[`Cdr`] [A `cons`] [The list's tail type (optional)]] +] + +[heading Expression Semantics] + + result_of::make_cons::type + +[*Return type]: A __cons__ with head element, `Car`, of type converted +following the rules for __element_conversion__, and tail, `Cdr`. + +[*Semantics]: Create a __cons__ from `Car` (/head/) and optional `Cdr` (/tail/). + +[heading Header] + + #include + +[heading Example] + + result_of::make_cons::type>::type + +[endsect] + +[section make_vector] + +[heading Description] + +Returns the result type of __make_vector__. + +[heading Synopsis] + + template + struct make_vector; + +The variadic function accepts `0` to `FUSION_MAX_VECTOR_SIZE` elements, +where `FUSION_MAX_VECTOR_SIZE` is a user definable predefined maximum that +defaults to `10`. You may define the preprocessor constant +`FUSION_MAX_VECTOR_SIZE` before including any Fusion header to change the +default. Example: + + #define FUSION_MAX_VECTOR_SIZE 20 + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`T0, T1,... TN`] [Any type] [Template arguments to `make_vector`]] +] + +[heading Expression Semantics] + + result_of::make_vector::type + +[*Return type]: A __vector__ with elements of types converted following the +rules for __element_conversion__. + +[*Semantics]: Create a __vector__ from `T0, T1,... TN`. + +[heading Header] + + #include + +[heading Example] + + result_of::make_vector::type + +[endsect] + +[section make_set] + +[heading Description] + +Returns the result type of __make_set__. + +[heading Synopsis] + + template + struct make_set; + +The variadic function accepts `0` to `FUSION_MAX_VECTOR_SIZE`[footnote +`set` is implemented in terms of the vector. That is why we reuse +`FUSION_MAX_VECTOR_SIZE`] elements, where `FUSION_MAX_VECTOR_SIZE` is a user +definable predefined maximum that defaults to `10`. You may define the +preprocessor constant `FUSION_MAX_VECTOR_SIZE` before including any Fusion +header to change the default. Example: + + #define FUSION_MAX_VECTOR_SIZE 20 + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`T0, T1,... TN`] [Any type] [The arguments to `make_set`]] +] + +[heading Expression Semantics] + + result_of::make_set::type + +[*Return type]: A __set__ with elements of types converted following the +rules for __element_conversion__. + +[*Semantics]: Create a __set__ from `T0, T1,... TN`. + +[*Precondition]: There may be no duplicate key types. + +[heading Header] + + #include + +[heading Example] + + result_of::make_set::type + +[endsect] + +[section make_map] + +[heading Description] + +Returns the result type of __make_map__. + +[heading Synopsis] + + template < + typename K0, typename K1,... typename KN + , typename T0, typename T1,... typename TN> + struct make_map; + +The variadic function accepts `0` to `FUSION_MAX_VECTOR_SIZE`[footnote +`map` is implemented in terms of the vector. That is why we reuse +`FUSION_MAX_VECTOR_SIZE`] elements, where `FUSION_MAX_VECTOR_SIZE` is a user +definable predefined maximum that defaults to `10`. You may define the +preprocessor constant `FUSION_MAX_VECTOR_SIZE` before including any Fusion +header to change the default. Example: + + #define FUSION_MAX_VECTOR_SIZE 20 + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`K0, K1,... KN`] [Any type] [Keys associated with `T0, T1,... TN`]] + [[`T0, T1,... TN`] [Any type] [Data associated with keys `K0, K1,... KN`]] +] + +[heading Expression Semantics] + + resulf_of::make_map::type; + +[*Return type]: __result_of_make_map__`::type` + +[*Semantics]: A __map__ with __fusion_pair__ elements where the +`second_type` is converted following the rules for __element_conversion__. + +[*Precondition]: There may be no duplicate key types. + +[heading Header] + + #include + +[heading Example] + + result_of::make_map::type + +[heading See also] + +__fusion_pair__ + +[endsect] + +[section list_tie] + +[heading Description] + +Returns the result type of __list_tie__. + +[heading Synopsis] + + template + struct list_tie; + +The variadic function accepts `0` to `FUSION_MAX_LIST_SIZE` elements, where +`FUSION_MAX_LIST_SIZE` is a user definable predefined maximum that defaults +to `10`. You may define the preprocessor constant `FUSION_MAX_LIST_SIZE` +before including any Fusion header to change the default. Example: + + #define FUSION_MAX_LIST_SIZE 20 + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`T0, T1,... TN`] [Any type] [The arguments to `list_tie`]] +] + +[heading Expression Semantics] + + result_of::list_tie::type; + +[*Return type]: __list__ + +[*Semantics]: Create a __list__ of references from `T0, T1,... TN`. + +[heading Header] + + #include + +[heading Example] + + result_of::list_tie::type + +[endsect] + +[section vector_tie] + +[heading Description] + +Returns the result type of __vector_tie__. + +[heading Synopsis] + + template + struct vector_tie; + +The variadic function accepts `0` to `FUSION_MAX_VECTOR_SIZE` elements, +where `FUSION_MAX_VECTOR_SIZE` is a user definable predefined maximum that +defaults to `10`. You may define the preprocessor constant +`FUSION_MAX_VECTOR_SIZE` before including any Fusion header to change the +default. Example: + + #define FUSION_MAX_VECTOR_SIZE 20 + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`T0, T1,... TN`] [Any type] [The arguments to `vector_tie`]] +] + +[heading Expression Semantics] + + result_of::vector_tie::type; + +[*Return type]: __vector__ + +[*Semantics]: Create a __vector__ of references from `T0, T1,... TN`. + +[heading Header] + + #include + +[heading Example] + + result_of::vector_tie::type + +[endsect] + +[endsect] + +[endsect] + +[section Conversion] + +All fusion sequences can be converted to one of the __containers__ types +using one of these conversion functions. + +[heading Header] + + #include + +[section Functions] + +[section as_list] + +[heading Description] + +Convert a fusion sequence to a __list__. + +[heading Synopsis] + + template + typename result_of::as_list::type + as_list(Sequence& seq); + + template + typename result_of::as_list::type + as_list(Sequence const& seq); + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`seq`] [An instance of Sequence] [The sequence to convert.]] +] + +[heading Expression Semantics] + + as_list(seq); + +[*Return type]: __result_of_as_list__`::type` + +[*Semantics]: Convert a fusion sequence, `seq`, to a __list__. + +[heading Header] + + #include + +[heading Example] + + as_list(__make_vector__('x', 123, "hello")) + +[endsect] + +[section as_vector] + +[heading Description] + +Convert a fusion sequence to a __vector__. + +[heading Synopsis] + + template + typename result_of::as_vector::type + as_vector(Sequence& seq); + + template + typename result_of::as_vector::type + as_vector(Sequence const& seq); + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`seq`] [An instance of Sequence] [The sequence to convert.]] +] + +[heading Expression Semantics] + + as_vector(seq); + +[*Return type]: __result_of_as_vector__`::type` + +[*Semantics]: Convert a fusion sequence, `seq`, to a __vector__. + +[heading Header] + + #include + +[heading Example] + + as_vector(__make_list__('x', 123, "hello")) + +[endsect] + +[section as_set] + +[heading Description] + +Convert a fusion sequence to a __set__. + +[heading Synopsis] + + template + typename result_of::as_set::type + as_set(Sequence& seq); + + template + typename result_of::as_set::type + as_set(Sequence const& seq); + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`seq`] [An instance of Sequence] [The sequence to convert.]] +] + +[heading Expression Semantics] + + as_set(seq); + +[*Return type]: __result_of_as_set__`::type` + +[*Semantics]: Convert a fusion sequence, `seq`, to a __set__. + +[*Precondition]: There may be no duplicate key types. + +[heading Header] + + #include + +[heading Example] + + as_set(__make_vector__('x', 123, "hello")) + +[endsect] + +[section as_map] + +[heading Description] + +Convert a fusion sequence to a __map__. + +[heading Synopsis] + + template + typename result_of::as_map::type + as_map(Sequence& seq); + + template + typename result_of::as_map::type + as_map(Sequence const& seq); + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`seq`] [An instance of Sequence] [The sequence to convert.]] +] + +[heading Expression Semantics] + + as_map(seq); + +[*Return type]: __result_of_as_map__`::type` + +[*Semantics]: Convert a fusion sequence, `seq`, to a __map__. + +[*Precondition]: The elements of the sequence are assumed to be +__fusion_pair__s. There may be no duplicate __fusion_pair__ key types. + +[heading Header] + + #include + +[heading Example] + + as_map(__make_vector__( + __fusion_make_pair__('X') + , __fusion_make_pair__("Men"))) + +[endsect] + +[endsect] + +[section Metafunctions] + +[section as_list] + +[heading Description] + +Returns the result type of __as_list__. + +[heading Synopsis] + + template + struct as_list; + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`Sequence`] [A fusion __sequence__] [The sequence type to convert.]] +] + +[heading Expression Semantics] + + result_of::as_list::type; + +[*Return type]: A __list__ with same elements as the input sequence, +`Sequence`. + +[*Semantics]: Convert a fusion sequence, `Sequence`, to a __list__. + +[heading Header] + + #include + +[heading Example] + + result_of::as_list<__vector__ >::type + +[endsect] + +[section as_vector] + +[heading Description] + +Returns the result type of __as_vector__. + +[heading Synopsis] + + template + struct as_vector; + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`Sequence`] [A fusion __sequence__] [The sequence to convert.]] +] + +[heading Expression Semantics] + + result_of::as_vector::type; + +[*Return type]: A __vector__ with same elements as the input sequence, +`Sequence`. + +[*Semantics]: Convert a fusion sequence, `Sequence`, to a __vector__. + +[heading Header] + + #include + +[heading Example] + + result_of::as_vector<__list__ >::type + +[endsect] + +[section as_set] + +[heading Description] + +Returns the result type of __as_set__. + +[heading Synopsis] + + template + struct as_set; + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`Sequence`] [A fusion __sequence__] [The sequence to convert.]] +] + +[heading Expression Semantics] + + result_of::as_set::type; + +[*Return type]: A __set__ with same elements as the input sequence, +`Sequence`. + +[*Semantics]: Convert a fusion sequence, `Sequence`, to a __set__. + +[*Precondition]: There may be no duplicate key types. + +[heading Header] + + #include + +[heading Example] + + result_of::as_set<__vector__ >::type + +[endsect] + +[section as_map] + +[heading Description] + +Returns the result type of __as_map__. + +[heading Synopsis] + + template + struct as_map; + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`Sequence`] [A fusion __sequence__] [The sequence to convert.]] +] + +[heading Expression Semantics] + + result_of::as_map::type; + +[*Return type]: A __map__ with same elements as the input sequence, +`Sequence`. + +[*Semantics]: Convert a fusion sequence, `Sequence`, to a __map__. + +[*Precondition]: The elements of the sequence are assumed to be +__fusion_pair__s. There may be no duplicate __fusion_pair__ key types. + +[heading Header] + + #include + +[heading Example] + + result_of::as_map<__vector__< + __fusion_pair__ + , __fusion_pair__ > >::type + +[endsect] + +[endsect] + +[endsect] + +[section Operators] + +These operators, like the __algorithms__, work generically on all Fusion +sequences. All conforming Fusion sequences automatically get these +operators for free. + +[section I/O] + +The I/O operators: `<<` and `>>` work generically on all Fusion sequences. +The global `operator<<` has been overloaded for generic output streams such +that __sequence__s are output by recursively calling `operator<<` for each +element. Analogously, the global `operator>>` has been overloaded to +extract __sequence__s from generic input streams by recursively calling +`operator>>` for each element. + +The default delimiter between the elements is space, and the __sequence__ +is enclosed in parenthesis. For Example: + + __vector__ a(1.0f, 2, std::string("Howdy folks!"); + cout << a; + +outputs the __vector__ as: (1.0 2 Howdy folks!) + +The library defines three manipulators for changing the default behavior: + +[variablelist Manipulators + [[`tuple_open(arg)`] [Defines the character that is output before the first element.]] + [[`tuple_close(arg)`] [Defines the character that is output after the last element.]] + [[`tuple_delimiter(arg)`] [Defines the delimiter character between elements.]] +] + +The argument to `tuple_open`, `tuple_close` and `tuple_delimiter` may be a +`char`, `wchar_t`, a C-string, or a wide C-string. + +Example: + + std::cout << tuple_open('[') << tuple_close(']') << tuple_delimiter(", ") << a; + +outputs the same __vector__, `a` as: [1.0, 2, Howdy folks!] + +The same manipulators work with `operator>>` and `istream` as well. Suppose +the `std::cin` stream contains the following data: + + (1 2 3) [4:5] + +The code: + + __vector__ i; + __vector__ j; + + std::cin >> i; + std::cin >> set_open('[') >> set_close(']') >> set_delimiter(':'); + std::cin >> j; + +reads the data into the __vector__s `i` and `j`. + +Note that extracting __sequence__s with `std::string` or C-style string +elements does not generally work, since the streamed __sequence__ +representation may not be unambiguously parseable. + +[heading Header] + + #include + +[section in] + +[heading Description] + +Read a __sequence__ from an input stream. + +[heading Synopsis] + + template + IStream& + operator>>(IStream& is, Sequence& seq); + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[is] [An input stream.] [Stream to extract information from.]] + [[seq] [A __sequence__.] [The sequence to read.]] +] + +[heading Expression Semantics] + + is >> seq + +[*Return type]: IStream& + +[*Semantics]: For each element, `e`, in sequence, `seq`, call `is >> e`. + +[heading Header] + + #include + +[heading Example] + + __vector__ v; + std::cin >> v; + +[endsect] + +[section out] + +[heading Description] + +Write a __sequence__ to an output stream. + +[heading Synopsis] + + template + OStream& + operator<<(OStream& os, Sequence& seq); + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[os] [An output stream.] [Stream to write information to.]] + [[seq] [A __sequence__.] [The sequence to write.]] +] + +[heading Expression Semantics] + + os << seq + +[*Return type]: OStream& + +[*Semantics]: For each element, `e`, in sequence, `seq`, call `os << e`. + +[heading Header] + + #include + +[heading Example] + + std::cout << __make_vector__(123, "Hello", 'x') << std::endl; + +[endsect] + +[endsect] + +[section Comparison] + +The Comparison operators: `==`, `!=`, `<`, `<=`, `>=` and `>=` work +generically on all Fusion sequences. Comparison operators are "short- +circuited": elementary comparisons start from the first elements and are +performed only until the result is clear. + +[heading Header] + + #include + +[section equal] + +[heading Description] + +Compare two sequences for equality. + +[heading Synopsis] + + template + bool + operator==(Seq1 const& a, Seq2 const& b); + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`a, b`] [Instances of __sequence__] [__sequence__s to compare]] +] + +[heading Expression Semantics] + + a == b + +[*Return type]: `bool` + +[*Requirements]: + +For each element, `e1`, in sequence `a`, and for each element, `e2`, in +sequence `b`, `a == b` is a valid expression returning a type that is +convertible to bool. + +An attempt to compare two Sequences of different lengths results in a +compile time error. + +[*Semantics]: + +For each element, `e1`, in sequence `a`, and for each element, `e2`, in +sequence `b`, `e1 == e2` returns true. For any 2 zero length __sequence__s, +e and f, e == f returns true. + +[heading Header] + + #include + +[heading Example] + + __vector__ v1(5, 'a'); + __vector__ v2(5, 'a'); + assert(v1 == v2); + +[endsect] + +[section not equal] + +Compare two sequences for inequality. + +[heading Synopsis] + + template + bool + operator!=(Seq1 const& a, Seq2 const& b); + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`a, b`] [Instances of __sequence__] [__sequence__s to compare]] +] + +[heading Expression Semantics] + + a != b + +[*Return type]: `bool` + +[*Requirements]: + +For each element, `e1`, in sequence `a`, and for each element, `e2`, in +sequence `b`, `a == b` is a valid expression returning a type that is +convertible to bool. + +An attempt to compare two Sequences of different lengths results in a +compile time error. + +[*Semantics]: + +Returns !(a == b). + +[heading Header] + + #include + +[heading Example] + + __vector__ v3(5, 'b'); + __vector__ t4(2, 'a'); + assert(v1 != v3); + assert(v1 != t4); + assert(!(v1 != v2)); + +[endsect] + +[section less than] + +Lexicographically compare two sequences. + +[heading Synopsis] + + template + bool + operator<(Seq1 const& a, Seq2 const& b); + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`a, b`] [Instances of __sequence__] [__sequence__s to compare]] +] + +[heading Expression Semantics] + + a < b + +[*Return type]: `bool` + +[*Requirements]: + +For each element, `e1`, in sequence `a`, and for each element, `e2`, in +sequence `b`, `a < b` is a valid expression returning a type that is +convertible to bool. + +An attempt to compare two Sequences of different lengths results in a +compile time error. + +[*Semantics]: Returns the lexicographical comparison of between `a` and `b`. + +[heading Header] + + #include + +[heading Example] + + __vector__ v1(4, 3.3f); + __vector__ v2(5, 3.3f); + __vector__ v3(5, 4.4); + assert(v1 < v2); + assert(v2 < v3); + +[endsect] + +[section less than equal] + +Lexicographically compare two sequences. + +[heading Synopsis] + + template + bool + operator<=(Seq1 const& a, Seq2 const& b); + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`a, b`] [Instances of __sequence__] [__sequence__s to compare]] +] + +[heading Expression Semantics] + + a <= b + +[*Return type]: `bool` + +[*Requirements]: + +For each element, `e1`, in sequence `a`, and for each element, `e2`, in +sequence `b`, `a < b` is a valid expression returning a type that is +convertible to bool. + +An attempt to compare two Sequences of different lengths results in a +compile time error. + +[*Semantics]: Returns !(b < a). + +[heading Header] + + #include + +[heading Example] + + __vector__ v1(4, 3.3f); + __vector__ v2(5, 3.3f); + __vector__ v3(5, 4.4); + assert(v1 <= v2); + assert(v2 <= v3); + +[endsect] + +[section greater than] + +Lexicographically compare two sequences. + +[heading Synopsis] + + template + bool + operator>(Seq1 const& a, Seq2 const& b); + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`a, b`] [Instances of __sequence__] [__sequence__s to compare]] +] + +[heading Expression Semantics] + + a > b + +[*Return type]: `bool` + +[*Requirements]: + +For each element, `e1`, in sequence `a`, and for each element, `e2`, in +sequence `b`, `a < b` is a valid expression returning a type that is +convertible to bool. + +An attempt to compare two Sequences of different lengths results in a +compile time error. + +[*Semantics]: Returns b < a. + +[heading Header] + + #include + +[heading Example] + + __vector__ v1(4, 3.3f); + __vector__ v2(5, 3.3f); + __vector__ v3(5, 4.4); + assert(v2 > v1); + assert(v3 > v2); + +[endsect] + +[section greater than equal] + +Lexicographically compare two sequences. + +[heading Synopsis] + + template + bool + operator>=(Seq1 const& a, Seq2 const& b); + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`a, b`] [Instances of __sequence__] [__sequence__s to compare]] +] + +[heading Expression Semantics] + + a >= b + +[*Return type]: `bool` + +[*Requirements]: + +For each element, `e1`, in sequence `a`, and for each element, `e2`, in +sequence `b`, `a < b` is a valid expression returning a type that is +convertible to bool. + +An attempt to compare two Sequences of different lengths results in a +compile time error. + +[*Semantics]: Returns !(a < b). + +[heading Header] + + #include + +[heading Example] + + __vector__ v1(4, 3.3f); + __vector__ v2(5, 3.3f); + __vector__ v3(5, 4.4); + assert(v2 >= v1); + assert(v3 >= v2); + +[endsect] + +[endsect] + +[endsect] + +[endsect] + diff --git a/doc/support.qbk b/doc/support.qbk new file mode 100644 index 00000000..7c04de0c --- /dev/null +++ b/doc/support.qbk @@ -0,0 +1,309 @@ +[section Support] + +A couple of classes and metafunctions provide basic support for Fusion. + +[section is_sequence] + +[heading Description] + +Metafunction that evaluates to `mpl::true_` if a certain type `T` is a +conforming Fusion __sequence__, `mpl::false_` otherwise. This may be +specialized to accomodate clients which provide Fusion conforming sequences. + +[heading Synopsis] + + namespace traits + { + template + struct is_sequence + { + typedef __unspecified__ type; + }; + } + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`T`] [Any type] [The type to query.]] +] + +[heading Expression Semantics] + + typedef traits::is_sequence::type c; + +[*Return type]: An __mpl_boolean_constant__. + +[*Semantics]: Metafunction that evaluates to `mpl::true_` if a certain type +`T` is a conforming Fusion sequence, `mpl::false_` otherwise. + +[heading Header] + + #include + +[heading Example] + + BOOST_MPL_ASSERT_NOT(( traits::is_sequence< std::vector > )); + BOOST_MPL_ASSERT_NOT(( is_sequence< int > )); + BOOST_MPL_ASSERT(( traits::is_sequence<__list__<> > )); + BOOST_MPL_ASSERT(( traits::is_sequence<__list__ > )); + BOOST_MPL_ASSERT(( traits::is_sequence<__vector__<> > )); + BOOST_MPL_ASSERT(( traits::is_sequence<__vector__ > )); + +[endsect] + +[section is_view] + +[heading Description] + +Metafunction that evaluates to `mpl::true_` if a certain type `T` is a +conforming Fusion __view__, `mpl::false_` otherwise. A view is a +specialized sequence that does not actually contain data. Views hold +sequences which may be other views. In general, views are held by other +views by value, while non-views are held by other views by reference. `is_view` +may be specialized to accomodate clients providing Fusion conforming views. + +[heading Synopsis] + + namespace traits + { + template + struct is_view + { + typedef __unspecified__ type; + }; + } + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`T`] [Any type] [The type to query.]] +] + +[heading Expression Semantics] + + typedef traits::is_view::type c; + +[*Return type]: An __mpl_boolean_constant__. + +[*Semantics]: Metafunction that evaluates to `mpl::true_` if a certain type +`T` is a conforming Fusion view, `mpl::false_` otherwise. + +[heading Header] + + #include + +[heading Example] + + BOOST_MPL_ASSERT_NOT(( traits::is_view > )); + BOOST_MPL_ASSERT_NOT(( traits::is_view )); + + using boost::mpl::_ + using boost::is_pointer; + typedef __vector__ vector_type; + typedef __filter_view__ > filter_view_type; + BOOST_MPL_ASSERT(( traits::is_view )); + +[endsect] + +[section tag_of] + +[heading Description] + +All conforming Fusion sequences and iterators have an associated tag type. +The purpose of the tag is to enable __tag_dispatching__ from __intrinsic__ +functions to implementations appropriate for the type. The default implementation +of `tag_of` returns `T::ftag` for a given type `T`, if such a member typedef exists. + +This metafunction may be specialized to accomodate clients providing Fusion conforming sequences. + +[heading Synopsis] + + namespace traits + { + template + struct tag_of + { + typedef __unspecified__ type; + }; + } +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`T`] [Any type] [The type to query.]] +] + +[heading Expression Semantics] + + typedef traits::tag_of::type tag; + +[*Return type]: Any type. + +[*Semantics]: Returns the tag type associated with `T`. + +[heading Header] + + #include + +[heading Example] + + typedef traits::is_sequence<__list__<> tag1; + typedef traits::is_sequence<__list__ > tag2; + typedef traits::is_sequence<__vector__<> > tag3; + typedef traits::is_sequence<__vector__ > tag4; + + BOOST_MPL_ASSERT((boost::is_same)); + BOOST_MPL_ASSERT((boost::is_same)); + +[endsect] + +[section category_of] + +[heading Description] + +A metafunction that establishes the conceptual classification of a particular +__sequence__ or __iterator__ (see __iterator_concepts__ and +__sequence_concepts__). + +[heading Synopsis] + + namespace traits + { + template + struct category_of + { + typedef __unspecified__ type; + }; + } + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`T`] [Any type] [The type to query.]] +] + +[heading Expression Semantics] + + typedef traits::category_of::type category; + +[*Return type]: + +For Iterators, the return type is derived from one of: + + struct incrementable_traversal_tag {}; + + struct single_pass_traversal_tag + : incrementable_traversal_tag {}; + + struct forward_traversal_tag + : single_pass_traversal_tag {}; + + struct bidirectional_traversal_tag + : forward_traversal_tag {}; + + struct random_access_traversal_tag + : bidirectional_traversal_tag {}; + +For Sequences, the return type is derived from one of: + + struct incrementable_sequence_tag {}; + + struct single_pass_sequence_tag + : incrementable_sequence_tag {}; + + struct forward_sequence_tag + : single_pass_sequence_tag {}; + + struct bidirectional_sequence_tag + : forward_sequence_tag {}; + + struct random_access_sequence_tag + : bidirectional_sequence_tag {}; + +And optionally from: + + struct associative_sequence_tag {}; + +[*Semantics]: Establishes the conceptual classification of a particular +__sequence__ or __iterator__. + +[heading Header] + + #include + +[heading Example] + + using boost::is_base_of; + typedef traits::category_of<__list__<> >::type list_category; + typedef traits::category_of<__vector__<> >::type vector_category; + BOOST_MPL_ASSERT(( is_base_of )); + BOOST_MPL_ASSERT(( is_base_of )); + +[endsect] + +[section pair] + +[heading Description] + +Fusion `pair` type is a half runtime pair. A half runtime pair is similar +to a __std_pair__, but, unlike __std_pair__, the first type does not have data. +It is used as elements in __map__s, for example. + +[heading Synopsis] + + template + struct pair; + +[heading Template parameters] + +[table + [[Parameter] [Description]] + [[First] [The first type. This is purely a type. No data is held.]] + [[Second] [The second type. This contains data.]] +] + +[variablelist Notation + [[`P`] [Fusion pair type]] + [[`p`, `p2`] [Fusion pairs]] + [[`F`, `S`] [Arbitrary types]] + [[`s`] [Value of type `S`]] + [[`o`] [Output stream]] + [[`i`] [Input stream]] +] + +[heading Expression Semantics] + +[table + [[Expression] [Semantics]] + [[`P::first_type`] [The type of the first template parameter, `F`.]] + [[`P::second_type`] [The type of the second template parameter, `S`.]] + [[`P()`] [Default construction.]] + [[`P(s)`] [Construct a pair given value for the second type, `s`.]] + [[`P(p2)`] [Copy constructs a pair from another pair, `p2`.]] + [[`p = p2`] [Assigns a pair, p1, from another pair, `p2`.]] + [[make_pair(s)] [Make a pair given the first type, `F`, and a value for + the second type, `s`. The second type assumes the type of `s`]] + [[`o << p`] [Output `p` to output stream, `o`.]] + [[`i >> p`] [Input `p` from input stream, `i`.]] + [[`p == p2`] [Tests two pairs for equality.]] + [[`p != p2`] [Tests two pairs for inequality.]] +] + +[heading Header] + + #include + +[heading Example] + + pair p('X'); + std::cout << p << std::endl; + std::cout << make_pair('X') << std::endl; + assert((p == make_pair('X'))); + +[endsect] + +[endsect] + diff --git a/doc/tuples.qbk b/doc/tuples.qbk new file mode 100644 index 00000000..038c8180 --- /dev/null +++ b/doc/tuples.qbk @@ -0,0 +1,264 @@ +[section Tuples] +The TR1 technical report describes extensions to the C++ standard library. +Many of these extensions will be considered for the next +iteration of the C++ standard. TR1 describes a tuple type, and +support for treating `std::pair` as a type of tuple. + +Fusion provides full support for the __tr1__tuple__ interface, and the extended +uses of `std::pair` described in the TR1 document. + +[section Class template tuple] +Fusion's implementation of the __tr1__tuple__ is also a fusion __forward_sequence__. +As such the fusion tuple type provides a lot of functionality beyond that required by TR1. + +Currently tuple is basically a synonym for __vector__, although this may be changed +in future releases of fusion. + +[heading Synopsis] + template< + typename T1 = __unspecified__, + typename T2 = __unspecified__, + ... + typename TN = __unspecified__> + class tuple; + +[heading Header] + #include + +[section Construction] + +[heading Description] +The __tr1__tuple__ type provides a default constructor, a constructor that takes initializers for all of its elements, a copy constructor, and a converting copy constructor. The details of the various constructors are described in this section. + +[heading Specification] + +[variablelist Notation + [[`T1 ... TN`, `U1 ... UN`][Tuple element types]] + [[`P1 ... PN`] [Parameter types]] + [[`Ti`, `Ui`] [The type of the `i`th element of a tuple]] + [[`Pi`] [The type of the `i`th parameter]] +] + + tuple(); + +[*Requirements]: Each `Ti` is default constructable. + +[*Semantics]: Default initializes each element of the tuple. + + tuple(P1,P2,...,PN); + +[*Requirements]: Each `Pi` is `Ti` if `Ti` is a reference type, `const Ti&` otherwise. + +[*Semantics]: Copy initializes each element with the corresponding parameter. + + tuple(const tuple& t); + +[*Requirements]: Each `Ti` should be copy constructable. + +[*Semantics]: Copy constructs each element of `*this` with the corresponding element of `t`. + + template + tuple(const tuple& t); + +[*Requirements]: Each `Ti` shall be constructible from the corresponding `Ui`. + +[*Semantics]: Constructs each element of `*this` with the corresponding element of `t`. + +[endsect] + +[section Tuple creation functions] + +[heading Description] +TR1 describes 2 utility functions for creating __tr1__tuple__s. `make_tuple` builds a tuple out of it's argument list, and `tie` builds a tuple of references to it's arguments. The details of these creation functions are described in this section. + +[heading Specification] + + template + tuple make_tuple(const T1& t1, const T2& t2, ..., const TN& tn); + +Where `Vi` is `X&` if the cv-unqualified type `Ti` is `reference_wrapper`, otherwise `Vi` is `Ti`. + +[*Returns]: `tuple(t1, t2, ..., tN)` + + template + tuple tie(T1& t1, T2& t2, ..., TN& tn); + +[*Returns]: tuple(t1, t2, ..., tN). When argument `ti` is `ignore`, assigning any value to the corresponding tuple element has has no effect. + +[endsect] + +[section Tuple helper classes] + +[heading Description] +The __tr1__tuple__ provides 2 helper traits, for compile time access to the tuple size, and the element types. + +[heading Specification] + + tuple_size::value + +[*Requires]: `T` is any fusion sequence type, including `tuple`. + +[*Type]: __mpl_integral_constant__ + +[*Value]: The number of elements in the sequence. Equivalent to `__result_of_size__::type`. + + tuple_element::type + +[*Requires]: `T` is any fusion sequence type, including `tuple`. `0 <= I < N` or the program is ill formed. + +[*Value]: The type of the `I`th element of `T`. Equivalent to `__result_of_value_at__::type`. + +[endsect] + +[section Element access] + +[heading Description] +The __tr1__tuple__ provides the `get` function to provide access to it's elements by zero based numeric index. + +[heading Specification] + template + RJ get(T& t); + +[*Requires]: `0 < I <= N`. The program is ill formed if `I` is out of bounds. +`T` is any fusion sequence type, including `tuple`. + +[*Return type]: `RJ` is equivalent to `__result_of_at_c__::type`. + +[*Returns]: A reference to the `I`th element of `T`. + + template + PJ get(T const& t); + +[*Requires]: `0 < I <= N`. The program is ill formed if `I` is out of bounds. +`T` is any fusion sequence type, including `tuple`. + +[*Return type]: `PJ` is equivalent to `__result_of_at_c__::type`. + +[*Returns]: A const reference to the `I`th element of `T`. + +[endsect] + +[section Relational operators] + +[heading Description] +The __tr1__tuple__ provides the standard boolean relational operators. + +[heading Specification] + +[variablelist Notation + [[`T1 ... TN`, `U1 ... UN`][Tuple element types]] + [[`P1 ... PN`] [Parameter types]] + [[`Ti`, `Ui`] [The type of the `i`th element of a tuple]] + [[`Pi`] [The type of the `i`th parameter]] +] + + template + bool operator==( + const tuple& lhs, + const tuple& rhs); + +[*Requirements]: For all `i`, `1 <= i < N`, `__tuple_get__(lhs) == __tuple_get__(rhs)` is a valid +expression returning a type that is convertible to `bool`. + +[*Semantics]: Returns `true` if and only if `__tuple_get__(lhs) == __tuple_get__(rhs)` for all `i`. +For any 2 zero length tuples `e` and `f`, `e == f` returns `true`. + + template + bool operator<( + const tuple& lhs, + const tuple& rhs); + +[*Requirements]: For all `i`, `1 <= i < N`, `__tuple_get__(lhs) < __tuple_get__(rhs)` is a valid +expression returning a type that is convertible to `bool`. + +[*Semantics]: Returns the lexicographical comparison of between `lhs` and `rhs`. + + template + bool operator!=( + const tuple& lhs, + const tuple& rhs); + +[*Requirements]: For all `i`, `1 <= i < N`, `__tuple_get__(lhs) == __tuple_get__(rhs)` is a valid +expression returning a type that is convertible to `bool`. + +[*Semantics]: Returns `!(lhs == rhs)`. + + template + bool operator<=( + const tuple& lhs, + const tuple& rhs); + +[*Requirements]: For all `i`, `1 <= i < N`, `__tuple_get__(rhs) < __tuple_get__(lhs)` is a valid +expression returning a type that is convertible to `bool`. + +[*Semantics]: Returns `!(rhs < lhs)` + + template + bool operator>( + const tuple& lhs, + const tuple& rhs); + +[*Requirements]: For all `i`, `1 <= i < N`, `__tuple_get__(rhs) < __tuple_get__(lhs)` is a valid +expression returning a type that is convertible to `bool`. + +[*Semantics]: Returns `rhs < lhs`. + + template + bool operator>=( + const tuple& lhs, + const tuple& rhs); + +[*Requirements]: For all `i`, `1 <= i < N`, `__tuple_get__(lhs) < __tuple_get__(rhs)` is a valid +expression returning a type that is convertible to `bool`. + +[*Semantics]: Returns `!(lhs < rhs)`. + +[endsect] + +[endsect] + +[section Pairs] + +[heading Description] +The __tr1__tuple__ interface is specified to provide uniform access to `std::pair` as if it were a 2 element tuple. + +[heading Specification] + + tuple_size >::value + +[*Type]: An __mpl_integral_constant__ + +[*Value]: Returns 2, the number of elements in a pair. + + tuple_element<0, std::pair >::type + +[*Type]: `T1` + +[*Value]: Returns the type of the first element of the pair + + tuple_element<1, std::pair >::type + +[*Type]: `T2` + +[*Value]: Returns thetype of the second element of the pair + + template + P& get(std::pair& pr); + + template + const P& get(const std::pair& pr); + +[*Type]: If `I == 0` `P` is `T1`, else if `I == 1` `P` is `T2` else the program is ill-formed. + +[*Returns: `pr.first` if `I == 0` else `pr.second`. + +[endsect] + +[endsect] + diff --git a/example/extension/Jamfile.v2 b/example/extension/Jamfile.v2 new file mode 100644 index 00000000..cf062603 --- /dev/null +++ b/example/extension/Jamfile.v2 @@ -0,0 +1,18 @@ +#============================================================================== +# Copyright (c) 2003-2006 Joel de Guzman +# Copyright (c) 2006 Dan Marsden +# +# Use, modification and distribution is 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) +#============================================================================== + +# bring in rules for testing +import testing ; + +{ + test-suite example : + + [ run test_example.cpp : : : : ] ; +} + diff --git a/example/extension/detail/advance_impl.hpp b/example/extension/detail/advance_impl.hpp new file mode 100644 index 00000000..6663c88e --- /dev/null +++ b/example/extension/detail/advance_impl.hpp @@ -0,0 +1,45 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_ADVANCE_IMPL_20060222_2150) +#define BOOST_FUSION_ADVANCE_IMPL_20060222_2150 + +namespace boost { namespace fusion { + + struct example_struct_iterator_tag; + + template + struct example_struct_iterator; + + namespace extension + { + template + struct advance_impl; + + template<> + struct advance_impl + { + template + struct apply + { + typedef typename Iterator::struct_type struct_type; + typedef typename Iterator::index index; + typedef example_struct_iterator< + struct_type, index::value + N::value> type; + + static type + call(Iterator const& it) + { + return type(it.struct_); + } + }; + }; + } +}} + +#endif diff --git a/example/extension/detail/at_impl.hpp b/example/extension/detail/at_impl.hpp new file mode 100644 index 00000000..1fca18d9 --- /dev/null +++ b/example/extension/detail/at_impl.hpp @@ -0,0 +1,65 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_AT_IMPL_20060223_2017) +#define BOOST_FUSION_AT_IMPL_20060223_2017 + +#include +#include +#include +#include + +namespace boost { namespace fusion { + + struct example_sequence_tag; + + namespace extension + { + template + struct at_impl; + + template<> + struct at_impl + { + template + struct apply; + + template + struct apply > + { + typedef typename mpl::if_< + is_const, + std::string const&, + std::string&>::type type; + + static type + call(Sequence& seq) + { + return seq.name; + }; + }; + + template + struct apply > + { + typedef typename mpl::if_< + is_const, + int const&, + int&>::type type; + + static type + call(Sequence& seq) + { + return seq.age; + }; + }; + }; + } +}} + +#endif diff --git a/example/extension/detail/at_key_impl.hpp b/example/extension/detail/at_key_impl.hpp new file mode 100644 index 00000000..33761815 --- /dev/null +++ b/example/extension/detail/at_key_impl.hpp @@ -0,0 +1,70 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_AT_KEY_IMPL_20060223_2017) +#define BOOST_FUSION_AT_KEY_IMPL_20060223_2017 + +#include +#include +#include + +namespace fields +{ + struct name; + struct age; +} + +namespace boost { namespace fusion { + + struct example_sequence_tag; + + namespace extension + { + template + struct at_key_impl; + + template<> + struct at_key_impl + { + template + struct apply; + + template + struct apply + { + typedef typename mpl::if_< + is_const, + std::string const&, + std::string&>::type type; + + static type + call(Sequence& seq) + { + return seq.name; + }; + }; + + template + struct apply + { + typedef typename mpl::if_< + is_const, + int const&, + int&>::type type; + + static type + call(Sequence& seq) + { + return seq.age; + }; + }; + }; + } +}} + +#endif diff --git a/example/extension/detail/begin_impl.hpp b/example/extension/detail/begin_impl.hpp new file mode 100644 index 00000000..e24ef48b --- /dev/null +++ b/example/extension/detail/begin_impl.hpp @@ -0,0 +1,41 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_BEGIN_IMPL_20060222_2042) +#define BOOST_FUSION_BEGIN_IMPL_20060222_2042 + +#include "../example_struct_iterator.hpp" + +namespace boost { namespace fusion { + + struct example_sequence_tag; + + namespace extension + { + template + struct begin_impl; + + template<> + struct begin_impl + { + template + struct apply + { + typedef example_struct_iterator type; + + static type + call(Sequence& seq) + { + return type(seq); + } + }; + }; + } +}} + +#endif diff --git a/example/extension/detail/category_of_impl.hpp b/example/extension/detail/category_of_impl.hpp new file mode 100644 index 00000000..f3fbf63e --- /dev/null +++ b/example/extension/detail/category_of_impl.hpp @@ -0,0 +1,33 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_20060223_2037) +#define BOOST_FUSION_CATEGORY_OF_IMPL_20060223_2037 + +namespace boost { namespace fusion { + + 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/example/extension/detail/deref_impl.hpp b/example/extension/detail/deref_impl.hpp new file mode 100644 index 00000000..2be589d6 --- /dev/null +++ b/example/extension/detail/deref_impl.hpp @@ -0,0 +1,65 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_DEREF_IMPL_20060222_1952) +#define BOOST_FUSION_DEREF_IMPL_20060222_1952 + +#include +#include +#include + +#include + +namespace boost { namespace fusion { + + struct example_struct_iterator_tag; + + template + struct example_struct_iterator; + + namespace extension + { + template + struct deref_impl; + + template<> + struct deref_impl + { + template + struct apply; + + template + struct apply > + { + typedef typename mpl::if_< + is_const, std::string const&, std::string&>::type type; + + static type + call(example_struct_iterator const& it) + { + return it.struct_.name; + } + }; + + template + struct apply > + { + typedef typename mpl::if_< + is_const, int const&, int&>::type type; + + static type + call(example_struct_iterator const& it) + { + return it.struct_.age; + } + }; + }; + } +}} + +#endif diff --git a/example/extension/detail/distance_impl.hpp b/example/extension/detail/distance_impl.hpp new file mode 100644 index 00000000..d576cdb7 --- /dev/null +++ b/example/extension/detail/distance_impl.hpp @@ -0,0 +1,42 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_DISTANCE_IMPL_20060223_0814) +#define BOOST_FUSION_DISTANCE_IMPL_20060223_0814 + +#include + +namespace boost { namespace fusion { + + struct example_struct_iterator_tag; + + namespace extension + { + template + struct distance_impl; + + template<> + struct distance_impl + { + template + struct apply + : mpl::minus + { + typedef apply self; + + static typename self::type + call(First const& first, Last const& last) + { + return typename self::type(); + } + }; + }; + } +}} + +#endif diff --git a/example/extension/detail/end_impl.hpp b/example/extension/detail/end_impl.hpp new file mode 100644 index 00000000..197ed5b7 --- /dev/null +++ b/example/extension/detail/end_impl.hpp @@ -0,0 +1,41 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_END_IMPL_20060222_2042) +#define BOOST_FUSION_END_IMPL_20060222_2042 + +#include "../example_struct_iterator.hpp" + +namespace boost { namespace fusion { + + struct example_sequence_tag; + + namespace extension + { + template + struct end_impl; + + template<> + struct end_impl + { + template + struct apply + { + typedef example_struct_iterator type; + + static type + call(Sequence& seq) + { + return type(seq); + } + }; + }; + } +}} + +#endif diff --git a/example/extension/detail/equal_to_impl.hpp b/example/extension/detail/equal_to_impl.hpp new file mode 100644 index 00000000..6ab5841f --- /dev/null +++ b/example/extension/detail/equal_to_impl.hpp @@ -0,0 +1,36 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_EQUAL_TO_IMPL_20060223_1941) +#define BOOST_FUSION_EQUAL_TO_IMPL_20060223_1941 + +#include + +namespace boost { namespace fusion { + + struct example_struct_iterator_tag; + + namespace extension + { + template + struct equal_to_impl; + + template<> + struct equal_to_impl + { + template + struct apply + : mpl::equal_to< + typename It1::index, + typename It2::index> + {}; + }; + } +}} + +#endif diff --git a/example/extension/detail/has_key_impl.hpp b/example/extension/detail/has_key_impl.hpp new file mode 100644 index 00000000..45cd554c --- /dev/null +++ b/example/extension/detail/has_key_impl.hpp @@ -0,0 +1,43 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_HAS_KEY_IMPL_20060223_2156) +#define BOOST_FUSION_HAS_KEY_IMPL_20060223_2156 + +#include +#include + +namespace fields +{ + struct name; + struct age; +} + +namespace boost { namespace fusion { + + struct example_sequence_tag; + + namespace extension + { + template + struct has_key_impl; + + template<> + struct has_key_impl + { + template + struct apply + : mpl::or_< + is_same, + is_same > + {}; + }; + } +}} + +#endif diff --git a/example/extension/detail/is_associative_impl.hpp b/example/extension/detail/is_associative_impl.hpp new file mode 100644 index 00000000..18fc9922 --- /dev/null +++ b/example/extension/detail/is_associative_impl.hpp @@ -0,0 +1,34 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_IS_ASSOCIATIVE_IMPL_20060304_2324) +#define BOOST_FUSION_IS_ASSOCIATIVE_IMPL_20060304_2324 + +#include + +namespace boost { namespace fusion { + + struct example_sequence_tag; + + namespace extension + { + template + struct is_associative_impl; + + template<> + struct is_associative_impl + { + template + struct apply + : mpl::true_ + {}; + }; + } +}} + +#endif diff --git a/example/extension/detail/is_sequence_impl.hpp b/example/extension/detail/is_sequence_impl.hpp new file mode 100644 index 00000000..b8c9bede --- /dev/null +++ b/example/extension/detail/is_sequence_impl.hpp @@ -0,0 +1,32 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_IS_SEQUENCE_IMPL_20060228_1946) +#define BOOST_FUSION_IS_SEQUENCE_IMPL_20060228_1946 + +#include + +namespace boost { namespace fusion +{ + struct example_sequence_tag; + + namespace extension + { + template + struct is_sequence_impl; + + template<> + struct is_sequence_impl + { + template + struct apply : mpl::true_ {}; + }; + } +}} + +#endif diff --git a/example/extension/detail/is_view_impl.hpp b/example/extension/detail/is_view_impl.hpp new file mode 100644 index 00000000..957051d5 --- /dev/null +++ b/example/extension/detail/is_view_impl.hpp @@ -0,0 +1,30 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_IS_VIEW_IMPL_200604227_2150) +#define BOOST_FUSION_IS_VIEW_IMPL_200604227_2150 + +#include + +namespace boost { namespace fusion +{ + struct example_sequence_tag; + + namespace extension + { + template + struct is_view_impl; + + template<> + struct is_view_impl + : boost::mpl::false_ + {}; + } +}} + +#endif diff --git a/example/extension/detail/next_impl.hpp b/example/extension/detail/next_impl.hpp new file mode 100644 index 00000000..c83f414d --- /dev/null +++ b/example/extension/detail/next_impl.hpp @@ -0,0 +1,44 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_NEXT_IMPL_20060222_1859) +#define BOOST_FUSION_NEXT_IMPL_20060222_1859 + +namespace boost { namespace fusion { + + struct example_struct_iterator_tag; + + template + struct example_struct_iterator; + + namespace extension + { + template + struct next_impl; + + template<> + struct next_impl + { + template + struct apply + { + typedef typename Iterator::struct_type struct_type; + typedef typename Iterator::index index; + typedef example_struct_iterator type; + + static type + call(Iterator const& i) + { + return type(i.struct_); + } + }; + }; + } +}} + +#endif diff --git a/example/extension/detail/prior_impl.hpp b/example/extension/detail/prior_impl.hpp new file mode 100644 index 00000000..5f8a7d22 --- /dev/null +++ b/example/extension/detail/prior_impl.hpp @@ -0,0 +1,44 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_PRIOR_IMPL_20060222_1944) +#define BOOST_FUSION_PRIOR_IMPL_20060222_1944 + +namespace boost { namespace fusion { + + struct example_struct_iterator_tag; + + template + struct example_struct_iterator; + + namespace extension + { + template + struct prior_impl; + + template<> + struct prior_impl + { + template + struct apply + { + typedef typename Iterator::struct_type struct_type; + typedef typename Iterator::index index; + typedef example_struct_iterator type; + + static type + call(Iterator const& i) + { + return type(i.struct_); + } + }; + }; + } +}} + +#endif diff --git a/example/extension/detail/size_impl.hpp b/example/extension/detail/size_impl.hpp new file mode 100644 index 00000000..4e62331f --- /dev/null +++ b/example/extension/detail/size_impl.hpp @@ -0,0 +1,34 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_SIZE_IMPL_20060223_2033) +#define BOOST_FUSION_SIZE_IMPL_20060223_2033 + +#include + +namespace boost { namespace fusion { + + struct example_sequence_tag; + + namespace extension + { + template + struct size_impl; + + template<> + struct size_impl + { + template + struct apply + : mpl::int_<2> + {}; + }; + } +}} + +#endif diff --git a/example/extension/detail/value_at_impl.hpp b/example/extension/detail/value_at_impl.hpp new file mode 100644 index 00000000..9685e88c --- /dev/null +++ b/example/extension/detail/value_at_impl.hpp @@ -0,0 +1,42 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_VALUE_AT_IMPL_20060223_2025) +#define BOOST_FUSION_VALUE_AT_IMPL_20060223_2025 + +namespace boost { namespace fusion { + + struct example_sequence_tag; + + namespace extension + { + template + struct value_at_impl; + + template<> + struct value_at_impl + { + template + struct apply; + + template + struct apply > + { + typedef std::string type; + }; + + template + struct apply > + { + typedef int type; + }; + }; + } +}} + +#endif diff --git a/example/extension/detail/value_at_key_impl.hpp b/example/extension/detail/value_at_key_impl.hpp new file mode 100644 index 00000000..52b246bb --- /dev/null +++ b/example/extension/detail/value_at_key_impl.hpp @@ -0,0 +1,48 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_VALUE_AT_KEY_IMPL_20060223_2025) +#define BOOST_FUSION_VALUE_AT_KEY_IMPL_20060223_2025 + +namespace fields +{ + struct name; + struct age; +} + +namespace boost { namespace fusion { + + struct example_sequence_tag; + + namespace extension + { + template + struct value_at_key_impl; + + template<> + struct value_at_key_impl + { + template + struct apply; + + template + struct apply + { + typedef std::string type; + }; + + template + struct apply + { + typedef int type; + }; + }; + } +}} + +#endif diff --git a/example/extension/detail/value_of_impl.hpp b/example/extension/detail/value_of_impl.hpp new file mode 100644 index 00000000..2d2d33c5 --- /dev/null +++ b/example/extension/detail/value_of_impl.hpp @@ -0,0 +1,48 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_VALUE_OF_IMPL_20060223_1905) +#define BOOST_FUSION_VALUE_OF_IMPL_20060223_1905 + +#include + +namespace boost { namespace fusion { + + struct example_struct_iterator_tag; + + template + struct example_struct_iterator; + + namespace extension + { + template + struct value_of_impl; + + template<> + struct value_of_impl + { + template + struct apply; + + template + struct apply > + { + typedef std::string type; + }; + + template + struct apply > + { + typedef int type; + }; + + }; + } +}} + +#endif diff --git a/example/extension/example_struct.hpp b/example/extension/example_struct.hpp new file mode 100644 index 00000000..9e742ae3 --- /dev/null +++ b/example/extension/example_struct.hpp @@ -0,0 +1,27 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_EXAMPLE_STRUCT) +#define BOOST_FUSION_EXAMPLE_STRUCT + +#include "./tag_of.hpp" +#include "./example_struct_iterator.hpp" +#include "./detail/begin_impl.hpp" +#include "./detail/end_impl.hpp" +#include "./detail/at_impl.hpp" +#include "./detail/value_at_impl.hpp" +#include "./detail/size_impl.hpp" +#include "./detail/category_of_impl.hpp" +#include "./detail/at_key_impl.hpp" +#include "./detail/value_at_key_impl.hpp" +#include "./detail/has_key_impl.hpp" +#include "./detail/is_sequence_impl.hpp" +#include "./detail/is_associative_impl.hpp" +#include "./detail/is_view_impl.hpp" + +#endif diff --git a/example/extension/example_struct_iterator.hpp b/example/extension/example_struct_iterator.hpp new file mode 100644 index 00000000..3f60b914 --- /dev/null +++ b/example/extension/example_struct_iterator.hpp @@ -0,0 +1,47 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_EXAMPLE_STRUCT_ITERATOR) +#define BOOST_FUSION_EXAMPLE_STRUCT_ITERATOR + +#include +#include +#include +#include + +#include "./detail/next_impl.hpp" +#include "./detail/prior_impl.hpp" +#include "./detail/deref_impl.hpp" +#include "./detail/advance_impl.hpp" +#include "./detail/distance_impl.hpp" +#include "./detail/value_of_impl.hpp" +#include "./detail/equal_to_impl.hpp" + +namespace boost { namespace fusion { + + struct example_struct_iterator_tag; + struct random_access_traversal_tag; + + template + struct example_struct_iterator + : iterator_base > + { + BOOST_STATIC_ASSERT(Pos >=0 && Pos < 3); + typedef Struct struct_type; + typedef mpl::int_ index; + typedef example_struct_iterator_tag ftag; + typedef random_access_traversal_tag category; + + example_struct_iterator(Struct& str) + : struct_(str) {} + + Struct& struct_; + }; +}} + +#endif diff --git a/example/extension/example_struct_type.hpp b/example/extension/example_struct_type.hpp new file mode 100644 index 00000000..543c9b69 --- /dev/null +++ b/example/extension/example_struct_type.hpp @@ -0,0 +1,28 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_EXAMPLE_STRUCT_TYPE) +#define BOOST_FUSION_EXAMPLE_STRUCT_TYPE + +#include + +namespace example +{ + struct example_struct + { + std::string name; + int age; + example_struct( + const std::string& n, + int a) + : name(n), age(a) + {} + }; +} + +#endif diff --git a/example/extension/tag_of.hpp b/example/extension/tag_of.hpp new file mode 100644 index 00000000..dfe06dfc --- /dev/null +++ b/example/extension/tag_of.hpp @@ -0,0 +1,28 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_TAG_OF_20060222_2052) +#define BOOST_FUSION_TAG_OF_20060222_2052 + +#include +#include "./example_struct_type.hpp" + +namespace boost { namespace fusion { + + struct example_sequence_tag; + +namespace traits { + + template<> + struct tag_of + { + typedef example_sequence_tag type; + }; +}}} + +#endif diff --git a/example/extension/test_example.cpp b/example/extension/test_example.cpp new file mode 100644 index 00000000..8a858c0b --- /dev/null +++ b/example/extension/test_example.cpp @@ -0,0 +1,63 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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 "./example_struct.hpp" +#include "./example_struct_type.hpp" +#include + +#include +#include +#include +#include +#include +#include + +int main() +{ + example::example_struct bert("bert", 99); + using namespace boost::fusion; + BOOST_MPL_ASSERT((traits::is_associative)); + BOOST_TEST(*begin(bert) == "bert"); + BOOST_TEST(*next(begin(bert)) == 99); + BOOST_TEST(*prior(end(bert)) == 99); + BOOST_TEST(*advance_c<1>(begin(bert)) == 99); + BOOST_TEST(*advance_c<-1>(end(bert)) == 99); + BOOST_TEST(distance(begin(bert), end(bert)) == 2); + + typedef result_of::begin::type first; + typedef result_of::next::type second; + BOOST_MPL_ASSERT((boost::is_same::type, std::string>)); + BOOST_MPL_ASSERT((boost::is_same::type, int>)); + + BOOST_TEST(begin(bert) != end(bert)); + BOOST_TEST(advance_c<2>(begin(bert)) == end(const_cast(bert))); + + BOOST_TEST(at_c<0>(bert) == "bert"); + BOOST_TEST(at_c<1>(bert) == 99); + + BOOST_TEST(at_key(bert) == "bert"); + BOOST_TEST(at_key(bert) == 99); + + BOOST_TEST(has_key(bert)); + BOOST_TEST(has_key(bert)); + BOOST_TEST(!has_key(bert)); + + BOOST_MPL_ASSERT((boost::is_same::type, std::string>)); + BOOST_MPL_ASSERT((boost::is_same::type, int>)); + + BOOST_MPL_ASSERT((boost::is_same::type, std::string>)); + BOOST_MPL_ASSERT((boost::is_same::type, int>)); + + BOOST_TEST(size(bert) == 2); + + BOOST_MPL_ASSERT((boost::is_same::type, random_access_traversal_tag>)); + + BOOST_MPL_ASSERT((traits::is_sequence)); + + return boost::report_errors(); +} diff --git a/index.html b/index.html new file mode 100644 index 00000000..b6ce29ba --- /dev/null +++ b/index.html @@ -0,0 +1,10 @@ + + + + + + + Automatic redirection failed, click this + link + + diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 new file mode 100644 index 00000000..437efad6 --- /dev/null +++ b/test/Jamfile.v2 @@ -0,0 +1,96 @@ +#============================================================================== +# Copyright (c) 2003-2006 Joel de Guzman +# +# Use, modification and distribution is 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) +#============================================================================== + +# bring in rules for testing +import testing ; + +{ + test-suite fusion : + + [ run algorithm/all.cpp : : : : ] + [ run algorithm/any.cpp : : : : ] + [ run algorithm/clear.cpp : : : : ] + [ run algorithm/count.cpp : : : : ] + [ run algorithm/count_if.cpp : : : : ] + [ run algorithm/erase.cpp : : : : ] + [ run algorithm/erase_key.cpp : : : : ] + [ run algorithm/filter.cpp : : : : ] + [ run algorithm/filter_if.cpp : : : : ] + [ run algorithm/find.cpp : : : : ] + [ run algorithm/find_if.cpp : : : : ] + [ run algorithm/fold.cpp : : : : ] + [ run algorithm/for_each.cpp : : : : ] + [ run algorithm/insert.cpp : : : : ] + [ run algorithm/insert_range.cpp : : : : ] + [ run algorithm/none.cpp : : : : ] + [ run algorithm/pop_back.cpp : : : : ] + [ run algorithm/pop_front.cpp : : : : ] + [ run algorithm/push_back.cpp : : : : ] + [ run algorithm/push_front.cpp : : : : ] + [ run algorithm/remove.cpp : : : : ] + [ run algorithm/remove_if.cpp : : : : ] + [ run algorithm/replace.cpp : : : : ] + [ run algorithm/replace_if.cpp : : : : ] + [ run algorithm/reverse.cpp : : : : ] + [ run algorithm/transform.cpp : : : : ] + [ run algorithm/join.cpp : : : : ] + [ run algorithm/zip.cpp : : : : ] + + [ run sequence/as_list.cpp : : : : ] + [ run sequence/as_map.cpp : : : : ] + [ run sequence/as_set.cpp : : : : ] + [ run sequence/as_vector.cpp : : : : ] + [ run sequence/cons.cpp : : : : ] + [ run sequence/filter_view.cpp : : : : ] + [ run sequence/io.cpp : : : : ] + [ run sequence/iterator_range.cpp : : : : ] + [ run sequence/joint_view.cpp : : : : ] + [ run sequence/list_comparison.cpp : : : : ] + [ run sequence/list_construction.cpp : : : : ] + [ run sequence/list_copy.cpp : : : : ] + [ run sequence/list_iterator.cpp : : : : ] + [ run sequence/list_make.cpp : : : : ] + [ run sequence/list_misc.cpp : : : : ] + [ run sequence/list_mutate.cpp : : : : ] + [ run sequence/list_tie.cpp : : : : ] + [ run sequence/list_value_at.cpp : : : : ] + [ run sequence/make_list.cpp : : : : ] + [ run sequence/make_vector.cpp : : : : ] + [ run sequence/map.cpp : : : : ] + [ run sequence/reverse_view.cpp : : : : ] + [ run sequence/set.cpp : : : : ] + [ run sequence/single_view.cpp : : : : ] + [ run sequence/std_pair.cpp : : : : ] + [ run sequence/array.cpp : : : : ] + [ run sequence/tuple_comparison.cpp : : : : ] + [ run sequence/tuple_construction.cpp : : : : ] + [ run sequence/tuple_copy.cpp : : : : ] + [ run sequence/tuple_element.cpp : : : : ] + [ run sequence/tuple_make.cpp : : : : ] + [ run sequence/tuple_misc.cpp : : : : ] + [ run sequence/tuple_mutate.cpp : : : : ] + [ run sequence/tuple_tie.cpp : : : : ] + [ run sequence/transform_view.cpp : : : : ] + [ run sequence/unpack_args.cpp ] + [ run sequence/vector_comparison.cpp : : : : ] + [ run sequence/vector_construction.cpp : : : : ] + [ run sequence/vector_copy.cpp : : : : ] + [ run sequence/vector_iterator.cpp : : : : ] + [ run sequence/vector_make.cpp : : : : ] + [ run sequence/vector_misc.cpp : : : : ] + [ run sequence/vector_mutate.cpp : : : : ] + [ run sequence/vector_n.cpp : : : : ] + [ run sequence/vector_tie.cpp : : : : ] + [ run sequence/vector_value_at.cpp : : : : ] + [ run sequence/zip_view.cpp : : : : ] + [ run sequence/zip_view2.cpp : : : : ] +# [ compile-fail xxx.cpp : : : : ] + + ; +} + diff --git a/test/algorithm/all.cpp b/test/algorithm/all.cpp new file mode 100644 index 00000000..8cc75586 --- /dev/null +++ b/test/algorithm/all.cpp @@ -0,0 +1,38 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +int +main() +{ + { + boost::fusion::vector t(1, 2, 3.3); + BOOST_TEST((boost::fusion::all(t, boost::lambda::_1 < 4))); + BOOST_TEST((boost::fusion::all(t, boost::lambda::_1 > 0))); + } + + { + boost::fusion::vector t(1, 2, 3.3); + BOOST_TEST((!boost::fusion::all(t, boost::lambda::_1 == 1))); + BOOST_TEST((!boost::fusion::all(t, boost::lambda::_1 < 3))); + } + + { + typedef boost::mpl::vector_c mpl_vec; + BOOST_TEST(boost::fusion::all(mpl_vec(), boost::lambda::_1 < 4)); + BOOST_TEST(!boost::fusion::all(mpl_vec(), boost::lambda::_1 == 2)); + } + + return boost::report_errors(); +} + diff --git a/test/algorithm/any.cpp b/test/algorithm/any.cpp new file mode 100644 index 00000000..5b7ab2ed --- /dev/null +++ b/test/algorithm/any.cpp @@ -0,0 +1,37 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005 Eric Niebler + + Use, modification and distribution is 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 + +int +main() +{ + { + boost::fusion::vector t(1, 2, 3.3); + BOOST_TEST(boost::fusion::any(t, boost::lambda::_1 == 2)); + } + + { + boost::fusion::vector t(1, 2, 3.3); + BOOST_TEST(!boost::fusion::any(t, boost::lambda::_1 == 3)); + } + + { + typedef boost::mpl::vector_c mpl_vec; + BOOST_TEST(boost::fusion::any(mpl_vec(), boost::lambda::_1 == 2)); + BOOST_TEST(!boost::fusion::any(mpl_vec(), boost::lambda::_1 == 4)); + } + + return boost::report_errors(); +} + diff --git a/test/algorithm/clear.cpp b/test/algorithm/clear.cpp new file mode 100644 index 00000000..830e3821 --- /dev/null +++ b/test/algorithm/clear.cpp @@ -0,0 +1,46 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +int +main() +{ + using namespace boost::fusion; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + +/// Testing pop_back + + { + char const* s = "Ruby"; + typedef vector vector_type; + vector_type t1(1, 'x', 3.3, s); + + { + std::cout << clear(t1) << std::endl; + BOOST_TEST((clear(t1) == make_vector())); + } + } + + { + typedef boost::mpl::vector_c mpl_vec; + std::cout << boost::fusion::clear(mpl_vec()) << std::endl; + BOOST_TEST((boost::fusion::clear(mpl_vec()) == make_vector())); + } + + return boost::report_errors(); +} + diff --git a/test/algorithm/count.cpp b/test/algorithm/count.cpp new file mode 100644 index 00000000..718427c2 --- /dev/null +++ b/test/algorithm/count.cpp @@ -0,0 +1,42 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005 Eric Niebler + + Use, modification and distribution is 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 + +int +main() +{ + { + boost::fusion::vector t(1, 1, 1); + BOOST_TEST(boost::fusion::count(t, 1) == 3); + } + + { + boost::fusion::vector t(1, 2, 3.3); + BOOST_TEST(boost::fusion::count(t, 3) == 0); + } + + { + boost::fusion::vector t(4, "hello", 4); + BOOST_TEST(boost::fusion::count(t, "hello") == 1); + } + + { + typedef boost::mpl::vector_c mpl_vec; + BOOST_TEST(boost::fusion::count(mpl_vec(), 2) == 3); + BOOST_TEST(boost::fusion::count(mpl_vec(), 3) == 2); + } + + return boost::report_errors(); +} + diff --git a/test/algorithm/count_if.cpp b/test/algorithm/count_if.cpp new file mode 100644 index 00000000..3130cdc4 --- /dev/null +++ b/test/algorithm/count_if.cpp @@ -0,0 +1,37 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005 Eric Niebler + + Use, modification and distribution is 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 + +int +main() +{ + { + boost::fusion::vector t(1, 2, 3.3); + BOOST_TEST(boost::fusion::count_if(t, boost::lambda::_1 == 2) == 1); + } + + { + boost::fusion::vector t(1, 2, 3.3); + BOOST_TEST(boost::fusion::count_if(t, boost::lambda::_1 == 3) == 0); + } + + { + typedef boost::mpl::vector_c mpl_vec; + BOOST_TEST(boost::fusion::count_if(mpl_vec(), boost::lambda::_1 <= 2) == 2); + BOOST_TEST(boost::fusion::count_if(mpl_vec(), boost::lambda::_1 > 2) == 1); + } + + return boost::report_errors(); +} + diff --git a/test/algorithm/erase.cpp b/test/algorithm/erase.cpp new file mode 100644 index 00000000..97520964 --- /dev/null +++ b/test/algorithm/erase.cpp @@ -0,0 +1,64 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +int +main() +{ + using namespace boost::fusion; + using boost::mpl::vector_c; + using boost::mpl::begin; + using boost::mpl::advance; + using boost::mpl::int_; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + +/// Testing erase + + { + typedef vector vector_type; + vector_type t1(1, 'x', 3.3, "Ruby"); + vector_iterator pos(t1); + + std::cout << erase(t1, pos) << std::endl; + BOOST_TEST((erase(t1, pos) == make_vector(1, 'x', std::string("Ruby")))); + BOOST_TEST((erase(t1, end(t1)) == make_vector(1, 'x', 3.3, std::string("Ruby")))); + } + + { + typedef vector_c mpl_vec; + typedef boost::mpl::begin::type mpl_vec_begin; + typedef boost::mpl::advance >::type mpl_vec_at3; + typedef boost::mpl::next::type n1; + typedef boost::mpl::next::type n2; + typedef boost::mpl::next::type n3; + + BOOST_STATIC_ASSERT((boost::is_same::value)); + + + std::cout << erase(mpl_vec(), mpl_vec_at3()) << std::endl; + BOOST_TEST((erase(mpl_vec(), mpl_vec_at3()) + == make_vector(1, 2, 3, 5))); + } + + return boost::report_errors(); +} + diff --git a/test/algorithm/erase_key.cpp b/test/algorithm/erase_key.cpp new file mode 100644 index 00000000..1540ff6e --- /dev/null +++ b/test/algorithm/erase_key.cpp @@ -0,0 +1,75 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 +#include +#include +#include +#include +#include +#include +#include + +template +void test_set(Set const& set) +{ + using namespace boost::fusion; + std::cout << set << std::endl; + + BOOST_STATIC_ASSERT(result_of::size::value == 3); + BOOST_TEST((*find(set) == 1)); + BOOST_TEST((*find(set) == 1.5)); + BOOST_TEST((*find(set) == "hello")); +} + +typedef boost::mpl::int_<1> _1; +typedef boost::mpl::int_<2> _2; +typedef boost::mpl::int_<3> _3; +typedef boost::mpl::int_<4> _4; + +template +void test_map(Map const& map) +{ + using namespace boost::fusion; + std::cout << map << std::endl; + + BOOST_STATIC_ASSERT(result_of::size::value == 3); + BOOST_TEST(((*find<_1>(map)).second == 1)); + BOOST_TEST(((*find<_3>(map)).second == 1.5)); + BOOST_TEST(((*find<_4>(map)).second == std::string("hello"))); +} + +int +main() +{ + using namespace boost::fusion; + using namespace boost; + using namespace std; + using boost::fusion::pair; + using boost::fusion::make_pair; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + + test_set(as_set(erase_key(make_set(1, 'x', 1.5, std::string("hello"))))); + test_map(as_map(erase_key<_2>(make_map<_1, _2, _3, _4>(1, 'x', 1.5, "hello")))); + + return boost::report_errors(); +} + diff --git a/test/algorithm/filter.cpp b/test/algorithm/filter.cpp new file mode 100644 index 00000000..196e37b8 --- /dev/null +++ b/test/algorithm/filter.cpp @@ -0,0 +1,44 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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 + +int +main() +{ + using namespace boost::fusion; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + + typedef boost::fusion::vector vector_type; + vector_type t('a', 6.6, 'b'); + + { + std::cout << filter(t) << std::endl; + BOOST_TEST((filter(t) + == make_vector('a', 'b'))); + } + + { + typedef boost::mpl::vector mpl_vec; + BOOST_TEST((filter(mpl_vec()) + == make_vector('\0', '\0'))); + } + + return boost::report_errors(); +} + diff --git a/test/algorithm/filter_if.cpp b/test/algorithm/filter_if.cpp new file mode 100644 index 00000000..b8b80735 --- /dev/null +++ b/test/algorithm/filter_if.cpp @@ -0,0 +1,78 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +struct X +{ + operator char const*() const + { + return ""; + } +}; + +struct Y +{ + operator char const*() const + { + return ""; + } +}; + +int +main() +{ + using namespace boost::fusion; + + using boost::mpl::_; + using boost::mpl::not_; + using boost::is_class; + using boost::is_same; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + +/// Testing filter_if + + X x; Y y; + typedef boost::fusion::vector vector_type; + vector_type t(y, '@', 987654, x, true, 6.6); + + { + std::cout << filter_if > >(t) << std::endl; + BOOST_TEST((filter_if > >(t) + == make_vector('@', 987654, true, 6.6))); + } + + { + std::cout << filter_if >(t) << std::endl; + BOOST_TEST((filter_if >(t) + == make_vector(y, x))); + } + + { + typedef boost::mpl::vector mpl_vec; + BOOST_TEST((filter_if > >(mpl_vec()) + == make_vector(char(), long(), bool()))); + BOOST_TEST((filter_if >(mpl_vec()) + == make_vector(y, x))); + } + + return boost::report_errors(); +} + diff --git a/test/algorithm/find.cpp b/test/algorithm/find.cpp new file mode 100644 index 00000000..3bf4d1b3 --- /dev/null +++ b/test/algorithm/find.cpp @@ -0,0 +1,80 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +struct X +{ + operator int() const + { + return 12345; + } +}; +int +main() +{ + using namespace boost::fusion; + using boost::mpl::identity; + + { + typedef vector seq_type; + seq_type seq(12345, 'x', 678910, 3.36); + + std::cout << *boost::fusion::find(seq) << std::endl; + BOOST_TEST(*boost::fusion::find(seq) == 'x'); + + std::cout << *boost::fusion::find(seq) << std::endl; + BOOST_TEST(*boost::fusion::find(seq) == 12345); + + std::cout << *boost::fusion::find(seq) << std::endl; + BOOST_TEST(*boost::fusion::find(seq) == 3.36); + + BOOST_TEST(boost::fusion::find(seq) == boost::fusion::end(seq)); + } + + { + typedef set seq_type; + seq_type seq(12345, 'x', 3.36); + std::cout << *boost::fusion::find(seq) << std::endl; + BOOST_TEST(*boost::fusion::find(seq) == 'x'); + BOOST_TEST(boost::fusion::find(seq) == boost::fusion::end(seq)); + } + + { + typedef map< + pair + , pair > + map_type; + + map_type seq( + make_pair('X') + , make_pair("Men")); + + std::cout << *boost::fusion::find(seq) << std::endl; + std::cout << *boost::fusion::find(seq) << std::endl; + BOOST_TEST((*boost::fusion::find(seq)).second == 'X'); + BOOST_TEST((*boost::fusion::find(seq)).second == "Men"); + BOOST_TEST(boost::fusion::find(seq) == boost::fusion::end(seq)); + } + + { + typedef boost::mpl::vector mpl_vec; + BOOST_TEST((*boost::fusion::find(mpl_vec()) == 12345)); + BOOST_TEST(boost::fusion::find(mpl_vec()) == boost::fusion::end(mpl_vec())); + } + + return boost::report_errors(); +} + diff --git a/test/algorithm/find_if.cpp b/test/algorithm/find_if.cpp new file mode 100644 index 00000000..18e262b2 --- /dev/null +++ b/test/algorithm/find_if.cpp @@ -0,0 +1,70 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +struct X +{ + operator int() const + { + return 12345; + } +}; + +int +main() +{ + using namespace boost::fusion; + + { + using boost::is_same; + using boost::mpl::_; + + typedef vector vector_type; + vector_type v(12345, 'x', 678910, 3.36); + + std::cout << *find_if >(v) << std::endl; + BOOST_TEST((*find_if >(v) == 'x')); + + std::cout << *find_if >(v) << std::endl; + BOOST_TEST((*find_if >(v) == 12345)); + + std::cout << *find_if >(v) << std::endl; + BOOST_TEST((*find_if >(v) == 3.36)); + } + + { + using boost::mpl::vector; + using boost::is_same; + using boost::mpl::_; + + typedef vector mpl_vec; + BOOST_TEST((*find_if >(mpl_vec()) == 12345)); + } + + { + using boost::mpl::vector_c; + using boost::mpl::less; + using boost::mpl::int_; + using boost::is_same; + using boost::mpl::_; + + typedef vector_c mpl_vec; + BOOST_TEST((*find_if > >(mpl_vec()) == 1)); + } + + return boost::report_errors(); +} + diff --git a/test/algorithm/fold.cpp b/test/algorithm/fold.cpp new file mode 100644 index 00000000..61dc3e91 --- /dev/null +++ b/test/algorithm/fold.cpp @@ -0,0 +1,110 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +using boost::mpl::if_; +using boost::mpl::int_; +using boost::is_same; + +struct add_ints_only +{ + template + struct result + { + typedef State type; + }; + + template + State const& + operator()(T const& x, State const& state) const + { + return state; + } + + int + operator()(int x, int state) const + { + return x + state; + } +}; + +struct count_ints +{ + template + struct result + { + typedef typename + if_< + is_same + , typename boost::mpl::next::type + , CountT + >::type + type; + }; + + template + typename result::type + operator()(T const&, CountT const&) const + { + typedef typename result::type result; + return result(); + } +}; + +int +main() +{ + using namespace boost::fusion; + namespace fusion = boost::fusion; + + { + typedef vector vector_type; + vector_type v(12345, 'x', 678910, 3.36); + int result = fold(v, 0, add_ints_only()); + std::cout << result << std::endl; + BOOST_TEST(result == 12345+678910); + } + + { + typedef vector vector_type; + vector_type v(12345); + + int n = fusion::fold(v, int_<0>(), count_ints()); + std::cout << n << std::endl; + BOOST_TEST(n == 1); + } + + { + typedef vector vector_type; + vector_type v(12345, 'x', 678910, 3.36, 8756); + + int n = fusion::fold(v, int_<0>(), count_ints()); + std::cout << n << std::endl; + BOOST_TEST(n == 3); + } + + { + typedef boost::mpl::vector mpl_vec; + int n = fusion::fold(mpl_vec(), int_<0>(), count_ints()); + std::cout << n << std::endl; + BOOST_TEST(n == 3); + } + + return boost::report_errors(); +} + diff --git a/test/algorithm/for_each.cpp b/test/algorithm/for_each.cpp new file mode 100644 index 00000000..26a9831d --- /dev/null +++ b/test/algorithm/for_each.cpp @@ -0,0 +1,62 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +struct print +{ + template + void operator()(T const& v) const + { + std::cout << "[ " << v << " ] "; + } +}; + +struct increment +{ + template + void operator()(T& v) const + { + ++v; + } +}; + +int +main() +{ + using namespace boost::fusion; + using boost::mpl::vector_c; + namespace fusion = boost::fusion; + + { + typedef vector vector_type; + vector_type v(1, 'x', 3.3, "Ruby"); + for_each(v, print()); + std::cout << std::endl; + } + + { + typedef vector vector_type; + vector_type v(1, 'x', 3.3, "Ruby"); + for_each(v, increment()); + std::cout << v << std::endl; + } + + { + typedef vector_c mpl_vec; + fusion::for_each(mpl_vec(), print()); + std::cout << std::endl; + } + + return boost::report_errors(); +} + diff --git a/test/algorithm/insert.cpp b/test/algorithm/insert.cpp new file mode 100644 index 00000000..da3858ad --- /dev/null +++ b/test/algorithm/insert.cpp @@ -0,0 +1,68 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +int +main() +{ + using namespace boost::fusion; + using boost::mpl::vector_c; + using boost::mpl::advance; + using boost::mpl::int_; + namespace fusion = boost::fusion; + namespace mpl = boost::mpl; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + +/// Testing insert + + { + char const* s = "Ruby"; + typedef vector vector_type; + vector_type t1(1, 'x', 3.3, s); + vector_iterator pos(t1); + + std::cout << insert(t1, pos, 123456) << std::endl; + BOOST_TEST((insert(t1, pos, 123456) + == make_vector(1, 'x', 123456, 3.3, s))); + + std::cout << insert(t1, end(t1), 123456) << std::endl; + BOOST_TEST((insert(t1, end(t1), 123456) + == make_vector(1, 'x', 3.3, s, 123456))); + + std::cout << insert(t1, begin(t1), "glad") << std::endl; + BOOST_TEST((insert(t1, begin(t1), "glad") + == make_vector(std::string("glad"), 1, 'x', 3.3, s))); + } + + { + typedef vector_c mpl_vec; + typedef mpl::begin::type mpl_vec_begin; + typedef advance >::type mpl_vec_at3; + + std::cout << fusion::insert(mpl_vec(), mpl_vec_at3(), int_<66>()) << std::endl; + BOOST_TEST((fusion::insert(mpl_vec(), mpl_vec_at3(), int_<66>()) + == make_vector(1, 2, 3, 66, 4, 5))); + } + + return boost::report_errors(); +} + diff --git a/test/algorithm/insert_range.cpp b/test/algorithm/insert_range.cpp new file mode 100644 index 00000000..030d194c --- /dev/null +++ b/test/algorithm/insert_range.cpp @@ -0,0 +1,72 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +int +main() +{ + using namespace boost::fusion; + using boost::mpl::vector_c; + using boost::mpl::advance; + using boost::mpl::int_; + namespace fusion = boost::fusion; + namespace mpl = boost::mpl; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + +/// Testing insert_range + + { + char const* s = "Ruby"; + typedef vector vector_type; + vector_type t1(1, 'x', 3.3, s); + vector_iterator pos(t1); + + typedef vector vector_type2; + vector_type2 t2(999, 'z'); + + std::cout << insert_range(t1, pos, t2) << std::endl; + BOOST_TEST((insert_range(t1, pos, t2) + == make_vector(1, 'x', 999, 'z', 3.3, s))); + + std::cout << insert_range(t1, end(t1), t2) << std::endl; + BOOST_TEST((insert_range(t1, end(t1), t2) + == make_vector(1, 'x', 3.3, s, 999, 'z'))); + + std::cout << insert_range(t1, begin(t1), t2) << std::endl; + BOOST_TEST((insert_range(t1, begin(t1), t2) + == make_vector(999, 'z', 1, 'x', 3.3, s))); + } + + { + typedef vector_c mpl_vec; + typedef mpl::begin::type mpl_vec_begin; + typedef advance >::type mpl_vec_at3; + typedef vector_c mpl_vec2; + + std::cout << fusion::insert_range(mpl_vec(), mpl_vec_at3(), mpl_vec2()) << std::endl; + BOOST_TEST((fusion::insert_range(mpl_vec(), mpl_vec_at3(), mpl_vec2()) + == make_vector(1, 2, 3, -1, -2, 4, 5))); + } + + return boost::report_errors(); +} + diff --git a/test/algorithm/join.cpp b/test/algorithm/join.cpp new file mode 100644 index 00000000..9a5ec800 --- /dev/null +++ b/test/algorithm/join.cpp @@ -0,0 +1,29 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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 + +int main() +{ + using namespace boost::fusion; + { + BOOST_TEST(join(make_vector(1,2), make_vector('a','b')) == make_vector(1,2,'a','b')); + } + { + typedef boost::mpl::vector2_c vec1; + typedef boost::mpl::vector2_c vec2; + BOOST_TEST(join(vec1(), vec2()) == make_vector(1,2,3,4)); + + } + return boost::report_errors(); +} diff --git a/test/algorithm/none.cpp b/test/algorithm/none.cpp new file mode 100644 index 00000000..00d355be --- /dev/null +++ b/test/algorithm/none.cpp @@ -0,0 +1,38 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +int +main() +{ + { + boost::fusion::vector t(1, 2, 3.3); + BOOST_TEST((boost::fusion::none(t, boost::lambda::_1 > 4))); + BOOST_TEST((boost::fusion::none(t, boost::lambda::_1 < 0))); + } + + { + boost::fusion::vector t(1, 2, 3.3); + BOOST_TEST((!boost::fusion::none(t, boost::lambda::_1 == 1))); + BOOST_TEST((!boost::fusion::none(t, boost::lambda::_1 < 3))); + } + + { + typedef boost::mpl::vector_c mpl_vec; + BOOST_TEST(boost::fusion::none(mpl_vec(), boost::lambda::_1 > 4)); + BOOST_TEST(!boost::fusion::none(mpl_vec(), boost::lambda::_1 != 2)); + } + + return boost::report_errors(); +} + diff --git a/test/algorithm/pop_back.cpp b/test/algorithm/pop_back.cpp new file mode 100644 index 00000000..7f2b3438 --- /dev/null +++ b/test/algorithm/pop_back.cpp @@ -0,0 +1,47 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +int +main() +{ + using namespace boost::fusion; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + +/// Testing pop_back + + { + char const* s = "Ruby"; + typedef vector vector_type; + vector_type t1(1, 'x', 3.3, s); + + { + std::cout << pop_back(t1) << std::endl; + BOOST_TEST((pop_back(t1) == make_vector(1, 'x', 3.3))); + } + } + + { + typedef boost::mpl::vector_c mpl_vec; + std::cout << boost::fusion::pop_back(mpl_vec()) << std::endl; + BOOST_TEST((boost::fusion::pop_back(mpl_vec()) == make_vector(1, 2, 3, 4))); + } + + return boost::report_errors(); +} + diff --git a/test/algorithm/pop_front.cpp b/test/algorithm/pop_front.cpp new file mode 100644 index 00000000..0daea5cd --- /dev/null +++ b/test/algorithm/pop_front.cpp @@ -0,0 +1,47 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +int +main() +{ + using namespace boost::fusion; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + +/// Testing pop_front + + { + char const* s = "Ruby"; + typedef vector vector_type; + vector_type t1(1, 'x', 3.3, s); + + { + std::cout << pop_front(t1) << std::endl; + BOOST_TEST((pop_front(t1) == make_vector('x', 3.3, s))); + } + } + + { + typedef boost::mpl::vector_c mpl_vec; + std::cout << boost::fusion::pop_front(mpl_vec()) << std::endl; + BOOST_TEST((boost::fusion::pop_front(mpl_vec()) == make_vector(2, 3, 4, 5))); + } + + return boost::report_errors(); +} + diff --git a/test/algorithm/push_back.cpp b/test/algorithm/push_back.cpp new file mode 100644 index 00000000..b2b1386a --- /dev/null +++ b/test/algorithm/push_back.cpp @@ -0,0 +1,73 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +struct plus_one +{ + template + void operator()(T& v) const + { + v += 1; + } +}; + +int +main() +{ + using namespace boost::fusion; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + +/// Testing push_back + + { + char const* s = "Ruby"; + typedef vector vector_type; + vector_type t1(1, 'x', 3.3, s); + + { + std::cout << push_back(t1, 123456) << std::endl; + BOOST_TEST((push_back(t1, 123456) + == make_vector(1, 'x', 3.3, s, 123456))); + } + + { + std::cout << push_back(t1, "funny") << std::endl; + BOOST_TEST((push_back(t1, "funny") + == make_vector(1, 'x', 3.3, s, std::string("funny")))); + } + + { + std::cout << push_back(t1, t1) << std::endl; + BOOST_TEST((push_back(t1, t1) + == make_vector(1, 'x', 3.3, s, t1))); + } + } + + { + typedef boost::mpl::vector_c mpl_vec; + std::cout << boost::fusion::push_back(mpl_vec(), boost::mpl::int_<6>()) << std::endl; + BOOST_TEST((boost::fusion::push_back(mpl_vec(), boost::mpl::int_<6>()) + == make_vector(1, 2, 3, 4, 5, 6))); + } + + return boost::report_errors(); +} + diff --git a/test/algorithm/push_front.cpp b/test/algorithm/push_front.cpp new file mode 100644 index 00000000..c2c4dc70 --- /dev/null +++ b/test/algorithm/push_front.cpp @@ -0,0 +1,56 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +int +main() +{ + using namespace boost::fusion; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + +/// Testing push_front + + { + char const* s = "Ruby"; + typedef vector vector_type; + vector_type t1(1, 'x', 3.3, s); + + { + std::cout << push_front(t1, 123456) << std::endl; + BOOST_TEST((push_front(t1, 123456) + == make_vector(123456, 1, 'x', 3.3, s))); + } + + { + std::cout << push_front(t1, "lively") << std::endl; + BOOST_TEST((push_front(t1, "lively") + == make_vector(std::string("lively"), 1, 'x', 3.3, s))); + } + } + + { + typedef boost::mpl::vector_c mpl_vec; + std::cout << boost::fusion::push_front(mpl_vec(), boost::mpl::int_<1>()) << std::endl; + BOOST_TEST((boost::fusion::push_front(mpl_vec(), boost::mpl::int_<1>()) + == make_vector(1, 2, 3, 4, 5, 6))); + } + + return boost::report_errors(); +} + diff --git a/test/algorithm/remove.cpp b/test/algorithm/remove.cpp new file mode 100644 index 00000000..cdc69ff3 --- /dev/null +++ b/test/algorithm/remove.cpp @@ -0,0 +1,81 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +struct X +{ + operator char const*() const + { + return ""; + } +}; + +struct Y +{ + operator char const*() const + { + return ""; + } +}; + +int +main() +{ + using namespace boost::fusion; + using boost::mpl::identity; + using boost::mpl::vector; + namespace fusion = boost::fusion; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + +/// Testing remove + + X x; Y y; + typedef fusion::vector vector_type; + vector_type t(y, '@', 987654, x, true, 6.6); + + { + std::cout << fusion::remove(t) << std::endl; + BOOST_TEST((fusion::remove(t) + == make_vector(y, '@', 987654, true, 6.6))); + } + + { + std::cout << fusion::remove(t) << std::endl; + BOOST_TEST((fusion::remove(t) + == make_vector('@', 987654, x, true, 6.6))); + } + + { + std::cout << fusion::remove(t) << std::endl; + BOOST_TEST((fusion::remove(t) + == make_vector(y, '@', x, true, 6.6))); + } + + { + typedef vector mpl_vec; + BOOST_TEST((fusion::remove(mpl_vec()) + == vector())); + BOOST_TEST((fusion::remove(mpl_vec()) + == vector())); + BOOST_TEST((fusion::remove(mpl_vec()) + == vector())); + } + + return boost::report_errors(); +} + diff --git a/test/algorithm/remove_if.cpp b/test/algorithm/remove_if.cpp new file mode 100644 index 00000000..8268e7f9 --- /dev/null +++ b/test/algorithm/remove_if.cpp @@ -0,0 +1,79 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +struct X +{ + operator char const*() const + { + return ""; + } +}; + +struct Y +{ + operator char const*() const + { + return ""; + } +}; + +int +main() +{ + using namespace boost::fusion; + using boost::mpl::vector; + using boost::mpl::_; + using boost::mpl::not_; + using boost::is_class; + using boost::is_same; + namespace fusion = boost::fusion; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + +/// Testing remove_if + + X x; Y y; + typedef fusion::vector vector_type; + vector_type t(y, '@', 987654, x, true, 6.6); + + { + std::cout << remove_if > >(t) << std::endl; + BOOST_TEST((remove_if > >(t) + == make_vector(y, x))); + } + + { + std::cout << remove_if >(t) << std::endl; + BOOST_TEST((remove_if >(t) + == make_vector('@', 987654, true, 6.6))); + } + + { + typedef vector mpl_vec; + BOOST_TEST((remove_if > >(mpl_vec()) + == vector())); + BOOST_TEST((remove_if >(mpl_vec()) + == vector())); + } + + return boost::report_errors(); +} + diff --git a/test/algorithm/replace.cpp b/test/algorithm/replace.cpp new file mode 100644 index 00000000..afdbae0c --- /dev/null +++ b/test/algorithm/replace.cpp @@ -0,0 +1,50 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +int +main() +{ + using namespace boost::fusion; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + +/// Testing replace + + { + char const* s = "Ruby"; + typedef vector vector_type; + vector_type t1(1, 'x', 3, s); + + { + std::cout << replace(t1, 'x', 'y') << std::endl; + BOOST_TEST((replace(t1, 'x', 'y') + == make_vector(1, 'y', 3, s))); + } + + { + char const* s2 = "funny"; + std::cout << replace(t1, s, s2) << std::endl; + BOOST_TEST((replace(t1, s, s2) + == make_vector(1, 'x', 3, s2))); + } + } + + return boost::report_errors(); +} + diff --git a/test/algorithm/replace_if.cpp b/test/algorithm/replace_if.cpp new file mode 100644 index 00000000..f2760b0e --- /dev/null +++ b/test/algorithm/replace_if.cpp @@ -0,0 +1,53 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +struct gt3 +{ + template + bool operator()(T x) const + { + return x > 3; + } +}; + +int +main() +{ + using namespace boost::fusion; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + +/// Testing replace + + { + char const* s = "Ruby"; + typedef vector vector_type; + vector_type t1(1, 2, 3.3, 4, s, 5.5); + + { + std::cout << replace_if(t1, gt3(), -456) << std::endl; + BOOST_TEST((replace_if(t1, gt3(), -456) + == make_vector(1, 2, -456, -456, s, -456))); + } + } + + return boost::report_errors(); +} + diff --git a/test/algorithm/reverse.cpp b/test/algorithm/reverse.cpp new file mode 100644 index 00000000..a2bbcacf --- /dev/null +++ b/test/algorithm/reverse.cpp @@ -0,0 +1,50 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +int +main() +{ + using namespace boost::fusion; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + +/// Testing the reverse_view + + { + typedef boost::mpl::range_c mpl_list1; + mpl_list1 sequence; + + std::cout << reverse(sequence) << std::endl; + BOOST_TEST((reverse(sequence) == make_vector(8, 7, 6, 5))); + } + + { + char const* s = "Hi Kim"; + typedef vector vector_type; + vector_type t(123, 'x', 3.36, s); + + std::cout << reverse(t) << std::endl; + BOOST_TEST((reverse(t) == make_vector(s, 3.36, 'x', 123))); + std::cout << reverse(reverse(t)) << std::endl; + BOOST_TEST((reverse(reverse(t)) == t)); + } + + return boost::report_errors(); +} + + diff --git a/test/algorithm/transform.cpp b/test/algorithm/transform.cpp new file mode 100644 index 00000000..e0cfdf34 --- /dev/null +++ b/test/algorithm/transform.cpp @@ -0,0 +1,91 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +struct square +{ + template + struct result + { + BOOST_STATIC_ASSERT(!boost::is_reference::value); + typedef int type; + }; + + template + int operator()(T x) const + { + return x * x; + } +}; + +struct add +{ + template + struct result + { + typedef int type; + }; + + template + int operator()(A a, B b) const + { + return a + b; + } +}; + +int +main() +{ + using namespace boost::fusion; + using boost::mpl::range_c; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + +/// Testing the transform + + { + typedef range_c sequence_type; + sequence_type sequence; + std::cout << transform(sequence, square()) << std::endl; + BOOST_TEST((transform(sequence, square()) == make_vector(25, 36, 49, 64))); + } + + { + typedef range_c mpl_list1; + std::cout << transform(mpl_list1(), square()) << std::endl; + BOOST_TEST((transform(mpl_list1(), square()) == make_vector(25, 36, 49, 64))); + } + + { + vector tup(1, 2, 3); + std::cout << transform(tup, square()) << std::endl; + BOOST_TEST((transform(tup, square()) == make_vector(1, 4, 9))); + } + + { + vector tup1(1, 2, 3); + vector tup2(4, 5, 6); + std::cout << transform(tup1, tup2, add()) << std::endl; + BOOST_TEST((transform(tup1, tup2, add()) == make_vector(5, 7, 9))); + } + + return boost::report_errors(); +} + diff --git a/test/algorithm/zip.cpp b/test/algorithm/zip.cpp new file mode 100644 index 00000000..bc403a53 --- /dev/null +++ b/test/algorithm/zip.cpp @@ -0,0 +1,31 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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 + +int main() +{ + using namespace boost::fusion; + { + BOOST_TEST(zip(make_vector(1,2), make_vector('a','b')) == make_vector(make_vector(1,'a'), make_vector(2,'b'))); + BOOST_TEST( + zip( + make_vector(1,2), + make_vector('a','b'), + make_vector(-1,-2)) + == make_vector( + make_vector(1,'a',-1), + make_vector(2,'b',-2))); // Zip more than 2 sequences + } + return boost::report_errors(); +} diff --git a/test/sequence/array.cpp b/test/sequence/array.cpp new file mode 100644 index 00000000..b9144baa --- /dev/null +++ b/test/sequence/array.cpp @@ -0,0 +1,42 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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 + +int main() +{ + using namespace boost::fusion; + typedef boost::array array_type; + + BOOST_MPL_ASSERT((traits::is_sequence)); + BOOST_MPL_ASSERT_NOT((traits::is_view)); + + array_type arr = {{1,2,3}}; + + BOOST_TEST(*begin(arr) == 1); + BOOST_TEST(*next(begin(arr)) == 2); + BOOST_TEST(*advance_c<2>(begin(arr)) == 3); + BOOST_TEST(prior(next(begin(arr))) == begin(arr)); + BOOST_TEST(*prior(end(arr)) == 3); + BOOST_TEST(at_c<2>(arr) == 3); + BOOST_TEST(size(arr) == 3); + BOOST_TEST(distance(begin(arr), end(arr)) == 3); + + return boost::report_errors(); +} diff --git a/test/sequence/as_list.cpp b/test/sequence/as_list.cpp new file mode 100644 index 00000000..d21da3c4 --- /dev/null +++ b/test/sequence/as_list.cpp @@ -0,0 +1,54 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +int +main() +{ + using namespace boost::fusion; + using namespace boost; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + + { + vector0 empty; + std::cout << as_list(make_vector(1, 1.23, "harru")) << std::endl; + std::cout << as_list(push_back(empty, 999)) << std::endl; + + BOOST_TEST(as_list(make_vector(1, 1.23, "harru")) == make_vector(1, 1.23, std::string("harru"))); + BOOST_TEST(as_list(push_back(empty, 999)) == push_back(empty, 999)); + } + + { + std::cout << as_list(mpl::vector_c()) << std::endl; + BOOST_TEST((as_list(mpl::vector_c()) + == mpl::vector_c())); + } + + { + // test conversion + list l(make_vector(123, "harru")); + BOOST_TEST(l == make_vector(123, "harru")); + l = (make_vector(235, "hola")); // test assign + BOOST_TEST(l == make_vector(235, "hola")); + } + + return boost::report_errors(); +} + diff --git a/test/sequence/as_map.cpp b/test/sequence/as_map.cpp new file mode 100644 index 00000000..5b4fa6d7 --- /dev/null +++ b/test/sequence/as_map.cpp @@ -0,0 +1,62 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +int +main() +{ + using namespace boost::fusion; + using namespace boost; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + + { + vector0 empty; + std::cout << as_map(make_list(make_pair('X'), make_pair("Men"))) << std::endl; + std::cout << as_map(push_back(empty, make_pair(999))) << std::endl; + } + + { + typedef pair p1; + typedef pair p2; + result_of::as_map >::type map(make_pair('X'), make_pair("Men")); + std::cout << at_key(map) << std::endl; + std::cout << at_key(map) << std::endl; + BOOST_TEST(at_key(map) == 'X'); + BOOST_TEST(at_key(map) == "Men"); + } + + { + // test conversion + typedef map< + pair + , pair > + map_type; + + map_type m(make_vector(make_pair('X'), make_pair("Men"))); + BOOST_TEST(as_vector(m) == make_vector(make_pair('X'), make_pair("Men"))); + m = (make_vector(make_pair('X'), make_pair("Men"))); // test assign + BOOST_TEST(as_vector(m) == make_vector(make_pair('X'), make_pair("Men"))); + } + + return boost::report_errors(); +} + diff --git a/test/sequence/as_set.cpp b/test/sequence/as_set.cpp new file mode 100644 index 00000000..2a093d9d --- /dev/null +++ b/test/sequence/as_set.cpp @@ -0,0 +1,65 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 +#include + +int +main() +{ + using namespace boost::fusion; + using namespace boost; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + + { + vector0 empty; + std::cout << as_set(make_list(1, 1.23, "harru")) << std::endl; + std::cout << as_set(push_back(empty, 999)) << std::endl; + + BOOST_TEST(as_list(as_set(make_list(1, 1.23, "harru"))) + == make_list(1, 1.23, std::string("harru"))); + BOOST_TEST(as_list(as_set(push_back(empty, 999))) + == push_back(empty, 999)); + } + + { + result_of::as_set >::type set(1, 1.23, "harru"); + std::cout << at_key(set) << std::endl; + BOOST_TEST(at_key(set) == 1); + } + + { + std::cout << as_set(mpl::vector_c()) << std::endl; + BOOST_TEST((as_list(as_set(mpl::vector_c())) + == mpl::vector_c())); + } + + { + // test conversion + set s(make_vector(123, "harru")); + BOOST_TEST(as_vector(s) == make_vector(123, "harru")); + s = (make_vector(235, "hola")); // test assign + BOOST_TEST(as_vector(s) == make_vector(235, "hola")); + } + + return boost::report_errors(); +} + diff --git a/test/sequence/as_vector.cpp b/test/sequence/as_vector.cpp new file mode 100644 index 00000000..8360e2e0 --- /dev/null +++ b/test/sequence/as_vector.cpp @@ -0,0 +1,55 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +int +main() +{ + using namespace boost::fusion; + using namespace boost; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + + { + vector0 empty; + std::cout << as_vector(make_list(1, 1.23, "harru")) << std::endl; + std::cout << as_vector(push_back(empty, 999)) << std::endl; + + BOOST_TEST(as_vector(make_list(1, 1.23, "harru")) == make_list(1, 1.23, std::string("harru"))); + BOOST_TEST(as_vector(push_back(empty, 999)) == push_back(empty, 999)); + } + + { + std::cout << as_vector(mpl::vector_c()) << std::endl; + BOOST_TEST((as_vector(mpl::vector_c()) + == mpl::vector_c())); + } + + { + // test conversion + vector v(make_list(123, "harru")); + BOOST_TEST(v == make_list(123, "harru")); + v = (make_list(235, "hola")); // test assign + BOOST_TEST(v == make_list(235, "hola")); + } + + return boost::report_errors(); +} + diff --git a/test/sequence/comparison.hpp b/test/sequence/comparison.hpp new file mode 100644 index 00000000..b7378c66 --- /dev/null +++ b/test/sequence/comparison.hpp @@ -0,0 +1,58 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +void +equality_test() +{ + using namespace boost::fusion; + + FUSION_SEQUENCE v1(5, 'a'); + FUSION_SEQUENCE v2(5, 'a'); + BOOST_TEST(v1 == v2); + + FUSION_SEQUENCE v3(5, 'b'); + FUSION_SEQUENCE t4(2, 'a'); + BOOST_TEST(v1 != v3); + BOOST_TEST(v1 != t4); + BOOST_TEST(!(v1 != v2)); + + FUSION_SEQUENCE v5(5, 'a', true); + BOOST_TEST(v1 != v5); + BOOST_TEST(!(v1 == v5)); + BOOST_TEST(v5 != v1); + BOOST_TEST(!(v5 == v1)); +} + +void +ordering_test() +{ + using namespace boost::fusion; + + FUSION_SEQUENCE v1(4, 3.3f); + FUSION_SEQUENCE v2(5, 3.3f); + FUSION_SEQUENCE v3(5, 4.4); + BOOST_TEST(v1 < v2); + BOOST_TEST(v1 <= v2); + BOOST_TEST(v2 > v1); + BOOST_TEST(v2 >= v1); + BOOST_TEST(v2 < v3); + BOOST_TEST(v2 <= v3); + BOOST_TEST(v3 > v2); + BOOST_TEST(v3 >= v2); + +#if defined(FUSION_TEST_FAIL) + FUSION_SEQUENCE v5(5, 'a', true); + v1 >= v5; +#endif +} + + + diff --git a/test/sequence/cons.cpp b/test/sequence/cons.cpp new file mode 100644 index 00000000..22a150f2 --- /dev/null +++ b/test/sequence/cons.cpp @@ -0,0 +1,88 @@ +/*============================================================================= + Copyright (c) 2005 Joel de Guzman + Copyright (c) 2005 Eric Niebler + + Use, modification and distribution is 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 + +#include +#include + +int +main() +{ + using namespace boost::fusion; + using boost::is_same; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + +/// Testing cons + + { + std::string hello("hello"); + cons > ns = + make_cons(1, make_cons(hello)); + + BOOST_TEST((*begin(ns) == 1)); + BOOST_TEST((*next(begin(ns)) == hello)); + + *begin(ns) += 1; + *next(begin(ns)) += ' '; + + BOOST_TEST((*begin(ns) == 2)); + BOOST_TEST((*next(begin(ns)) == hello + ' ')); + + for_each(ns, boost::lambda::_1 += ' '); + + BOOST_TEST((*begin(ns) == 2 + ' ')); + BOOST_TEST((*next(begin(ns)) == hello + ' ' + ' ')); + } + + { + BOOST_TEST( + make_cons("hello") == make_vector(std::string("hello")) + ); + + BOOST_TEST( + make_cons(123, make_cons("hello")) == + make_vector(123, std::string("hello")) + ); + } + + { + vector t(1, 1.1f); + cons > nf = + make_cons(1, make_cons(1.1f)); + + BOOST_TEST((t == nf)); + BOOST_TEST((vector(1) == filter_if >(nf))); + + std::cout << nf << std::endl; + std::cout << filter_if >(nf) << std::endl; + } + + { + int i = 3; + cons tie(cons_tie(i)); + BOOST_TEST((*begin(tie) == 3)); + } + + return boost::report_errors(); +} + diff --git a/test/sequence/construction.hpp b/test/sequence/construction.hpp new file mode 100644 index 00000000..da9e400a --- /dev/null +++ b/test/sequence/construction.hpp @@ -0,0 +1,110 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +#if !defined(FUSION_AT) +#define FUSION_AT at_c +#endif + +namespace +{ + // something to prevent warnings for unused variables + template void dummy(const T&) {} + + // no public default constructor + class foo + { + public: + + explicit foo(int v) : val(v) {} + + bool operator==(const foo& other) const + { + return val == other.val; + } + + private: + + foo() {} + int val; + }; + + // another class without a public default constructor + class no_def_constructor + { + no_def_constructor() {} + + public: + + no_def_constructor(std::string) {} + }; +} + +inline void +test() +{ + using namespace boost::fusion; + + FUSION_SEQUENCE t1; + BOOST_TEST(FUSION_AT<0>(t1) == int()); + + FUSION_SEQUENCE t2(5.5f); + BOOST_TEST(FUSION_AT<0>(t2) > 5.4f && FUSION_AT<0>(t2) < 5.6f); + + FUSION_SEQUENCE t3(foo(12)); + BOOST_TEST(FUSION_AT<0>(t3) == foo(12)); + + FUSION_SEQUENCE t4(t2); + BOOST_TEST(FUSION_AT<0>(t4) > 5.4 && FUSION_AT<0>(t4) < 5.6); + + FUSION_SEQUENCE t5; + BOOST_TEST(FUSION_AT<0>(t5) == int()); + BOOST_TEST(FUSION_AT<1>(t5) == float()); + + FUSION_SEQUENCE t6(12, 5.5f); + BOOST_TEST(FUSION_AT<0>(t6) == 12); + BOOST_TEST(FUSION_AT<1>(t6) > 5.4f && FUSION_AT<1>(t6) < 5.6f); + + FUSION_SEQUENCE t7(t6); + BOOST_TEST(FUSION_AT<0>(t7) == 12); + BOOST_TEST(FUSION_AT<1>(t7) > 5.4f && FUSION_AT<1>(t7) < 5.6f); + + FUSION_SEQUENCE t8(t6); + BOOST_TEST(FUSION_AT<0>(t8) == 12); + BOOST_TEST(FUSION_AT<1>(t8) > 5.4f && FUSION_AT<1>(t8) < 5.6f); + + dummy + ( + FUSION_SEQUENCE( + std::string("Jaba"), // ok, since the default + std::string("Daba"), // constructor is not used + std::string("Doo") + ) + ); + + dummy(FUSION_SEQUENCE()); + dummy(FUSION_SEQUENCE(1,3.14)); + +#if defined(FUSION_TEST_FAIL) + dummy(FUSION_SEQUENCE()); // should fail, no defaults for references + dummy(FUSION_SEQUENCE()); // likewise +#endif + + { + double dd = 5; + dummy(FUSION_SEQUENCE(dd)); // ok + dummy(FUSION_SEQUENCE(dd+3.14)); // ok, but dangerous + } + +#if defined(FUSION_TEST_FAIL) + dummy(FUSION_SEQUENCE(dd+3.14)); // should fail, + // temporary to non-const reference +#endif +} diff --git a/test/sequence/copy.hpp b/test/sequence/copy.hpp new file mode 100644 index 00000000..665983c7 --- /dev/null +++ b/test/sequence/copy.hpp @@ -0,0 +1,63 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +#if !defined(FUSION_AT) +#define FUSION_AT at_c +#endif + +#if !defined(FUSION_MAKE) +#define FUSION_MAKE BOOST_PP_CAT(make_, FUSION_SEQUENCE) +#endif + +#if !defined(FUSION_TIE) +#define FUSION_TIE BOOST_PP_CAT(FUSION_SEQUENCE, _tie) +#endif + +namespace +{ + // classes with different kinds of conversions + class AA {}; + class BB : public AA {}; + struct CC { CC() {} CC(const BB&) {} }; + struct DD { operator CC() const { return CC(); }; }; +} + +void +test() +{ + using namespace boost::fusion; + + FUSION_SEQUENCE t1(4, 'a'); + FUSION_SEQUENCE t2(5, 'b'); + t2 = t1; + BOOST_TEST(FUSION_AT<0>(t1) == FUSION_AT<0>(t2)); + BOOST_TEST(FUSION_AT<1>(t1) == FUSION_AT<1>(t2)); + + FUSION_SEQUENCE t3(2, "a"); + t3 = t1; + BOOST_TEST((double)FUSION_AT<0>(t1) == FUSION_AT<0>(t3)); + BOOST_TEST(FUSION_AT<1>(t1) == FUSION_AT<1>(t3)[0]); + + // testing copy and assignment with implicit conversions + // between elements testing tie + + FUSION_SEQUENCE t; + FUSION_SEQUENCE a(t); + a = t; + + int i; char c; double d; + FUSION_TIE(i, c, d) = FUSION_MAKE(1, 'a', 5.5); + + BOOST_TEST(i==1); + BOOST_TEST(c=='a'); + BOOST_TEST(d>5.4 && d<5.6); +} diff --git a/test/sequence/filter_view.cpp b/test/sequence/filter_view.cpp new file mode 100644 index 00000000..7f365545 --- /dev/null +++ b/test/sequence/filter_view.cpp @@ -0,0 +1,118 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 +#include +#include +#include +#include +#include + +struct X +{ + operator char const*() const + { + return ""; + } +}; + +struct Y +{ + operator char const*() const + { + return ""; + } +}; + +struct reject_all +{ + template + struct apply : boost::mpl::false_ + {}; +}; + +int +main() +{ + using namespace boost::fusion; + + using boost::mpl::int_; + using boost::mpl::_; + using boost::mpl::not_; + using boost::mpl::less; + using boost::mpl::vector_c; + using boost::is_class; + using boost::is_same; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + + { // Testing the static find_if (internal function) + + typedef vector vector_type; + + vector_type v(1, 'x', 987654, X()); + typedef vector_iterator begin; + typedef vector_iterator end; + typedef detail::static_find_if > filter; + typedef filter::type type; + + BOOST_TEST(*type(v) == 987654); + std::cout << *type(v) << std::endl; + std::cout << *filter::call(begin(v)) << std::endl; + BOOST_TEST(*type(v) == *filter::call(begin(v))); + } + + { + typedef vector vector_type; + + X x; Y y; + vector_type v(y, '@', 987654, x, true, 6.6); + typedef filter_view > > filter_view_type; + filter_view_type view(v); + std::cout << view << std::endl; + BOOST_TEST((view == make_vector('@', 987654, true, 6.6))); + BOOST_STATIC_ASSERT(result_of::size::value == 4); + } + + { + // $$$ JDG $$$ For some obscure reason, comeau 4.3.3 has problems with this. + // vc7.1 and g++ are ok. The errors from comeau are useless. + + typedef vector_c vector_type; + typedef filter_view > > filter_view_type; + vector_type v; + filter_view_type view(v); + std::cout << view << std::endl; + BOOST_TEST((view == make_vector(1, 2, 0, -1))); + BOOST_STATIC_ASSERT(result_of::size::value == 4); + } + + { + // Previous filtering out all values caused problems as begin was not equal to end + // Picked up by Andreas Pokorny + typedef vector vec; + typedef filter_view filter_view_type; + + BOOST_MPL_ASSERT((result_of::equal_to::type, result_of::end::type>)); + } + + return boost::report_errors(); +} + diff --git a/test/sequence/io.cpp b/test/sequence/io.cpp new file mode 100644 index 00000000..3b101a53 --- /dev/null +++ b/test/sequence/io.cpp @@ -0,0 +1,117 @@ +/*============================================================================= + Copyright (C) 1999-2003 Jaakko Järvi + + Use, modification and distribution is 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 + +#if defined BOOST_NO_STRINGSTREAM +# include +#else +# include +#endif + +using boost::fusion::vector; +using boost::fusion::make_vector; +using boost::fusion::tuple_close; +using boost::fusion::tuple_open; +using boost::fusion::tuple_delimiter; + +#if defined BOOST_NO_STRINGSTREAM + using std::ostrstream; + using std::istrstream; + typedef ostrstream useThisOStringStream; + typedef istrstream useThisIStringStream; +#else + using std::ostringstream; + using std::istringstream; + typedef ostringstream useThisOStringStream; + typedef istringstream useThisIStringStream; +#endif + +using std::endl; +using std::ofstream; +using std::ifstream; +using std::string; + +int +main() +{ + using boost::fusion::tuple_close; + using boost::fusion::tuple_open; + using boost::fusion::tuple_delimiter; + + useThisOStringStream os1; + + // Set format [a, b, c] for os1 + os1 << tuple_open('['); + os1 << tuple_close(']'); + os1 << tuple_delimiter(','); + os1 << make_vector(1, 2, 3); + + BOOST_TEST (os1.str() == std::string("[1,2,3]") ); + + { + useThisOStringStream os2; + // Set format (a:b:c) for os2; + os2 << tuple_open('('); + os2 << tuple_close(')'); + os2 << tuple_delimiter(':'); + + os2 << make_vector("TUPU", "HUPU", "LUPU", 4.5); + BOOST_TEST (os2.str() == std::string("(TUPU:HUPU:LUPU:4.5)") ); + } + + // The format is still [a, b, c] for os1 + os1 << make_vector(1, 2, 3); + BOOST_TEST (os1.str() == std::string("[1,2,3][1,2,3]") ); + + std::ofstream tmp("temp.tmp"); + + tmp << make_vector("One", "Two", 3); + tmp << tuple_delimiter(':'); + tmp << make_vector(1000, 2000, 3000) << endl; + + tmp.close(); + + // When reading tuples from a stream, manipulators must be set correctly: + ifstream tmp3("temp.tmp"); + vector j; + + tmp3 >> j; + BOOST_TEST (tmp3.good() ); + + tmp3 >> tuple_delimiter(':'); + vector i; + tmp3 >> i; + BOOST_TEST (tmp3.good() ); + + tmp3.close(); + + // reading vector in format (a b c); + useThisIStringStream is("(100 200 300)"); + + vector ti; + BOOST_TEST(bool((is >> ti) != 0)); + BOOST_TEST(ti == make_vector(100, 200, 300)); + + // Note that strings are problematic: + // writing a tuple on a stream and reading it back doesn't work in + // general. If this is wanted, some kind of a parseable string class + // should be used. + + return boost::report_errors(); +} + diff --git a/test/sequence/iterator.hpp b/test/sequence/iterator.hpp new file mode 100644 index 00000000..629f9bfc --- /dev/null +++ b/test/sequence/iterator.hpp @@ -0,0 +1,198 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 +#include +#include +#include + +void test() +{ + using namespace boost::fusion; + using namespace boost; + + { // Testing deref, next, prior, begin, end + + char const* s = "Hello"; + typedef FUSION_SEQUENCE seq_type; + seq_type v(1, 'x', 3.3, s); + result_of::begin::type i(v); + + BOOST_TEST(*i == 1); + BOOST_TEST(*next(i) == 'x'); + BOOST_TEST(*next(next(i)) == 3.3); + BOOST_TEST(*next(next(next(i))) == s); + next(next(next(next(i)))); // end + +#if !defined(FUSION_NO_PRIOR) + BOOST_TEST(*prior(next(next(next(i)))) == 3.3); + BOOST_TEST(*prior(prior(next(next(next(i))))) == 'x'); + BOOST_TEST(*prior(prior(prior(next(next(next(i)))))) == 1); +#endif + BOOST_TEST(*begin(v) == 1); +#if !defined(FUSION_NO_PRIOR) + BOOST_TEST(*prior(end(v)) == s); +#endif + + *i = 3; + BOOST_TEST(*i == 3); + BOOST_TEST(&*i == &at_c<0>(v)); + + // prove that it is mutable + *i = 987; + BOOST_TEST(*i == 987); + } + + { // Testing const sequence and const iterator + + char const* s = "Hello"; + typedef FUSION_SEQUENCE const seq_type; + seq_type t(1, 'x', 3.3, s); + result_of::begin::type i(t); + + BOOST_TEST(*i == 1); + BOOST_TEST(*next(i) == 'x'); + BOOST_TEST(*begin(t) == 1); +#if !defined(FUSION_NO_PRIOR) + BOOST_TEST(*prior(end(t)) == s); +#endif + +#ifdef FUSION_TEST_FAIL + *i = 3; // must not compile +#endif + } + + { // Testing iterator equality + + typedef FUSION_SEQUENCE seq_type; + typedef FUSION_SEQUENCE const cseq_type; + typedef result_of::begin::type vi1; + typedef result_of::begin::type vi2; + BOOST_STATIC_ASSERT((result_of::equal_to::value)); + BOOST_STATIC_ASSERT((result_of::equal_to::value)); + BOOST_STATIC_ASSERT((result_of::equal_to::value)); + BOOST_STATIC_ASSERT((result_of::equal_to::value)); + BOOST_STATIC_ASSERT((result_of::equal_to::value)); + BOOST_STATIC_ASSERT((result_of::equal_to::value)); + } + + { + typedef FUSION_SEQUENCE seq_type; + typedef result_of::begin::type begin_type; + typedef result_of::end::type end_type; + typedef result_of::next::type i1; + typedef result_of::next::type i2; + + BOOST_STATIC_ASSERT((is_same::value)); + } + + { // testing deref, next, prior, begin, end + + char const* s = "Hello"; + typedef FUSION_SEQUENCE seq_type; + seq_type t(1, 'x', 3.3, s); + result_of::begin::type i(t); + + BOOST_TEST(*i == 1); + BOOST_TEST(*next(i) == 'x'); + BOOST_TEST(*next(next(i)) == 3.3); + BOOST_TEST(*next(next(next(i))) == s); + + next(next(next(next(i)))); // end + +#ifdef FUSION_TEST_FAIL + next(next(next(next(next(i))))); // past the end: must not compile +#endif + +#if !defined(FUSION_NO_PRIOR) + BOOST_TEST(*prior(next(next(next(i)))) == 3.3); + BOOST_TEST(*prior(prior(next(next(next(i))))) == 'x'); + BOOST_TEST(*prior(prior(prior(next(next(next(i)))))) == 1); +#endif + BOOST_TEST(*begin(t) == 1); +#if !defined(FUSION_NO_PRIOR) + BOOST_TEST(*prior(end(t)) == s); +#endif + + *i = 3; + BOOST_TEST(*i == 3); + BOOST_TEST(*i == at_c<0>(t)); + } + + { // Testing distance + + typedef FUSION_SEQUENCE seq_type; + seq_type t(1, 'x', 3.3, "Hello"); + + BOOST_STATIC_ASSERT((result_of::distance< + result_of::begin::type + , result_of::end::type >::value == 4)); + + BOOST_TEST(distance(begin(t), end(t)).value == 4); + } + + { // Testing tuple iterator result_of::value_of, result_of::deref, result_of::value_at + + typedef FUSION_SEQUENCE seq_type; + typedef result_of::begin::type i0; + typedef result_of::next::type i1; + typedef result_of::next::type>::type i2; + + BOOST_STATIC_ASSERT(( + is_same::type, int>::value)); + + BOOST_STATIC_ASSERT(( + is_same::type, char&>::value)); + + BOOST_STATIC_ASSERT(( + is_same::type, FUSION_TRAVERSAL_TAG>::value)); + + BOOST_STATIC_ASSERT((is_same::type, int&>::value)); + BOOST_STATIC_ASSERT((is_same::type, char&>::value)); + + BOOST_STATIC_ASSERT((is_same::type, int>::value)); + BOOST_STATIC_ASSERT((is_same::type, char&>::value)); + } + + { // Testing advance + + typedef FUSION_SEQUENCE seq_type; + seq_type t(1, 'x', 3.3, "Hello"); + + BOOST_TEST(*advance_c<0>(begin(t)) == at_c<0>(t)); + BOOST_TEST(*advance_c<1>(begin(t)) == at_c<1>(t)); + BOOST_TEST(*advance_c<2>(begin(t)) == at_c<2>(t)); + BOOST_TEST(*advance_c<3>(begin(t)) == at_c<3>(t)); + +#if !defined(FUSION_NO_PRIOR) + BOOST_TEST(*advance_c<-1>(end(t)) == at_c<3>(t)); + BOOST_TEST(*advance_c<-2>(end(t)) == at_c<2>(t)); + BOOST_TEST(*advance_c<-3>(end(t)) == at_c<1>(t)); + BOOST_TEST(*advance_c<-4>(end(t)) == at_c<0>(t)); +#endif + + BOOST_TEST(&*advance_c<0>(begin(t)) == &at_c<0>(t)); + BOOST_TEST(&*advance_c<1>(begin(t)) == &at_c<1>(t)); + BOOST_TEST(&*advance_c<2>(begin(t)) == &at_c<2>(t)); + BOOST_TEST(&*advance_c<3>(begin(t)) == &at_c<3>(t)); + } +} + + + + diff --git a/test/sequence/iterator_range.cpp b/test/sequence/iterator_range.cpp new file mode 100644 index 00000000..dd1131be --- /dev/null +++ b/test/sequence/iterator_range.cpp @@ -0,0 +1,82 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +int +main() +{ + using namespace boost::fusion; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + + { + char const* s = "Ruby"; + typedef vector vector_type; + vector_type vec(1, 'x', 3.3, s); + + { + typedef vector_iterator i1t; + typedef vector_iterator i3t; + + i1t i1(vec); + i3t i3(vec); + + typedef iterator_range slice_t; + slice_t slice(i1, i3); + std::cout << slice << std::endl; + BOOST_TEST((slice == make_vector('x', 3.3))); + BOOST_STATIC_ASSERT(result_of::size::value == 2); + } + + { + typedef vector_iterator i1t; + typedef vector_iterator i3t; + + i1t i1(vec); + i3t i3(vec); + + typedef iterator_range slice_t; + slice_t slice(i1, i3); + std::cout << slice << std::endl; + BOOST_TEST(slice == make_vector()); + BOOST_STATIC_ASSERT(result_of::size::value == 0); + } + } + + { + typedef boost::mpl::vector_c mpl_vec; + typedef boost::mpl::begin::type it0; + typedef boost::mpl::next::type it1; + typedef boost::mpl::next::type it2; + typedef boost::mpl::next::type it3; + + it1 f; + it3 l; + + typedef iterator_range slice_t; + slice_t slice(f, l); + std::cout << slice << std::endl; + BOOST_TEST((slice == make_vector(3, 4))); + BOOST_STATIC_ASSERT(result_of::size::value == 2); + } + + return boost::report_errors(); +} + diff --git a/test/sequence/joint_view.cpp b/test/sequence/joint_view.cpp new file mode 100644 index 00000000..3457f076 --- /dev/null +++ b/test/sequence/joint_view.cpp @@ -0,0 +1,145 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +struct X +{ + operator char const*() const + { + return ""; + } +}; + +int +main() +{ + using namespace boost::fusion; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + +/// Testing joint_view + + { + vector t1(3); + vector t2; + typedef joint_view, vector > view_type; + view_type view(t1, t2); + + std::cout << view << std::endl; + BOOST_TEST((view == make_vector(3, X()))); + } + + { + vector t1(3, 'x'); + vector t2; + typedef joint_view, vector > view_type; + view_type view(t1, t2); + std::cout << view << std::endl; + BOOST_TEST((view == make_vector(3, 'x', X()))); + + *begin(view) = 4; + BOOST_TEST(at_c<0>(t1) == 4); + } + + { + vector t1(3, 'x'); + vector t2; + typedef joint_view, vector > view_type; + view_type view(t1, t2); + std::cout << view << std::endl; + BOOST_TEST((view == make_vector(3, 'x', X(), 0))); + } + + { + typedef vector t1_type; + t1_type t1(777); + typedef vector t2_type; + t2_type t2(1, 'x', 3.3); + + { + typedef joint_view view_type; + view_type view(t1, t2); + std::cout << view << std::endl; + BOOST_TEST((view == make_vector(777, 1, 'x', 3.3))); + } + + { + typedef joint_view view_type; + view_type view(t2, t1); + std::cout << view << std::endl; + BOOST_TEST((view == make_vector(1, 'x', 3.3, 777))); + } + + { + typedef joint_view jv_type; + typedef joint_view jv2_type; + + jv_type jv(t2, t1); + jv2_type jv2(jv, jv); + + std::cout << jv << std::endl; + std::cout << jv2 << std::endl; + + BOOST_TEST(jv2 + == make_vector(1, 'x', 3.3, 777, 1, 'x', 3.3, 777)); + } + + { + typedef joint_view jt_type; + typedef joint_view jv2_type; + typedef joint_view jv3_type; + + jt_type jt(t2, t1); + jv2_type jv2(t1, t2); + jv3_type jv3(jt, jv2); + + std::cout << jt << std::endl; + std::cout << jv2 << std::endl; + std::cout << jv3 << std::endl; + + BOOST_TEST(jv3 + == make_vector(1, 'x', 3.3, 777, 777, 1, 'x', 3.3)); + } + + { + typedef joint_view, t1_type> jt_type; + vector<> empty; + jt_type jt(empty, t1); + std::cout << jt << std::endl; + BOOST_TEST(jt == make_vector(777)); + } + + { + typedef joint_view > jt_type; + vector<> empty; + jt_type jt(t1, empty); + std::cout << jt << std::endl; + BOOST_TEST(jt == make_vector(777)); + } + + { + typedef joint_view, vector<> > jt_type; + vector<> empty; + jt_type jt(empty, empty); + std::cout << jt << std::endl; + BOOST_TEST(jt == make_vector()); + } + } + + return boost::report_errors(); +} + diff --git a/test/sequence/list_comparison.cpp b/test/sequence/list_comparison.cpp new file mode 100644 index 00000000..402bf704 --- /dev/null +++ b/test/sequence/list_comparison.cpp @@ -0,0 +1,20 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +#define FUSION_SEQUENCE list +#include "comparison.hpp" + +int +main() +{ + equality_test(); + ordering_test(); + return boost::report_errors(); +} diff --git a/test/sequence/list_construction.cpp b/test/sequence/list_construction.cpp new file mode 100644 index 00000000..fb412f16 --- /dev/null +++ b/test/sequence/list_construction.cpp @@ -0,0 +1,19 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +#define FUSION_SEQUENCE list +#include "construction.hpp" + +int +main() +{ + test(); + return boost::report_errors(); +} diff --git a/test/sequence/list_copy.cpp b/test/sequence/list_copy.cpp new file mode 100644 index 00000000..673b1c42 --- /dev/null +++ b/test/sequence/list_copy.cpp @@ -0,0 +1,22 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +#define FUSION_SEQUENCE list +#include "copy.hpp" + +int +main() +{ + test(); + return boost::report_errors(); +} + diff --git a/test/sequence/list_iterator.cpp b/test/sequence/list_iterator.cpp new file mode 100644 index 00000000..20e04383 --- /dev/null +++ b/test/sequence/list_iterator.cpp @@ -0,0 +1,23 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +#define FUSION_SEQUENCE list +#define FUSION_NO_PRIOR +#define FUSION_TRAVERSAL_TAG forward_traversal_tag +#include "./iterator.hpp" + +int +main() +{ + test(); + return boost::report_errors(); +} + + + diff --git a/test/sequence/list_make.cpp b/test/sequence/list_make.cpp new file mode 100644 index 00000000..03919708 --- /dev/null +++ b/test/sequence/list_make.cpp @@ -0,0 +1,21 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +#define FUSION_SEQUENCE list +#include "make.hpp" + +int +main() +{ + test(); + return boost::report_errors(); +} + diff --git a/test/sequence/list_misc.cpp b/test/sequence/list_misc.cpp new file mode 100644 index 00000000..c6ea3149 --- /dev/null +++ b/test/sequence/list_misc.cpp @@ -0,0 +1,22 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +#define FUSION_SEQUENCE list +#define FUSION_FORWARD_ONLY +#include "misc.hpp" + +int +main() +{ + test(); + return boost::report_errors(); +} + diff --git a/test/sequence/list_mutate.cpp b/test/sequence/list_mutate.cpp new file mode 100644 index 00000000..fac31fb5 --- /dev/null +++ b/test/sequence/list_mutate.cpp @@ -0,0 +1,20 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +#define FUSION_SEQUENCE list +#include "mutate.hpp" + +int +main() +{ + test(); + return boost::report_errors(); +} + diff --git a/test/sequence/list_tie.cpp b/test/sequence/list_tie.cpp new file mode 100644 index 00000000..950b75a7 --- /dev/null +++ b/test/sequence/list_tie.cpp @@ -0,0 +1,23 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +#define FUSION_SEQUENCE list +#include "tie.hpp" + +int +main() +{ + test(); + return boost::report_errors(); +} + diff --git a/test/sequence/list_value_at.cpp b/test/sequence/list_value_at.cpp new file mode 100644 index 00000000..47347d69 --- /dev/null +++ b/test/sequence/list_value_at.cpp @@ -0,0 +1,20 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +#define FUSION_SEQUENCE list +#include "value_at.hpp" + +int +main() +{ + test(); + return boost::report_errors(); +} + diff --git a/test/sequence/make.hpp b/test/sequence/make.hpp new file mode 100644 index 00000000..1b175811 --- /dev/null +++ b/test/sequence/make.hpp @@ -0,0 +1,88 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +#if !defined(FUSION_AT) +#define FUSION_AT at_c +#endif + +#if !defined(FUSION_MAKE) +#define FUSION_MAKE BOOST_PP_CAT(make_, FUSION_SEQUENCE) +#endif + +namespace +{ + // something to prevent warnings for unused variables + template void dummy(const T&) {} + + class A {}; + class B {}; +} + +void make_tuple_test() {} + +void +test() +{ + using namespace boost::fusion; + + { + FUSION_SEQUENCE t1 = FUSION_MAKE(5, 'a'); + BOOST_TEST(FUSION_AT<0>(t1) == 5); + BOOST_TEST(FUSION_AT<1>(t1) == 'a'); + + FUSION_SEQUENCE t2; + t2 = FUSION_MAKE((short int)2, std::string("Hi")); + BOOST_TEST(FUSION_AT<0>(t2) == 2); + BOOST_TEST(FUSION_AT<1>(t2) == "Hi"); + } + + { // This test was previously disallowed for non-PTS compilers. + A a = A(); B b; + const A ca = a; + FUSION_MAKE(boost::cref(a), b); + FUSION_MAKE(boost::ref(a), b); + FUSION_MAKE(boost::ref(a), boost::cref(b)); + FUSION_MAKE(boost::ref(ca)); + } + + { // the result of make_xxx is assignable: + BOOST_TEST(FUSION_MAKE(2, 4, 6) == + (FUSION_MAKE(1, 2, 3) = FUSION_MAKE(2, 4, 6))); + } + + { // This test was previously disallowed for non-PTS compilers. + FUSION_MAKE("Donald", "Daisy"); // should work; + // std::make_pair("Doesn't","Work"); // fails + } + + { + // You can store a reference to a function in a sequence + FUSION_SEQUENCE adf(make_tuple_test); + dummy(adf); // avoid warning for unused variable + } + +#if defined(FUSION_TEST_FAIL) + { + // But make_xxx doesn't work + // with function references, since it creates a const + // qualified function type + + FUSION_MAKE(make_tuple_test); + } +#endif + + { + // With function pointers, make_xxx works just fine + FUSION_MAKE(&make_tuple_test); + } +} diff --git a/test/sequence/make_list.cpp b/test/sequence/make_list.cpp new file mode 100644 index 00000000..03919708 --- /dev/null +++ b/test/sequence/make_list.cpp @@ -0,0 +1,21 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +#define FUSION_SEQUENCE list +#include "make.hpp" + +int +main() +{ + test(); + return boost::report_errors(); +} + diff --git a/test/sequence/make_vector.cpp b/test/sequence/make_vector.cpp new file mode 100644 index 00000000..ff80e84c --- /dev/null +++ b/test/sequence/make_vector.cpp @@ -0,0 +1,21 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +#define FUSION_SEQUENCE vector +#include "make.hpp" + +int +main() +{ + test(); + return boost::report_errors(); +} + diff --git a/test/sequence/map.cpp b/test/sequence/map.cpp new file mode 100644 index 00000000..93ce92a7 --- /dev/null +++ b/test/sequence/map.cpp @@ -0,0 +1,73 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 +#include + +int +main() +{ + using namespace boost::fusion; + using namespace boost; + using namespace std; + using boost::fusion::pair; + using boost::fusion::make_pair; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + + { + typedef map< + pair + , pair > + map_type; + + BOOST_MPL_ASSERT((traits::is_associative)); + + map_type m( + make_pair('X') + , make_pair("Men")); + + std::cout << at_key(m) << std::endl; + std::cout << at_key(m) << std::endl; + + BOOST_TEST(at_key(m) == 'X'); + BOOST_TEST(at_key(m) == "Men"); + + BOOST_STATIC_ASSERT(( + boost::is_same::type, char>::value)); + BOOST_STATIC_ASSERT(( + boost::is_same::type, std::string>::value)); + + std::cout << m << std::endl; + + BOOST_STATIC_ASSERT((result_of::has_key::value)); + BOOST_STATIC_ASSERT((result_of::has_key::value)); + BOOST_STATIC_ASSERT((!result_of::has_key::value)); + } + + { + std::cout << make_map('X', 123) << std::endl; + BOOST_TEST(at_key(make_map('X', 123)) == 'X'); + BOOST_TEST(at_key(make_map('X', 123)) == 123); + } + + return boost::report_errors(); +} + diff --git a/test/sequence/misc.hpp b/test/sequence/misc.hpp new file mode 100644 index 00000000..279c91ee --- /dev/null +++ b/test/sequence/misc.hpp @@ -0,0 +1,189 @@ +/*============================================================================= + Copyright (C) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +#if !defined(FUSION_AT) +#define FUSION_AT at_c +#endif + +#if !defined(FUSION_SIZE) +#define FUSION_SIZE result_of::size +#endif + +template +struct is_same +{ +}; + +struct test_intrinsics1 +{ + // test at, begin, end, next, prior, advance, size, deref, etc. + + typedef boost::fusion::FUSION_SEQUENCE sequence; + typedef boost::mpl::begin::type first; + typedef boost::mpl::next::type second; + typedef boost::mpl::next::type third; + typedef boost::mpl::next::type fourth; + typedef boost::mpl::end::type last; + + BOOST_STATIC_ASSERT((boost::is_same< + boost::mpl::deref::type, int>::value)); + + BOOST_STATIC_ASSERT((boost::is_same< + boost::mpl::deref::type, float>::value)); + + BOOST_STATIC_ASSERT((boost::is_same< + boost::mpl::deref::type, bool>::value)); + + BOOST_STATIC_ASSERT((boost::is_same< + boost::mpl::deref::type, char>::value)); + + BOOST_STATIC_ASSERT((boost::is_same< + boost::mpl::at_c::type, bool>::value)); + + BOOST_STATIC_ASSERT((boost::is_same< + boost::mpl::front::type, int>::value)); + + BOOST_STATIC_ASSERT((boost::is_same< + boost::mpl::deref< + boost::mpl::advance_c::type>::type, char>::value)); + + BOOST_STATIC_ASSERT((boost::mpl::size::value == 4)); + BOOST_STATIC_ASSERT(!(boost::mpl::empty::value)); + BOOST_STATIC_ASSERT((boost::mpl::distance::value == 2)); + +#if !defined(FUSION_FORWARD_ONLY) // list has no back/prev + + typedef boost::mpl::prior::type fourth_; + typedef boost::mpl::prior::type third_; + typedef boost::mpl::prior::type second_; + typedef boost::mpl::prior::type first_; + + BOOST_STATIC_ASSERT((boost::is_same< + boost::mpl::deref::type, int>::value)); + + BOOST_STATIC_ASSERT((boost::is_same< + boost::mpl::deref::type, float>::value)); + + BOOST_STATIC_ASSERT((boost::is_same< + boost::mpl::deref::type, bool>::value)); + + BOOST_STATIC_ASSERT((boost::is_same< + boost::mpl::deref::type, char>::value)); + + BOOST_STATIC_ASSERT((boost::is_same< + boost::mpl::back::type, char>::value)); + +#endif +}; + +struct test_intrinsics2 +{ + typedef boost::fusion::FUSION_SEQUENCE<> seq0; + +#if !defined(FUSION_FORWARD_ONLY) // list has no back/prev + + typedef boost::fusion::FUSION_SEQUENCE target1; + typedef boost::mpl::push_back::type seq1; + BOOST_STATIC_ASSERT((boost::mpl::equal::value)); + + typedef boost::fusion::FUSION_SEQUENCE target2; + typedef boost::mpl::push_back::type seq2; + BOOST_STATIC_ASSERT((boost::mpl::equal::value)); + +#endif + + typedef boost::fusion::FUSION_SEQUENCE target3; + typedef boost::mpl::push_front::type seq3; + BOOST_STATIC_ASSERT((boost::mpl::equal::value)); + + typedef boost::fusion::FUSION_SEQUENCE target4; + typedef boost::mpl::push_front::type seq4; + BOOST_STATIC_ASSERT((boost::mpl::equal::value)); +}; + +void +test() +{ + using namespace boost::fusion; + + { // testing const sequences + + const FUSION_SEQUENCE t1(5, 3.3f); + BOOST_TEST(FUSION_AT<0>(t1) == 5); + BOOST_TEST(FUSION_AT<1>(t1) == 3.3f); + } + + { // testing at works with MPL integral constants + const FUSION_SEQUENCE t1(101, 'z'); + BOOST_TEST(boost::fusion::at >(t1) == 101); + BOOST_TEST(boost::fusion::at >(t1) == 'z'); + // explicitly try something other than mpl::int_ + BOOST_TEST((boost::fusion::at >(t1) == 101)); + BOOST_TEST((boost::fusion::at >(t1) == 'z')); + } + + { // testing size & empty + + typedef FUSION_SEQUENCE t1; + typedef FUSION_SEQUENCE<> t2; + + BOOST_STATIC_ASSERT(FUSION_SIZE::value == 3); + BOOST_STATIC_ASSERT(FUSION_SIZE::value == 0); + BOOST_STATIC_ASSERT(!result_of::empty::value); + BOOST_STATIC_ASSERT(result_of::empty::value); + } + + { // testing front & back + + typedef FUSION_SEQUENCE tup; + tup t(1, 2.2, "Kimpo"); + + BOOST_TEST(front(t) == 1); +#if !defined(FUSION_FORWARD_ONLY) // list has no back + BOOST_TEST(back(t) == "Kimpo"); +#endif + } + + { // testing is_sequence + + typedef FUSION_SEQUENCE t1; + typedef FUSION_SEQUENCE<> t2; + typedef FUSION_SEQUENCE t3; + + BOOST_STATIC_ASSERT(traits::is_sequence::value); + BOOST_STATIC_ASSERT(traits::is_sequence::value); + BOOST_STATIC_ASSERT(traits::is_sequence::value); + BOOST_STATIC_ASSERT(!traits::is_sequence::value); + BOOST_STATIC_ASSERT(!traits::is_sequence::value); + } + + { // testing mpl compatibility + + // test begin, end, next, prior, advance, size, deref, etc. + //~ typedef FUSION_SEQUENCE tuple_type; + //~ test_intrinsics1 test1; + //~ (void)test1; // prevent unused variable warning + + // test an algorithm + typedef FUSION_SEQUENCE t1; + typedef boost::mpl::find::type iter; + typedef boost::mpl::deref::type type; + BOOST_STATIC_ASSERT((boost::is_same::value)); + + } +} diff --git a/test/sequence/mutate.hpp b/test/sequence/mutate.hpp new file mode 100644 index 00000000..d1cd66df --- /dev/null +++ b/test/sequence/mutate.hpp @@ -0,0 +1,52 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +#if !defined(FUSION_AT) +#define FUSION_AT at_c +#endif + +namespace +{ + // no public default constructor + class foo + { + public: + + explicit foo(int v) : val(v) {} + + bool operator==(const foo& other) const + { + return val == other.val; + } + + private: + + foo() {} + int val; + }; +} + +void +test() +{ + using namespace boost::fusion; + + FUSION_SEQUENCE t1(5, 12.2f, true, foo(4)); + FUSION_AT<0>(t1) = 6; + FUSION_AT<1>(t1) = 2.2f; + FUSION_AT<2>(t1) = false; + FUSION_AT<3>(t1) = foo(5); + + BOOST_TEST(FUSION_AT<0>(t1) == 6); + BOOST_TEST(FUSION_AT<1>(t1) > 2.1f && FUSION_AT<1>(t1) < 2.3f); + BOOST_TEST(FUSION_AT<2>(t1) == false); + BOOST_TEST(FUSION_AT<3>(t1) == foo(5)); +} diff --git a/test/sequence/reverse_view.cpp b/test/sequence/reverse_view.cpp new file mode 100644 index 00000000..50b445b7 --- /dev/null +++ b/test/sequence/reverse_view.cpp @@ -0,0 +1,65 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 +#include +#include + +int +main() +{ + using namespace boost::fusion; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + +/// Testing the reverse_view + + { + typedef boost::mpl::range_c mpl_list1; + mpl_list1 l; + reverse_view rev(l); + + std::cout << rev << std::endl; + BOOST_TEST((rev == make_vector(8, 7, 6, 5))); + } + + { + char const* s = "Hi Kim"; + typedef vector vector_type; + vector_type t(123, 'x', 123456789, s); + typedef reverse_view view_type; + view_type rev(t); + + std::cout << rev << std::endl; + BOOST_TEST((rev == make_vector(s, 123456789, 'x', 123))); + + typedef result_of::begin::type first_type; + first_type first_it(begin(rev)); + typedef result_of::next::type second_type; + second_type second_it(next(first_it)); + BOOST_TEST((*second_it == 123456789)); + BOOST_TEST((*prior(second_it) == s)); + BOOST_TEST((*advance_c<2>(first_it) == 'x')); + BOOST_TEST((distance(first_it, second_it) == 1)); + } + + return boost::report_errors(); +} + diff --git a/test/sequence/set.cpp b/test/sequence/set.cpp new file mode 100644 index 00000000..3a10a77f --- /dev/null +++ b/test/sequence/set.cpp @@ -0,0 +1,68 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 +#include + +int +main() +{ + using namespace boost::fusion; + using namespace boost; + using namespace std; + using boost::fusion::pair; + using boost::fusion::make_pair; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + + { + typedef set set_type; + + BOOST_MPL_ASSERT((traits::is_associative)); + + set_type m(123, "Hola"); + + std::cout << at_key(m) << std::endl; + std::cout << at_key(m) << std::endl; + + BOOST_TEST(at_key(m) == 123); + BOOST_TEST(at_key(m) == "Hola"); + + BOOST_STATIC_ASSERT(( + boost::is_same::type, int>::value)); + BOOST_STATIC_ASSERT(( + boost::is_same::type, std::string>::value)); + + std::cout << m << std::endl; + + BOOST_STATIC_ASSERT((result_of::has_key::value)); + BOOST_STATIC_ASSERT((result_of::has_key::value)); + BOOST_STATIC_ASSERT((!result_of::has_key::value)); + } + + { + std::cout << make_set('X', 123) << std::endl; + BOOST_TEST(at_key(make_set('X', 123)) == 'X'); + BOOST_TEST(at_key(make_set('X', 123)) == 123); + } + + return boost::report_errors(); +} + diff --git a/test/sequence/single_view.cpp b/test/sequence/single_view.cpp new file mode 100644 index 00000000..6aec1d8b --- /dev/null +++ b/test/sequence/single_view.cpp @@ -0,0 +1,58 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +struct X {}; + +template +OS& operator<<(OS& os, X const&) +{ + os << ""; + return os; +} + +void foo() {} + +int +main() +{ + using namespace boost::fusion; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + + { + single_view view1(3); + std::cout << view1 << std::endl; + +#ifdef FUSION_TEST_FAIL + // single_view is immutable + *begin(view1) += 4; +#endif + std::cout << view1 << std::endl; + BOOST_TEST(*begin(view1) == 3); + BOOST_TEST(view1.val == 3); + + single_view view2; + std::cout << view2 << std::endl; + } + + { + std::cout << make_single_view(1) << std::endl; + std::cout << make_single_view("Hello, World") << std::endl; + std::cout << make_single_view(&foo) << std::endl; + } + + return boost::report_errors(); +} + diff --git a/test/sequence/std_pair.cpp b/test/sequence/std_pair.cpp new file mode 100644 index 00000000..2f8536a2 --- /dev/null +++ b/test/sequence/std_pair.cpp @@ -0,0 +1,92 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +int +main() +{ + using namespace boost::fusion; + using namespace boost; + using namespace std; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + + { + typedef std::pair pair_type; + BOOST_MPL_ASSERT_NOT((traits::is_view)); + pair_type p(123, "Hola!!!"); + + std::cout << at_c<0>(p) << std::endl; + std::cout << at_c<1>(p) << std::endl; + std::cout << p << std::endl; + BOOST_TEST(p == make_vector(123, "Hola!!!")); + + at_c<0>(p) = 6; + at_c<1>(p) = "mama mia"; + BOOST_TEST(p == make_vector(6, "mama mia")); + + BOOST_STATIC_ASSERT(result_of::size::value == 2); + BOOST_STATIC_ASSERT(!result_of::empty::value); + + BOOST_TEST(front(p) == 6); + BOOST_TEST(back(p) == "mama mia"); + } + + { + fusion::vector v1(4, 3.3f); + std::pair v2(5, 3.3f); + fusion::vector v3(5, 4.4); + BOOST_TEST(v1 < v2); + BOOST_TEST(v1 <= v2); + BOOST_TEST(v2 > v1); + BOOST_TEST(v2 >= v1); + BOOST_TEST(v2 < v3); + BOOST_TEST(v2 <= v3); + BOOST_TEST(v3 > v2); + BOOST_TEST(v3 >= v2); + } + + { + // conversion from pair to vector + fusion::vector v(std::make_pair(123, "Hola!!!")); + v = std::make_pair(123, "Hola!!!"); + } + + { + // conversion from pair to list + fusion::list l(std::make_pair(123, "Hola!!!")); + l = std::make_pair(123, "Hola!!!"); + } + + return boost::report_errors(); +} + diff --git a/test/sequence/tie.hpp b/test/sequence/tie.hpp new file mode 100644 index 00000000..a36c3985 --- /dev/null +++ b/test/sequence/tie.hpp @@ -0,0 +1,85 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +#if !defined(FUSION_AT) +#define FUSION_AT at_c +#endif + +#if !defined(FUSION_MAKE) +#define FUSION_MAKE BOOST_PP_CAT(make_, FUSION_SEQUENCE) +#endif + +#if !defined(FUSION_TIE) +#define FUSION_TIE BOOST_PP_CAT(FUSION_SEQUENCE, _tie) +#endif + +namespace +{ + // something to prevent warnings for unused variables + template void dummy(const T&) {} + + // no public default constructor + class foo + { + public: + + explicit foo(int v) : val(v) {} + + bool operator==(const foo& other) const + { + return val == other.val; + } + + private: + + foo() {} + int val; + }; +} + +void +test() +{ + using namespace boost::fusion; + + int a; + char b; + foo c(5); + + FUSION_TIE(a, b, c) = FUSION_MAKE(2, 'a', foo(3)); + BOOST_TEST(a == 2); + BOOST_TEST(b == 'a'); + BOOST_TEST(c == foo(3)); + + FUSION_TIE(a, ignore, c) = FUSION_MAKE((short int)5, false, foo(5)); + BOOST_TEST(a == 5); + BOOST_TEST(b == 'a'); + BOOST_TEST(c == foo(5)); + + int i, j; + FUSION_TIE(i, j) = FUSION_MAKE(1, 2); + BOOST_TEST(i == 1 && j == 2); + + FUSION_SEQUENCE ta; + +#if defined(FUSION_TEST_FAIL) + ta = std::FUSION_MAKE(1, 2); // should fail, tuple is of length 3, not 2 +#endif + + dummy(ta); + + // ties cannot be rebound + int d = 3; + FUSION_SEQUENCE ti(a); + BOOST_TEST(&FUSION_AT<0>(ti) == &a); + ti = FUSION_SEQUENCE(d); + BOOST_TEST(&FUSION_AT<0>(ti) == &a); +} diff --git a/test/sequence/transform_view.cpp b/test/sequence/transform_view.cpp new file mode 100644 index 00000000..554ac00f --- /dev/null +++ b/test/sequence/transform_view.cpp @@ -0,0 +1,102 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 +#include + +#include + +struct square +{ + template + struct result + { + typedef int type; + }; + + template + int operator()(T x) const + { + return x * x; + } +}; + +struct add +{ + template + struct result + { + typedef int type; + }; + + template + int operator()(A a, B b) const + { + return a + b; + } +}; + +int +main() +{ + using namespace boost::fusion; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + +/// Testing the transform_view + + { + typedef boost::mpl::range_c sequence_type; + sequence_type sequence; + square sq; + typedef transform_view xform_type; + xform_type xform(sequence, sq); + + std::cout << xform << std::endl; + BOOST_TEST((xform == make_vector(25, 36, 49, 64))); + + typedef boost::fusion::result_of::begin::type first_type; + first_type first_it(boost::fusion::begin(xform)); + + typedef boost::fusion::result_of::next::type next_type; + next_type next_it(boost::fusion::next(first_it)); + BOOST_TEST((*next_it == 36)); + BOOST_TEST((*boost::fusion::prior(next_it) == 25)); + BOOST_TEST((boost::fusion::distance(first_it, next_it) == 1)); + + BOOST_TEST((*boost::fusion::advance_c<3>(boost::fusion::begin(xform)) == 64)); + } + + { + typedef boost::mpl::range_c sequence1_type; + typedef boost::mpl::range_c sequence2_type; + sequence1_type sequence1; + sequence2_type sequence2; + add f; + typedef transform_view xform_type; + xform_type xform(sequence1, sequence2, f); + + std::cout << xform << std::endl; + BOOST_TEST((xform == make_vector(15, 17, 19, 21))); + } + + return boost::report_errors(); +} + diff --git a/test/sequence/tuple_comparison.cpp b/test/sequence/tuple_comparison.cpp new file mode 100644 index 00000000..3a98b28a --- /dev/null +++ b/test/sequence/tuple_comparison.cpp @@ -0,0 +1,21 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +#define FUSION_SEQUENCE tuple +#include "comparison.hpp" + +int +main() +{ + equality_test(); + ordering_test(); + return boost::report_errors(); +} diff --git a/test/sequence/tuple_construction.cpp b/test/sequence/tuple_construction.cpp new file mode 100644 index 00000000..888a5cd4 --- /dev/null +++ b/test/sequence/tuple_construction.cpp @@ -0,0 +1,21 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +#define FUSION_SEQUENCE tuple +#define FUSION_AT get +#include "construction.hpp" + +int +main() +{ + test(); + return boost::report_errors(); +} diff --git a/test/sequence/tuple_copy.cpp b/test/sequence/tuple_copy.cpp new file mode 100644 index 00000000..fc9a100a --- /dev/null +++ b/test/sequence/tuple_copy.cpp @@ -0,0 +1,23 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +#define FUSION_SEQUENCE tuple +#define FUSION_AT get +#define FUSION_MAKE make_tuple +#define FUSION_TIE tie +#include "copy.hpp" + +int +main() +{ + test(); + return boost::report_errors(); +} + diff --git a/test/sequence/tuple_element.cpp b/test/sequence/tuple_element.cpp new file mode 100644 index 00000000..cf61f953 --- /dev/null +++ b/test/sequence/tuple_element.cpp @@ -0,0 +1,22 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +#define FUSION_SEQUENCE tuple +#define FUSION_AT get +#define FUSION_VALUE_AT(S, N) tuple_element +#include "value_at.hpp" + +int +main() +{ + test(); + return boost::report_errors(); +} + diff --git a/test/sequence/tuple_make.cpp b/test/sequence/tuple_make.cpp new file mode 100644 index 00000000..e8dcbbfb --- /dev/null +++ b/test/sequence/tuple_make.cpp @@ -0,0 +1,22 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +#define FUSION_SEQUENCE tuple +#define FUSION_AT get +#define FUSION_MAKE make_tuple +#include "make.hpp" + +int +main() +{ + test(); + return boost::report_errors(); +} + diff --git a/test/sequence/tuple_misc.cpp b/test/sequence/tuple_misc.cpp new file mode 100644 index 00000000..3945dcbc --- /dev/null +++ b/test/sequence/tuple_misc.cpp @@ -0,0 +1,22 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +#define FUSION_SEQUENCE tuple +#define FUSION_AT get +#define FUSION_SIZE tuple_size +#include "misc.hpp" + +int +main() +{ + test(); + return boost::report_errors(); +} + diff --git a/test/sequence/tuple_mutate.cpp b/test/sequence/tuple_mutate.cpp new file mode 100644 index 00000000..ba72edbc --- /dev/null +++ b/test/sequence/tuple_mutate.cpp @@ -0,0 +1,21 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +#define FUSION_SEQUENCE tuple +#define FUSION_AT get +#include "mutate.hpp" + +int +main() +{ + test(); + return boost::report_errors(); +} + diff --git a/test/sequence/tuple_tie.cpp b/test/sequence/tuple_tie.cpp new file mode 100644 index 00000000..85c69d96 --- /dev/null +++ b/test/sequence/tuple_tie.cpp @@ -0,0 +1,23 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +#define FUSION_SEQUENCE tuple +#define FUSION_AT get +#define FUSION_MAKE make_tuple +#define FUSION_TIE tie +#include "tie.hpp" + +int +main() +{ + test(); + return boost::report_errors(); +} + diff --git a/test/sequence/unpack_args.cpp b/test/sequence/unpack_args.cpp new file mode 100644 index 00000000..d3249408 --- /dev/null +++ b/test/sequence/unpack_args.cpp @@ -0,0 +1,228 @@ +// +// Copyright (c) 2006 João Abecasis +// +// Distributed under the 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; + +//////////////////////////////////////////////////////////////////////////////// +// +// Helper stuff +// + +struct object {}; +struct nc_object : boost::noncopyable {}; + +template +inline T const & const_(T const & t) +{ + return t; +} + +//////////////////////////////////////////////////////////////////////////////// +// +// Test functoids +// + +// polymorphic functors +struct foo +{ + typedef int result_type; + + int operator()() { return 0; } + int operator()() const { return 1; } + + int operator()(int i) { return 2 + i; } + int operator()(int i) const { return 3 + i; } + + int operator()(int i, object &) { return 4 + i; } + int operator()(int i, object &) const { return 5 + i; } + int operator()(int i, object const &) { return 6 + i; } + int operator()(int i, object const &) const { return 7 + i; } + + int operator()(int i, object &, nc_object &) { return 10 + i; } + int operator()(int i, object &, nc_object &) const { return 11 + i; } +}; + +struct nc_foo + : boost::noncopyable +{ + typedef int result_type; + + int operator()() { return 0; } + int operator()() const { return 1; } + + int operator()(int i) { return 2 + i; } + int operator()(int i) const { return 3 + i; } +}; + +// nullary function +int bar() { return 20; } + +// unary function +int square(int i) { return i * i; } + +// binary functions +int baz1(int i, object &) { return 30 + i; } +int baz2(int i, object const &) { return 70 + i; } + +// cv-qualified unary function pointers +typedef int (* func_ptr)(int); +typedef int (* const c_func_ptr)(int); +typedef int (* volatile v_func_ptr)(int); +typedef int (* const volatile cv_func_ptr)(int); + + func_ptr func_ptr1 = □ + c_func_ptr func_ptr2 = □ + v_func_ptr func_ptr3 = □ +cv_func_ptr func_ptr4 = □ + +//////////////////////////////////////////////////////////////////////////////// +// +// Test data +// + +typedef int element1_type; +typedef object element2_type; +typedef nc_object & element3_type; + +int element1 = 100; +object element2 = object(); +nc_object element3; + +//////////////////////////////////////////////////////////////////////////////// +// +// Tests (by sequence size) +// + +template +void test_sequence_n(Sequence & seq, boost::mpl::int_<0>) +{ + { + foo f; + + BOOST_TEST( f () == fusion::unpack_args( f , seq )); + BOOST_TEST(const_(f)() == fusion::unpack_args(const_(f), seq )); + BOOST_TEST( f () == fusion::unpack_args( f , const_(seq))); + BOOST_TEST(const_(f)() == fusion::unpack_args(const_(f), const_(seq))); + } + + { + nc_foo nc_f; + + BOOST_TEST( nc_f () == fusion::unpack_args( nc_f , seq )); + BOOST_TEST(const_(nc_f)() == fusion::unpack_args(const_(nc_f), seq )); + BOOST_TEST( nc_f () == fusion::unpack_args( nc_f , const_(seq))); + BOOST_TEST(const_(nc_f)() == fusion::unpack_args(const_(nc_f), const_(seq))); + } + + BOOST_TEST(bar() == fusion::unpack_args(bar, seq)); +} + +template +void test_sequence_n(Sequence & seq, boost::mpl::int_<1>) +{ + { + foo f; + + BOOST_TEST( f (element1) == fusion::unpack_args( f , seq )); + BOOST_TEST(const_(f)(element1) == fusion::unpack_args(const_(f), seq )); + BOOST_TEST( f (element1) == fusion::unpack_args( f , const_(seq))); + BOOST_TEST(const_(f)(element1) == fusion::unpack_args(const_(f), const_(seq))); + } + + { + nc_foo nc_f; + + BOOST_TEST( nc_f (element1) == fusion::unpack_args( nc_f , seq )); + BOOST_TEST(const_(nc_f)(element1) == fusion::unpack_args(const_(nc_f), seq )); + BOOST_TEST( nc_f (element1) == fusion::unpack_args( nc_f , const_(seq))); + BOOST_TEST(const_(nc_f)(element1) == fusion::unpack_args(const_(nc_f), const_(seq))); + } + + BOOST_TEST(square(element1) == fusion::unpack_args(square, seq)); + + BOOST_TEST(func_ptr1(element1) == fusion::unpack_args(func_ptr1, seq)); + BOOST_TEST(func_ptr2(element1) == fusion::unpack_args(func_ptr2, seq)); + BOOST_TEST(func_ptr3(element1) == fusion::unpack_args(func_ptr3, seq)); + BOOST_TEST(func_ptr4(element1) == fusion::unpack_args(func_ptr4, seq)); +} + +template +void test_sequence_n(Sequence & seq, boost::mpl::int_<2>) +{ + { + foo f; + + BOOST_TEST( f (element1, element2) == fusion::unpack_args( f , seq)); + BOOST_TEST(const_(f)(element1, element2) == fusion::unpack_args(const_(f), seq)); + + BOOST_TEST( f (const_(element1), element2) == fusion::unpack_args( f , const_(seq))); + BOOST_TEST(const_(f)(const_(element1), element2) == fusion::unpack_args(const_(f), const_(seq))); + } + + BOOST_TEST(baz1(element1, element2) == fusion::unpack_args(baz1, seq)); + BOOST_TEST(baz2(element1, element2) == fusion::unpack_args(baz2, seq)); +} + +template +void test_sequence_n(Sequence & seq, boost::mpl::int_<3>) +{ + foo f; + + BOOST_TEST( f (element1, element2, element3) == fusion::unpack_args( f , seq)); + BOOST_TEST(const_(f)(element1, element2, element3) == fusion::unpack_args(const_(f), seq)); +} + +//////////////////////////////////////////////////////////////////////////////// +template +void test_sequence(Sequence & seq) +{ + test_sequence_n(seq, fusion::size(seq)); +} + +//////////////////////////////////////////////////////////////////////////////// +int main() +{ + typedef fusion::vector<> vector0; + typedef fusion::vector vector1; + typedef fusion::vector vector2; + typedef fusion::vector vector3; + + vector0 v0; + vector1 v1(element1); + vector2 v2(element1, element2); + vector3 v3(element1, element2, element3); + + test_sequence(v0); + test_sequence(v1); + test_sequence(v2); + test_sequence(v3); + + typedef fusion::list<> list0; + typedef fusion::list list1; + typedef fusion::list list2; + typedef fusion::list list3; + + list0 l0; + list1 l1(element1); + list2 l2(element1, element2); + list3 l3(element1, element2, element3); + + test_sequence(l0); + test_sequence(l1); + test_sequence(l2); + test_sequence(l3); +} diff --git a/test/sequence/value_at.hpp b/test/sequence/value_at.hpp new file mode 100644 index 00000000..72eebad9 --- /dev/null +++ b/test/sequence/value_at.hpp @@ -0,0 +1,87 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +#if !defined(FUSION_AT) +#define FUSION_AT at_c +#endif + +#if !defined(FUSION_VALUE_AT) +#define FUSION_VALUE_AT(S, N) result_of::value_at_c +#endif + +namespace +{ + // something to prevent warnings for unused variables + template void dummy(const T&) {} + + class A {}; +} + +void +test() +{ + using namespace boost::fusion; + + double d = 2.7; + A a; + FUSION_SEQUENCE t(1, d, a, 2); + const FUSION_SEQUENCE ct(t); + + int i = FUSION_AT<0>(t); + int i2 = FUSION_AT<3>(t); + + BOOST_TEST(i == 1 && i2 == 2); + + int j = FUSION_AT<0>(ct); + BOOST_TEST(j == 1); + + FUSION_AT<0>(t) = 5; + BOOST_TEST(FUSION_AT<0>(t) == 5); + +#if defined(FUSION_TEST_FAIL) + FUSION_AT<0>(ct) = 5; // can't assign to const +#endif + + double e = FUSION_AT<1>(t); + BOOST_TEST(e > 2.69 && e < 2.71); + + FUSION_AT<1>(t) = 3.14+i; + BOOST_TEST(FUSION_AT<1>(t) > 4.13 && FUSION_AT<1>(t) < 4.15); + +#if defined(FUSION_TEST_FAIL) + FUSION_AT<4>(t) = A(); // can't assign to const + dummy(FUSION_AT<5>(ct)); // illegal index +#endif + + ++FUSION_AT<0>(t); + BOOST_TEST(FUSION_AT<0>(t) == 6); + + typedef FUSION_SEQUENCE seq_type; + + BOOST_STATIC_ASSERT(!( + boost::is_const::value)); + + // constness should not affect + BOOST_STATIC_ASSERT(!( + boost::is_const::value)); + + BOOST_STATIC_ASSERT(!( + boost::is_const::value)); + + // constness should not affect + BOOST_STATIC_ASSERT(!( + boost::is_const::value)); + + dummy(i); dummy(i2); dummy(j); dummy(e); // avoid warns for unused variables +} diff --git a/test/sequence/vector_comparison.cpp b/test/sequence/vector_comparison.cpp new file mode 100644 index 00000000..ef8e750e --- /dev/null +++ b/test/sequence/vector_comparison.cpp @@ -0,0 +1,20 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +#define FUSION_SEQUENCE vector +#include "comparison.hpp" + +int +main() +{ + equality_test(); + ordering_test(); + return boost::report_errors(); +} diff --git a/test/sequence/vector_construction.cpp b/test/sequence/vector_construction.cpp new file mode 100644 index 00000000..cabec110 --- /dev/null +++ b/test/sequence/vector_construction.cpp @@ -0,0 +1,19 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +#define FUSION_SEQUENCE vector +#include "construction.hpp" + +int +main() +{ + test(); + return boost::report_errors(); +} diff --git a/test/sequence/vector_copy.cpp b/test/sequence/vector_copy.cpp new file mode 100644 index 00000000..997ad089 --- /dev/null +++ b/test/sequence/vector_copy.cpp @@ -0,0 +1,22 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +#define FUSION_SEQUENCE vector +#include "copy.hpp" + +int +main() +{ + test(); + return boost::report_errors(); +} + diff --git a/test/sequence/vector_iterator.cpp b/test/sequence/vector_iterator.cpp new file mode 100644 index 00000000..a04f642e --- /dev/null +++ b/test/sequence/vector_iterator.cpp @@ -0,0 +1,23 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +#define FUSION_SEQUENCE vector +#define FUSION_TRAVERSAL_TAG random_access_traversal_tag +#include "./iterator.hpp" + +int +main() +{ + test(); + return boost::report_errors(); +} + + + diff --git a/test/sequence/vector_make.cpp b/test/sequence/vector_make.cpp new file mode 100644 index 00000000..ff80e84c --- /dev/null +++ b/test/sequence/vector_make.cpp @@ -0,0 +1,21 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +#define FUSION_SEQUENCE vector +#include "make.hpp" + +int +main() +{ + test(); + return boost::report_errors(); +} + diff --git a/test/sequence/vector_misc.cpp b/test/sequence/vector_misc.cpp new file mode 100644 index 00000000..69f488e4 --- /dev/null +++ b/test/sequence/vector_misc.cpp @@ -0,0 +1,20 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +#define FUSION_SEQUENCE vector +#include "misc.hpp" + +int +main() +{ + test(); + return boost::report_errors(); +} + diff --git a/test/sequence/vector_mutate.cpp b/test/sequence/vector_mutate.cpp new file mode 100644 index 00000000..151c32c5 --- /dev/null +++ b/test/sequence/vector_mutate.cpp @@ -0,0 +1,20 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +#define FUSION_SEQUENCE vector +#include "mutate.hpp" + +int +main() +{ + test(); + return boost::report_errors(); +} + diff --git a/test/sequence/vector_n.cpp b/test/sequence/vector_n.cpp new file mode 100644 index 00000000..49550b80 --- /dev/null +++ b/test/sequence/vector_n.cpp @@ -0,0 +1,231 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 +#include + +#include +#include + + +int +main() +{ + using namespace boost::fusion; + using namespace boost; + using namespace std; + + { + vector0 vec; + (void) vec; + cout << "(): " << sizeof(vec) << endl; + } + + { + typedef vector1 type; + type vec; + BOOST_STATIC_ASSERT(result_of::size::value == 1); + + BOOST_TEST(at_c<0>(vec) == 0); + BOOST_STATIC_ASSERT((is_same::type>::value)); + + // prove that it is mutable + at_c<0>(vec) = 987; + BOOST_TEST(at_c<0>(vec) == 987); + } + + { + typedef vector1 type; + type vec(123); + BOOST_TEST(at_c<0>(vec) == 123); + cout << "(int): " << sizeof(vec) << endl; + } + + { // testing const vector + vector1 const vec(999); + BOOST_TEST(at_c<0>(vec) == 999); + +#ifdef FUSION_TEST_COMPILE_FAIL + at_c<0>(vec) = 321; +#endif + } + + { + vector1 t1(123L); // try conversion from long to int + vector1 t2(t1); // try copy + (void)t2; + } + + { + typedef vector2 type; + type vec; + BOOST_STATIC_ASSERT(result_of::size::value == 2); + + BOOST_TEST(at_c<0>(vec) == 0); + BOOST_TEST(at_c<1>(vec) == char()); + + BOOST_STATIC_ASSERT((is_same::type>::value)); + BOOST_STATIC_ASSERT((is_same::type>::value)); + } + + { + typedef vector2 type; + type vec(123, 'x'); + BOOST_TEST(at_c<0>(vec) == 123); + BOOST_TEST(at_c<1>(vec) == 'x'); + cout << "(int, char): " << sizeof(vec) << endl; + } + + { + vector2 t1(123, 456); + vector2 t2(t1); + (void)t2; + } + + { + typedef vector3 type; + type vec; + BOOST_STATIC_ASSERT(result_of::size::value == 3); + + BOOST_TEST(at_c<0>(vec) == 0); + BOOST_TEST(at_c<1>(vec) == char()); + BOOST_TEST(at_c<2>(vec) == double()); + + BOOST_STATIC_ASSERT((is_same::type>::value)); + BOOST_STATIC_ASSERT((is_same::type>::value)); + BOOST_STATIC_ASSERT((is_same::type>::value)); + } + + { + typedef vector3 type; + type vec(123, 'x', 123.456); + BOOST_TEST(at_c<0>(vec) == 123); + BOOST_TEST(at_c<1>(vec) == 'x'); + BOOST_TEST(at_c<2>(vec) >= 123.455 && at_c<2>(vec) <= 123.457); + cout << "(int, char, double): " << sizeof(vec) << endl; + } + + { + typedef vector4 type; + type vec(123, 'x', 123.456, true); + cout << "(int, char, double, bool): " << sizeof(vec) << endl; + } + + { + typedef vector4 type; + type vec(123, 'x', true, 123.456); + cout << "(int, char, bool, double): " << sizeof(vec) << endl; + } + + { + typedef vector7 type; + type vec(false, 'x', 3, 4, 5, 6.0, 7.0); + + BOOST_TEST(at_c<0>(vec) == false); + BOOST_TEST(at_c<1>(vec) == 'x'); + BOOST_TEST(at_c<2>(vec) == 3); + BOOST_TEST(at_c<3>(vec) == 4); + BOOST_TEST(at_c<4>(vec) == 5); + BOOST_TEST(at_c<5>(vec) >= 5.9 && at_c<5>(vec) <= 6.1); + BOOST_TEST(at_c<6>(vec) >= 6.9 && at_c<6>(vec) <= 7.1); + + BOOST_STATIC_ASSERT((is_same::type>::value)); + BOOST_STATIC_ASSERT((is_same::type>::value)); + BOOST_STATIC_ASSERT((is_same::type>::value)); + BOOST_STATIC_ASSERT((is_same::type>::value)); + BOOST_STATIC_ASSERT((is_same::type>::value)); + BOOST_STATIC_ASSERT((is_same::type>::value)); + BOOST_STATIC_ASSERT((is_same::type>::value)); + cout << "(bool, char, short, int, long, float, double): " << sizeof(vec) << endl; + } + + { + typedef vector10 type; + type vec; // compile check only + cout << "vector10 of int: " << sizeof(vec) << endl; + } + + { + typedef vector20< + int, int, int, int, int, int, int, int, int, int + , int, int, int, int, int, int, int, int, int, int> type; + + type vec; // compile check only + cout << "vector20 of int: " << sizeof(vec) << endl; + } + + { + typedef vector30< + int, int, int, int, int, int, int, int, int, int + , int, int, int, int, int, int, int, int, int, int + , int, int, int, int, int, int, int, int, int, int> type; + + type vec; // compile check only + cout << "vector30 of int: " << sizeof(vec) << endl; + } + + { + typedef vector40< + int, int, int, int, int, int, int, int, int, int + , int, int, int, int, int, int, int, int, int, int + , int, int, int, int, int, int, int, int, int, int + , int, int, int, int, int, int, int, int, int, int> type; + + type vec; // compile check only + cout << "vector40 of int: " << sizeof(vec) << endl; + } + + { + typedef vector50< + int, int, int, int, int, int, int, int, int, int + , int, int, int, int, int, int, int, int, int, int + , int, int, int, int, int, int, int, int, int, int + , int, int, int, int, int, int, int, int, int, int + , int, int, int, int, int, int, int, int, int, int> type; + + type vec; // compile check only + cout << "vector50 of int: " << sizeof(vec) << endl; + } + + { + // testing copy and assign from a view + vector0 empty; + fusion::vector2 v(fusion::push_back(fusion::push_back(empty, 123), 456)); + BOOST_TEST(at_c<0>(v) == 123); + BOOST_TEST(at_c<1>(v) == 456); + v = fusion::push_back(fusion::push_back(empty, 123), 456); // test assign + BOOST_TEST(at_c<0>(v) == 123); + BOOST_TEST(at_c<1>(v) == 456); + } + + { + // testing copy and assign from a vector_c + mpl::vector_c vec_c; + fusion::vector2 v(vec_c); + BOOST_TEST(at_c<0>(v) == 123); + BOOST_TEST(at_c<1>(v) == 456); + v = mpl::vector_c(); // test assign + BOOST_TEST(at_c<0>(v) == 123); + BOOST_TEST(at_c<1>(v) == 456); + } + + return boost::report_errors(); +} + diff --git a/test/sequence/vector_tie.cpp b/test/sequence/vector_tie.cpp new file mode 100644 index 00000000..272421dc --- /dev/null +++ b/test/sequence/vector_tie.cpp @@ -0,0 +1,23 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +#define FUSION_SEQUENCE vector +#include "tie.hpp" + +int +main() +{ + test(); + return boost::report_errors(); +} + diff --git a/test/sequence/vector_value_at.cpp b/test/sequence/vector_value_at.cpp new file mode 100644 index 00000000..97859bcd --- /dev/null +++ b/test/sequence/vector_value_at.cpp @@ -0,0 +1,20 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +#define FUSION_SEQUENCE vector +#include "value_at.hpp" + +int +main() +{ + test(); + return boost::report_errors(); +} + diff --git a/test/sequence/zip_view.cpp b/test/sequence/zip_view.cpp new file mode 100644 index 00000000..e4b3fa9a --- /dev/null +++ b/test/sequence/zip_view.cpp @@ -0,0 +1,88 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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 +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +int main() +{ + using namespace boost::fusion; + { + typedef vector2 int_vector; + typedef vector2 char_vector; + typedef vector seqs_type; + typedef zip_view view; + + BOOST_MPL_ASSERT((boost::mpl::equal_to::type, boost::fusion::result_of::size::type>)); + BOOST_STATIC_ASSERT((boost::fusion::result_of::size::value == 2)); + + int_vector iv(1,2); + char_vector cv('a', 'b'); + seqs_type seqs(iv, cv); + view v(seqs); + + BOOST_TEST(at_c<0>(v) == make_vector(1, 'a')); + BOOST_TEST(at_c<1>(v) == make_vector(2, 'b')); + BOOST_TEST(front(v) == make_vector(1, 'a')); + BOOST_TEST(back(v) == make_vector(2, 'b')); + BOOST_TEST(*next(begin(v)) == make_vector(2, 'b')); + BOOST_TEST(*prior(end(v)) == make_vector(2, 'b')); + BOOST_TEST(advance_c<2>(begin(v)) == end(v)); + BOOST_TEST(advance_c<-2>(end(v)) == begin(v)); + BOOST_TEST(distance(begin(v), end(v)) == 2); + + BOOST_STATIC_ASSERT((boost::fusion::result_of::distance::type, boost::fusion::result_of::end::type>::value == 2)); + + BOOST_MPL_ASSERT((boost::is_same::type, vector >)); + BOOST_MPL_ASSERT((boost::is_same::type>::type, vector >)); + } + { + using namespace boost; + typedef mpl::vector2 v1_type; + typedef mpl::vector2 v2_type; + typedef fusion::vector seqs_type; + typedef fusion::zip_view view; + + v1_type v1; + v2_type v2; + seqs_type seqs(v1,v2); + view v(seqs); + BOOST_TEST((fusion::at_c<0>(v) == mpl::vector2())); + BOOST_TEST((fusion::at_c<1>(v) == mpl::vector2())); + BOOST_TEST((fusion::front(v) == mpl::vector2())); + BOOST_TEST((fusion::back(v) == mpl::vector2())); + BOOST_TEST((*fusion::next(fusion::begin(v)) == mpl::vector2())); + BOOST_TEST((*fusion::prior(fusion::end(v)) == mpl::vector2())); + BOOST_TEST(fusion::advance_c<2>(fusion::begin(v)) == fusion::end(v)); + BOOST_TEST(fusion::advance_c<-2>(fusion::end(v)) == fusion::begin(v)); + BOOST_TEST(fusion::distance(fusion::begin(v), fusion::end(v)) == 2); + } + return boost::report_errors(); +} + diff --git a/test/sequence/zip_view2.cpp b/test/sequence/zip_view2.cpp new file mode 100644 index 00000000..b4054c38 --- /dev/null +++ b/test/sequence/zip_view2.cpp @@ -0,0 +1,65 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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 +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +int main() +{ + { + using namespace boost::fusion; + typedef vector2 int_vector; + typedef vector2 char_vector; + typedef list char_list; + typedef vector seqs_type; + typedef zip_view view; + + BOOST_MPL_ASSERT((boost::mpl::equal_to::type, boost::fusion::result_of::size::type>)); + BOOST_STATIC_ASSERT((boost::fusion::result_of::size::value == 2)); + + int_vector iv(1,2); + char_vector cv('a', 'b'); + char_list cl('y','z'); + seqs_type seqs(iv, cv, cl); + view v(seqs); + + BOOST_TEST(at_c<0>(v) == make_vector(1, 'a', 'y')); + BOOST_TEST(at_c<1>(v) == make_vector(2, 'b', 'z')); + BOOST_TEST(front(v) == make_vector(1, 'a', 'y')); + BOOST_TEST(*next(begin(v)) == make_vector(2, 'b', 'z')); + BOOST_TEST(advance_c<2>(begin(v)) == end(v)); + BOOST_TEST(distance(begin(v), end(v)) == 2); + BOOST_STATIC_ASSERT((boost::fusion::result_of::distance::type, boost::fusion::result_of::end::type>::value == 2)); + + BOOST_MPL_ASSERT((boost::is_same::type, vector >)); + BOOST_MPL_ASSERT((boost::is_same::type>::type, vector >)); + } + return boost::report_errors(); +} diff --git a/todo.txt b/todo.txt new file mode 100644 index 00000000..66899882 --- /dev/null +++ b/todo.txt @@ -0,0 +1,8 @@ +* Consider object equivalent of functions and algorithms (so you can do transform(iterators, deref()) with needing to put together a wrapper for deref). +* Consider segmented sequence / algorithm support +* Consider utility element_ref::type thats consts and refs as appropriate +* Improved motivation section +* Expand details of view concept +* Examples, examples, examples +* unpack_args documentation +* look at lambda stuff \ No newline at end of file From 5efba059edb86f43b99dc30063a1abadad04a220 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Wed, 23 Aug 2006 02:37:18 +0000 Subject: [PATCH 003/234] Tweaks for xpressive [SVN r34928] --- include/boost/fusion/sequence/container/list/cons.hpp | 8 +++++++- include/boost/fusion/sequence/io/in.hpp | 6 +++--- include/boost/fusion/sequence/io/out.hpp | 6 +++--- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/include/boost/fusion/sequence/container/list/cons.hpp b/include/boost/fusion/sequence/container/list/cons.hpp index d79c379f..806c8f64 100644 --- a/include/boost/fusion/sequence/container/list/cons.hpp +++ b/include/boost/fusion/sequence/container/list/cons.hpp @@ -24,6 +24,7 @@ #include #include #include +#include namespace boost { namespace fusion { @@ -86,7 +87,12 @@ namespace boost { namespace fusion template explicit cons( Sequence const& seq - , typename disable_if >::type* dummy = 0) + , typename disable_if< + mpl::or_< + is_convertible // use copy ctor instead + , is_convertible // use copy to car instead + > + >::type* dummy = 0) : car(*fusion::begin(seq)) , cdr(fusion::next(fusion::begin(seq)), mpl::true_()) {} diff --git a/include/boost/fusion/sequence/io/in.hpp b/include/boost/fusion/sequence/io/in.hpp index 2766daee..f77e14e8 100644 --- a/include/boost/fusion/sequence/io/in.hpp +++ b/include/boost/fusion/sequence/io/in.hpp @@ -18,13 +18,13 @@ namespace boost { namespace fusion { - template + template inline typename enable_if< fusion::traits::is_sequence - , IStream& + , std::istream& >::type - operator>>(IStream& is, Sequence& seq) + operator>>(std::istream& is, Sequence& seq) { detail::read_sequence(is, seq); return is; diff --git a/include/boost/fusion/sequence/io/out.hpp b/include/boost/fusion/sequence/io/out.hpp index fd943547..d5b6fcc8 100644 --- a/include/boost/fusion/sequence/io/out.hpp +++ b/include/boost/fusion/sequence/io/out.hpp @@ -18,13 +18,13 @@ namespace boost { namespace fusion { - template + template inline typename enable_if< fusion::traits::is_sequence - , OStream& + , std::ostream& >::type - operator<<(OStream& os, Sequence const& seq) + operator<<(std::ostream& os, Sequence const& seq) { detail::print_sequence(os, seq); return os; From 65a427658fdf36d81b1e7f58689947dc5f8f6c48 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Sun, 10 Sep 2006 05:56:10 +0000 Subject: [PATCH 004/234] Tweaks for VC7.1 [SVN r35054] --- .../boost/fusion/sequence/container/list/cons.hpp | 7 ++++++- .../fusion/sequence/container/vector/vector.hpp | 13 ++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/include/boost/fusion/sequence/container/list/cons.hpp b/include/boost/fusion/sequence/container/list/cons.hpp index 806c8f64..41723596 100644 --- a/include/boost/fusion/sequence/container/list/cons.hpp +++ b/include/boost/fusion/sequence/container/list/cons.hpp @@ -87,12 +87,17 @@ namespace boost { namespace fusion template explicit cons( Sequence const& seq +#if defined(BOOST_MSVC) +// VC++ gets confused when RHS is a derived type. It fails to call +// the copy ctor and attempts to call this templated constructor instead. , typename disable_if< mpl::or_< is_convertible // use copy ctor instead , is_convertible // use copy to car instead > - >::type* dummy = 0) + >::type* dummy = 0 +#endif + ) : car(*fusion::begin(seq)) , cdr(fusion::next(fusion::begin(seq)), mpl::true_()) {} diff --git a/include/boost/fusion/sequence/container/vector/vector.hpp b/include/boost/fusion/sequence/container/vector/vector.hpp index 58f7f6b8..5334973c 100644 --- a/include/boost/fusion/sequence/container/vector/vector.hpp +++ b/include/boost/fusion/sequence/container/vector/vector.hpp @@ -16,6 +16,8 @@ #include #include #include +#include +#include namespace boost { namespace fusion { @@ -52,7 +54,16 @@ namespace boost { namespace fusion : vec(rhs.vec) {} template - explicit vector(T const& rhs) + explicit vector( + T const& rhs +#if defined(BOOST_MSVC) +// VC++ gets confused when RHS is a derived type. It fails to call +// the copy ctor and attempts to call this templated constructor instead. + , typename disable_if< + is_convertible // use copy ctor instead + >::type* dummy = 0 +#endif + ) : vec(rhs) {} // Expand a couple of forwarding constructors for arguments From d77941a3758005b03b19e5b2a3e36597aa0848ef Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Sun, 10 Sep 2006 16:15:37 +0000 Subject: [PATCH 005/234] simple performance examples [SVN r35055] --- example/performance/Jamfile.v2 | 15 ++ example/performance/accumulate.cpp | 353 +++++++++++++++++++++++++ example/performance/inner_product.cpp | 179 +++++++++++++ example/performance/inner_product2.cpp | 199 ++++++++++++++ 4 files changed, 746 insertions(+) create mode 100644 example/performance/Jamfile.v2 create mode 100644 example/performance/accumulate.cpp create mode 100644 example/performance/inner_product.cpp create mode 100644 example/performance/inner_product2.cpp diff --git a/example/performance/Jamfile.v2 b/example/performance/Jamfile.v2 new file mode 100644 index 00000000..ec8e7b29 --- /dev/null +++ b/example/performance/Jamfile.v2 @@ -0,0 +1,15 @@ +#============================================================================== +# Copyright (c) 2003-2006 Joel de Guzman +# Copyright (c) 2006 Dan Marsden +# +# Use, modification and distribution is 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) +#============================================================================== +project fusion-performance ; + +exe accumulate : accumulate.cpp ; + +exe inner_product : inner_product.cpp ; + +exe inner_product2 : inner_product2.cpp ; diff --git a/example/performance/accumulate.cpp b/example/performance/accumulate.cpp new file mode 100644 index 00000000..ee7248ef --- /dev/null +++ b/example/performance/accumulate.cpp @@ -0,0 +1,353 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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 +#include +#include + +#ifdef _MSC_VER +// inline aggressively +# pragma inline_recursion(on) // turn on inline recursion +# pragma inline_depth(255) // max inline depth +#endif + +int const REPEAT_COUNT = 10; + +double const duration = 0.5; + +namespace +{ + template + double time_for_std_accumulate(int& j) + { + boost::timer tim; + int i = 0; + long long iter = 65536; + long long counter, repeats; + double result = std::numeric_limits::max(); + double runtime = 0; + double run; + boost::array arr; + std::generate(arr.begin(), arr.end(), rand); + do + { + tim.restart(); + for(counter = 0; counter < iter; ++counter) + { + i = std::accumulate(arr.begin(), arr.end(), 0); + static_cast(i); + } + runtime = tim.elapsed(); + iter *= 2; + } while(runtime < duration); + iter /= 2; + + // repeat test and report least value for consistency: + for(repeats = 0; repeats < REPEAT_COUNT; ++repeats) + { + tim.restart(); + for(counter = 0; counter < iter; ++counter) + { + i = std::accumulate(arr.begin(), arr.end(), 0); + j += i; + } + run = tim.elapsed(); + result = (std::min)(run, result); + } + std::cout << i << std::endl; + return result / iter; + } + + + struct poly_add + { + template + struct result + { + typedef Lhs type; + }; + + template + Lhs operator()(const Lhs& lhs, const Rhs& rhs) const + { + return lhs + rhs; + } + }; + + struct poly_mult + { + template + struct result + { + typedef Lhs type; + }; + + template + Lhs operator()(const Lhs& lhs, const Rhs& rhs) const + { + return lhs * rhs; + } + }; + + template + double time_for_fusion_accumulate(int& j) + { + boost::timer tim; + int i = 0; + long long iter = 65536; + long long counter, repeats; + double result = std::numeric_limits::max(); + double runtime = 0; + double run; + boost::array arr; + std::generate(arr.begin(), arr.end(), rand); + do + { + tim.restart(); + for(counter = 0; counter < iter; ++counter) + { + i = boost::fusion::accumulate(arr, 0, poly_add()); + static_cast(i); + } + runtime = tim.elapsed(); + iter *= 2; + } while(runtime < duration); + iter /= 2; + + std::cout << iter << " iterations" << std::endl; + + // repeat test and report least value for consistency: + for(repeats = 0; repeats < REPEAT_COUNT; ++repeats) + { + tim.restart(); + for(counter = 0; counter < iter; ++counter) + { + i = boost::fusion::accumulate(arr, 0, poly_add()); + j += i; + } + run = tim.elapsed(); + result = (std::min)(run, result); + std::cout << "."; + std::cout.flush(); + } + std::cout << i << std::endl; + return result / iter; + } + +#if 0 + template + double time_for_std_inner_product(int& j) + { + boost::timer tim; + int i = 0; + long long iter = 65536; + long long counter, repeats; + double result = std::numeric_limits::max(); + double runtime = 0; + double run; + boost::array arr1; + boost::array arr2; + std::generate(arr1.begin(), arr1.end(), rand); + std::generate(arr2.begin(), arr2.end(), rand); + do + { + tim.restart(); + for(counter = 0; counter < iter; ++counter) + { + i = std::inner_product(arr1.begin(), arr1.end(), arr2.begin(), 0); + static_cast(i); + } + runtime = tim.elapsed(); + iter *= 2; + } while(runtime < duration); + iter /= 2; + + // repeat test and report least value for consistency: + for(repeats = 0; repeats < REPEAT_COUNT; ++repeats) + { + tim.restart(); + for(counter = 0; counter < iter; ++counter) + { + i = std::inner_product(arr1.begin(), arr1.end(), arr2.begin(), 0); + j += i; + } + run = tim.elapsed(); + result = (std::min)(run, result); + } + std::cout << i << std::endl; + return result / iter; + } + + template + double time_for_fusion_inner_product(int& j) + { + boost::timer tim; + int i = 0; + long long iter = 65536; + long long counter, repeats; + double result = std::numeric_limits::max(); + double runtime = 0; + double run; + boost::array arr1; + boost::array arr2; + std::generate(arr1.begin(), arr1.end(), rand); + std::generate(arr2.begin(), arr2.end(), rand); + do + { + tim.restart(); + for(counter = 0; counter < iter; ++counter) + { + i = boost::fusion::accumulate( + boost::fusion::transform(arr1, arr2, poly_mult()), 0, poly_add()); + static_cast(i); + } + runtime = tim.elapsed(); + iter *= 2; + } while(runtime < duration); + iter /= 2; + + // repeat test and report least value for consistency: + for(repeats = 0; repeats < REPEAT_COUNT; ++repeats) + { + tim.restart(); + for(counter = 0; counter < iter; ++counter) + { + i = boost::fusion::accumulate( + boost::fusion::transform(arr1, arr2, poly_mult()), 0, poly_add()); + j += i; + } + run = tim.elapsed(); + result = (std::min)(run, result); + } + std::cout << i << std::endl; + return result / iter; + } + + struct poly_combine + { + template + struct result + { + typedef Rhs type; + }; + + template + typename result::type + operator()(const Lhs& lhs, const Rhs& rhs) const + { + return rhs + boost::fusion::at_c<0>(lhs) * boost::fusion::at_c<1>(lhs); + } + }; + + template + double time_for_fusion_inner_product2(int& j) + { + boost::timer tim; + int i = 0; + long long iter = 65536; + long long counter, repeats; + double result = std::numeric_limits::max(); + double runtime = 0; + double run; + boost::array arr1; + boost::array arr2; + std::generate(arr1.begin(), arr1.end(), rand); + std::generate(arr2.begin(), arr2.end(), rand); + do + { + tim.restart(); + for(counter = 0; counter < iter; ++counter) + { + i = boost::fusion::accumulate( + boost::fusion::zip(arr1, arr2), 0, poly_combine()); + static_cast(i); + } + runtime = tim.elapsed(); + iter *= 2; + } while(runtime < duration); + iter /= 2; + + std::cout << iter << " iterations" << std::endl; + + // repeat test and report least value for consistency: + for(repeats = 0; repeats < REPEAT_COUNT; ++repeats) + { + tim.restart(); + for(counter = 0; counter < iter; ++counter) + { + i = boost::fusion::accumulate( + boost::fusion::zip(arr1, arr2), 0, poly_combine()); + j += i; + } + run = tim.elapsed(); + result = (std::min)(run, result); + } + std::cout << i << std::endl; + return result / iter; + } +#endif +} + +int main() +{ + int total = 0; + int res; + std::cout << "short accumulate std test " << time_for_std_accumulate<8>(res) << std::endl; + total += res; + std::cout << "short accumulate fusion test " << time_for_fusion_accumulate<8>(res) << std::endl; + total += res; + + std::cout << "medium accumulate std test " << time_for_std_accumulate<64>(res) << std::endl; + total += res; + std::cout << "medium accumulate fusion test " << time_for_fusion_accumulate<64>(res) << std::endl; + total += res; + + std::cout << "long accumulate std test " << time_for_std_accumulate<128>(res) << std::endl; + total += res; + std::cout << "long accumulate fusion test " << time_for_fusion_accumulate<128>(res) << std::endl; + total += res; + +#if 0 + std::cout << "short inner_product std test " << time_for_std_inner_product<8>(res) << std::endl; + total += res; + std::cout << "short inner_product fusion test " << time_for_fusion_inner_product<8>(res) << std::endl; + total += res; + std::cout << "short inner_product fusion 2 test " << time_for_fusion_inner_product2<8>(res) << std::endl; + total += res; + + std::cout << "medium inner_product std test " << time_for_std_inner_product<64>(res) << std::endl; + total += res; + std::cout << "medium inner_product fusion test " << time_for_fusion_inner_product<64>(res) << std::endl; + total += res; + std::cout << "medium inner_product fusion 2 test " << time_for_fusion_inner_product2<64>(res) << std::endl; + total += res; + + + std::cout << "long inner_product std test " << time_for_std_inner_product<128>(res) << std::endl; + total += res; + std::cout << "long inner_product fusion test " << time_for_fusion_inner_product<128>(res) << std::endl; + total += res; + std::cout << "long inner_product fusion 2 test " << time_for_fusion_inner_product2<128>(res) << std::endl; + total += res; +#endif + + return total; +} diff --git a/example/performance/inner_product.cpp b/example/performance/inner_product.cpp new file mode 100644 index 00000000..7ed6283d --- /dev/null +++ b/example/performance/inner_product.cpp @@ -0,0 +1,179 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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 +#include +#include +#include + +#ifdef _MSC_VER +// inline aggressively +# pragma inline_recursion(on) // turn on inline recursion +# pragma inline_depth(255) // max inline depth +#endif + +int const REPEAT_COUNT = 10; + +double const duration = 0.5; + +namespace +{ + struct poly_add + { + template + struct result + { + typedef Lhs type; + }; + + template + Lhs operator()(const Lhs& lhs, const Rhs& rhs) const + { + return lhs + rhs; + } + }; + + struct poly_mult + { + template + struct result + { + typedef Lhs type; + }; + + template + Lhs operator()(const Lhs& lhs, const Rhs& rhs) const + { + return lhs * rhs; + } + }; + + template + double time_for_std_inner_product(int& j) + { + boost::timer tim; + int i = 0; + long long iter = 65536; + long long counter, repeats; + double result = std::numeric_limits::max(); + double runtime = 0; + double run; + boost::array arr1; + boost::array arr2; + std::generate(arr1.begin(), arr1.end(), rand); + std::generate(arr2.begin(), arr2.end(), rand); + do + { + tim.restart(); + for(counter = 0; counter < iter; ++counter) + { + i = std::inner_product(arr1.begin(), arr1.end(), arr2.begin(), 0); + static_cast(i); + } + runtime = tim.elapsed(); + iter *= 2; + } while(runtime < duration); + iter /= 2; + + // repeat test and report least value for consistency: + for(repeats = 0; repeats < REPEAT_COUNT; ++repeats) + { + tim.restart(); + for(counter = 0; counter < iter; ++counter) + { + i = std::inner_product(arr1.begin(), arr1.end(), arr2.begin(), 0); + j += i; + } + run = tim.elapsed(); + result = (std::min)(run, result); + } + std::cout << i << std::endl; + return result / iter; + } + + template + double time_for_fusion_inner_product(int& j) + { + boost::timer tim; + int i = 0; + long long iter = 65536; + long long counter, repeats; + double result = std::numeric_limits::max(); + double runtime = 0; + double run; + boost::array arr1; + boost::array arr2; + std::generate(arr1.begin(), arr1.end(), rand); + std::generate(arr2.begin(), arr2.end(), rand); + do + { + tim.restart(); + for(counter = 0; counter < iter; ++counter) + { + i = boost::fusion::accumulate( + boost::fusion::transform(arr1, arr2, poly_mult()), 0, poly_add()); + static_cast(i); + } + runtime = tim.elapsed(); + iter *= 2; + } while(runtime < duration); + iter /= 2; + + // repeat test and report least value for consistency: + for(repeats = 0; repeats < REPEAT_COUNT; ++repeats) + { + tim.restart(); + for(counter = 0; counter < iter; ++counter) + { + i = boost::fusion::accumulate( + boost::fusion::transform(arr1, arr2, poly_mult()), 0, poly_add()); + j += i; + } + run = tim.elapsed(); + result = (std::min)(run, result); + } + std::cout << i << std::endl; + return result / iter; + } +} + +int main() +{ + int total = 0; + int res; + + std::cout << "short inner_product std test " << time_for_std_inner_product<8>(res) << std::endl; + total += res; + std::cout << "short inner_product fusion test " << time_for_fusion_inner_product<8>(res) << std::endl; + total += res; + + std::cout << "medium inner_product std test " << time_for_std_inner_product<64>(res) << std::endl; + total += res; + std::cout << "medium inner_product fusion test " << time_for_fusion_inner_product<64>(res) << std::endl; + total += res; + + std::cout << "long inner_product std test " << time_for_std_inner_product<128>(res) << std::endl; + total += res; + std::cout << "long inner_product fusion test " << time_for_fusion_inner_product<128>(res) << std::endl; + total += res; + + return total; +} diff --git a/example/performance/inner_product2.cpp b/example/performance/inner_product2.cpp new file mode 100644 index 00000000..bc104cf6 --- /dev/null +++ b/example/performance/inner_product2.cpp @@ -0,0 +1,199 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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 +#include +#include +#include + +#ifdef _MSC_VER +// inline aggressively +# pragma inline_recursion(on) // turn on inline recursion +# pragma inline_depth(255) // max inline depth +#endif + +int const REPEAT_COUNT = 10; + +double const duration = 0.5; + +namespace +{ + struct poly_add + { + template + struct result + { + typedef Lhs type; + }; + + template + Lhs operator()(const Lhs& lhs, const Rhs& rhs) const + { + return lhs + rhs; + } + }; + + struct poly_mult + { + template + struct result + { + typedef Lhs type; + }; + + template + Lhs operator()(const Lhs& lhs, const Rhs& rhs) const + { + return lhs * rhs; + } + }; + + template + double time_for_std_inner_product(int& j) + { + boost::timer tim; + int i = 0; + long long iter = 65536; + long long counter, repeats; + double result = std::numeric_limits::max(); + double runtime = 0; + double run; + boost::array arr1; + boost::array arr2; + std::generate(arr1.begin(), arr1.end(), rand); + std::generate(arr2.begin(), arr2.end(), rand); + do + { + tim.restart(); + for(counter = 0; counter < iter; ++counter) + { + i = std::inner_product(arr1.begin(), arr1.end(), arr2.begin(), 0); + static_cast(i); + } + runtime = tim.elapsed(); + iter *= 2; + } while(runtime < duration); + iter /= 2; + + // repeat test and report least value for consistency: + for(repeats = 0; repeats < REPEAT_COUNT; ++repeats) + { + tim.restart(); + for(counter = 0; counter < iter; ++counter) + { + i = std::inner_product(arr1.begin(), arr1.end(), arr2.begin(), 0); + j += i; + } + run = tim.elapsed(); + result = (std::min)(run, result); + } + std::cout << i << std::endl; + return result / iter; + } + + struct poly_combine + { + template + struct result + { + typedef Rhs type; + }; + + template + typename result::type + operator()(const Lhs& lhs, const Rhs& rhs) const + { + return rhs + boost::fusion::at_c<0>(lhs) * boost::fusion::at_c<1>(lhs); + } + }; + + template + double time_for_fusion_inner_product2(int& j) + { + boost::timer tim; + int i = 0; + long long iter = 65536; + long long counter, repeats; + double result = std::numeric_limits::max(); + double runtime = 0; + double run; + boost::array arr1; + boost::array arr2; + std::generate(arr1.begin(), arr1.end(), rand); + std::generate(arr2.begin(), arr2.end(), rand); + do + { + tim.restart(); + for(counter = 0; counter < iter; ++counter) + { + i = boost::fusion::accumulate( + boost::fusion::zip(arr1, arr2), 0, poly_combine()); + static_cast(i); + } + runtime = tim.elapsed(); + iter *= 2; + } while(runtime < duration); + iter /= 2; + + std::cout << iter << " iterations" << std::endl; + + // repeat test and report least value for consistency: + for(repeats = 0; repeats < REPEAT_COUNT; ++repeats) + { + tim.restart(); + for(counter = 0; counter < iter; ++counter) + { + i = boost::fusion::accumulate( + boost::fusion::zip(arr1, arr2), 0, poly_combine()); + j += i; + } + run = tim.elapsed(); + result = (std::min)(run, result); + } + std::cout << i << std::endl; + return result / iter; + } +} + +int main() +{ + int total = 0; + int res; + + std::cout << "short inner_product std test " << time_for_std_inner_product<8>(res) << std::endl; + total += res; + std::cout << "short inner_product fusion 2 test " << time_for_fusion_inner_product2<8>(res) << std::endl; + total += res; + + std::cout << "medium inner_product std test " << time_for_std_inner_product<64>(res) << std::endl; + total += res; + std::cout << "medium inner_product fusion 2 test " << time_for_fusion_inner_product2<64>(res) << std::endl; + total += res; + +#if 0 // Leads to ICE with MSVC 8.0 + std::cout << "long inner_product std test " << time_for_std_inner_product<128>(res) << std::endl; + total += res; + std::cout << "long inner_product fusion 2 test " << time_for_fusion_inner_product2<128>(res) << std::endl; + total += res; +#endif + + return total; +} From eb324cc0299426794dbd5792e49c14f800fc6543 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Sat, 16 Sep 2006 05:27:33 +0000 Subject: [PATCH 006/234] Doc Tweaks [SVN r35130] --- doc/acknowledgements.qbk | 15 ++++++++++---- doc/html/fusion/acknowledgements.html | 16 +++++++++++---- doc/html/fusion/algorithms.html | 6 +++--- .../concepts/polymorphic_function_object.html | 8 ++++---- doc/html/fusion/algorithms/iteration.html | 2 +- .../iteration/functions/accumulate.html | 14 ++++++------- .../algorithms/iteration/functions/fold.html | 14 ++++++------- .../iteration/functions/for_each.html | 14 ++++++------- .../iteration/metafunctions/accumulate.html | 12 +++++------ .../iteration/metafunctions/fold.html | 12 +++++------ .../iteration/metafunctions/for_each.html | 12 +++++------ doc/html/fusion/algorithms/query.html | 2 +- .../algorithms/query/functions/all.html | 14 ++++++------- .../algorithms/query/functions/any.html | 14 ++++++------- .../algorithms/query/functions/count.html | 14 ++++++------- .../algorithms/query/functions/count_if.html | 14 ++++++------- .../algorithms/query/functions/find.html | 14 ++++++------- .../algorithms/query/functions/find_if.html | 14 ++++++------- .../algorithms/query/functions/none.html | 14 ++++++------- .../algorithms/query/metafunctions/all.html | 12 +++++------ .../algorithms/query/metafunctions/any.html | 12 +++++------ .../algorithms/query/metafunctions/count.html | 12 +++++------ .../query/metafunctions/count_if.html | 12 +++++------ .../algorithms/query/metafunctions/find.html | 12 +++++------ .../query/metafunctions/find_if.html | 12 +++++------ .../algorithms/query/metafunctions/none.html | 12 +++++------ .../fusion/algorithms/transformation.html | 2 +- .../transformation/functions/clear.html | 14 ++++++------- .../transformation/functions/erase.html | 14 ++++++------- .../transformation/functions/erase_key.html | 14 ++++++------- .../transformation/functions/filter.html | 14 ++++++------- .../transformation/functions/filter_if.html | 14 ++++++------- .../transformation/functions/insert.html | 14 ++++++------- .../functions/insert_range.html | 14 ++++++------- .../transformation/functions/join.html | 14 ++++++------- .../transformation/functions/pop_back.html | 14 ++++++------- .../transformation/functions/pop_front.html | 14 ++++++------- .../transformation/functions/push_back.html | 14 ++++++------- .../transformation/functions/push_front.html | 14 ++++++------- .../transformation/functions/remove.html | 14 ++++++------- .../transformation/functions/remove_if.html | 14 ++++++------- .../transformation/functions/replace.html | 14 ++++++------- .../transformation/functions/replace_if.html | 14 ++++++------- .../transformation/functions/reverse.html | 14 ++++++------- .../transformation/functions/transform.html | 18 ++++++++--------- .../transformation/functions/zip.html | 14 ++++++------- .../transformation/metafunctions/clear.html | 12 +++++------ .../transformation/metafunctions/erase.html | 12 +++++------ .../metafunctions/erase_key.html | 12 +++++------ .../transformation/metafunctions/filter.html | 12 +++++------ .../metafunctions/filter_if.html | 12 +++++------ .../transformation/metafunctions/insert.html | 12 +++++------ .../metafunctions/insert_range.html | 12 +++++------ .../transformation/metafunctions/join.html | 10 +++++----- .../metafunctions/pop_back.html | 12 +++++------ .../metafunctions/pop_front.html | 12 +++++------ .../metafunctions/push_back.html | 12 +++++------ .../metafunctions/push_front.html | 12 +++++------ .../transformation/metafunctions/remove.html | 12 +++++------ .../metafunctions/remove_if.html | 12 +++++------ .../transformation/metafunctions/replace.html | 12 +++++------ .../metafunctions/replace_if.html | 12 +++++------ .../transformation/metafunctions/reverse.html | 12 +++++------ .../metafunctions/transform.html | 12 +++++------ .../transformation/metafunctions/zip.html | 10 +++++----- doc/html/fusion/extension.html | 16 +++++++-------- doc/html/fusion/iterators.html | 2 +- .../concepts/bidirectional_iterator.html | 20 +++++++++---------- .../iterators/concepts/forward_iterator.html | 18 ++++++++--------- .../concepts/random_access_iterator.html | 14 ++++++------- .../fusion/iterators/functions/advance.html | 12 +++++------ .../fusion/iterators/functions/advance_c.html | 12 +++++------ .../fusion/iterators/functions/deref.html | 12 +++++------ .../fusion/iterators/functions/distance.html | 12 +++++------ doc/html/fusion/iterators/functions/next.html | 12 +++++------ .../fusion/iterators/functions/prior.html | 12 +++++------ .../iterators/metafunctions/advance.html | 12 +++++------ .../iterators/metafunctions/advance_c.html | 12 +++++------ .../fusion/iterators/metafunctions/deref.html | 12 +++++------ .../iterators/metafunctions/distance.html | 12 +++++------ .../iterators/metafunctions/equal_to.html | 12 +++++------ .../fusion/iterators/metafunctions/next.html | 12 +++++------ .../fusion/iterators/metafunctions/prior.html | 12 +++++------ .../iterators/metafunctions/value_of.html | 12 +++++------ .../operators/operator_equality.html | 10 +++++----- .../operators/operator_inequality.html | 10 +++++----- .../operators/operator_unary_star.html | 12 +++++------ doc/html/fusion/notes.html | 16 +++++++-------- doc/html/fusion/organization.html | 10 +++++----- doc/html/fusion/preface.html | 12 +++++------ doc/html/fusion/quick_start.html | 16 +++++++-------- doc/html/fusion/sequences.html | 2 +- doc/html/fusion/sequences/adapted.html | 6 +++--- .../sequences/adapted/boost__array.html | 8 ++++---- .../sequences/adapted/mpl_sequence.html | 8 ++++---- .../fusion/sequences/adapted/std__pair.html | 8 ++++---- doc/html/fusion/sequences/concepts.html | 4 ++-- .../concepts/associative_sequence.html | 16 +++++++-------- .../concepts/bidirectional_sequence.html | 18 ++++++++--------- .../sequences/concepts/forward_sequence.html | 18 ++++++++--------- .../concepts/random_access_sequence.html | 18 ++++++++--------- doc/html/fusion/sequences/containers.html | 2 +- .../fusion/sequences/containers/cons.html | 18 ++++++++--------- .../fusion/sequences/containers/list.html | 18 ++++++++--------- doc/html/fusion/sequences/containers/map.html | 18 ++++++++--------- doc/html/fusion/sequences/containers/set.html | 18 ++++++++--------- .../fusion/sequences/containers/vector.html | 18 ++++++++--------- doc/html/fusion/sequences/conversion.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 ++++++------- .../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/sequences/generation.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 | 20 +++++++++---------- .../generation/functions/make_set.html | 20 +++++++++---------- .../generation/functions/make_vector.html | 16 +++++++-------- .../sequences/generation/functions/tiers.html | 6 +++--- .../generation/functions/vector_tie.html | 14 ++++++------- .../generation/metafunctions/list_tie.html | 14 ++++++------- .../generation/metafunctions/make_cons.html | 14 ++++++------- .../generation/metafunctions/make_list.html | 14 ++++++------- .../generation/metafunctions/make_map.html | 20 +++++++++---------- .../generation/metafunctions/make_set.html | 18 ++++++++--------- .../generation/metafunctions/make_vector.html | 14 ++++++------- .../generation/metafunctions/vector_tie.html | 14 ++++++------- doc/html/fusion/sequences/intrinsics.html | 6 +++--- .../sequences/intrinsics/functions/at.html | 14 ++++++------- .../sequences/intrinsics/functions/at_c.html | 14 ++++++------- .../intrinsics/functions/at_key.html | 14 ++++++------- .../sequences/intrinsics/functions/back.html | 14 ++++++------- .../sequences/intrinsics/functions/begin.html | 14 ++++++------- .../sequences/intrinsics/functions/empty.html | 14 ++++++------- .../sequences/intrinsics/functions/end.html | 14 ++++++------- .../sequences/intrinsics/functions/front.html | 14 ++++++------- .../intrinsics/functions/has_key.html | 14 ++++++------- .../sequences/intrinsics/functions/size.html | 14 ++++++------- .../intrinsics/metafunctions/at.html | 16 +++++++-------- .../intrinsics/metafunctions/at_c.html | 16 +++++++-------- .../intrinsics/metafunctions/at_key.html | 16 +++++++-------- .../intrinsics/metafunctions/back.html | 12 +++++------ .../intrinsics/metafunctions/begin.html | 12 +++++------ .../intrinsics/metafunctions/empty.html | 12 +++++------ .../intrinsics/metafunctions/end.html | 12 +++++------ .../intrinsics/metafunctions/front.html | 12 +++++------ .../intrinsics/metafunctions/has_key.html | 12 +++++------ .../intrinsics/metafunctions/size.html | 12 +++++------ .../intrinsics/metafunctions/value_at.html | 12 +++++------ .../intrinsics/metafunctions/value_at_c.html | 12 +++++------ .../metafunctions/value_at_key.html | 12 +++++------ .../sequences/operators/comparison.html | 2 +- .../sequences/operators/comparison/equal.html | 14 ++++++------- .../operators/comparison/greater_than.html | 12 +++++------ .../comparison/greater_than_equal.html | 12 +++++------ .../operators/comparison/less_than.html | 12 +++++------ .../operators/comparison/less_than_equal.html | 12 +++++------ .../operators/comparison/not_equal.html | 12 +++++------ doc/html/fusion/sequences/operators/i_o.html | 2 +- .../fusion/sequences/operators/i_o/in.html | 14 ++++++------- .../fusion/sequences/operators/i_o/out.html | 14 ++++++------- doc/html/fusion/sequences/views.html | 2 +- .../fusion/sequences/views/filter_view.html | 18 ++++++++--------- .../sequences/views/iterator_range.html | 18 ++++++++--------- .../fusion/sequences/views/joint_view.html | 18 ++++++++--------- .../fusion/sequences/views/reverse_view.html | 16 +++++++-------- .../fusion/sequences/views/single_view.html | 16 +++++++-------- .../sequences/views/transform_view.html | 16 +++++++-------- doc/html/fusion/sequences/views/zip_view.html | 18 ++++++++--------- doc/html/fusion/support/category_of.html | 14 ++++++------- 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 | 12 +++++------ .../fusion/tuples/class_template_tuple.html | 4 ++-- .../class_template_tuple/construction.html | 4 ++-- .../class_template_tuple/element_access.html | 4 ++-- .../relational_operators.html | 4 ++-- .../tuple_creation_functions.html | 4 ++-- .../tuple_helper_classes.html | 4 ++-- doc/html/fusion/tuples/pairs.html | 4 ++-- doc/html/index.html | 4 ++-- doc/preface.qbk | 2 +- 188 files changed, 1167 insertions(+), 1152 deletions(-) diff --git a/doc/acknowledgements.qbk b/doc/acknowledgements.qbk index ebd94d40..f0b628d4 100644 --- a/doc/acknowledgements.qbk +++ b/doc/acknowledgements.qbk @@ -1,9 +1,16 @@ [section Acknowledgements] -Special thanks to David Abrahams, Hartmut Kaiser, Aleksey Gurtovoy, Peder -Holt, Daniel Wallin, Jaakko Jarvi, Jeremiah Willcock, Dan Marsden, Eric -Niebler, Joao Abecasis. These people are instrumental in the design and -development of Fusion. +Special thanks to David Abrahams, Douglas Gregor, Hartmut Kaiser, Aleksey +Gurtovoy, Peder Holt, Daniel Wallin, Jaakko Jarvi, Jeremiah Willcock, Dan +Marsden, Eric Niebler, Joao Abecasis and Andy Little. These people are +instrumental in the design and development of Fusion. + +Special thanks to Ronald Garcia, the review manager and to all the people in the +boost community who participated in the review: Andreas Pokorny, Andreas Huber, +Jeff Flinn, David Abrahams, Pedro Lamarao, Larry Evans, Ryan Gallagher, Andy +Little, Gennadiy Rozental, Tobias Schwinger, Joao Abecasis, Eric Niebler, Oleg +Abrosimov, Gary Powell, Eric Friedman, Darren Cook, Martin Bonner and Douglas +Gregor. [endsect] diff --git a/doc/html/fusion/acknowledgements.html b/doc/html/fusion/acknowledgements.html index 11f4df57..04b602c0 100644 --- a/doc/html/fusion/acknowledgements.html +++ b/doc/html/fusion/acknowledgements.html @@ -26,10 +26,18 @@

- Special thanks to David Abrahams, Hartmut Kaiser, Aleksey Gurtovoy, Peder Holt, - Daniel Wallin, Jaakko Jarvi, Jeremiah Willcock, Dan Marsden, Eric Niebler, - Joao Abecasis. These people are instrumental in the design and development - of Fusion. + Special thanks to David Abrahams, Douglas Gregor, Hartmut Kaiser, Aleksey Gurtovoy, + Peder Holt, Daniel Wallin, Jaakko Jarvi, Jeremiah Willcock, Dan Marsden, Eric + Niebler, Joao Abecasis and Andy Little. These people are instrumental in the + design and development of Fusion. +

+

+ Special thanks to Ronald Garcia, the review manager and to all the people in + the boost community who participated in the review: Andreas Pokorny, Andreas + Huber, Jeff Flinn, David Abrahams, Pedro Lamarao, Larry Evans, Ryan Gallagher, + Andy Little, Gennadiy Rozental, Tobias Schwinger, Joao Abecasis, Eric Niebler, + Oleg Abrosimov, Gary Powell, Eric Friedman, Darren Cook, Martin Bonner and + Douglas Gregor.

diff --git a/doc/html/fusion/algorithms.html b/doc/html/fusion/algorithms.html index 8f461e33..48d12495 100644 --- a/doc/html/fusion/algorithms.html +++ b/doc/html/fusion/algorithms.html @@ -33,7 +33,7 @@
Transformation

- + Lazy Evaluation

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

- + Sequence Extension

@@ -79,7 +79,7 @@ functions to convert back to the original sequence type.

- + Header

diff --git a/doc/html/fusion/algorithms/concepts/polymorphic_function_object.html b/doc/html/fusion/algorithms/concepts/polymorphic_function_object.html
index 2c3dee28..ff04ffe1 100644
--- a/doc/html/fusion/algorithms/concepts/polymorphic_function_object.html
+++ b/doc/html/fusion/algorithms/concepts/polymorphic_function_object.html
@@ -29,7 +29,7 @@
         Function Object">Polymorphic
         Function Object
 
- + Description

@@ -61,7 +61,7 @@

- + Refinement of
@@ -69,13 +69,13 @@ MPL Metafunction Class

- + Expression requirements

- +

diff --git a/doc/html/fusion/algorithms/iteration.html b/doc/html/fusion/algorithms/iteration.html index e971e124..d9e63faa 100644 --- a/doc/html/fusion/algorithms/iteration.html +++ b/doc/html/fusion/algorithms/iteration.html @@ -35,7 +35,7 @@ a sequence repeatedly applying an operation to its elements.

- + Header

diff --git a/doc/html/fusion/algorithms/iteration/functions/accumulate.html b/doc/html/fusion/algorithms/iteration/functions/accumulate.html
index f04005b7..8dc3ac70 100644
--- a/doc/html/fusion/algorithms/iteration/functions/accumulate.html
+++ b/doc/html/fusion/algorithms/iteration/functions/accumulate.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -37,7 +37,7 @@ fold.

- + Synopsis
@@ -51,7 +51,7 @@
 

- + Parameters

@@ -97,7 +97,7 @@
- + Expression Semantics
@@ -112,21 +112,21 @@ where e1 ...eN are the elements of seq.

- + Complexity

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

- + Header
 #include <boost/fusion/algorithm/iteration/accumulate.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/iteration/functions/fold.html b/doc/html/fusion/algorithms/iteration/functions/fold.html
index 43ac4e62..8745f29e 100644
--- a/doc/html/fusion/algorithms/iteration/functions/fold.html
+++ b/doc/html/fusion/algorithms/iteration/functions/fold.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -36,7 +36,7 @@ to each element of a sequence and the previous state.

- + Synopsis
@@ -50,7 +50,7 @@
 

- + Parameters

@@ -96,7 +96,7 @@
- + Expression Semantics
@@ -111,21 +111,21 @@ where e1 ...eN are the elements of seq.

- + Complexity

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

- + Header
 #include <boost/fusion/algorithm/iteration/fold.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/iteration/functions/for_each.html b/doc/html/fusion/algorithms/iteration/functions/for_each.html
index c7ad7ceb..a331cab1 100644
--- a/doc/html/fusion/algorithms/iteration/functions/for_each.html
+++ b/doc/html/fusion/algorithms/iteration/functions/for_each.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

- + Synopsis
@@ -46,7 +46,7 @@
 

- + Parameters

@@ -83,7 +83,7 @@
- + Expression Semantics
@@ -98,21 +98,21 @@ in seq.

- + Complexity

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

- + Header
 #include <boost/fusion/algorithm/iteration/for_each.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html b/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html
index ca944b76..2af4f336 100644
--- a/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html
+++ b/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of accumulate.

- + Synopsis
@@ -48,7 +48,7 @@
 

- + Parameters

@@ -94,7 +94,7 @@
- + Expression Semantics
@@ -114,14 +114,14 @@ Function Object of type F.

- + Complexity

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

- + Header
diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/fold.html b/doc/html/fusion/algorithms/iteration/metafunctions/fold.html
index b6fcd011..372027fe 100644
--- a/doc/html/fusion/algorithms/iteration/metafunctions/fold.html
+++ b/doc/html/fusion/algorithms/iteration/metafunctions/fold.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of fold.

- + Synopsis
@@ -48,7 +48,7 @@
 

- + Parameters

@@ -94,7 +94,7 @@
- + Expression Semantics
@@ -114,14 +114,14 @@ Function Object of type F.

- + Complexity

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

- + Header
diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html b/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html
index 3456bd9e..60eb8841 100644
--- a/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html
+++ b/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html
@@ -30,11 +30,11 @@
             return type of for_each is always void.
           

- + Description
- + Synopsis
@@ -49,7 +49,7 @@
 

- + Parameters

@@ -83,7 +83,7 @@
- + Expression Semantics
@@ -101,14 +101,14 @@ return type is always void.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/query.html b/doc/html/fusion/algorithms/query.html
index d9ed8b46..6d5e1810 100644
--- a/doc/html/fusion/algorithms/query.html
+++ b/doc/html/fusion/algorithms/query.html
@@ -33,7 +33,7 @@
         The query algorithms provide support for searching and analyzing sequences.
       

- + Header

diff --git a/doc/html/fusion/algorithms/query/functions/all.html b/doc/html/fusion/algorithms/query/functions/all.html
index b6d8c3a6..092556ca 100644
--- a/doc/html/fusion/algorithms/query/functions/all.html
+++ b/doc/html/fusion/algorithms/query/functions/all.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Synopsis
@@ -50,7 +50,7 @@
 

- + Parameters

@@ -87,7 +87,7 @@
- + Expression Semantics
@@ -104,21 +104,21 @@ element e in seq.

- + Complexity

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

- + Header
 #include <boost/fusion/algorithm/query/all.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/query/functions/any.html b/doc/html/fusion/algorithms/query/functions/any.html
index bee9a2a6..7dbc7475 100644
--- a/doc/html/fusion/algorithms/query/functions/any.html
+++ b/doc/html/fusion/algorithms/query/functions/any.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Synopsis
@@ -50,7 +50,7 @@
 

- + Parameters

@@ -87,7 +87,7 @@
- + Expression semantics
@@ -104,21 +104,21 @@ element e in seq.

- + Complexity

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

- + Header
 #include <boost/fusion/algorithm/query/any.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/query/functions/count.html b/doc/html/fusion/algorithms/query/functions/count.html
index 1b9740ff..c24940ec 100644
--- a/doc/html/fusion/algorithms/query/functions/count.html
+++ b/doc/html/fusion/algorithms/query/functions/count.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

- + Synopsis
@@ -46,7 +46,7 @@
 

- + Parameters

@@ -84,7 +84,7 @@
- + Expression Semantics
@@ -100,21 +100,21 @@ t in seq.

- + Complexity

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

- + Header
 #include <boost/fusion/algorithm/query/count.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/query/functions/count_if.html b/doc/html/fusion/algorithms/query/functions/count_if.html
index 5805c26a..db8ab3dd 100644
--- a/doc/html/fusion/algorithms/query/functions/count_if.html
+++ b/doc/html/fusion/algorithms/query/functions/count_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

- + Parameters

@@ -84,7 +84,7 @@
- + Expression Semantics
@@ -99,21 +99,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/query/functions/find.html b/doc/html/fusion/algorithms/query/functions/find.html
index 6035ea75..d99fa974 100644
--- a/doc/html/fusion/algorithms/query/functions/find.html
+++ b/doc/html/fusion/algorithms/query/functions/find.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

- + Synopsis
@@ -51,7 +51,7 @@
 

- + Parameters

@@ -85,7 +85,7 @@
- + Expression Semantics
@@ -103,21 +103,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/query/functions/find_if.html b/doc/html/fusion/algorithms/query/functions/find_if.html
index 2b58c0dd..0e2b6ec3 100644
--- a/doc/html/fusion/algorithms/query/functions/find_if.html
+++ b/doc/html/fusion/algorithms/query/functions/find_if.html
@@ -30,11 +30,11 @@
             MPL Lambda Expression evaluates to boost::mpl::true_.
           

- + Description
- + Synopsis
@@ -52,7 +52,7 @@
 

- + Parameters

@@ -86,7 +86,7 @@
- + Expression Semantics
@@ -105,21 +105,21 @@ 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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/query/functions/none.html b/doc/html/fusion/algorithms/query/functions/none.html
index c77b7964..4b00f79d 100644
--- a/doc/html/fusion/algorithms/query/functions/none.html
+++ b/doc/html/fusion/algorithms/query/functions/none.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Synopsis
@@ -50,7 +50,7 @@
 

- + Parameters

@@ -87,7 +87,7 @@
- + Expression Semantics
@@ -104,21 +104,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/query/metafunctions/all.html b/doc/html/fusion/algorithms/query/metafunctions/all.html
index 67f64d97..f2503259 100644
--- a/doc/html/fusion/algorithms/query/metafunctions/all.html
+++ b/doc/html/fusion/algorithms/query/metafunctions/all.html
@@ -26,14 +26,14 @@
 
 
- + Description

A metafunction returning the result type of all.

- + Synopsis
@@ -48,7 +48,7 @@
 

- + Parameters

@@ -85,7 +85,7 @@
- + Expression Semantics
@@ -105,14 +105,14 @@ The return type is always bool.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/query/metafunctions/any.html b/doc/html/fusion/algorithms/query/metafunctions/any.html
index e340607d..27182e2e 100644
--- a/doc/html/fusion/algorithms/query/metafunctions/any.html
+++ b/doc/html/fusion/algorithms/query/metafunctions/any.html
@@ -26,14 +26,14 @@
 
 
- + Description

A metafunction returning the result type of any.

- + Synopsis
@@ -48,7 +48,7 @@
 

- + Parameters

@@ -85,7 +85,7 @@
- + Expression Semantics
@@ -105,14 +105,14 @@ The return type is always bool.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/query/metafunctions/count.html b/doc/html/fusion/algorithms/query/metafunctions/count.html
index 553c6e75..2d8b8feb 100644
--- a/doc/html/fusion/algorithms/query/metafunctions/count.html
+++ b/doc/html/fusion/algorithms/query/metafunctions/count.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Synopsis
@@ -49,7 +49,7 @@
 

- + Parameters

@@ -84,7 +84,7 @@
- + Expression Semantics
@@ -100,14 +100,14 @@ int.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/query/metafunctions/count_if.html b/doc/html/fusion/algorithms/query/metafunctions/count_if.html
index dbc3b485..500aba00 100644
--- a/doc/html/fusion/algorithms/query/metafunctions/count_if.html
+++ b/doc/html/fusion/algorithms/query/metafunctions/count_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Synopsis
@@ -49,7 +49,7 @@
 

- + Parameters

@@ -83,7 +83,7 @@
- + Expression Semantics
@@ -99,14 +99,14 @@ always int.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/query/metafunctions/find.html b/doc/html/fusion/algorithms/query/metafunctions/find.html
index 4e580eac..561998ed 100644
--- a/doc/html/fusion/algorithms/query/metafunctions/find.html
+++ b/doc/html/fusion/algorithms/query/metafunctions/find.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Synopsis
@@ -49,7 +49,7 @@
 

- + Parameters

@@ -83,7 +83,7 @@
- + Expression Semantics
@@ -100,14 +100,14 @@ in Sequence, or result_of::end<Sequence>::type if there is no such element.

- + Complexity

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

- + Header
diff --git a/doc/html/fusion/algorithms/query/metafunctions/find_if.html b/doc/html/fusion/algorithms/query/metafunctions/find_if.html
index 43bea426..e00d34bb 100644
--- a/doc/html/fusion/algorithms/query/metafunctions/find_if.html
+++ b/doc/html/fusion/algorithms/query/metafunctions/find_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Synopsis
@@ -49,7 +49,7 @@
 

- + Parameters

@@ -83,7 +83,7 @@
- + Expression Semantics
@@ -101,14 +101,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
diff --git a/doc/html/fusion/algorithms/query/metafunctions/none.html b/doc/html/fusion/algorithms/query/metafunctions/none.html
index 24bf4693..24a27fa1 100644
--- a/doc/html/fusion/algorithms/query/metafunctions/none.html
+++ b/doc/html/fusion/algorithms/query/metafunctions/none.html
@@ -26,14 +26,14 @@
 
 
- + Description

A metafunction returning the result type of none.

- + Synopsis
@@ -48,7 +48,7 @@
 

- + Parameters

@@ -85,7 +85,7 @@
- + Expression Semantics
@@ -105,14 +105,14 @@ The return type is always bool.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation.html b/doc/html/fusion/algorithms/transformation.html
index 2df3fa7c..2cc21705 100644
--- a/doc/html/fusion/algorithms/transformation.html
+++ b/doc/html/fusion/algorithms/transformation.html
@@ -46,7 +46,7 @@
         

- + Header

diff --git a/doc/html/fusion/algorithms/transformation/functions/clear.html b/doc/html/fusion/algorithms/transformation/functions/clear.html
index 72c3dfb2..eddbf20f 100644
--- a/doc/html/fusion/algorithms/transformation/functions/clear.html
+++ b/doc/html/fusion/algorithms/transformation/functions/clear.html
@@ -26,14 +26,14 @@
 
 
- + Description

clear returns an empty sequence.

- + Synposis
@@ -44,7 +44,7 @@
 

- + Parameters

@@ -70,7 +70,7 @@
- + Expression Semantics
@@ -87,21 +87,21 @@ with no elements.

- + Complexity

Constant.

- + Header
 #include <boost/fusion/algorithm/transformation/clear.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/erase.html b/doc/html/fusion/algorithms/transformation/functions/erase.html
index 9bb2bcd6..f03939ac 100644
--- a/doc/html/fusion/algorithms/transformation/functions/erase.html
+++ b/doc/html/fusion/algorithms/transformation/functions/erase.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Synposis
@@ -55,7 +55,7 @@
 

- + Parameters

@@ -104,7 +104,7 @@
- + Expression Semantics
@@ -135,21 +135,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/erase_key.html b/doc/html/fusion/algorithms/transformation/functions/erase_key.html
index dd349716..58738f4c 100644
--- a/doc/html/fusion/algorithms/transformation/functions/erase_key.html
+++ b/doc/html/fusion/algorithms/transformation/functions/erase_key.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -39,7 +39,7 @@ with a given key.

- + Synposis
@@ -51,7 +51,7 @@
 

- + Parameters

@@ -85,7 +85,7 @@
- + Expression Semantics
@@ -103,21 +103,21 @@ except those with key Key.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/erase_key.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/filter.html b/doc/html/fusion/algorithms/transformation/functions/filter.html
index 7c5d11ec..a2e9d2b3 100644
--- a/doc/html/fusion/algorithms/transformation/functions/filter.html
+++ b/doc/html/fusion/algorithms/transformation/functions/filter.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Synopsis
@@ -46,7 +46,7 @@
 

- + Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -99,21 +99,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/filter_if.html b/doc/html/fusion/algorithms/transformation/functions/filter_if.html
index c39996d4..c0bd73ed 100644
--- a/doc/html/fusion/algorithms/transformation/functions/filter_if.html
+++ b/doc/html/fusion/algorithms/transformation/functions/filter_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

- + Parameters

@@ -82,7 +82,7 @@
- + Expression Semantics
@@ -102,21 +102,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/insert.html b/doc/html/fusion/algorithms/transformation/functions/insert.html
index b86ff1f3..4c5ca95c 100644
--- a/doc/html/fusion/algorithms/transformation/functions/insert.html
+++ b/doc/html/fusion/algorithms/transformation/functions/insert.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

- + Parameters

@@ -90,7 +90,7 @@
- + Expression Semantics
@@ -110,21 +110,21 @@ pos.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/insert.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/insert_range.html b/doc/html/fusion/algorithms/transformation/functions/insert_range.html
index 9cb34546..ff34d0ba 100644
--- a/doc/html/fusion/algorithms/transformation/functions/insert_range.html
+++ b/doc/html/fusion/algorithms/transformation/functions/insert_range.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ iterator.

- + Synposis
@@ -48,7 +48,7 @@
 

- + Parameters

@@ -94,7 +94,7 @@
- + Expression Semantics
@@ -114,21 +114,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/join.html b/doc/html/fusion/algorithms/transformation/functions/join.html
index 1573c20e..3f6bd81b 100644
--- a/doc/html/fusion/algorithms/transformation/functions/join.html
+++ b/doc/html/fusion/algorithms/transformation/functions/join.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Synopsis
@@ -45,7 +45,7 @@
 

- + Parameters

@@ -82,7 +82,7 @@
- + Expression Semantics
@@ -101,21 +101,21 @@ The order of th elements is preserved.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/join.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/pop_back.html b/doc/html/fusion/algorithms/transformation/functions/pop_back.html
index caa44652..3867dd26 100644
--- a/doc/html/fusion/algorithms/transformation/functions/pop_back.html
+++ b/doc/html/fusion/algorithms/transformation/functions/pop_back.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

- + Synopsis
@@ -44,7 +44,7 @@
 

- + Parameters

@@ -70,7 +70,7 @@
- + Expression Semantics
@@ -89,21 +89,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/pop_front.html b/doc/html/fusion/algorithms/transformation/functions/pop_front.html
index f9172e1e..9d88d7e8 100644
--- a/doc/html/fusion/algorithms/transformation/functions/pop_front.html
+++ b/doc/html/fusion/algorithms/transformation/functions/pop_front.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

- + Synopsis
@@ -44,7 +44,7 @@
 

- + Parameters

@@ -70,7 +70,7 @@
- + Expression Semantics
@@ -89,21 +89,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/push_back.html b/doc/html/fusion/algorithms/transformation/functions/push_back.html
index 070431ee..bd226d9c 100644
--- a/doc/html/fusion/algorithms/transformation/functions/push_back.html
+++ b/doc/html/fusion/algorithms/transformation/functions/push_back.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

- + Synopsis
@@ -46,7 +46,7 @@
 

- + Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -99,21 +99,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/push_front.html b/doc/html/fusion/algorithms/transformation/functions/push_front.html
index b45d816f..9114a63a 100644
--- a/doc/html/fusion/algorithms/transformation/functions/push_front.html
+++ b/doc/html/fusion/algorithms/transformation/functions/push_front.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

- + Synopsis
@@ -46,7 +46,7 @@
 

- + Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -100,21 +100,21 @@ seq.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/push_front.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/remove.html b/doc/html/fusion/algorithms/transformation/functions/remove.html
index 8b4027fe..28694a22 100644
--- a/doc/html/fusion/algorithms/transformation/functions/remove.html
+++ b/doc/html/fusion/algorithms/transformation/functions/remove.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Synopsis
@@ -46,7 +46,7 @@
 

- + Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -99,21 +99,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/remove_if.html b/doc/html/fusion/algorithms/transformation/functions/remove_if.html
index e18b9580..3b8f6fff 100644
--- a/doc/html/fusion/algorithms/transformation/functions/remove_if.html
+++ b/doc/html/fusion/algorithms/transformation/functions/remove_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Synopsis
@@ -46,7 +46,7 @@
 

- + Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -99,21 +99,21 @@ Pred evaluates to boost::mpl::true_. Equivalent to filter<boost::mpl::not_<Pred> >(seq).

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/remove_if.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/replace.html b/doc/html/fusion/algorithms/transformation/functions/replace.html
index 30a80ed0..8b8b248f 100644
--- a/doc/html/fusion/algorithms/transformation/functions/replace.html
+++ b/doc/html/fusion/algorithms/transformation/functions/replace.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

- + Parameters

@@ -92,7 +92,7 @@
- + Expression Semantics
@@ -111,21 +111,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/replace_if.html b/doc/html/fusion/algorithms/transformation/functions/replace_if.html
index 9840ea19..625dfba6 100644
--- a/doc/html/fusion/algorithms/transformation/functions/replace_if.html
+++ b/doc/html/fusion/algorithms/transformation/functions/replace_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Synopsis
@@ -48,7 +48,7 @@
 

- + Parameters

@@ -92,7 +92,7 @@
- + Expression Semantics
@@ -112,21 +112,21 @@ evaluates to true.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/replace_if.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/reverse.html b/doc/html/fusion/algorithms/transformation/functions/reverse.html
index 0544fbbd..2ba4cd05 100644
--- a/doc/html/fusion/algorithms/transformation/functions/reverse.html
+++ b/doc/html/fusion/algorithms/transformation/functions/reverse.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

- + Synposis
@@ -44,7 +44,7 @@
 

- + Parameters

@@ -70,7 +70,7 @@
- + Expression Semantics
@@ -88,21 +88,21 @@ in reverse order.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/reverse.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/transform.html b/doc/html/fusion/algorithms/transformation/functions/transform.html
index d7d71d7b..b67c4fbd 100644
--- a/doc/html/fusion/algorithms/transformation/functions/transform.html
+++ b/doc/html/fusion/algorithms/transformation/functions/transform.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -39,7 +39,7 @@ to each element of seq.

- + Unary version synopsis
@@ -53,7 +53,7 @@

- + Parameters

@@ -92,7 +92,7 @@
- + Expression Semantics
@@ -110,7 +110,7 @@ within seq.

- + Binary version synopsis
@@ -125,7 +125,7 @@

- + Parameters

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

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/transform.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/zip.html b/doc/html/fusion/algorithms/transformation/functions/zip.html
index 1a13b3de..e3d2840e 100644
--- a/doc/html/fusion/algorithms/transformation/functions/zip.html
+++ b/doc/html/fusion/algorithms/transformation/functions/zip.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Synopsis
@@ -49,7 +49,7 @@
 

- + Parameters

@@ -77,7 +77,7 @@
- + Expression Semantics
@@ -97,21 +97,21 @@ ('a', 'b', 'c') would return ((1, 'a'),(2, 'b'),(3, 'c'))

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/zip.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/clear.html b/doc/html/fusion/algorithms/transformation/metafunctions/clear.html
index 780610ec..b77eadf6 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/clear.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/clear.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ type.

- + Synopsis
@@ -48,7 +48,7 @@
 

- + Parameters

@@ -71,7 +71,7 @@
- + Expression Semantics
@@ -87,14 +87,14 @@ Semantics: Returns an empty sequence.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/erase.html b/doc/html/fusion/algorithms/transformation/metafunctions/erase.html
index 403a7d9e..c78c234f 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/erase.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/erase.html
@@ -30,11 +30,11 @@
             and range delimiting iterator types.
           

- + Description
- + Synopsis
@@ -49,7 +49,7 @@
 

- + Parameters

@@ -95,7 +95,7 @@
- + Expression Semantics
@@ -125,14 +125,14 @@ and It2 removed.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html b/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html
index f8e41c56..28c24038 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Synopsis
@@ -49,7 +49,7 @@
 

- + Parameters

@@ -83,7 +83,7 @@
- + Expression Semantics
@@ -101,14 +101,14 @@ except those with key Key.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/filter.html b/doc/html/fusion/algorithms/transformation/metafunctions/filter.html
index a921959a..9f2eb551 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/filter.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/filter.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Synopsis
@@ -49,7 +49,7 @@
 

- + Parameter

@@ -83,7 +83,7 @@
- + Expression Semantics
@@ -102,14 +102,14 @@ to result_of::filter_if<Sequence, boost::is_same<mpl::_, T> >::type.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html
index 1caefb3c..dd743c7c 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ and unary MPL Lambda Expression predicate type.

- + Synopsis
@@ -49,7 +49,7 @@
 

- + Parameter

@@ -83,7 +83,7 @@
- + Expression Semantics
@@ -102,14 +102,14 @@ to boost::mpl::true_.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/insert.html b/doc/html/fusion/algorithms/transformation/metafunctions/insert.html
index fca46001..c147fa99 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/insert.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/insert.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Synopsis
@@ -50,7 +50,7 @@
 

- + Parameters

@@ -93,7 +93,7 @@
- + Expression Semantics
@@ -112,14 +112,14 @@ in Sequence.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html b/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html
index 0337ea83..422c2e7c 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Synopsis
@@ -50,7 +50,7 @@
 

- + Parameters

@@ -96,7 +96,7 @@
- + Expression Semantics
@@ -115,14 +115,14 @@ into Sequence.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/join.html b/doc/html/fusion/algorithms/transformation/metafunctions/join.html
index b031f52c..564f471b 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/join.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/join.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

- + Synopsis
@@ -47,7 +47,7 @@
 };
 
- + Expression Semantics
@@ -66,14 +66,14 @@ The order of the elements in the 2 sequences is preserved.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html b/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html
index b869667c..b5678cba 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ type.

- + Synopsis
@@ -48,7 +48,7 @@
 

- + Parameters

@@ -74,7 +74,7 @@
- + Expression Semantics
@@ -92,14 +92,14 @@ except the last element.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html b/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html
index 1aeacfea..eaab3904 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ type.

- + Synopsis
@@ -48,7 +48,7 @@
 

- + Parameters

@@ -74,7 +74,7 @@
- + Expression Semantics
@@ -92,14 +92,14 @@ except the first element.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html b/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html
index 3f78905b..d1156993 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Synopsis
@@ -49,7 +49,7 @@
 

- + Parameters

@@ -83,7 +83,7 @@
- + Expression Semantics
@@ -102,14 +102,14 @@ added to the end.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html b/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html
index 5f8045df..6058be6d 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Synopsis
@@ -49,7 +49,7 @@
 

- + Parameters

@@ -83,7 +83,7 @@
- + Expression Semantics
@@ -102,14 +102,14 @@ added to the beginning.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/remove.html b/doc/html/fusion/algorithms/transformation/metafunctions/remove.html
index bbd234f2..008436a2 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/remove.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/remove.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Synopsis
@@ -49,7 +49,7 @@
 

- + Parameters

@@ -83,7 +83,7 @@
- + Expression Semantics
@@ -102,14 +102,14 @@ to result_of::replace_if<Sequence, boost::is_same<mpl::_, T> >::type.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html
index f673602c..76ea41bb 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ and unary MPL Lambda Expression predicate types.

- + Synopsis
@@ -49,7 +49,7 @@
 

- + Parameters

@@ -85,7 +85,7 @@
- + Expression Semantics
@@ -104,14 +104,14 @@ to boost::mpl::false_.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/replace.html b/doc/html/fusion/algorithms/transformation/metafunctions/replace.html
index ca5637d6..5c52575c 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/replace.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/replace.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Synopsis
@@ -49,7 +49,7 @@
 

- + Parameters

@@ -83,7 +83,7 @@
- + Expression Semantics
@@ -100,14 +100,14 @@ replace.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html
index ae353135..4bea6695 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Synopsis
@@ -51,7 +51,7 @@
 

- + Parameters

@@ -94,7 +94,7 @@
- + Expression Semantics
@@ -111,14 +111,14 @@ replace_if.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html b/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html
index 600b47b3..5816225f 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ type.

- + Synopsis
@@ -48,7 +48,7 @@
 

- + Parameters

@@ -74,7 +74,7 @@
- + Expression Semantics
@@ -91,14 +91,14 @@ elements in the reverse order to Sequence.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/transform.html b/doc/html/fusion/algorithms/transformation/metafunctions/transform.html
index d56a0602..2f78c8ab 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/transform.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/transform.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -36,7 +36,7 @@ Function Object types.

- + Synopsis
@@ -51,7 +51,7 @@
 

- + Parameters

@@ -87,7 +87,7 @@
- + Expression Semantics
@@ -104,14 +104,14 @@ F::apply<E>::type for each element type E in Sequence.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/zip.html b/doc/html/fusion/algorithms/transformation/metafunctions/zip.html
index 64611290..22cf56bf 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/zip.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/zip.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Synopsis
@@ -50,7 +50,7 @@
 };
 
- + Expression Semantics
@@ -69,14 +69,14 @@ return ((1, 'a'),(2, 'b'),(3, 'c'))

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/extension.html b/doc/html/fusion/extension.html
index be3d339c..da99aca6 100644
--- a/doc/html/fusion/extension.html
+++ b/doc/html/fusion/extension.html
@@ -48,7 +48,7 @@
       
 
 

- + Our example

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

- + Enabling Tag Dispatching

@@ -122,7 +122,7 @@ #include <boost/fusion/sequence/adapted/mpl/tag_of.hpp>

- + Designing a suitable iterator

@@ -199,7 +199,7 @@ clearer as we add features to our implementation.

- + A first couple of instructive features

@@ -349,7 +349,7 @@

- + Implementing the remaining iterator functionality

@@ -404,7 +404,7 @@ are provided in the example code.

- + Implementing the intrinsic functions of the sequence

@@ -463,7 +463,7 @@ value_at_impl and at_impl.

- + Enabling our type as an associative container

@@ -529,7 +529,7 @@ of is_associative_impl.

- + Summary

diff --git a/doc/html/fusion/iterators.html b/doc/html/fusion/iterators.html index 2678a48b..974e3cfb 100644 --- a/doc/html/fusion/iterators.html +++ b/doc/html/fusion/iterators.html @@ -40,7 +40,7 @@ Sequence.

- + Header

diff --git a/doc/html/fusion/iterators/concepts/bidirectional_iterator.html b/doc/html/fusion/iterators/concepts/bidirectional_iterator.html
index 7545c3a0..46c14d49 100644
--- a/doc/html/fusion/iterators/concepts/bidirectional_iterator.html
+++ b/doc/html/fusion/iterators/concepts/bidirectional_iterator.html
@@ -31,7 +31,7 @@
         Iterator">Bidirectional
         Iterator
 
- + Description

@@ -61,7 +61,7 @@

- + Refinement of
@@ -70,7 +70,7 @@ Iterator">Forward Iterator

- + Expression requirements
@@ -81,7 +81,7 @@

- +

@@ -128,13 +128,13 @@
- + Meta Expressions

- +

@@ -153,7 +153,7 @@
- + Expression Semantics
@@ -165,7 +165,7 @@

- +

@@ -185,7 +185,7 @@
- + Invariants

@@ -202,7 +202,7 @@

- + Models
    diff --git a/doc/html/fusion/iterators/concepts/forward_iterator.html b/doc/html/fusion/iterators/concepts/forward_iterator.html index 5a37ee11..39366e48 100644 --- a/doc/html/fusion/iterators/concepts/forward_iterator.html +++ b/doc/html/fusion/iterators/concepts/forward_iterator.html @@ -30,7 +30,7 @@ Iterator">Forward Iterator
- + Description

@@ -63,7 +63,7 @@

- + Expression requirements
@@ -73,7 +73,7 @@

- +

@@ -137,13 +137,13 @@
- + Meta Expressions

- +

@@ -191,13 +191,13 @@
- + Expression Semantics

- +

@@ -260,7 +260,7 @@
- + Invariants

@@ -283,7 +283,7 @@

- + Models
    diff --git a/doc/html/fusion/iterators/concepts/random_access_iterator.html b/doc/html/fusion/iterators/concepts/random_access_iterator.html index a348d272..1668bfe9 100644 --- a/doc/html/fusion/iterators/concepts/random_access_iterator.html +++ b/doc/html/fusion/iterators/concepts/random_access_iterator.html @@ -30,7 +30,7 @@ Access Iterator">Random Access Iterator
- + Description

@@ -63,7 +63,7 @@

- + Refinement of
@@ -73,7 +73,7 @@ Iterator

- + Expression requirements
@@ -84,7 +84,7 @@

- +

@@ -131,13 +131,13 @@
- + Meta Expressions

- +

@@ -168,7 +168,7 @@
- + Models
    diff --git a/doc/html/fusion/iterators/functions/advance.html b/doc/html/fusion/iterators/functions/advance.html index e8af4632..fbe9a883 100644 --- a/doc/html/fusion/iterators/functions/advance.html +++ b/doc/html/fusion/iterators/functions/advance.html @@ -26,14 +26,14 @@
    - + Description

    Moves an iterator by a specified distance.

    - + Synopsis
    @@ -45,7 +45,7 @@
     

    - + Parameters

    @@ -79,7 +79,7 @@
    - + Expression Semantics
    @@ -100,14 +100,14 @@ may be negative.

    - + Header
     #include <boost/fusion/iterator/advance.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/functions/advance_c.html b/doc/html/fusion/iterators/functions/advance_c.html
    index ba10b387..d1d73ff4 100644
    --- a/doc/html/fusion/iterators/functions/advance_c.html
    +++ b/doc/html/fusion/iterators/functions/advance_c.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Moves an iterator by a specified distance.

    - + Synopsis
    @@ -45,7 +45,7 @@
     

    - + Parameters

    @@ -79,7 +79,7 @@
    - + Expression Semantics
    @@ -100,14 +100,14 @@ may be negative.

    - + Header
     #include <boost/fusion/iterator/advance.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/functions/deref.html b/doc/html/fusion/iterators/functions/deref.html
    index 122f836f..06e91a42 100644
    --- a/doc/html/fusion/iterators/functions/deref.html
    +++ b/doc/html/fusion/iterators/functions/deref.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Deferences an iterator.

    - + Synopsis
    @@ -44,7 +44,7 @@
     

    - + Parameters

    @@ -70,7 +70,7 @@
    - + Expression Semantics
    @@ -85,14 +85,14 @@ i.

    - + Header
     #include <boost/fusion/iterator/deref.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/functions/distance.html b/doc/html/fusion/iterators/functions/distance.html
    index 5c85af91..952b8c58 100644
    --- a/doc/html/fusion/iterators/functions/distance.html
    +++ b/doc/html/fusion/iterators/functions/distance.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the distance between 2 iterators.

    - + Synopsis
    @@ -45,7 +45,7 @@
     

    - + Parameters

    @@ -72,7 +72,7 @@
    - + Expression Semantics
    @@ -87,14 +87,14 @@ iterators i and j.

    - + Header
     #include <boost/fusion/iterator/distance.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/functions/next.html b/doc/html/fusion/iterators/functions/next.html
    index d13a55fa..04f0b5ec 100644
    --- a/doc/html/fusion/iterators/functions/next.html
    +++ b/doc/html/fusion/iterators/functions/next.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Moves an iterator 1 position forwards.

    - + Synopsis
    @@ -44,7 +44,7 @@
     

    - + Parameters

    @@ -70,7 +70,7 @@
    - + Expression Semantics
    @@ -86,14 +86,14 @@ next element after i.

    - + Header
     #include <boost/fusion/iterator/next.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/functions/prior.html b/doc/html/fusion/iterators/functions/prior.html
    index 5404fe5c..29effb6f 100644
    --- a/doc/html/fusion/iterators/functions/prior.html
    +++ b/doc/html/fusion/iterators/functions/prior.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Moves an iterator 1 position backwards.

    - + Synopsis
    @@ -44,7 +44,7 @@
     

    - + Parameters

    @@ -70,7 +70,7 @@
    - + Expression Semantics
    @@ -86,14 +86,14 @@ element prior to i.

    - + Header
     #include <boost/fusion/iterator/prior.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/advance.html b/doc/html/fusion/iterators/metafunctions/advance.html
    index 20ac0866..6e205f63 100644
    --- a/doc/html/fusion/iterators/metafunctions/advance.html
    +++ b/doc/html/fusion/iterators/metafunctions/advance.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Moves an iterator a specified distance.

    - + Synopsis
    @@ -48,7 +48,7 @@
     

    - + Parameters

    @@ -82,7 +82,7 @@
    - + Expression Semantics
    @@ -102,14 +102,14 @@ may be negative.

    - + Header
     #include <boost/fusion/iterator/advance.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/advance_c.html b/doc/html/fusion/iterators/metafunctions/advance_c.html
    index 322888b2..aba14bc1 100644
    --- a/doc/html/fusion/iterators/metafunctions/advance_c.html
    +++ b/doc/html/fusion/iterators/metafunctions/advance_c.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Moves an iterator by a specified distance.

    - + Synopsis
    @@ -48,7 +48,7 @@
     

    - + Parameters

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

    - + Header
     #include <boost/fusion/iterator/advance.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/deref.html b/doc/html/fusion/iterators/metafunctions/deref.html
    index f25478d6..0fe65db6 100644
    --- a/doc/html/fusion/iterators/metafunctions/deref.html
    +++ b/doc/html/fusion/iterators/metafunctions/deref.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

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

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

    - + Parameters

    @@ -73,7 +73,7 @@
    - + Expression Semantics
    @@ -88,14 +88,14 @@ an iterator of type I.

    - + Header
     #include <boost/fusion/iterator/deref.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/distance.html b/doc/html/fusion/iterators/metafunctions/distance.html
    index 33035d44..3c4de8c6 100644
    --- a/doc/html/fusion/iterators/metafunctions/distance.html
    +++ b/doc/html/fusion/iterators/metafunctions/distance.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the distance between two iterators.

    - + Synopsis
    @@ -48,7 +48,7 @@
     

    - + Parameters

    @@ -75,7 +75,7 @@
    - + Expression Semantics
    @@ -91,14 +91,14 @@ J.

    - + Header
     #include <boost/fusion/iterator/distance.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/equal_to.html b/doc/html/fusion/iterators/metafunctions/equal_to.html
    index e7e34a05..188de448 100644
    --- a/doc/html/fusion/iterators/metafunctions/equal_to.html
    +++ b/doc/html/fusion/iterators/metafunctions/equal_to.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

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

    - + Synopsis
    @@ -49,7 +49,7 @@
     

    - + Parameters

    @@ -74,7 +74,7 @@
    - + Expression Semantics
    @@ -90,14 +90,14 @@ Returns boost::mpl::false_ otherwise.

    - + Header
     #include <boost/fusion/iterator/equal_to.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/next.html b/doc/html/fusion/iterators/metafunctions/next.html
    index 9d0aa196..bfff4e6b 100644
    --- a/doc/html/fusion/iterators/metafunctions/next.html
    +++ b/doc/html/fusion/iterators/metafunctions/next.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the type of the next iterator in a sequence.

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

    - + Parameters

    @@ -73,7 +73,7 @@
    - + Expression Semantics
    @@ -89,14 +89,14 @@ next element in the sequence after I.

    - + Header
     #include <boost/fusion/iterator/next.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/prior.html b/doc/html/fusion/iterators/metafunctions/prior.html
    index 577864f9..0866f132 100644
    --- a/doc/html/fusion/iterators/metafunctions/prior.html
    +++ b/doc/html/fusion/iterators/metafunctions/prior.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the type of the previous iterator in a sequence.

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

    - + Parameters

    @@ -73,7 +73,7 @@
    - + Expression Semantics
    @@ -89,14 +89,14 @@ previous element in the sequence before I.

    - + Header
     #include <boost/fusion/iterator/prior.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/value_of.html b/doc/html/fusion/iterators/metafunctions/value_of.html
    index 75f07033..a338e3be 100644
    --- a/doc/html/fusion/iterators/metafunctions/value_of.html
    +++ b/doc/html/fusion/iterators/metafunctions/value_of.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the type stored at the position of an iterator.

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

    - + Parameters

    @@ -73,7 +73,7 @@
    - + Expression Semantics
    @@ -88,14 +88,14 @@ a sequence at iterator position I.

    - + Header
     #include <boost/fusion/iterator/value_of.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/operators/operator_equality.html b/doc/html/fusion/iterators/operators/operator_equality.html
    index a786fe8d..2f43dd12 100644
    --- a/doc/html/fusion/iterators/operators/operator_equality.html
    +++ b/doc/html/fusion/iterators/operators/operator_equality.html
    @@ -31,14 +31,14 @@
             =="> Operator
             ==
- + Description

Compares 2 iterators for equality.

- + Synopsis
@@ -50,7 +50,7 @@
 

- + Parameters

@@ -75,7 +75,7 @@
- + Expression Semantics
@@ -91,7 +91,7 @@ and j respectively.

- + Header
diff --git a/doc/html/fusion/iterators/operators/operator_inequality.html b/doc/html/fusion/iterators/operators/operator_inequality.html
index 2ad8299f..fd92ea05 100644
--- a/doc/html/fusion/iterators/operators/operator_inequality.html
+++ b/doc/html/fusion/iterators/operators/operator_inequality.html
@@ -30,14 +30,14 @@
         !="> Operator
         !=
 
- + Description

Compares 2 iterators for inequality.

- + Synopsis
@@ -49,7 +49,7 @@
 

- + Parameters

@@ -74,7 +74,7 @@
- + Expression Semantics
@@ -87,7 +87,7 @@ and j respectively.

- + Header
diff --git a/doc/html/fusion/iterators/operators/operator_unary_star.html b/doc/html/fusion/iterators/operators/operator_unary_star.html
index 4b719f69..5ad77475 100644
--- a/doc/html/fusion/iterators/operators/operator_unary_star.html
+++ b/doc/html/fusion/iterators/operators/operator_unary_star.html
@@ -30,14 +30,14 @@
         *"> Operator
         *
 
- + Description

Dereferences an iterator.

- + Synopsis
@@ -48,7 +48,7 @@
 

- + Parameters

@@ -74,7 +74,7 @@
- + Expression Semantics
@@ -89,14 +89,14 @@ Semantics: Equivalent to deref(i).

- + Header
 #include <boost/fusion/iterator/deref.hpp>
 
- + Example
diff --git a/doc/html/fusion/notes.html b/doc/html/fusion/notes.html
index b1987d63..d58b99da 100644
--- a/doc/html/fusion/notes.html
+++ b/doc/html/fusion/notes.html
@@ -26,7 +26,7 @@
 
 

- + Recursive Inlined Functions

@@ -39,7 +39,7 @@ compiler limit of course). Compile time complexity remains linear.

- + Overloaded Functions

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

- + Tag Dispatching

@@ -101,7 +101,7 @@

- + Extensibility

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

- + Element Conversion

@@ -158,7 +158,7 @@

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

@@ -191,7 +191,7 @@
 list<void (*)(int)>
 

- + boost::ref

@@ -234,7 +234,7 @@



-

[14] +

[14] 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 diff --git a/doc/html/fusion/organization.html b/doc/html/fusion/organization.html index 3e75a427..7b908b88 100644 --- a/doc/html/fusion/organization.html +++ b/doc/html/fusion/organization.html @@ -34,7 +34,7 @@ The library is organized in three layers:

- + Layers

@@ -50,7 +50,7 @@ against.

- + Directory

    @@ -159,7 +159,7 @@

- + Example

@@ -175,12 +175,12 @@

The first includes all sequences. The second includes all of sequence containers. The third includes only list  - [3] + [3] .



-

[3] +

[3] 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 9fc7c33d..e57a4931 100644 --- a/doc/html/fusion/preface.html +++ b/doc/html/fusion/preface.html @@ -32,11 +32,11 @@ --Niklaus Wirth

- + Description

- Fusion is a library for working with hetrogenous collections of data, commonly + Fusion is a library for working with heterogenous collections of data, commonly referred to as tuples. A set of containers (vector, list, set and map) is provided, along with views that provide a transformed presentation of their underlying data. Collectively the containers and views are referred to as sequences, and @@ -50,7 +50,7 @@ of compile time metaprogramming with runtime programming.

- + Motivation

@@ -76,7 +76,7 @@ an instant AHA! moment.

- + How to use this manual

@@ -85,7 +85,7 @@

- + Icons

@@ -133,7 +133,7 @@ Tools.

- + Support

diff --git a/doc/html/fusion/quick_start.html b/doc/html/fusion/quick_start.html index fb9c7ab2..ce6bd018 100644 --- a/doc/html/fusion/quick_start.html +++ b/doc/html/fusion/quick_start.html @@ -33,7 +33,7 @@

For starters, we shall include all of Fusion's _sequence_s - [1] + [1] :

@@ -41,7 +41,7 @@
 

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

@@ -59,7 +59,7 @@
       Let's see some examples.
     

- + Print the vector as XML

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

- + Print only pointers

@@ -150,7 +150,7 @@ Easy, right?

- + Associative tuples

@@ -225,7 +225,7 @@ a dog or a whole alternate_universe.

- + Tip of the Iceberg

@@ -236,12 +236,12 @@



-

[1] +

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

-

[2] +

[2] 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. diff --git a/doc/html/fusion/sequences.html b/doc/html/fusion/sequences.html index 005938a7..1771bab2 100644 --- a/doc/html/fusion/sequences.html +++ b/doc/html/fusion/sequences.html @@ -46,7 +46,7 @@ type that can be used to iterate through the Sequence's elements.

- + Header

diff --git a/doc/html/fusion/sequences/adapted.html b/doc/html/fusion/sequences/adapted.html
index 9de14eed..aa5cd3ce 100644
--- a/doc/html/fusion/sequences/adapted.html
+++ b/doc/html/fusion/sequences/adapted.html
@@ -38,11 +38,11 @@
         mechanism. If you wish to use these sequences with fusion, simply include
         the necessary files and they will be regarded as first-class, fully conforming
         fusion sequences
-        [4]
+        [4]
         .
       

- + Header

@@ -50,7 +50,7 @@
 


-

[4] +

[4] Fusion sequences may also be adapted as fully conforming MPL sequences (see Intrinsics). That way, we can have 2-way adaptation to and from MPL diff --git a/doc/html/fusion/sequences/adapted/boost__array.html b/doc/html/fusion/sequences/adapted/boost__array.html index 2ed12fca..7d763796 100644 --- a/doc/html/fusion/sequences/adapted/boost__array.html +++ b/doc/html/fusion/sequences/adapted/boost__array.html @@ -33,21 +33,21 @@ Access Sequence.

- + Header
 #include <boost/fusion/sequence/adapted/array.hpp>
 
- + Model of
- + Example
@@ -60,7 +60,7 @@
 std::cout << at_c<2>(arr) << std::endl;
 
- + See also

diff --git a/doc/html/fusion/sequences/adapted/mpl_sequence.html b/doc/html/fusion/sequences/adapted/mpl_sequence.html index 378644b8..ad7713ed 100644 --- a/doc/html/fusion/sequences/adapted/mpl_sequence.html +++ b/doc/html/fusion/sequences/adapted/mpl_sequence.html @@ -31,14 +31,14 @@ sequences fully conforming fusion sequences.

- + Header
 #include <boost/fusion/sequence/adapted/mpl.hpp>
 
- + Model of
    @@ -62,7 +62,7 @@
- + Example
@@ -76,7 +76,7 @@
 std::cout << at_c<1>(v) << std::endl;
 
- + See also

diff --git a/doc/html/fusion/sequences/adapted/std__pair.html b/doc/html/fusion/sequences/adapted/std__pair.html index d3a434c0..03e6268f 100644 --- a/doc/html/fusion/sequences/adapted/std__pair.html +++ b/doc/html/fusion/sequences/adapted/std__pair.html @@ -33,21 +33,21 @@ Access Sequence.

- + Header
 #include <boost/fusion/sequence/adapted/std_pair.hpp>
 
- + Model of
- + Example
@@ -57,7 +57,7 @@
 std::cout << p << std::endl;
 
- + See also

diff --git a/doc/html/fusion/sequences/concepts.html b/doc/html/fusion/sequences/concepts.html index 6983f910..f26c5a7e 100644 --- a/doc/html/fusion/sequences/concepts.html +++ b/doc/html/fusion/sequences/concepts.html @@ -40,7 +40,7 @@ Fusion Sequences are organized into a hierarchy of concepts.

- + Traversal

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

- + Associativity

diff --git a/doc/html/fusion/sequences/concepts/associative_sequence.html b/doc/html/fusion/sequences/concepts/associative_sequence.html index cc0878cd..a08093da 100644 --- a/doc/html/fusion/sequences/concepts/associative_sequence.html +++ b/doc/html/fusion/sequences/concepts/associative_sequence.html @@ -30,7 +30,7 @@ Sequence">Associative Sequence

- + Description

@@ -71,7 +71,7 @@

- + Valid Expressions
@@ -80,7 +80,7 @@

- +

@@ -126,13 +126,13 @@
- + Result Type Expressions

- +

@@ -171,13 +171,13 @@ be a reference to begin with. For this purpose, you can use result_of::value_at_key<S, N>.

- + Expression Semantics

- +

@@ -208,7 +208,7 @@
- + Models
    diff --git a/doc/html/fusion/sequences/concepts/bidirectional_sequence.html b/doc/html/fusion/sequences/concepts/bidirectional_sequence.html index 8937bd21..db23ae73 100644 --- a/doc/html/fusion/sequences/concepts/bidirectional_sequence.html +++ b/doc/html/fusion/sequences/concepts/bidirectional_sequence.html @@ -31,7 +31,7 @@ Sequence">Bidirectional Sequence
- + Description

@@ -42,7 +42,7 @@ Iterator.

- + Refinement of
@@ -72,7 +72,7 @@
- + Valid Expressions
@@ -83,7 +83,7 @@

- +

@@ -138,13 +138,13 @@
- + Result Type Expressions

- +

@@ -175,7 +175,7 @@
- + Expression Semantics
@@ -187,7 +187,7 @@

- +

@@ -206,7 +206,7 @@
- + Models
    diff --git a/doc/html/fusion/sequences/concepts/forward_sequence.html b/doc/html/fusion/sequences/concepts/forward_sequence.html index dd460d28..26f99350 100644 --- a/doc/html/fusion/sequences/concepts/forward_sequence.html +++ b/doc/html/fusion/sequences/concepts/forward_sequence.html @@ -30,7 +30,7 @@ Sequence">Forward Sequence
- + Description

@@ -62,7 +62,7 @@

- + Valid Expressions
@@ -71,7 +71,7 @@

- +

@@ -138,13 +138,13 @@
- + Result Type Expressions

- +

@@ -183,13 +183,13 @@
- + Expression Semantics

- +

@@ -232,7 +232,7 @@
- + Invariants

@@ -258,7 +258,7 @@

- + Models
    diff --git a/doc/html/fusion/sequences/concepts/random_access_sequence.html b/doc/html/fusion/sequences/concepts/random_access_sequence.html index f031f3ac..8c38fa1e 100644 --- a/doc/html/fusion/sequences/concepts/random_access_sequence.html +++ b/doc/html/fusion/sequences/concepts/random_access_sequence.html @@ -31,7 +31,7 @@ Access Sequence">Random Access Sequence
- + Description

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

- + Refinement of
@@ -78,7 +78,7 @@
- + Valid Expressions
@@ -89,7 +89,7 @@

- +

@@ -144,13 +144,13 @@
- + Result Type Expressions

- +

@@ -194,7 +194,7 @@ be a reference to begin with. For this purpose, you can use result_of::value_at<S, N>.

- + Expression Semantics
@@ -206,7 +206,7 @@

- +

@@ -225,7 +225,7 @@
- + Models
    diff --git a/doc/html/fusion/sequences/containers.html b/doc/html/fusion/sequences/containers.html index b5c6ef0a..0c084347 100644 --- a/doc/html/fusion/sequences/containers.html +++ b/doc/html/fusion/sequences/containers.html @@ -39,7 +39,7 @@ These containers are more or less counterparts of those in STL.

    - + Header

    diff --git a/doc/html/fusion/sequences/containers/cons.html b/doc/html/fusion/sequences/containers/cons.html
    index 006b7e29..c11ece32 100644
    --- a/doc/html/fusion/sequences/containers/cons.html
    +++ b/doc/html/fusion/sequences/containers/cons.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -41,14 +41,14 @@ Inlined Functions).

    - + Header
     #include <boost/fusion/sequence/container/list/cons.hpp>
     
    - + Synopsis
    @@ -56,13 +56,13 @@
     struct cons;
     
    - + Template parameters

    - +

    @@ -92,7 +92,7 @@
    - + Model of
    • - + Expression Semantics
      @@ -146,7 +146,7 @@

      - +

      @@ -215,7 +215,7 @@ Inlined Functions).

      - + Example
      diff --git a/doc/html/fusion/sequences/containers/list.html b/doc/html/fusion/sequences/containers/list.html
      index 83ee0ff4..5e30d850 100644
      --- a/doc/html/fusion/sequences/containers/list.html
      +++ b/doc/html/fusion/sequences/containers/list.html
      @@ -26,7 +26,7 @@
       
       
      - + Description

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

      - + Header
      @@ -46,7 +46,7 @@
       #include <boost/fusion/sequence/container/list/list_forward.hpp>
       
      - + Synopsis
      @@ -77,13 +77,13 @@
       #define FUSION_MAX_LIST_SIZE 20
       
      - + Template parameters

      - +

      @@ -106,7 +106,7 @@
      - + Model of
      • - + Expression Semantics
        @@ -151,7 +151,7 @@

        - +

        @@ -207,7 +207,7 @@ Inlined Functions).

        - + Example
        diff --git a/doc/html/fusion/sequences/containers/map.html b/doc/html/fusion/sequences/containers/map.html
        index e04c36b2..13075960 100644
        --- a/doc/html/fusion/sequences/containers/map.html
        +++ b/doc/html/fusion/sequences/containers/map.html
        @@ -26,7 +26,7 @@
         
         
        - + Description

        @@ -41,14 +41,14 @@ Functions).

        - + Header
         #include <boost/fusion/sequence/container/map.hpp>
         
        - + Synopsis
        @@ -79,13 +79,13 @@
         #define FUSION_MAX_MAP_SIZE 20
         
        - + Template parameters

        - +

        @@ -108,7 +108,7 @@
        - + Model of
          @@ -142,7 +142,7 @@
        - + Expression Semantics
        @@ -156,7 +156,7 @@

        - +

        @@ -196,7 +196,7 @@
        - + Example
        diff --git a/doc/html/fusion/sequences/containers/set.html b/doc/html/fusion/sequences/containers/set.html
        index b3b553ce..fa52423a 100644
        --- a/doc/html/fusion/sequences/containers/set.html
        +++ b/doc/html/fusion/sequences/containers/set.html
        @@ -26,7 +26,7 @@
         
         
        - + Description

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

        - + Header
         #include <boost/fusion/sequence/container/set.hpp>
         
        - + Synopsis
        @@ -77,13 +77,13 @@
         #define FUSION_MAX_SET_SIZE 20
         
        - + Template parameters

        - +

        @@ -106,7 +106,7 @@
        - + Model of
          @@ -140,7 +140,7 @@
        - + Expression Semantics
        @@ -154,7 +154,7 @@

        - +

        @@ -194,7 +194,7 @@
        - + Example
        diff --git a/doc/html/fusion/sequences/containers/vector.html b/doc/html/fusion/sequences/containers/vector.html
        index 788f029b..ab22e137 100644
        --- a/doc/html/fusion/sequences/containers/vector.html
        +++ b/doc/html/fusion/sequences/containers/vector.html
        @@ -26,7 +26,7 @@
         
         
        - + Description

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

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

        @@ -115,13 +115,13 @@ #define FUSION_MAX_VECTOR_SIZE 20

        - + Template parameters

        - +

        @@ -144,7 +144,7 @@
        - + Model of
        • - + Expression Semantics
          @@ -186,7 +186,7 @@

          - +

          @@ -226,7 +226,7 @@
          - + Example
          diff --git a/doc/html/fusion/sequences/conversion.html b/doc/html/fusion/sequences/conversion.html
          index 4a468867..d025fd7d 100644
          --- a/doc/html/fusion/sequences/conversion.html
          +++ b/doc/html/fusion/sequences/conversion.html
          @@ -34,7 +34,7 @@
                   types using one of these conversion functions.
                 

          - + Header

          diff --git a/doc/html/fusion/sequences/conversion/functions/as_list.html b/doc/html/fusion/sequences/conversion/functions/as_list.html
          index 092b2d68..8803c397 100644
          --- a/doc/html/fusion/sequences/conversion/functions/as_list.html
          +++ b/doc/html/fusion/sequences/conversion/functions/as_list.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Convert a fusion sequence to a list.

          - + Synopsis
          @@ -46,12 +46,12 @@
           as_list(Sequence const& seq);
           
          - + Parameters

          - +

          @@ -73,7 +73,7 @@
          - + Expression Semantics
          @@ -88,14 +88,14 @@ seq, to a list.

          - + Header
           #include <boost/fusion/sequence/conversion/as_list.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/conversion/functions/as_map.html b/doc/html/fusion/sequences/conversion/functions/as_map.html
          index ced5fbfb..ba2f5f66 100644
          --- a/doc/html/fusion/sequences/conversion/functions/as_map.html
          +++ b/doc/html/fusion/sequences/conversion/functions/as_map.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Convert a fusion sequence to a map.

          - + Synopsis
          @@ -46,12 +46,12 @@
           as_map(Sequence const& seq);
           
          - + Parameters

          - +

          @@ -73,7 +73,7 @@
          - + Expression Semantics
          @@ -93,14 +93,14 @@ There may be no duplicate fusion::pair key types.

          - + Header
           #include <boost/fusion/sequence/conversion/as_map.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/conversion/functions/as_set.html b/doc/html/fusion/sequences/conversion/functions/as_set.html
          index 982a76d8..848e2c06 100644
          --- a/doc/html/fusion/sequences/conversion/functions/as_set.html
          +++ b/doc/html/fusion/sequences/conversion/functions/as_set.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Convert a fusion sequence to a set.

          - + Synopsis
          @@ -46,12 +46,12 @@
           as_set(Sequence const& seq);
           
          - + Parameters

          - +

          @@ -73,7 +73,7 @@
          - + Expression Semantics
          @@ -92,14 +92,14 @@ key types.

          - + Header
           #include <boost/fusion/sequence/conversion/as_set.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/conversion/functions/as_vector.html b/doc/html/fusion/sequences/conversion/functions/as_vector.html
          index de557ba4..cb8a8a46 100644
          --- a/doc/html/fusion/sequences/conversion/functions/as_vector.html
          +++ b/doc/html/fusion/sequences/conversion/functions/as_vector.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Convert a fusion sequence to a vector.

          - + Synopsis
          @@ -46,12 +46,12 @@
           as_vector(Sequence const& seq);
           
          - + Parameters

          - +

          @@ -73,7 +73,7 @@
          - + Expression Semantics
          @@ -88,14 +88,14 @@ seq, to a vector.

          - + Header
           #include <boost/fusion/sequence/conversion/as_vector.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_list.html b/doc/html/fusion/sequences/conversion/metafunctions/as_list.html
          index 5b00a350..c3ffa5a3 100644
          --- a/doc/html/fusion/sequences/conversion/metafunctions/as_list.html
          +++ b/doc/html/fusion/sequences/conversion/metafunctions/as_list.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Returns the result type of as_list.

          - + Synopsis
          @@ -41,12 +41,12 @@
           struct as_list;
           
          - + Parameters

          - +

          @@ -70,7 +70,7 @@
          - + Expression Semantics
          @@ -86,14 +86,14 @@ Sequence, to a list.

          - + Header
           #include <boost/fusion/sequence/conversion/as_list.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_map.html b/doc/html/fusion/sequences/conversion/metafunctions/as_map.html
          index 2de03b86..6d6517a4 100644
          --- a/doc/html/fusion/sequences/conversion/metafunctions/as_map.html
          +++ b/doc/html/fusion/sequences/conversion/metafunctions/as_map.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Returns the result type of as_map.

          - + Synopsis
          @@ -41,12 +41,12 @@
           struct as_map;
           
          - + Parameters

          - +

          @@ -70,7 +70,7 @@
          - + Expression Semantics
          @@ -91,14 +91,14 @@ There may be no duplicate fusion::pair key types.

          - + Header
           #include <boost/fusion/sequence/conversion/as_map.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_set.html b/doc/html/fusion/sequences/conversion/metafunctions/as_set.html
          index b5a1a707..79809925 100644
          --- a/doc/html/fusion/sequences/conversion/metafunctions/as_set.html
          +++ b/doc/html/fusion/sequences/conversion/metafunctions/as_set.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Returns the result type of as_set.

          - + Synopsis
          @@ -41,12 +41,12 @@
           struct as_set;
           
          - + Parameters

          - +

          @@ -70,7 +70,7 @@
          - + Expression Semantics
          @@ -90,14 +90,14 @@ key types.

          - + Header
           #include <boost/fusion/sequence/conversion/as_set.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html b/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html
          index 6d39ef78..8cf18286 100644
          --- a/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html
          +++ b/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Returns the result type of as_vector.

          - + Synopsis
          @@ -41,12 +41,12 @@
           struct as_vector;
           
          - + Parameters

          - +

          @@ -70,7 +70,7 @@
          - + Expression Semantics
          @@ -86,14 +86,14 @@ Sequence, to a vector.

          - + Header
           #include <boost/fusion/sequence/conversion/as_vector.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/generation.html b/doc/html/fusion/sequences/generation.html
          index 0dd9d6fd..515843b8 100644
          --- a/doc/html/fusion/sequences/generation.html
          +++ b/doc/html/fusion/sequences/generation.html
          @@ -33,7 +33,7 @@
                   These are the functions that you can use to generate various forms of Containers from elemental values.
                 

          - + Header

          diff --git a/doc/html/fusion/sequences/generation/functions/list_tie.html b/doc/html/fusion/sequences/generation/functions/list_tie.html
          index 48f800b4..34be0d6a 100644
          --- a/doc/html/fusion/sequences/generation/functions/list_tie.html
          +++ b/doc/html/fusion/sequences/generation/functions/list_tie.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Constructs a tie using a list sequence.

          - + Synopsis
          @@ -53,12 +53,12 @@
           #define FUSION_MAX_LIST_SIZE 20
           
          - + Parameters

          - +

          @@ -83,7 +83,7 @@
          - + Expression Semantics
          @@ -98,14 +98,14 @@ Semantics: Create a list of references from x0, x1,... xN.

          - + Header
           #include <boost/fusion/sequence/generation/list_tie.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/generation/functions/make_cons.html b/doc/html/fusion/sequences/generation/functions/make_cons.html
          index 5163e06a..17c2f422 100644
          --- a/doc/html/fusion/sequences/generation/functions/make_cons.html
          +++ b/doc/html/fusion/sequences/generation/functions/make_cons.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

          @@ -35,7 +35,7 @@ (tail).

          - + Synopsis
          @@ -48,12 +48,12 @@
           make_cons(Car const& car, Cdr const& cdr);
           
          - + Parameters

          - +

          @@ -87,7 +87,7 @@
          - + Expression Semantics
          @@ -103,21 +103,21 @@ (tail).

          - + Header
           #include <boost/fusion/sequence/generation/make_cons.hpp>
           
          - + Example
           make_cons('x', make_cons(123))
           
          - + See also
          diff --git a/doc/html/fusion/sequences/generation/functions/make_list.html b/doc/html/fusion/sequences/generation/functions/make_list.html index 8804b024..a61a0620 100644 --- a/doc/html/fusion/sequences/generation/functions/make_list.html +++ b/doc/html/fusion/sequences/generation/functions/make_list.html @@ -26,14 +26,14 @@
          - + Description

          Create a list from one or more values.

          - + Synopsis
          @@ -53,12 +53,12 @@
           #define FUSION_MAX_LIST_SIZE 20
           
          - + Parameters

          - +

          @@ -83,7 +83,7 @@
          - + Expression Semantics
          @@ -97,21 +97,21 @@ Semantics: Create a list from x0, x1,... xN.

          - + Header
           #include <boost/fusion/sequence/generation/make_list.hpp>
           
          - + Example
           make_list(123, "hello", 12.5)
           
          - + See also
          diff --git a/doc/html/fusion/sequences/generation/functions/make_map.html b/doc/html/fusion/sequences/generation/functions/make_map.html index a475dbb6..48c80a52 100644 --- a/doc/html/fusion/sequences/generation/functions/make_map.html +++ b/doc/html/fusion/sequences/generation/functions/make_map.html @@ -26,7 +26,7 @@
          - + Description

          @@ -34,7 +34,7 @@ pairs.

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

          The variadic function accepts 0 to FUSION_MAX_VECTOR_SIZE - [10] + [10] elements, where FUSION_MAX_VECTOR_SIZE is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE @@ -57,12 +57,12 @@ #define FUSION_MAX_VECTOR_SIZE 20

          - + Parameters

          - +

          @@ -96,7 +96,7 @@
          - + Expression Semantics
          @@ -115,14 +115,14 @@ key types.

          - + Header
           #include <boost/fusion/sequence/generation/make_map.hpp>
           
          - + Example
          @@ -131,7 +131,7 @@
             , make_pair<double>("Men"))
           
          - + See also
          @@ -141,7 +141,7 @@



          -

          [10] +

          [10] map is implemented in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

          diff --git a/doc/html/fusion/sequences/generation/functions/make_set.html b/doc/html/fusion/sequences/generation/functions/make_set.html index 7298b243..f41f92eb 100644 --- a/doc/html/fusion/sequences/generation/functions/make_set.html +++ b/doc/html/fusion/sequences/generation/functions/make_set.html @@ -26,14 +26,14 @@
          - + Description

          Create a set from one or more values.

          - + Synopsis
          @@ -44,7 +44,7 @@
           

          The variadic function accepts 0 to FUSION_MAX_VECTOR_SIZE - [9] + [9] elements, where FUSION_MAX_VECTOR_SIZE is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE @@ -54,12 +54,12 @@ #define FUSION_MAX_VECTOR_SIZE 20

          - + Parameters

          - +

          @@ -84,7 +84,7 @@
          - + Expression Semantics
          @@ -102,21 +102,21 @@ key types.

          - + Header
           #include <boost/fusion/sequence/generation/make_set.hpp>
           
          - + Example
           make_set(123, "hello", 12.5)
           
          - + See also
          @@ -125,7 +125,7 @@



          -

          [9] +

          [9] set is implemented in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

          diff --git a/doc/html/fusion/sequences/generation/functions/make_vector.html b/doc/html/fusion/sequences/generation/functions/make_vector.html index 2deac697..a62ece1c 100644 --- a/doc/html/fusion/sequences/generation/functions/make_vector.html +++ b/doc/html/fusion/sequences/generation/functions/make_vector.html @@ -26,14 +26,14 @@
          - + Description

          Create a vector from one or more values.

          - + Synopsis
          @@ -53,12 +53,12 @@
           #define FUSION_MAX_VECTOR_SIZE 20
           
          - + Parameters

          - +

          @@ -83,7 +83,7 @@
          - + Expression Semantics
          @@ -97,21 +97,21 @@ Semantics: Create a vector from x0, x1,... xN.

          - + Header
           #include <boost/fusion/sequence/generation/make_vector.hpp>
           
          - + Example
           make_vector(123, "hello", 12.5)
           
          - + See also
          diff --git a/doc/html/fusion/sequences/generation/functions/tiers.html b/doc/html/fusion/sequences/generation/functions/tiers.html index 9a4defb4..b7188658 100644 --- a/doc/html/fusion/sequences/generation/functions/tiers.html +++ b/doc/html/fusion/sequences/generation/functions/tiers.html @@ -48,7 +48,7 @@ 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)) - [11] + [11] .

          @@ -66,7 +66,7 @@ when calling functions which return sequences.

          - + Ignore

          @@ -81,7 +81,7 @@



          -

          [11] +

          [11] see Boost.Ref for details about ref

          diff --git a/doc/html/fusion/sequences/generation/functions/vector_tie.html b/doc/html/fusion/sequences/generation/functions/vector_tie.html index ccd43dd8..3db9e3f1 100644 --- a/doc/html/fusion/sequences/generation/functions/vector_tie.html +++ b/doc/html/fusion/sequences/generation/functions/vector_tie.html @@ -26,14 +26,14 @@
          - + Description

          Constructs a tie using a vector sequence.

          - + Synopsis
          @@ -53,12 +53,12 @@
           #define FUSION_MAX_VECTOR_SIZE 20
           
          - + Parameters

          - +

          @@ -83,7 +83,7 @@
          - + Expression Semantics
          @@ -98,14 +98,14 @@ Semantics: Create a vector of references from x0, x1,... xN.

          - + Header
           #include <boost/fusion/sequence/generation/vector_tie.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/generation/metafunctions/list_tie.html b/doc/html/fusion/sequences/generation/metafunctions/list_tie.html
          index dc11981f..545ba6e1 100644
          --- a/doc/html/fusion/sequences/generation/metafunctions/list_tie.html
          +++ b/doc/html/fusion/sequences/generation/metafunctions/list_tie.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Returns the result type of list_tie.

          - + Synopsis
          @@ -52,12 +52,12 @@
           #define FUSION_MAX_LIST_SIZE 20
           
          - + Parameters

          - +

          @@ -80,7 +80,7 @@
          - + Expression Semantics
          @@ -95,14 +95,14 @@ Semantics: Create a list of references from T0, T1,... TN.

          - + Header
           #include <boost/fusion/sequence/generation/list_tie.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_cons.html b/doc/html/fusion/sequences/generation/metafunctions/make_cons.html
          index 5e3c7339..7cf4c838 100644
          --- a/doc/html/fusion/sequences/generation/metafunctions/make_cons.html
          +++ b/doc/html/fusion/sequences/generation/metafunctions/make_cons.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Returns the result type of make_cons.

          - + Synopsis
          @@ -41,12 +41,12 @@
           struct make_cons;
           
          - + Parameters

          - +

          @@ -78,7 +78,7 @@
          - + Expression Semantics
          @@ -96,14 +96,14 @@ (tail).

          - + Header
           #include <boost/fusion/sequence/generation/make_cons.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_list.html b/doc/html/fusion/sequences/generation/metafunctions/make_list.html
          index acc31cef..d8ce1d48 100644
          --- a/doc/html/fusion/sequences/generation/metafunctions/make_list.html
          +++ b/doc/html/fusion/sequences/generation/metafunctions/make_list.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Returns the result type of make_list.

          - + Synopsis
          @@ -52,12 +52,12 @@
           #define FUSION_MAX_LIST_SIZE 20
           
          - + Parameters

          - +

          @@ -80,7 +80,7 @@
          - + Expression Semantics
          @@ -96,14 +96,14 @@ Semantics: Create a list from T0, T1,... TN.

          - + Header
           #include <boost/fusion/sequence/generation/make_list.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_map.html b/doc/html/fusion/sequences/generation/metafunctions/make_map.html
          index a9983836..d87705c9 100644
          --- a/doc/html/fusion/sequences/generation/metafunctions/make_map.html
          +++ b/doc/html/fusion/sequences/generation/metafunctions/make_map.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Returns the result type of make_map.

          - + Synopsis
          @@ -45,7 +45,7 @@
           

          The variadic function accepts 0 to FUSION_MAX_VECTOR_SIZE - [13] + [13] elements, where FUSION_MAX_VECTOR_SIZE is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE @@ -55,12 +55,12 @@ #define FUSION_MAX_VECTOR_SIZE 20

          - + Parameters

          - +

          @@ -92,7 +92,7 @@
          - + Expression Semantics
          @@ -112,21 +112,21 @@ key types.

          - + Header
           #include <boost/fusion/sequence/generation/make_map.hpp>
           
          - + Example
           result_of::make_map<int, double, char, double>::type
           
          - + See also
          @@ -135,7 +135,7 @@



          -

          [13] +

          [13] map is implemented in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

          diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_set.html b/doc/html/fusion/sequences/generation/metafunctions/make_set.html index 317ea0c3..f2f78d21 100644 --- a/doc/html/fusion/sequences/generation/metafunctions/make_set.html +++ b/doc/html/fusion/sequences/generation/metafunctions/make_set.html @@ -26,14 +26,14 @@
          - + Description

          Returns the result type of make_set.

          - + Synopsis
          @@ -43,7 +43,7 @@
           

          The variadic function accepts 0 to FUSION_MAX_VECTOR_SIZE - [12] + [12] elements, where FUSION_MAX_VECTOR_SIZE is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE @@ -53,12 +53,12 @@ #define FUSION_MAX_VECTOR_SIZE 20

          - + Parameters

          - +

          @@ -81,7 +81,7 @@
          - + Expression Semantics
          @@ -101,14 +101,14 @@ key types.

          - + Header
           #include <boost/fusion/sequence/generation/make_set.hpp>
           
          - + Example
          @@ -116,7 +116,7 @@
           


          -

          [12] +

          [12] set is implemented in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

          diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_vector.html b/doc/html/fusion/sequences/generation/metafunctions/make_vector.html index 572041c0..901deeed 100644 --- a/doc/html/fusion/sequences/generation/metafunctions/make_vector.html +++ b/doc/html/fusion/sequences/generation/metafunctions/make_vector.html @@ -26,14 +26,14 @@
          - + Description

          Returns the result type of make_vector.

          - + Synopsis
          @@ -52,12 +52,12 @@
           #define FUSION_MAX_VECTOR_SIZE 20
           
          - + Parameters

          - +

          @@ -80,7 +80,7 @@
          - + Expression Semantics
          @@ -96,14 +96,14 @@ Semantics: Create a vector from T0, T1,... TN.

          - + Header
           #include <boost/fusion/sequence/generation/make_list.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html b/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html
          index 7a81eb16..4016bc6b 100644
          --- a/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html
          +++ b/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Returns the result type of vector_tie.

          - + Synopsis
          @@ -52,12 +52,12 @@
           #define FUSION_MAX_VECTOR_SIZE 20
           
          - + Parameters

          - +

          @@ -80,7 +80,7 @@
          - + Expression Semantics
          @@ -95,14 +95,14 @@ Semantics: Create a vector of references from T0, T1,... TN.

          - + Header
           #include <boost/fusion/sequence/generation/vector_tie.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/intrinsics.html b/doc/html/fusion/sequences/intrinsics.html
          index d3896d63..e740939e 100644
          --- a/doc/html/fusion/sequences/intrinsics.html
          +++ b/doc/html/fusion/sequences/intrinsics.html
          @@ -36,11 +36,11 @@
                   Intrinsic functions, unlike Algorithms,
                   are not generic across the full Sequence
                   repertoire. They need to be implemented for each Fusion Sequence
          -        [5]
          +        [5]
                   .
                 

          - + Header

          @@ -48,7 +48,7 @@
           


          -

          [5] +

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

          diff --git a/doc/html/fusion/sequences/intrinsics/functions/at.html b/doc/html/fusion/sequences/intrinsics/functions/at.html index aeeb6343..857d65e6 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/at.html +++ b/doc/html/fusion/sequences/intrinsics/functions/at.html @@ -26,14 +26,14 @@
          - + Description

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

          - + Synopsis
          @@ -46,12 +46,12 @@
           at(Sequence const& seq);
           
          - + Parameters

          - +

          @@ -86,7 +86,7 @@
          - + Expression Semantics
          @@ -112,14 +112,14 @@ deref(advance<N>(begin(s)))
          - + Header
           #include <boost/fusion/sequence/intrinsic/at.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/intrinsics/functions/at_c.html b/doc/html/fusion/sequences/intrinsics/functions/at_c.html
          index 0ffc2615..4b2e7b33 100644
          --- a/doc/html/fusion/sequences/intrinsics/functions/at_c.html
          +++ b/doc/html/fusion/sequences/intrinsics/functions/at_c.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -46,12 +46,12 @@
           at_c(Sequence const& seq);
           
          - + Parameters

          - +

          @@ -85,7 +85,7 @@
          - + Expression Semantics
          @@ -111,14 +111,14 @@ deref(advance<N>(begin(s)))
          - + Header
           #include <boost/fusion/sequence/intrinsic/at_c.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/intrinsics/functions/at_key.html b/doc/html/fusion/sequences/intrinsics/functions/at_key.html
          index f448522c..ca7eb5e6 100644
          --- a/doc/html/fusion/sequences/intrinsics/functions/at_key.html
          +++ b/doc/html/fusion/sequences/intrinsics/functions/at_key.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Returns the element associated with a Key from the sequence.

          - + Synopsis
          @@ -46,12 +46,12 @@
           at_key(Sequence const& seq);
           
          - + Parameters

          - +

          @@ -84,7 +84,7 @@
          - + Expression Semantics
          @@ -107,14 +107,14 @@ with Key.

          - + Header
           #include <boost/fusion/sequence/intrinsic/at_key.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/intrinsics/functions/back.html b/doc/html/fusion/sequences/intrinsics/functions/back.html
          index 3f4a5021..792312f2 100644
          --- a/doc/html/fusion/sequences/intrinsics/functions/back.html
          +++ b/doc/html/fusion/sequences/intrinsics/functions/back.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Returns the last element in the sequence.

          - + Synopsis
          @@ -46,12 +46,12 @@
           back(Sequence const& seq);
           
          - + Parameters

          - +

          @@ -76,7 +76,7 @@
          - + Expression Semantics
          @@ -99,14 +99,14 @@ in the sequence.

          - + Header
           #include <boost/fusion/sequence/intrinsic/back.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/intrinsics/functions/begin.html b/doc/html/fusion/sequences/intrinsics/functions/begin.html
          index 755c9c85..0280223e 100644
          --- a/doc/html/fusion/sequences/intrinsics/functions/begin.html
          +++ b/doc/html/fusion/sequences/intrinsics/functions/begin.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -46,12 +46,12 @@
           begin(Sequence const& seq);
           
          - + Parameters

          - +

          @@ -77,7 +77,7 @@
          - + Expression Semantics
          @@ -107,14 +107,14 @@ to the first element in the sequence.

          - + Header
           #include <boost/fusion/sequence/intrinsic/begin.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/intrinsics/functions/empty.html b/doc/html/fusion/sequences/intrinsics/functions/empty.html
          index 84e4b147..4f163aee 100644
          --- a/doc/html/fusion/sequences/intrinsics/functions/empty.html
          +++ b/doc/html/fusion/sequences/intrinsics/functions/empty.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -44,12 +44,12 @@
           empty(Sequence const& seq);
           
          - + Parameters

          - +

          @@ -74,7 +74,7 @@
          - + Expression Semantics
          @@ -89,14 +89,14 @@ to false.

          - + Header
           #include <boost/fusion/sequence/intrinsic/empty.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/intrinsics/functions/end.html b/doc/html/fusion/sequences/intrinsics/functions/end.html
          index 41d27f73..c4c4aafb 100644
          --- a/doc/html/fusion/sequences/intrinsics/functions/end.html
          +++ b/doc/html/fusion/sequences/intrinsics/functions/end.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -46,12 +46,12 @@
           end(Sequence const& seq);
           
          - + Parameters

          - +

          @@ -77,7 +77,7 @@
          - + Expression Semantics
          @@ -107,14 +107,14 @@ to one element past the end of the sequence.

          - + Header
           #include <boost/fusion/sequence/intrinsic/end.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/intrinsics/functions/front.html b/doc/html/fusion/sequences/intrinsics/functions/front.html
          index fad5941d..b46b483c 100644
          --- a/doc/html/fusion/sequences/intrinsics/functions/front.html
          +++ b/doc/html/fusion/sequences/intrinsics/functions/front.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Returns the first element in the sequence.

          - + Synopsis
          @@ -46,12 +46,12 @@
           front(Sequence const& seq);
           
          - + Parameters

          - +

          @@ -76,7 +76,7 @@
          - + Expression Semantics
          @@ -99,14 +99,14 @@ in the sequence.

          - + Header
           #include <boost/fusion/sequence/intrinsic/front.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/intrinsics/functions/has_key.html b/doc/html/fusion/sequences/intrinsics/functions/has_key.html
          index aabd7a1a..73016aa5 100644
          --- a/doc/html/fusion/sequences/intrinsics/functions/has_key.html
          +++ b/doc/html/fusion/sequences/intrinsics/functions/has_key.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -45,12 +45,12 @@
           has_key(Sequence const& seq);
           
          - + Parameters

          - +

          @@ -83,7 +83,7 @@
          - + Expression Semantics
          @@ -98,14 +98,14 @@ associated with Key, else, evaluates to false.

          - + Header
           #include <boost/fusion/sequence/intrinsic/has_key.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/intrinsics/functions/size.html b/doc/html/fusion/sequences/intrinsics/functions/size.html
          index a01e55ae..9513d565 100644
          --- a/doc/html/fusion/sequences/intrinsics/functions/size.html
          +++ b/doc/html/fusion/sequences/intrinsics/functions/size.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -43,12 +43,12 @@
           size(Sequence const& seq);
           
          - + Parameters

          - +

          @@ -73,7 +73,7 @@
          - + Expression Semantics
          @@ -88,14 +88,14 @@ in the sequence.

          - + Header
           #include <boost/fusion/sequence/intrinsic/size.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/at.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at.html
          index 9b703c5b..83d94b4e 100644
          --- a/doc/html/fusion/sequences/intrinsics/metafunctions/at.html
          +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/at.html
          @@ -26,16 +26,16 @@
           
           
          - + Description

          Returns the result type of at - [6] + [6] .

          - + Synopsis
          @@ -49,7 +49,7 @@
           

          - + Parameters

          @@ -83,7 +83,7 @@
          - + Expression Semantics
          @@ -98,14 +98,14 @@ using at to access the Nth element of Seq.

          - + Header
           #include <boost/fusion/sequence/intrinsic/at.hpp>
           
          - + Example
          @@ -114,7 +114,7 @@
           


          -

          [6] +

          [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 diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html index 5f0d7fa8..3f991aa4 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html @@ -26,16 +26,16 @@

          - + Description

          Returns the result type of at_c - [7] + [7] .

          - + Synopsis
          @@ -49,7 +49,7 @@
           

          - + Parameters

          @@ -83,7 +83,7 @@
          - + Expression Semantics
          @@ -98,14 +98,14 @@ using at_c to access the Mth element of Seq.

          - + Header
           #include <boost/fusion/sequence/intrinsic/at.hpp>
           
          - + Example
          @@ -114,7 +114,7 @@
           


          -

          [7] +

          [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 diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html index 39c8141f..be323730 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html @@ -26,16 +26,16 @@

          - + Description

          Returns the result type of at_key - [8] + [8] .

          - + Synopsis
          @@ -49,7 +49,7 @@
           

          - + Parameters

          @@ -83,7 +83,7 @@
          - + Expression Semantics
          @@ -100,14 +100,14 @@ Seq.

          - + Header
           #include <boost/fusion/sequence/intrinsic/at_key.hpp>
           
          - + Example
          @@ -116,7 +116,7 @@
           


          -

          [8] +

          [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 diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/back.html b/doc/html/fusion/sequences/intrinsics/metafunctions/back.html index f76bb7c4..a677ceb9 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/back.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/back.html @@ -26,14 +26,14 @@

          - + Description

          Returns the result type of back.

          - + Synopsis
          @@ -45,7 +45,7 @@
           

          - + Parameters

          @@ -71,7 +71,7 @@
          - + Expression Semantics
          @@ -86,14 +86,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>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html b/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html
          index b5b70462..e39445cd 100644
          --- a/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html
          +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Returns the result type of begin.

          - + Synopsis
          @@ -45,7 +45,7 @@
           

          - + Parameters

          @@ -71,7 +71,7 @@
          - + Expression Semantics
          @@ -87,14 +87,14 @@ to the first element of Seq.

          - + Header
           #include <boost/fusion/sequence/intrinsic/begin.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html b/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html
          index 4f9b6938..323d1793 100644
          --- a/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html
          +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Returns the result type of empty.

          - + Synopsis
          @@ -45,7 +45,7 @@
           

          - + Parameters

          @@ -71,7 +71,7 @@
          - + Expression Semantics
          @@ -87,14 +87,14 @@ mpl::false_ otherwise.

          - + Header
           #include <boost/fusion/sequence/intrinsic/empty.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/end.html b/doc/html/fusion/sequences/intrinsics/metafunctions/end.html
          index a08bad3d..4e7488c8 100644
          --- a/doc/html/fusion/sequences/intrinsics/metafunctions/end.html
          +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/end.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Returns the result type of end.

          - + Synopsis
          @@ -45,7 +45,7 @@
           

          - + Parameters

          @@ -71,7 +71,7 @@
          - + Expression Semantics
          @@ -87,14 +87,14 @@ one past the end of Seq.

          - + Header
           #include <boost/fusion/sequence/intrinsic/end.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/front.html b/doc/html/fusion/sequences/intrinsics/metafunctions/front.html
          index 33a20b05..b3046b41 100644
          --- a/doc/html/fusion/sequences/intrinsics/metafunctions/front.html
          +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/front.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Returns the result type of front.

          - + Synopsis
          @@ -45,7 +45,7 @@
           

          - + Parameters

          @@ -71,7 +71,7 @@
          - + Expression Semantics
          @@ -87,14 +87,14 @@ Equivalent to result_of::deref<result_of::begin<Seq>::type>::type.

          - + Header
           #include <boost/fusion/sequence/intrinsic/front.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html
          index fef877f4..6c32397a 100644
          --- a/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html
          +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Returns the result type of has_key.

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

          - + Parameters

          @@ -81,7 +81,7 @@
          - + Expression Semantics
          @@ -98,14 +98,14 @@ mpl::false_ otherwise.

          - + Header
           #include <boost/fusion/sequence/intrinsic/has_key.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/size.html b/doc/html/fusion/sequences/intrinsics/metafunctions/size.html
          index b21ab597..5515d849 100644
          --- a/doc/html/fusion/sequences/intrinsics/metafunctions/size.html
          +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/size.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Returns the result type of size.

          - + Synopsis
          @@ -45,7 +45,7 @@
           

          - + Parameters

          @@ -71,7 +71,7 @@
          - + Expression Semantics
          @@ -86,14 +86,14 @@ in Seq.

          - + Header
           #include <boost/fusion/sequence/intrinsic/size.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html
          index fdb2d75a..7d376f8a 100644
          --- a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html
          +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Returns the actual type at a given index from the Sequence.

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

          - + Parameters

          @@ -81,7 +81,7 @@
          - + Expression Semantics
          @@ -96,14 +96,14 @@ the Nth element of Seq.

          - + Header
           #include <boost/fusion/sequence/intrinsic/value_at.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html
          index 85d9fda2..e2c7a5a4 100644
          --- a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html
          +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Returns the actual type at a given index from the Sequence.

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

          - + Parameters

          @@ -81,7 +81,7 @@
          - + Expression Semantics
          @@ -96,14 +96,14 @@ the Mth element of Seq.

          - + Header
           #include <boost/fusion/sequence/intrinsic/value_at.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html
          index 31de542b..a0937754 100644
          --- a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html
          +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Returns the actual element type associated with a Key from the Sequence.

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

          - + Parameters

          @@ -81,7 +81,7 @@
          - + Expression Semantics
          @@ -97,14 +97,14 @@ in Seq.

          - + Header
           #include <boost/fusion/sequence/intrinsic/value_at_key.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/operators/comparison.html b/doc/html/fusion/sequences/operators/comparison.html
          index 95ae379c..c34664ee 100644
          --- a/doc/html/fusion/sequences/operators/comparison.html
          +++ b/doc/html/fusion/sequences/operators/comparison.html
          @@ -48,7 +48,7 @@
                     only until the result is clear.
                   

          - + Header
          diff --git a/doc/html/fusion/sequences/operators/comparison/equal.html b/doc/html/fusion/sequences/operators/comparison/equal.html
          index 2310081d..e3a2cd02 100644
          --- a/doc/html/fusion/sequences/operators/comparison/equal.html
          +++ b/doc/html/fusion/sequences/operators/comparison/equal.html
          @@ -27,14 +27,14 @@
           
           
          - + Description

          Compare two sequences for equality.

          - + Synopsis
          @@ -43,12 +43,12 @@
           operator==(Seq1 const& a, Seq2 const& b);
           
          - + Parameters

          - +

          @@ -72,7 +72,7 @@
          - + Expression Semantics
          @@ -108,14 +108,14 @@ true.

          - + Header
           #include <boost/fusion/sequence/comparison/equal_to.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/operators/comparison/greater_than.html b/doc/html/fusion/sequences/operators/comparison/greater_than.html
          index f10608af..ee28a0ef 100644
          --- a/doc/html/fusion/sequences/operators/comparison/greater_than.html
          +++ b/doc/html/fusion/sequences/operators/comparison/greater_than.html
          @@ -34,7 +34,7 @@
                       Lexicographically compare two sequences.
                     

          - + Synopsis
          @@ -43,12 +43,12 @@
           operator>(Seq1 const& a, Seq2 const& b);
           
          - + Parameters

          - +

          @@ -72,7 +72,7 @@
          - + Expression Semantics
          @@ -100,14 +100,14 @@ Semantics: Returns b < a.

          - + Header
           #include <boost/fusion/sequence/comparison/less_equal.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html b/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html
          index c559a726..a3b86905 100644
          --- a/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html
          +++ b/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html
          @@ -33,7 +33,7 @@
                       Lexicographically compare two sequences.
                     

          - + Synopsis
          @@ -42,12 +42,12 @@
           operator>=(Seq1 const& a, Seq2 const& b);
           
          - + Parameters

          - +

          @@ -71,7 +71,7 @@
          - + Expression Semantics
          @@ -99,14 +99,14 @@ Semantics: Returns !(a < b).

          - + Header
           #include <boost/fusion/sequence/comparison/greater_equal.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/operators/comparison/less_than.html b/doc/html/fusion/sequences/operators/comparison/less_than.html
          index 674810b8..d443cb7a 100644
          --- a/doc/html/fusion/sequences/operators/comparison/less_than.html
          +++ b/doc/html/fusion/sequences/operators/comparison/less_than.html
          @@ -34,7 +34,7 @@
                       Lexicographically compare two sequences.
                     

          - + Synopsis
          @@ -43,12 +43,12 @@
           operator<(Seq1 const& a, Seq2 const& b);
           
          - + Parameters

          - +

          @@ -72,7 +72,7 @@
          - + Expression Semantics
          @@ -102,14 +102,14 @@ and b.

          - + Header
           #include <boost/fusion/sequence/comparison/less.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/operators/comparison/less_than_equal.html b/doc/html/fusion/sequences/operators/comparison/less_than_equal.html
          index 4a26df94..6226965c 100644
          --- a/doc/html/fusion/sequences/operators/comparison/less_than_equal.html
          +++ b/doc/html/fusion/sequences/operators/comparison/less_than_equal.html
          @@ -34,7 +34,7 @@
                       Lexicographically compare two sequences.
                     

          - + Synopsis
          @@ -43,12 +43,12 @@
           operator<=(Seq1 const& a, Seq2 const& b);
           
          - + Parameters

          - +

          @@ -72,7 +72,7 @@
          - + Expression Semantics
          @@ -100,14 +100,14 @@ Semantics: Returns !(b < a).

          - + Header
           #include <boost/fusion/sequence/comparison/less_equal.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/operators/comparison/not_equal.html b/doc/html/fusion/sequences/operators/comparison/not_equal.html
          index 3852e2fa..44eca5e3 100644
          --- a/doc/html/fusion/sequences/operators/comparison/not_equal.html
          +++ b/doc/html/fusion/sequences/operators/comparison/not_equal.html
          @@ -33,7 +33,7 @@
                       Compare two sequences for inequality.
                     

          - + Synopsis
          @@ -42,12 +42,12 @@
           operator!=(Seq1 const& a, Seq2 const& b);
           
          - + Parameters

          - +

          @@ -71,7 +71,7 @@
          - + Expression Semantics
          @@ -102,14 +102,14 @@ Returns !(a == b).

          - + Header
           #include <boost/fusion/sequence/comparison/not_equal_to.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/operators/i_o.html b/doc/html/fusion/sequences/operators/i_o.html
          index 1c2eb76a..82747428 100644
          --- a/doc/html/fusion/sequences/operators/i_o.html
          +++ b/doc/html/fusion/sequences/operators/i_o.html
          @@ -115,7 +115,7 @@
                     representation may not be unambiguously parseable.
                   

          - + Header
          diff --git a/doc/html/fusion/sequences/operators/i_o/in.html b/doc/html/fusion/sequences/operators/i_o/in.html
          index 002fd6d2..48b0c1e2 100644
          --- a/doc/html/fusion/sequences/operators/i_o/in.html
          +++ b/doc/html/fusion/sequences/operators/i_o/in.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

          @@ -34,7 +34,7 @@ stream.

          - + Synopsis
          @@ -43,12 +43,12 @@
           operator>>(IStream& is, Sequence& seq);
           
          - + Parameters

          - +

          @@ -78,7 +78,7 @@
          - + Expression Semantics
          @@ -93,14 +93,14 @@ call is >> e.

          - + Header
           #include <boost/fusion/sequence/io/in.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/operators/i_o/out.html b/doc/html/fusion/sequences/operators/i_o/out.html
          index b0c27168..4bcf5a37 100644
          --- a/doc/html/fusion/sequences/operators/i_o/out.html
          +++ b/doc/html/fusion/sequences/operators/i_o/out.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

          @@ -34,7 +34,7 @@ stream.

          - + Synopsis
          @@ -43,12 +43,12 @@
           operator<<(OStream& os, Sequence& seq);
           
          - + Parameters

          - +

          @@ -78,7 +78,7 @@
          - + Expression Semantics
          @@ -93,14 +93,14 @@ call os << e.

          - + Header
           #include <boost/fusion/sequence/io/out.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/views.html b/doc/html/fusion/sequences/views.html
          index e820f532..c90a32f8 100644
          --- a/doc/html/fusion/sequences/views.html
          +++ b/doc/html/fusion/sequences/views.html
          @@ -44,7 +44,7 @@
                   very cheap to copy and be passed around by value.
                 

          - + Header

          diff --git a/doc/html/fusion/sequences/views/filter_view.html b/doc/html/fusion/sequences/views/filter_view.html
          index 522a59ef..155879d9 100644
          --- a/doc/html/fusion/sequences/views/filter_view.html
          +++ b/doc/html/fusion/sequences/views/filter_view.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

          @@ -37,14 +37,14 @@ only those elements for which its predicate evaluates to mpl::true_.

          - + Header
           #include <boost/fusion/sequence/view/filter_view.hpp>
           
          - + Synopsis
          @@ -52,13 +52,13 @@
           struct filter_view;
           
          - + Template parameters

          - +

          @@ -92,7 +92,7 @@
          - + Model of
          • - + Expression Semantics
            @@ -130,7 +130,7 @@

            - +

            @@ -165,7 +165,7 @@
            - + Example
            diff --git a/doc/html/fusion/sequences/views/iterator_range.html b/doc/html/fusion/sequences/views/iterator_range.html
            index 504c2891..296ff8b3 100644
            --- a/doc/html/fusion/sequences/views/iterator_range.html
            +++ b/doc/html/fusion/sequences/views/iterator_range.html
            @@ -26,7 +26,7 @@
             
             
            - + Description

            @@ -34,14 +34,14 @@ a sub-range of its underlying sequence delimited by a pair of iterators.

            - + Header
             #include <boost/fusion/sequence/view/iterator_range.hpp>
             
            - + Synopsis
            @@ -49,13 +49,13 @@
             struct iterator_range;
             
            - + Template parameters

            - +

            @@ -87,7 +87,7 @@
            - + Model of
            • - + Expression Semantics
              @@ -127,7 +127,7 @@

              - +

              @@ -165,7 +165,7 @@
              - + Example
              diff --git a/doc/html/fusion/sequences/views/joint_view.html b/doc/html/fusion/sequences/views/joint_view.html
              index 7cc7416a..823a5926 100644
              --- a/doc/html/fusion/sequences/views/joint_view.html
              +++ b/doc/html/fusion/sequences/views/joint_view.html
              @@ -26,7 +26,7 @@
               
               
              - + Description

              @@ -34,14 +34,14 @@ which is a concatenation of two sequences.

              - + Header
               #include <boost/fusion/sequence/view/joint_view.hpp>
               
              - + Synopsis
              @@ -49,13 +49,13 @@
               struct joint_view;
               
              - + Template parameters

              - +

              @@ -91,7 +91,7 @@
              - + Model of
              • - + Expression Semantics
                @@ -131,7 +131,7 @@

                - +

                @@ -166,7 +166,7 @@
                - + Example
                diff --git a/doc/html/fusion/sequences/views/reverse_view.html b/doc/html/fusion/sequences/views/reverse_view.html
                index e2d7fbf3..9dd4f872 100644
                --- a/doc/html/fusion/sequences/views/reverse_view.html
                +++ b/doc/html/fusion/sequences/views/reverse_view.html
                @@ -31,14 +31,14 @@
                           and the last element will be its first.
                         

                - + Header
                 #include <boost/fusion/sequence/view/reverse_view.hpp>
                 
                - + Synopsis
                @@ -46,13 +46,13 @@
                 struct reverse_view;
                 
                - + Template parameters

                - +

                @@ -77,7 +77,7 @@
                - + Model of
                • - + Expression Semantics
                  @@ -114,7 +114,7 @@

                  - +

                  @@ -148,7 +148,7 @@
                  - + Example
                  diff --git a/doc/html/fusion/sequences/views/single_view.html b/doc/html/fusion/sequences/views/single_view.html
                  index 1edc1b25..beb90a80 100644
                  --- a/doc/html/fusion/sequences/views/single_view.html
                  +++ b/doc/html/fusion/sequences/views/single_view.html
                  @@ -30,14 +30,14 @@
                             a value as a single element sequence.
                           

                  - + Header
                   #include <boost/fusion/sequence/view/single_view.hpp>
                   
                  - + Synopsis
                  @@ -45,13 +45,13 @@
                   struct single_view;
                   
                  - + Template parameters

                  - +

                  @@ -73,7 +73,7 @@
                  - + Model of
                  • - + Expression Semantics
                    @@ -109,7 +109,7 @@

                    - +

                    @@ -144,7 +144,7 @@
                    - + Example
                    diff --git a/doc/html/fusion/sequences/views/transform_view.html b/doc/html/fusion/sequences/views/transform_view.html
                    index 139601d3..e3614d17 100644
                    --- a/doc/html/fusion/sequences/views/transform_view.html
                    +++ b/doc/html/fusion/sequences/views/transform_view.html
                    @@ -34,14 +34,14 @@
                               Traversal Concept) of its underlying sequence.
                             

                    - + Header
                     #include <boost/fusion/sequence/view/transform_view.hpp>
                     
                    - + Synopsis

                    @@ -59,13 +59,13 @@ struct transform_view;

                    - + Template parameters

                    - +

                    @@ -119,7 +119,7 @@
                    - + Model of
                    • @@ -174,7 +174,7 @@
                    - + Expression Semantics
                    @@ -192,7 +192,7 @@

                    - +

                    @@ -242,7 +242,7 @@
                    - + Example
                    diff --git a/doc/html/fusion/sequences/views/zip_view.html b/doc/html/fusion/sequences/views/zip_view.html
                    index 30e29b55..cc351dbe 100644
                    --- a/doc/html/fusion/sequences/views/zip_view.html
                    +++ b/doc/html/fusion/sequences/views/zip_view.html
                    @@ -26,7 +26,7 @@
                     
                     
                    - + Description

                    @@ -37,14 +37,14 @@ of references to the component _sequence_s.

                    - + Header
                     #include <boost/fusion/sequence/view/zip_view.hpp>
                     
                    - + Synopsis
                    @@ -52,13 +52,13 @@
                     struct zip_view;
                     
                    - + Template parameters

                    - +

                    @@ -82,7 +82,7 @@
                    - + Model of
                    • - + Expression Semantics
                      @@ -118,7 +118,7 @@

                      - +

                      @@ -152,7 +152,7 @@
                      - + Example
                      diff --git a/doc/html/fusion/support/category_of.html b/doc/html/fusion/support/category_of.html
                      index 52e3b9e1..dd6a2fcf 100644
                      --- a/doc/html/fusion/support/category_of.html
                      +++ b/doc/html/fusion/support/category_of.html
                      @@ -26,7 +26,7 @@
                       
                       

                      - + Description

                      @@ -36,7 +36,7 @@ Sequence Concepts).

                      - + Synopsis

                      @@ -50,12 +50,12 @@
                       }
                       

                      - + Parameters

                      - +

                      @@ -77,7 +77,7 @@

                      - + Expression Semantics

                      @@ -134,14 +134,14 @@ of a particular Sequence or Iterator.

                      - + Header

                       #include <boost/fusion/support/category_of.hpp>
                       

                      - + Example

                      diff --git a/doc/html/fusion/support/is_sequence.html b/doc/html/fusion/support/is_sequence.html
                      index c937264d..275e137d 100644
                      --- a/doc/html/fusion/support/is_sequence.html
                      +++ b/doc/html/fusion/support/is_sequence.html
                      @@ -26,7 +26,7 @@
                       
                       

                      - + Description

                      @@ -37,7 +37,7 @@ conforming sequences.

                      - + Synopsis

                      @@ -51,12 +51,12 @@
                       }
                       

                      - + Parameters

                      - +

                      @@ -78,7 +78,7 @@

                      - + Expression Semantics

                      @@ -95,14 +95,14 @@ otherwise.

                      - + Header

                       #include <boost/fusion/support/is_sequence.hpp>
                       

                      - + Example

                      diff --git a/doc/html/fusion/support/is_view.html b/doc/html/fusion/support/is_view.html
                      index fedd2a6a..db32826a 100644
                      --- a/doc/html/fusion/support/is_view.html
                      +++ b/doc/html/fusion/support/is_view.html
                      @@ -26,7 +26,7 @@
                       
                       

                      - + Description

                      @@ -40,7 +40,7 @@ specialized to accomodate clients providing Fusion conforming views.

                      - + Synopsis

                      @@ -54,12 +54,12 @@
                       }
                       

                      - + Parameters

                      - +

                      @@ -81,7 +81,7 @@

                      - + Expression Semantics

                      @@ -97,14 +97,14 @@
                               otherwise.
                             

                      - + Header

                       #include <boost/fusion/support/is_view.hpp>
                       

                      - + Example

                      diff --git a/doc/html/fusion/support/pair.html b/doc/html/fusion/support/pair.html
                      index 4535ab65..8851cc0a 100644
                      --- a/doc/html/fusion/support/pair.html
                      +++ b/doc/html/fusion/support/pair.html
                      @@ -26,7 +26,7 @@
                       
                       

                      - + Description

                      @@ -37,7 +37,7 @@ for example.

                      - + Synopsis

                      @@ -45,12 +45,12 @@
                       struct pair;
                       

                      - + Template parameters

                      - +

                      @@ -106,12 +106,12 @@

                      - + Expression Semantics

                      - +

                      @@ -183,14 +183,14 @@

                      - + Header

                       #include <boost/fusion/support/pair.hpp>
                       

                      - + Example

                      diff --git a/doc/html/fusion/support/tag_of.html b/doc/html/fusion/support/tag_of.html
                      index 012840fb..ddd54978 100644
                      --- a/doc/html/fusion/support/tag_of.html
                      +++ b/doc/html/fusion/support/tag_of.html
                      @@ -26,7 +26,7 @@
                       
                       

                      - + Description

                      @@ -43,7 +43,7 @@ conforming sequences.

                      - + Synopsis

                      @@ -62,7 +62,7 @@
                             

                      - +

                      @@ -84,7 +84,7 @@

                      - + Expression Semantics

                      @@ -98,14 +98,14 @@
                               with T.
                             

                      - + Header

                       #include <boost/fusion/support/tag_of.hpp>
                       

                      - + Example

                      diff --git a/doc/html/fusion/tuples/class_template_tuple.html b/doc/html/fusion/tuples/class_template_tuple.html
                      index 26b5015d..dc3d76d0 100644
                      --- a/doc/html/fusion/tuples/class_template_tuple.html
                      +++ b/doc/html/fusion/tuples/class_template_tuple.html
                      @@ -48,7 +48,7 @@
                               in future releases of fusion.
                             

                      - + Synopsis

                      @@ -60,7 +60,7 @@
                       class tuple;
                       

                      - + Header

                      diff --git a/doc/html/fusion/tuples/class_template_tuple/construction.html b/doc/html/fusion/tuples/class_template_tuple/construction.html
                      index abb7f4bd..18757b91 100644
                      --- a/doc/html/fusion/tuples/class_template_tuple/construction.html
                      +++ b/doc/html/fusion/tuples/class_template_tuple/construction.html
                      @@ -27,7 +27,7 @@
                       
                       
                      - + Description

                      @@ -38,7 +38,7 @@ in this section.

                      - + Specification
                      diff --git a/doc/html/fusion/tuples/class_template_tuple/element_access.html b/doc/html/fusion/tuples/class_template_tuple/element_access.html index 3dc0ab26..4041f27e 100644 --- a/doc/html/fusion/tuples/class_template_tuple/element_access.html +++ b/doc/html/fusion/tuples/class_template_tuple/element_access.html @@ -31,7 +31,7 @@ access">Element access
                  - + Description

                  @@ -40,7 +40,7 @@ function to provide access to it's elements by zero based numeric index.

                  - + Specification
                  diff --git a/doc/html/fusion/tuples/class_template_tuple/relational_operators.html b/doc/html/fusion/tuples/class_template_tuple/relational_operators.html
                  index 7b2e0296..0f7b8566 100644
                  --- a/doc/html/fusion/tuples/class_template_tuple/relational_operators.html
                  +++ b/doc/html/fusion/tuples/class_template_tuple/relational_operators.html
                  @@ -30,7 +30,7 @@
                           operators">Relational
                           operators
            - + Description

            @@ -38,7 +38,7 @@ Tuple provides the standard boolean relational operators.

            - + Specification
            diff --git a/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html b/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html index 6b73088b..ad818f84 100644 --- a/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html +++ b/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html @@ -30,7 +30,7 @@ creation functions">Tuple creation functions
          - + Description

          @@ -40,7 +40,7 @@ functions are described in this section.

          - + Specification
          diff --git a/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html b/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html
          index 9062b1a2..cea1931b 100644
          --- a/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html
          +++ b/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html
          @@ -31,7 +31,7 @@
                   helper classes">Tuple
                   helper classes
          - + Description

          @@ -40,7 +40,7 @@ tuple size, and the element types.

          - + Specification
          diff --git a/doc/html/fusion/tuples/pairs.html b/doc/html/fusion/tuples/pairs.html
          index 72e067ab..f9705085 100644
          --- a/doc/html/fusion/tuples/pairs.html
          +++ b/doc/html/fusion/tuples/pairs.html
          @@ -27,7 +27,7 @@
           
           

          - + Description

          @@ -36,7 +36,7 @@ as if it were a 2 element tuple.

          - + Specification

          diff --git a/doc/html/index.html b/doc/html/index.html
          index 2d4024f4..35f068d6 100644
          --- a/doc/html/index.html
          +++ b/doc/html/index.html
          @@ -30,7 +30,7 @@
           
          -

          +

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

          @@ -57,7 +57,7 @@
          - +

          Last revised: August 16, 2006 at 16:16:24 GMT

          Last revised: September 16, 2006 at 05:15:36 GMT


          diff --git a/doc/preface.qbk b/doc/preface.qbk index 1c838c66..f6a9ff95 100644 --- a/doc/preface.qbk +++ b/doc/preface.qbk @@ -5,7 +5,7 @@ [heading Description] -Fusion is a library for working with hetrogenous collections of data, +Fusion is a library for working with heterogenous collections of data, commonly referred to as tuples. A set of containers (vector, list, set and map) is provided, along with views that provide a transformed presentation of their underlying data. Collectively the containers and views are referred to From 147abb8cddee1acc2ada4c162b309857764ff043 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Sun, 17 Sep 2006 13:05:25 +0000 Subject: [PATCH 007/234] Tweaks and addition of main header mpl.hpp to make using MPL and Fusion easy [SVN r35142] --- .../fusion/iterator/mpl/fusion_iterator.hpp | 2 ++ include/boost/fusion/mpl.hpp | 16 ++++++++++++++++ .../support/detail/mpl_iterator_category.hpp | 18 ++++++++++++++++++ 3 files changed, 36 insertions(+) create mode 100644 include/boost/fusion/mpl.hpp diff --git a/include/boost/fusion/iterator/mpl/fusion_iterator.hpp b/include/boost/fusion/iterator/mpl/fusion_iterator.hpp index 5c655d47..253d35bc 100644 --- a/include/boost/fusion/iterator/mpl/fusion_iterator.hpp +++ b/include/boost/fusion/iterator/mpl/fusion_iterator.hpp @@ -13,6 +13,7 @@ #include #include #include +#include #include #include #include @@ -23,6 +24,7 @@ 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 Iterator iterator; }; diff --git a/include/boost/fusion/mpl.hpp b/include/boost/fusion/mpl.hpp new file mode 100644 index 00000000..3cf71d2a --- /dev/null +++ b/include/boost/fusion/mpl.hpp @@ -0,0 +1,16 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_MPL_09172006_2049) +#define FUSION_MPL_09172006_2049 + +// The fusion <--> MPL link headers +#include +#include +#include + +#endif diff --git a/include/boost/fusion/support/detail/mpl_iterator_category.hpp b/include/boost/fusion/support/detail/mpl_iterator_category.hpp index 0a9a8d27..771c08a8 100644 --- a/include/boost/fusion/support/detail/mpl_iterator_category.hpp +++ b/include/boost/fusion/support/detail/mpl_iterator_category.hpp @@ -44,6 +44,24 @@ namespace boost { namespace fusion { namespace detail { typedef random_access_traversal_tag type; }; + + template <> + struct mpl_iterator_category + { + typedef forward_traversal_tag type; + }; + + template <> + struct mpl_iterator_category + { + typedef bidirectional_traversal_tag type; + }; + + template <> + struct mpl_iterator_category + { + typedef random_access_traversal_tag type; + }; }}} #endif From 3f06921d113ffbc66501c3fe314f56e114a39a08 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Sun, 17 Sep 2006 13:07:24 +0000 Subject: [PATCH 008/234] added a cookbook directory for cookbook style tutorial usage of Fusion. added the first cookbook tutorial. [SVN r35143] --- example/cookbook/fill_em_up.cpp | 99 +++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 example/cookbook/fill_em_up.cpp diff --git a/example/cookbook/fill_em_up.cpp b/example/cookbook/fill_em_up.cpp new file mode 100644 index 00000000..321068d7 --- /dev/null +++ b/example/cookbook/fill_em_up.cpp @@ -0,0 +1,99 @@ +/*============================================================================= + Copyright (c) 2006 Joel de Guzman + + Use, modification and distribution is 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) + + Problem: + + So... you have an input sequence I and a target vector R. You want to + copy I into R. But, I may have less elements than the result vector R. + For those elements not in R, you want them to be default conctructed. + Here's a case: + + I: list + R: vector + + You want the elements at the right of I not in R (i.e. int, short) + default constructed. Those at the left, found in both I and R, you want + to simply copy from I. + +==============================================================================*/ + +// We'll use these containers +#include +#include + +// For doing I/O +#include + +// We'll use join and advance +#include +#include + +// The fusion <--> MPL link header +#include + +// Same-o same-o +#include +#include + +int +main() +{ + using namespace boost::fusion; + using namespace boost; + + // Let's specify our own tuple delimeters for nicer printing + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + + // Here's your input sequence + typedef list I; + I i(123.456, "Hello"); + + // Here's your output sequence. For now, it is just a typedef + typedef vector R; + + // Let's get the sizes of the sequences. Yeah, you already know that. + // But with templates, where you are simply given, say, R and I, + // corresponding to the types of the sequences, you'll have to deal + // with it generically. + static int const r_size = result_of::size::value; + static int const i_size = result_of::size::value; + + // Make sure that I has no more elements than R + BOOST_STATIC_ASSERT(i_size <= r_size); + + // Let's get the begin and end iterator types of the output sequence + // There's no actual vector yet. We just want to know the types. + typedef result_of::begin::type r_begin; + typedef result_of::end::type r_end; + + // Let's skip i_size elements from r_begin. Again, we just want to know the type. + typedef result_of::advance_c::type r_advance; + + // Now, make MPL iterators from r_advance and r_end. Ditto, just types. + typedef mpl::fusion_iterator mpl_r_advance; + typedef mpl::fusion_iterator mpl_r_end; + + // Make an mpl::iterator_range from the MPL iterators we just created + // You guessed it! --just a type. + typedef mpl::iterator_range tail; + + // Use join to join the input sequence and our mpl::iterator_range + // Our mpl::iterator_range is 'tail'. Here, we'll actually instantiate + // 'tail'. Notice that this is a flyweight object, typically just 1 byte + // in size -- it doesn't really hold any data, but it is a fully conforming + // sequence nonetheless. When asked to return its elements, 'tail' returns + // each element default constructed. Breeds like a rabbit! + R r(join(i, tail())); + + // Then finally, print the result: + std::cout << r << std::endl; + + return 0; +} + From 1a6f4f948c77e105d64106bb6010d6df500c83b5 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Sun, 17 Sep 2006 13:19:48 +0000 Subject: [PATCH 009/234] tweaks [SVN r35144] --- example/cookbook/fill_em_up.cpp | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/example/cookbook/fill_em_up.cpp b/example/cookbook/fill_em_up.cpp index 321068d7..1851529f 100644 --- a/example/cookbook/fill_em_up.cpp +++ b/example/cookbook/fill_em_up.cpp @@ -9,7 +9,8 @@ So... you have an input sequence I and a target vector R. You want to copy I into R. But, I may have less elements than the result vector R. - For those elements not in R, you want them to be default conctructed. + For those elements not in R, you want them to be default constructed. + Here's a case: I: list @@ -18,17 +19,19 @@ You want the elements at the right of I not in R (i.e. int, short) default constructed. Those at the left, found in both I and R, you want to simply copy from I. + + Of course you want to be able to handle any type of I and R. ==============================================================================*/ -// We'll use these containers +// We'll use these containers as examples #include #include // For doing I/O #include -// We'll use join and advance +// We'll use join and advance for processing #include #include @@ -58,13 +61,15 @@ main() typedef vector R; // Let's get the sizes of the sequences. Yeah, you already know that. - // But with templates, where you are simply given, say, R and I, - // corresponding to the types of the sequences, you'll have to deal - // with it generically. + // But with templates, you are simply given, say, R and I, corresponding + // to the types of the sequences. You'll have to deal with it generically. static int const r_size = result_of::size::value; static int const i_size = result_of::size::value; // Make sure that I has no more elements than R + // Be nice and catch obvious errors earlier rather than later. + // Without this assert, the mistake will still be caught by Fusion, + // but the error will point to somewhere really obscure. BOOST_STATIC_ASSERT(i_size <= r_size); // Let's get the begin and end iterator types of the output sequence @@ -86,9 +91,11 @@ main() // Use join to join the input sequence and our mpl::iterator_range // Our mpl::iterator_range is 'tail'. Here, we'll actually instantiate // 'tail'. Notice that this is a flyweight object, typically just 1 byte - // in size -- it doesn't really hold any data, but it is a fully conforming + // in size -- it doesn't really hold any data, but is a fully conforming // sequence nonetheless. When asked to return its elements, 'tail' returns // each element default constructed. Breeds like a rabbit! + + // Construct R from the joined sequences: R r(join(i, tail())); // Then finally, print the result: From 425030e0eb225ddf72596af6750a612271fd5b57 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Thu, 21 Sep 2006 12:25:27 +0000 Subject: [PATCH 010/234] renamed ftag to fusion_tag [SVN r35247] --- doc/extension.qbk | 6 +++--- doc/html/fusion/extension.html | 6 +++--- doc/html/fusion/support/tag_of.html | 2 +- doc/support.qbk | 2 +- example/extension/example_struct_iterator.hpp | 2 +- .../boost/fusion/sequence/adapted/array/array_iterator.hpp | 2 +- include/boost/fusion/sequence/adapted/mpl/mpl_iterator.hpp | 2 +- .../sequence/adapted/std_pair/Attic/std_pair_iterator.hpp | 2 +- .../fusion/sequence/adapted/std_pair/std_pair_iterator.hpp | 2 +- include/boost/fusion/sequence/container/list/cons.hpp | 4 ++-- .../boost/fusion/sequence/container/list/cons_iterator.hpp | 4 ++-- include/boost/fusion/sequence/container/map/map.hpp | 2 +- include/boost/fusion/sequence/container/set/set.hpp | 2 +- .../fusion/sequence/container/vector/detail/vector_n.hpp | 2 +- include/boost/fusion/sequence/container/vector/vector.hpp | 2 +- include/boost/fusion/sequence/container/vector/vector10.hpp | 2 +- .../fusion/sequence/container/vector/vector_iterator.hpp | 2 +- .../boost/fusion/sequence/view/filter_view/filter_view.hpp | 2 +- .../sequence/view/filter_view/filter_view_iterator.hpp | 2 +- .../fusion/sequence/view/iterator_range/iterator_range.hpp | 2 +- .../boost/fusion/sequence/view/joint_view/joint_view.hpp | 2 +- .../fusion/sequence/view/joint_view/joint_view_iterator.hpp | 2 +- .../fusion/sequence/view/reverse_view/detail/next_impl.hpp | 2 +- .../fusion/sequence/view/reverse_view/detail/prior_impl.hpp | 2 +- .../fusion/sequence/view/reverse_view/reverse_view.hpp | 2 +- .../sequence/view/reverse_view/reverse_view_iterator.hpp | 2 +- .../boost/fusion/sequence/view/single_view/single_view.hpp | 2 +- .../sequence/view/single_view/single_view_iterator.hpp | 4 ++-- .../fusion/sequence/view/transform_view/transform_view.hpp | 4 ++-- .../view/transform_view/transform_view_iterator.hpp | 4 ++-- include/boost/fusion/sequence/view/zip_view/zip_view.hpp | 2 +- .../fusion/sequence/view/zip_view/zip_view_iterator.hpp | 2 +- include/boost/fusion/support/tag_of.hpp | 6 +++--- 33 files changed, 44 insertions(+), 44 deletions(-) diff --git a/doc/extension.qbk b/doc/extension.qbk index f422c8fa..ba9c550a 100644 --- a/doc/extension.qbk +++ b/doc/extension.qbk @@ -154,7 +154,7 @@ To understand how `value_of_impl` is used by the library we will look at the imp struct __value_of__ { typedef typename - extension::value_of_impl:: + extension::value_of_impl:: template apply::type type; }; @@ -209,7 +209,7 @@ To see how `deref_impl` is used, lets have a look at the implementation of __der struct __deref__ { typedef typename - deref_impl:: + deref_impl:: template apply::type type; }; @@ -220,7 +220,7 @@ To see how `deref_impl` is used, lets have a look at the implementation of __der __deref__(Iterator const& i) { typename __result_of_deref__::type result = - extension::deref_impl:: + extension::deref_impl:: template apply::call(i); return result; } diff --git a/doc/html/fusion/extension.html b/doc/html/fusion/extension.html index da99aca6..9ecba184 100644 --- a/doc/html/fusion/extension.html +++ b/doc/html/fusion/extension.html @@ -242,7 +242,7 @@ struct value_of { typedef typename - extension::value_of_impl<typename Iterator::ftag>:: + extension::value_of_impl<typename Iterator::fusion_tag>:: template apply<Iterator>::type type; }; @@ -305,7 +305,7 @@ struct deref { typedef typename - deref_impl<typename Iterator::ftag>:: + deref_impl<typename Iterator::fusion_tag>:: template apply<Iterator>::type type; }; @@ -316,7 +316,7 @@ deref(Iterator const& i) { typename result_of::deref<Iterator>::type result = - extension::deref_impl<typename Iterator::ftag>:: + extension::deref_impl<typename Iterator::fusion_tag>:: template apply<Iterator>::call(i); return result; } diff --git a/doc/html/fusion/support/tag_of.html b/doc/html/fusion/support/tag_of.html index ddd54978..dcaa8373 100644 --- a/doc/html/fusion/support/tag_of.html +++ b/doc/html/fusion/support/tag_of.html @@ -34,7 +34,7 @@ The purpose of the tag is to enable tag dispatching from Intrinsic functions to implementations appropriate for the type. The default implementation - of tag_of returns T::ftag + of tag_of returns T::fusion_tag for a given type T, if such a member typedef exists.

          diff --git a/doc/support.qbk b/doc/support.qbk index 7c04de0c..66ecec7c 100644 --- a/doc/support.qbk +++ b/doc/support.qbk @@ -114,7 +114,7 @@ may be specialized to accomodate clients providing Fusion conforming views. All conforming Fusion sequences and iterators have an associated tag type. The purpose of the tag is to enable __tag_dispatching__ from __intrinsic__ functions to implementations appropriate for the type. The default implementation -of `tag_of` returns `T::ftag` for a given type `T`, if such a member typedef exists. +of `tag_of` returns `T::fusion_tag` for a given type `T`, if such a member typedef exists. This metafunction may be specialized to accomodate clients providing Fusion conforming sequences. diff --git a/example/extension/example_struct_iterator.hpp b/example/extension/example_struct_iterator.hpp index 3f60b914..04425acc 100644 --- a/example/extension/example_struct_iterator.hpp +++ b/example/extension/example_struct_iterator.hpp @@ -34,7 +34,7 @@ namespace boost { namespace fusion { BOOST_STATIC_ASSERT(Pos >=0 && Pos < 3); typedef Struct struct_type; typedef mpl::int_ index; - typedef example_struct_iterator_tag ftag; + typedef example_struct_iterator_tag fusion_tag; typedef random_access_traversal_tag category; example_struct_iterator(Struct& str) diff --git a/include/boost/fusion/sequence/adapted/array/array_iterator.hpp b/include/boost/fusion/sequence/adapted/array/array_iterator.hpp index aa6e16a6..93a0fa0f 100644 --- a/include/boost/fusion/sequence/adapted/array/array_iterator.hpp +++ b/include/boost/fusion/sequence/adapted/array/array_iterator.hpp @@ -38,7 +38,7 @@ namespace boost { namespace fusion { BOOST_MPL_ASSERT_RELATION(Pos,<=,std::size_t(Array::static_size)); typedef mpl::size_t index; - typedef array_iterator_tag ftag; + typedef array_iterator_tag fusion_tag; typedef random_access_traversal_tag category; typedef Array array_type; typedef array_iterator< diff --git a/include/boost/fusion/sequence/adapted/mpl/mpl_iterator.hpp b/include/boost/fusion/sequence/adapted/mpl/mpl_iterator.hpp index 43e589c3..68612a44 100644 --- a/include/boost/fusion/sequence/adapted/mpl/mpl_iterator.hpp +++ b/include/boost/fusion/sequence/adapted/mpl/mpl_iterator.hpp @@ -27,7 +27,7 @@ namespace boost { namespace fusion struct mpl_iterator : iterator_base > { - typedef mpl_iterator_tag ftag; + typedef mpl_iterator_tag fusion_tag; typedef typename detail::mpl_iterator_category< typename Iterator::category>::type category; diff --git a/include/boost/fusion/sequence/adapted/std_pair/Attic/std_pair_iterator.hpp b/include/boost/fusion/sequence/adapted/std_pair/Attic/std_pair_iterator.hpp index 0a5a1c92..1121e315 100644 --- a/include/boost/fusion/sequence/adapted/std_pair/Attic/std_pair_iterator.hpp +++ b/include/boost/fusion/sequence/adapted/std_pair/Attic/std_pair_iterator.hpp @@ -32,7 +32,7 @@ namespace boost { namespace fusion : iterator_base > { typedef mpl::int_ index; - typedef std_pair_iterator_tag ftag; + typedef std_pair_iterator_tag fusion_tag; typedef random_access_traversal_tag category; typedef std_pair_iterator_identity< typename add_const::type, N> identity; diff --git a/include/boost/fusion/sequence/adapted/std_pair/std_pair_iterator.hpp b/include/boost/fusion/sequence/adapted/std_pair/std_pair_iterator.hpp index 0a5a1c92..1121e315 100644 --- a/include/boost/fusion/sequence/adapted/std_pair/std_pair_iterator.hpp +++ b/include/boost/fusion/sequence/adapted/std_pair/std_pair_iterator.hpp @@ -32,7 +32,7 @@ namespace boost { namespace fusion : iterator_base > { typedef mpl::int_ index; - typedef std_pair_iterator_tag ftag; + typedef std_pair_iterator_tag fusion_tag; typedef random_access_traversal_tag category; typedef std_pair_iterator_identity< typename add_const::type, N> identity; diff --git a/include/boost/fusion/sequence/container/list/cons.hpp b/include/boost/fusion/sequence/container/list/cons.hpp index 41723596..8be6b239 100644 --- a/include/boost/fusion/sequence/container/list/cons.hpp +++ b/include/boost/fusion/sequence/container/list/cons.hpp @@ -36,7 +36,7 @@ namespace boost { namespace fusion struct nil : sequence_base { typedef mpl::int_<0> size; - typedef cons_tag ftag; + typedef cons_tag fusion_tag; typedef fusion_sequence_tag tag; // this gets picked up by MPL typedef mpl::false_ is_view; typedef forward_sequence_tag category; @@ -59,7 +59,7 @@ namespace boost { namespace fusion struct cons : sequence_base > { typedef mpl::int_ size; - typedef cons_tag ftag; + typedef cons_tag fusion_tag; typedef fusion_sequence_tag tag; // this gets picked up by MPL typedef mpl::false_ is_view; typedef forward_sequence_tag category; diff --git a/include/boost/fusion/sequence/container/list/cons_iterator.hpp b/include/boost/fusion/sequence/container/list/cons_iterator.hpp index 48a5179a..af25fd1e 100644 --- a/include/boost/fusion/sequence/container/list/cons_iterator.hpp +++ b/include/boost/fusion/sequence/container/list/cons_iterator.hpp @@ -29,7 +29,7 @@ namespace boost { namespace fusion template struct cons_iterator : iterator_base > { - typedef cons_iterator_tag ftag; + typedef cons_iterator_tag fusion_tag; typedef forward_traversal_tag category; typedef Cons cons_type; typedef cons_iterator_identity< @@ -45,7 +45,7 @@ namespace boost { namespace fusion struct nil_iterator : iterator_base { typedef forward_traversal_tag category; - typedef cons_iterator_tag ftag; + typedef cons_iterator_tag fusion_tag; typedef nil cons_type; typedef cons_iterator_identity< add_const::type> diff --git a/include/boost/fusion/sequence/container/map/map.hpp b/include/boost/fusion/sequence/container/map/map.hpp index 21976dfb..ddd9807b 100644 --- a/include/boost/fusion/sequence/container/map/map.hpp +++ b/include/boost/fusion/sequence/container/map/map.hpp @@ -32,7 +32,7 @@ namespace boost { namespace fusion template struct map : sequence_base > { - typedef map_tag ftag; + typedef map_tag fusion_tag; typedef fusion_sequence_tag tag; // this gets picked up by MPL typedef forward_sequence_tag category; typedef mpl::false_ is_view; diff --git a/include/boost/fusion/sequence/container/set/set.hpp b/include/boost/fusion/sequence/container/set/set.hpp index 2a47f523..81db3a7f 100644 --- a/include/boost/fusion/sequence/container/set/set.hpp +++ b/include/boost/fusion/sequence/container/set/set.hpp @@ -31,7 +31,7 @@ namespace boost { namespace fusion template struct set : sequence_base > { - typedef set_tag ftag; + typedef set_tag fusion_tag; typedef fusion_sequence_tag tag; // this gets picked up by MPL typedef forward_sequence_tag category; typedef mpl::false_ is_view; diff --git a/include/boost/fusion/sequence/container/vector/detail/vector_n.hpp b/include/boost/fusion/sequence/container/vector/detail/vector_n.hpp index 4d5a965c..9c967e4d 100644 --- a/include/boost/fusion/sequence/container/vector/detail/vector_n.hpp +++ b/include/boost/fusion/sequence/container/vector/detail/vector_n.hpp @@ -81,7 +81,7 @@ typedef BOOST_PP_CAT(vector, N) this_type; typedef BOOST_PP_CAT(vector_data, N) base_type; typedef mpl::BOOST_PP_CAT(vector, N) types; - typedef vector_tag ftag; + typedef vector_tag fusion_tag; typedef fusion_sequence_tag tag; // this gets picked up by MPL typedef mpl::false_ is_view; typedef random_access_sequence_tag category; diff --git a/include/boost/fusion/sequence/container/vector/vector.hpp b/include/boost/fusion/sequence/container/vector/vector.hpp index 5334973c..46f8246d 100644 --- a/include/boost/fusion/sequence/container/vector/vector.hpp +++ b/include/boost/fusion/sequence/container/vector/vector.hpp @@ -40,7 +40,7 @@ namespace boost { namespace fusion public: typedef typename vector_n::types types; - typedef typename vector_n::ftag ftag; + typedef typename vector_n::fusion_tag fusion_tag; typedef typename vector_n::tag tag; typedef typename vector_n::size size; typedef typename vector_n::category category; diff --git a/include/boost/fusion/sequence/container/vector/vector10.hpp b/include/boost/fusion/sequence/container/vector/vector10.hpp index 8b760b0e..4f092128 100644 --- a/include/boost/fusion/sequence/container/vector/vector10.hpp +++ b/include/boost/fusion/sequence/container/vector/vector10.hpp @@ -43,7 +43,7 @@ namespace boost { namespace fusion struct vector0 : sequence_base { typedef mpl::vector0<> types; - typedef vector_tag ftag; + typedef vector_tag fusion_tag; typedef fusion_sequence_tag tag; // this gets picked up by MPL typedef mpl::false_ is_view; typedef random_access_sequence_tag category; diff --git a/include/boost/fusion/sequence/container/vector/vector_iterator.hpp b/include/boost/fusion/sequence/container/vector/vector_iterator.hpp index e76f9e35..4a1c1431 100644 --- a/include/boost/fusion/sequence/container/vector/vector_iterator.hpp +++ b/include/boost/fusion/sequence/container/vector/vector_iterator.hpp @@ -32,7 +32,7 @@ namespace boost { namespace fusion { typedef mpl::int_ index; typedef Vector vector; - typedef vector_iterator_tag ftag; + typedef vector_iterator_tag fusion_tag; typedef random_access_traversal_tag category; typedef vector_iterator_identity< typename add_const::type, N> identity; diff --git a/include/boost/fusion/sequence/view/filter_view/filter_view.hpp b/include/boost/fusion/sequence/view/filter_view/filter_view.hpp index f6346eb0..4629e541 100644 --- a/include/boost/fusion/sequence/view/filter_view/filter_view.hpp +++ b/include/boost/fusion/sequence/view/filter_view/filter_view.hpp @@ -28,7 +28,7 @@ namespace boost { namespace fusion template struct filter_view : sequence_base > { - typedef filter_view_tag ftag; + typedef filter_view_tag fusion_tag; typedef fusion_sequence_tag tag; // this gets picked up by MPL typedef forward_sequence_tag category; typedef mpl::true_ is_view; diff --git a/include/boost/fusion/sequence/view/filter_view/filter_view_iterator.hpp b/include/boost/fusion/sequence/view/filter_view/filter_view_iterator.hpp index 2e469d5c..bf6a9aec 100644 --- a/include/boost/fusion/sequence/view/filter_view/filter_view_iterator.hpp +++ b/include/boost/fusion/sequence/view/filter_view/filter_view_iterator.hpp @@ -29,7 +29,7 @@ namespace boost { namespace fusion typedef convert_iterator last_converter; typedef typename last_converter::type last_iter; - typedef filter_view_iterator_tag ftag; + typedef filter_view_iterator_tag fusion_tag; typedef forward_traversal_tag category; typedef detail::static_find_if filter; typedef typename filter::type first_type; diff --git a/include/boost/fusion/sequence/view/iterator_range/iterator_range.hpp b/include/boost/fusion/sequence/view/iterator_range/iterator_range.hpp index c86f47e3..05856be2 100644 --- a/include/boost/fusion/sequence/view/iterator_range/iterator_range.hpp +++ b/include/boost/fusion/sequence/view/iterator_range/iterator_range.hpp @@ -28,7 +28,7 @@ namespace boost { namespace fusion { typedef typename convert_iterator::type begin_type; typedef typename convert_iterator::type end_type; - typedef iterator_range_tag ftag; + typedef iterator_range_tag fusion_tag; typedef fusion_sequence_tag tag; // this gets picked up by MPL typedef typename result_of::distance::type size; typedef mpl::true_ is_view; diff --git a/include/boost/fusion/sequence/view/joint_view/joint_view.hpp b/include/boost/fusion/sequence/view/joint_view/joint_view.hpp index 6e0ac9cc..1c5cb54b 100644 --- a/include/boost/fusion/sequence/view/joint_view/joint_view.hpp +++ b/include/boost/fusion/sequence/view/joint_view/joint_view.hpp @@ -30,7 +30,7 @@ namespace boost { namespace fusion template struct joint_view : sequence_base > { - typedef joint_view_tag ftag; + typedef joint_view_tag fusion_tag; typedef fusion_sequence_tag tag; // this gets picked up by MPL typedef forward_sequence_tag category; typedef mpl::true_ is_view; diff --git a/include/boost/fusion/sequence/view/joint_view/joint_view_iterator.hpp b/include/boost/fusion/sequence/view/joint_view/joint_view_iterator.hpp index 49ad4c33..ca93e418 100644 --- a/include/boost/fusion/sequence/view/joint_view/joint_view_iterator.hpp +++ b/include/boost/fusion/sequence/view/joint_view/joint_view_iterator.hpp @@ -33,7 +33,7 @@ namespace boost { namespace fusion typedef typename last_converter::type last_type; typedef typename concat_converter::type concat_type; - typedef joint_view_iterator_tag ftag; + typedef joint_view_iterator_tag fusion_tag; typedef forward_traversal_tag category; BOOST_STATIC_ASSERT((!result_of::equal_to::value)); diff --git a/include/boost/fusion/sequence/view/reverse_view/detail/next_impl.hpp b/include/boost/fusion/sequence/view/reverse_view/detail/next_impl.hpp index 3d3c6a30..3e075ce5 100644 --- a/include/boost/fusion/sequence/view/reverse_view/detail/next_impl.hpp +++ b/include/boost/fusion/sequence/view/reverse_view/detail/next_impl.hpp @@ -27,7 +27,7 @@ namespace boost { namespace fusion struct apply { typedef typename Iterator::first_type first_type; - typedef typename prior_impl:: + typedef typename prior_impl:: template apply wrapped; diff --git a/include/boost/fusion/sequence/view/reverse_view/detail/prior_impl.hpp b/include/boost/fusion/sequence/view/reverse_view/detail/prior_impl.hpp index bf5dc00e..3c9d63c3 100644 --- a/include/boost/fusion/sequence/view/reverse_view/detail/prior_impl.hpp +++ b/include/boost/fusion/sequence/view/reverse_view/detail/prior_impl.hpp @@ -27,7 +27,7 @@ namespace boost { namespace fusion struct apply { typedef typename Iterator::first_type first_type; - typedef typename next_impl:: + typedef typename next_impl:: template apply wrapped; diff --git a/include/boost/fusion/sequence/view/reverse_view/reverse_view.hpp b/include/boost/fusion/sequence/view/reverse_view/reverse_view.hpp index fe10ea6a..08ba4c61 100644 --- a/include/boost/fusion/sequence/view/reverse_view/reverse_view.hpp +++ b/include/boost/fusion/sequence/view/reverse_view/reverse_view.hpp @@ -30,7 +30,7 @@ namespace boost { namespace fusion template struct reverse_view : sequence_base > { - typedef reverse_view_tag ftag; + typedef reverse_view_tag fusion_tag; typedef fusion_sequence_tag tag; // this gets picked up by MPL typedef mpl::true_ is_view; diff --git a/include/boost/fusion/sequence/view/reverse_view/reverse_view_iterator.hpp b/include/boost/fusion/sequence/view/reverse_view/reverse_view_iterator.hpp index 54c61e7d..7ba2fedf 100644 --- a/include/boost/fusion/sequence/view/reverse_view/reverse_view_iterator.hpp +++ b/include/boost/fusion/sequence/view/reverse_view/reverse_view_iterator.hpp @@ -30,7 +30,7 @@ namespace boost { namespace fusion { typedef convert_iterator converter; typedef typename converter::type first_type; - typedef reverse_view_iterator_tag ftag; + typedef reverse_view_iterator_tag fusion_tag; typedef typename traits::category_of::type category; BOOST_STATIC_ASSERT(( diff --git a/include/boost/fusion/sequence/view/single_view/single_view.hpp b/include/boost/fusion/sequence/view/single_view/single_view.hpp index 5fc81edc..c0a32876 100644 --- a/include/boost/fusion/sequence/view/single_view/single_view.hpp +++ b/include/boost/fusion/sequence/view/single_view/single_view.hpp @@ -26,7 +26,7 @@ namespace boost { namespace fusion template struct single_view : sequence_base > { - typedef single_view_tag ftag; + typedef single_view_tag fusion_tag; typedef fusion_sequence_tag tag; // this gets picked up by MPL typedef forward_sequence_tag category; typedef mpl::true_ is_view; diff --git a/include/boost/fusion/sequence/view/single_view/single_view_iterator.hpp b/include/boost/fusion/sequence/view/single_view/single_view_iterator.hpp index e2a9bead..67492749 100644 --- a/include/boost/fusion/sequence/view/single_view/single_view_iterator.hpp +++ b/include/boost/fusion/sequence/view/single_view/single_view_iterator.hpp @@ -23,7 +23,7 @@ namespace boost { namespace fusion struct single_view_iterator_end : iterator_base > { - typedef single_view_iterator_tag ftag; + typedef single_view_iterator_tag fusion_tag; typedef forward_traversal_tag category; }; @@ -31,7 +31,7 @@ namespace boost { namespace fusion struct single_view_iterator : iterator_base > { - typedef single_view_iterator_tag ftag; + typedef single_view_iterator_tag fusion_tag; typedef forward_traversal_tag category; typedef typename SingleView::value_type value_type; typedef SingleView single_view_type; diff --git a/include/boost/fusion/sequence/view/transform_view/transform_view.hpp b/include/boost/fusion/sequence/view/transform_view/transform_view.hpp index b5158029..1209b0c2 100644 --- a/include/boost/fusion/sequence/view/transform_view/transform_view.hpp +++ b/include/boost/fusion/sequence/view/transform_view/transform_view.hpp @@ -35,7 +35,7 @@ namespace boost { namespace fusion struct transform_view : sequence_base > { BOOST_STATIC_ASSERT(result_of::size::value == result_of::size::value); - typedef transform_view2_tag ftag; + typedef transform_view2_tag fusion_tag; typedef fusion_sequence_tag tag; // this gets picked up by MPL typedef mpl::true_ is_view; @@ -68,7 +68,7 @@ namespace boost { namespace fusion template struct transform_view : sequence_base > { - typedef transform_view_tag ftag; + typedef transform_view_tag fusion_tag; typedef fusion_sequence_tag tag; // this gets picked up by MPL typedef mpl::true_ is_view; diff --git a/include/boost/fusion/sequence/view/transform_view/transform_view_iterator.hpp b/include/boost/fusion/sequence/view/transform_view/transform_view_iterator.hpp index 2571f5d8..e76b05dc 100644 --- a/include/boost/fusion/sequence/view/transform_view/transform_view_iterator.hpp +++ b/include/boost/fusion/sequence/view/transform_view/transform_view_iterator.hpp @@ -27,7 +27,7 @@ namespace boost { namespace fusion struct transform_view_iterator : iterator_base > { - typedef transform_view_iterator_tag ftag; + typedef transform_view_iterator_tag fusion_tag; typedef convert_iterator converter; typedef typename converter::type first_type; typedef typename traits::category_of::type category; @@ -47,7 +47,7 @@ namespace boost { namespace fusion struct transform_view_iterator2 : iterator_base > { - typedef transform_view_iterator2_tag ftag; + typedef transform_view_iterator2_tag fusion_tag; typedef convert_iterator converter1; typedef convert_iterator converter2; typedef typename converter1::type first1_type; diff --git a/include/boost/fusion/sequence/view/zip_view/zip_view.hpp b/include/boost/fusion/sequence/view/zip_view/zip_view.hpp index a8706801..5448ab95 100644 --- a/include/boost/fusion/sequence/view/zip_view/zip_view.hpp +++ b/include/boost/fusion/sequence/view/zip_view/zip_view.hpp @@ -71,7 +71,7 @@ namespace boost { namespace fusion { BOOST_MPL_ASSERT((detail::all_references)); BOOST_MPL_ASSERT((detail::all_same_size)); typedef typename detail::strictest_traversal::type category; - typedef zip_view_tag ftag; + typedef zip_view_tag fusion_tag; typedef fusion_sequence_tag tag; // this gets picked up by MPL typedef mpl::true_ is_view; typedef typename fusion::result_of::as_vector::type sequences; diff --git a/include/boost/fusion/sequence/view/zip_view/zip_view_iterator.hpp b/include/boost/fusion/sequence/view/zip_view/zip_view_iterator.hpp index b92e0305..4048005a 100644 --- a/include/boost/fusion/sequence/view/zip_view/zip_view_iterator.hpp +++ b/include/boost/fusion/sequence/view/zip_view/zip_view_iterator.hpp @@ -31,7 +31,7 @@ namespace boost { namespace fusion { struct zip_view_iterator : iterator_base > { - typedef zip_view_iterator_tag ftag; + typedef zip_view_iterator_tag fusion_tag; typedef Traversal category; template diff --git a/include/boost/fusion/support/tag_of.hpp b/include/boost/fusion/support/tag_of.hpp index 0ba9894a..d5701136 100644 --- a/include/boost/fusion/support/tag_of.hpp +++ b/include/boost/fusion/support/tag_of.hpp @@ -19,7 +19,7 @@ namespace boost { namespace fusion namespace detail { - BOOST_MPL_HAS_XXX_TRAIT_DEF(ftag) + BOOST_MPL_HAS_XXX_TRAIT_DEF(fusion_tag) } namespace traits @@ -31,9 +31,9 @@ namespace boost { namespace fusion }; template - struct tag_of >::type> + struct tag_of >::type> { - typedef typename Sequence::ftag type; + typedef typename Sequence::fusion_tag type; }; } From 9267941ce314cf7dadbd39539af6666af2273969 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Thu, 21 Sep 2006 12:43:48 +0000 Subject: [PATCH 011/234] doc tweaks [SVN r35248] --- doc/html/fusion/algorithms.html | 6 +- .../concepts/polymorphic_function_object.html | 8 +-- doc/html/fusion/algorithms/iteration.html | 2 +- .../iteration/functions/accumulate.html | 14 ++--- .../algorithms/iteration/functions/fold.html | 14 ++--- .../iteration/functions/for_each.html | 14 ++--- .../iteration/metafunctions/accumulate.html | 12 ++-- .../iteration/metafunctions/fold.html | 12 ++-- .../iteration/metafunctions/for_each.html | 12 ++-- doc/html/fusion/algorithms/query.html | 2 +- .../algorithms/query/functions/all.html | 14 ++--- .../algorithms/query/functions/any.html | 14 ++--- .../algorithms/query/functions/count.html | 14 ++--- .../algorithms/query/functions/count_if.html | 14 ++--- .../algorithms/query/functions/find.html | 14 ++--- .../algorithms/query/functions/find_if.html | 14 ++--- .../algorithms/query/functions/none.html | 14 ++--- .../algorithms/query/metafunctions/all.html | 12 ++-- .../algorithms/query/metafunctions/any.html | 12 ++-- .../algorithms/query/metafunctions/count.html | 12 ++-- .../query/metafunctions/count_if.html | 12 ++-- .../algorithms/query/metafunctions/find.html | 12 ++-- .../query/metafunctions/find_if.html | 12 ++-- .../algorithms/query/metafunctions/none.html | 12 ++-- .../fusion/algorithms/transformation.html | 2 +- .../transformation/functions/clear.html | 14 ++--- .../transformation/functions/erase.html | 14 ++--- .../transformation/functions/erase_key.html | 14 ++--- .../transformation/functions/filter.html | 14 ++--- .../transformation/functions/filter_if.html | 14 ++--- .../transformation/functions/insert.html | 14 ++--- .../functions/insert_range.html | 14 ++--- .../transformation/functions/join.html | 14 ++--- .../transformation/functions/pop_back.html | 14 ++--- .../transformation/functions/pop_front.html | 14 ++--- .../transformation/functions/push_back.html | 14 ++--- .../transformation/functions/push_front.html | 14 ++--- .../transformation/functions/remove.html | 14 ++--- .../transformation/functions/remove_if.html | 14 ++--- .../transformation/functions/replace.html | 14 ++--- .../transformation/functions/replace_if.html | 14 ++--- .../transformation/functions/reverse.html | 14 ++--- .../transformation/functions/transform.html | 18 +++--- .../transformation/functions/zip.html | 14 ++--- .../transformation/metafunctions/clear.html | 12 ++-- .../transformation/metafunctions/erase.html | 12 ++-- .../metafunctions/erase_key.html | 12 ++-- .../transformation/metafunctions/filter.html | 12 ++-- .../metafunctions/filter_if.html | 12 ++-- .../transformation/metafunctions/insert.html | 12 ++-- .../metafunctions/insert_range.html | 12 ++-- .../transformation/metafunctions/join.html | 10 +-- .../metafunctions/pop_back.html | 12 ++-- .../metafunctions/pop_front.html | 12 ++-- .../metafunctions/push_back.html | 12 ++-- .../metafunctions/push_front.html | 12 ++-- .../transformation/metafunctions/remove.html | 12 ++-- .../metafunctions/remove_if.html | 12 ++-- .../transformation/metafunctions/replace.html | 12 ++-- .../metafunctions/replace_if.html | 12 ++-- .../transformation/metafunctions/reverse.html | 12 ++-- .../metafunctions/transform.html | 12 ++-- .../transformation/metafunctions/zip.html | 10 +-- doc/html/fusion/extension.html | 16 ++--- doc/html/fusion/iterators.html | 2 +- .../concepts/bidirectional_iterator.html | 20 +++--- .../iterators/concepts/forward_iterator.html | 18 +++--- .../concepts/random_access_iterator.html | 14 ++--- .../fusion/iterators/functions/advance.html | 12 ++-- .../fusion/iterators/functions/advance_c.html | 12 ++-- .../fusion/iterators/functions/deref.html | 12 ++-- .../fusion/iterators/functions/distance.html | 12 ++-- doc/html/fusion/iterators/functions/next.html | 12 ++-- .../fusion/iterators/functions/prior.html | 12 ++-- .../iterators/metafunctions/advance.html | 12 ++-- .../iterators/metafunctions/advance_c.html | 12 ++-- .../fusion/iterators/metafunctions/deref.html | 12 ++-- .../iterators/metafunctions/distance.html | 12 ++-- .../iterators/metafunctions/equal_to.html | 12 ++-- .../fusion/iterators/metafunctions/next.html | 12 ++-- .../fusion/iterators/metafunctions/prior.html | 12 ++-- .../iterators/metafunctions/value_of.html | 12 ++-- .../operators/operator_equality.html | 10 +-- .../operators/operator_inequality.html | 10 +-- .../operators/operator_unary_star.html | 12 ++-- doc/html/fusion/notes.html | 16 ++--- doc/html/fusion/sequences.html | 2 +- doc/html/fusion/sequences/adapted.html | 6 +- .../sequences/adapted/boost__array.html | 8 +-- .../sequences/adapted/mpl_sequence.html | 8 +-- .../fusion/sequences/adapted/std__pair.html | 8 +-- doc/html/fusion/sequences/concepts.html | 4 +- .../concepts/associative_sequence.html | 16 ++--- .../concepts/bidirectional_sequence.html | 18 +++--- .../sequences/concepts/forward_sequence.html | 18 +++--- .../concepts/random_access_sequence.html | 18 +++--- doc/html/fusion/sequences/containers.html | 2 +- .../fusion/sequences/containers/cons.html | 18 +++--- .../fusion/sequences/containers/list.html | 18 +++--- doc/html/fusion/sequences/containers/map.html | 18 +++--- doc/html/fusion/sequences/containers/set.html | 18 +++--- .../fusion/sequences/containers/vector.html | 18 +++--- doc/html/fusion/sequences/conversion.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 ++--- .../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/sequences/generation.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 | 20 +++--- .../generation/functions/make_set.html | 20 +++--- .../generation/functions/make_vector.html | 16 ++--- .../sequences/generation/functions/tiers.html | 6 +- .../generation/functions/vector_tie.html | 14 ++--- .../generation/metafunctions/list_tie.html | 14 ++--- .../generation/metafunctions/make_cons.html | 14 ++--- .../generation/metafunctions/make_list.html | 14 ++--- .../generation/metafunctions/make_map.html | 20 +++--- .../generation/metafunctions/make_set.html | 18 +++--- .../generation/metafunctions/make_vector.html | 14 ++--- .../generation/metafunctions/vector_tie.html | 14 ++--- doc/html/fusion/sequences/intrinsics.html | 6 +- .../sequences/intrinsics/functions/at.html | 14 ++--- .../sequences/intrinsics/functions/at_c.html | 14 ++--- .../intrinsics/functions/at_key.html | 14 ++--- .../sequences/intrinsics/functions/back.html | 14 ++--- .../sequences/intrinsics/functions/begin.html | 14 ++--- .../sequences/intrinsics/functions/empty.html | 14 ++--- .../sequences/intrinsics/functions/end.html | 14 ++--- .../sequences/intrinsics/functions/front.html | 14 ++--- .../intrinsics/functions/has_key.html | 14 ++--- .../sequences/intrinsics/functions/size.html | 14 ++--- .../intrinsics/metafunctions/at.html | 16 ++--- .../intrinsics/metafunctions/at_c.html | 16 ++--- .../intrinsics/metafunctions/at_key.html | 16 ++--- .../intrinsics/metafunctions/back.html | 12 ++-- .../intrinsics/metafunctions/begin.html | 12 ++-- .../intrinsics/metafunctions/empty.html | 12 ++-- .../intrinsics/metafunctions/end.html | 12 ++-- .../intrinsics/metafunctions/front.html | 12 ++-- .../intrinsics/metafunctions/has_key.html | 12 ++-- .../intrinsics/metafunctions/size.html | 12 ++-- .../intrinsics/metafunctions/value_at.html | 12 ++-- .../intrinsics/metafunctions/value_at_c.html | 12 ++-- .../metafunctions/value_at_key.html | 12 ++-- .../sequences/operators/comparison.html | 2 +- .../sequences/operators/comparison/equal.html | 14 ++--- .../operators/comparison/greater_than.html | 12 ++-- .../comparison/greater_than_equal.html | 12 ++-- .../operators/comparison/less_than.html | 12 ++-- .../operators/comparison/less_than_equal.html | 12 ++-- .../operators/comparison/not_equal.html | 12 ++-- doc/html/fusion/sequences/operators/i_o.html | 2 +- .../fusion/sequences/operators/i_o/in.html | 14 ++--- .../fusion/sequences/operators/i_o/out.html | 14 ++--- doc/html/fusion/sequences/views.html | 2 +- .../fusion/sequences/views/filter_view.html | 18 +++--- .../sequences/views/iterator_range.html | 18 +++--- .../fusion/sequences/views/joint_view.html | 18 +++--- .../fusion/sequences/views/reverse_view.html | 16 ++--- .../fusion/sequences/views/single_view.html | 16 ++--- .../sequences/views/transform_view.html | 16 ++--- doc/html/fusion/sequences/views/zip_view.html | 18 +++--- doc/html/fusion/support/category_of.html | 51 ++++++++------- doc/html/fusion/support/pair.html | 16 ++--- .../class_template_tuple/construction.html | 4 +- .../class_template_tuple/element_access.html | 4 +- .../relational_operators.html | 4 +- .../tuple_creation_functions.html | 4 +- .../tuple_helper_classes.html | 4 +- doc/html/fusion/tuples/pairs.html | 4 +- doc/html/index.html | 2 +- doc/support.qbk | 63 +++++++++++-------- 179 files changed, 1160 insertions(+), 1142 deletions(-) diff --git a/doc/html/fusion/algorithms.html b/doc/html/fusion/algorithms.html index 48d12495..9977a0bc 100644 --- a/doc/html/fusion/algorithms.html +++ b/doc/html/fusion/algorithms.html @@ -33,7 +33,7 @@
          Transformation

          - + Lazy Evaluation

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

          - + Sequence Extension

          @@ -79,7 +79,7 @@ functions to convert back to the original sequence type.

          - + Header

          diff --git a/doc/html/fusion/algorithms/concepts/polymorphic_function_object.html b/doc/html/fusion/algorithms/concepts/polymorphic_function_object.html
          index ff04ffe1..685a8da5 100644
          --- a/doc/html/fusion/algorithms/concepts/polymorphic_function_object.html
          +++ b/doc/html/fusion/algorithms/concepts/polymorphic_function_object.html
          @@ -29,7 +29,7 @@
                   Function Object">Polymorphic
                   Function Object
          - + Description

          @@ -61,7 +61,7 @@

          - + Refinement of
          @@ -69,13 +69,13 @@ MPL Metafunction Class

          - + Expression requirements

          - +

          diff --git a/doc/html/fusion/algorithms/iteration.html b/doc/html/fusion/algorithms/iteration.html index d9e63faa..083d281e 100644 --- a/doc/html/fusion/algorithms/iteration.html +++ b/doc/html/fusion/algorithms/iteration.html @@ -35,7 +35,7 @@ a sequence repeatedly applying an operation to its elements.

          - + Header

          diff --git a/doc/html/fusion/algorithms/iteration/functions/accumulate.html b/doc/html/fusion/algorithms/iteration/functions/accumulate.html
          index 8dc3ac70..08f7c7f0 100644
          --- a/doc/html/fusion/algorithms/iteration/functions/accumulate.html
          +++ b/doc/html/fusion/algorithms/iteration/functions/accumulate.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

          @@ -37,7 +37,7 @@ fold.

          - + Synopsis
          @@ -51,7 +51,7 @@
           

          - + Parameters

          @@ -97,7 +97,7 @@
          - + Expression Semantics
          @@ -112,21 +112,21 @@ where e1 ...eN are the elements of seq.

          - + Complexity

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

          - + Header
           #include <boost/fusion/algorithm/iteration/accumulate.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/iteration/functions/fold.html b/doc/html/fusion/algorithms/iteration/functions/fold.html
          index 8745f29e..f3c73764 100644
          --- a/doc/html/fusion/algorithms/iteration/functions/fold.html
          +++ b/doc/html/fusion/algorithms/iteration/functions/fold.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

          @@ -36,7 +36,7 @@ to each element of a sequence and the previous state.

          - + Synopsis
          @@ -50,7 +50,7 @@
           

          - + Parameters

          @@ -96,7 +96,7 @@
          - + Expression Semantics
          @@ -111,21 +111,21 @@ where e1 ...eN are the elements of seq.

          - + Complexity

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

          - + Header
           #include <boost/fusion/algorithm/iteration/fold.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/iteration/functions/for_each.html b/doc/html/fusion/algorithms/iteration/functions/for_each.html
          index a331cab1..8bb93fda 100644
          --- a/doc/html/fusion/algorithms/iteration/functions/for_each.html
          +++ b/doc/html/fusion/algorithms/iteration/functions/for_each.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -46,7 +46,7 @@
           

          - + Parameters

          @@ -83,7 +83,7 @@
          - + Expression Semantics
          @@ -98,21 +98,21 @@ in seq.

          - + Complexity

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

          - + Header
           #include <boost/fusion/algorithm/iteration/for_each.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html b/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html
          index 2af4f336..82c1709c 100644
          --- a/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html
          +++ b/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Returns the result type of accumulate.

          - + Synopsis
          @@ -48,7 +48,7 @@
           

          - + Parameters

          @@ -94,7 +94,7 @@
          - + Expression Semantics
          @@ -114,14 +114,14 @@ Function Object of type F.

          - + Complexity

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

          - + Header
          diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/fold.html b/doc/html/fusion/algorithms/iteration/metafunctions/fold.html
          index 372027fe..911060e5 100644
          --- a/doc/html/fusion/algorithms/iteration/metafunctions/fold.html
          +++ b/doc/html/fusion/algorithms/iteration/metafunctions/fold.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Returns the result type of fold.

          - + Synopsis
          @@ -48,7 +48,7 @@
           

          - + Parameters

          @@ -94,7 +94,7 @@
          - + Expression Semantics
          @@ -114,14 +114,14 @@ Function Object of type F.

          - + Complexity

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

          - + Header
          diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html b/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html
          index 60eb8841..193a1168 100644
          --- a/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html
          +++ b/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html
          @@ -30,11 +30,11 @@
                       return type of for_each is always void.
                     

          - + Description
          - + Synopsis
          @@ -49,7 +49,7 @@
           

          - + Parameters

          @@ -83,7 +83,7 @@
          - + Expression Semantics
          @@ -101,14 +101,14 @@ return type is always void.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/query.html b/doc/html/fusion/algorithms/query.html
          index 6d5e1810..6624be60 100644
          --- a/doc/html/fusion/algorithms/query.html
          +++ b/doc/html/fusion/algorithms/query.html
          @@ -33,7 +33,7 @@
                   The query algorithms provide support for searching and analyzing sequences.
                 

          - + Header

          diff --git a/doc/html/fusion/algorithms/query/functions/all.html b/doc/html/fusion/algorithms/query/functions/all.html
          index 092556ca..9e2f65b4 100644
          --- a/doc/html/fusion/algorithms/query/functions/all.html
          +++ b/doc/html/fusion/algorithms/query/functions/all.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -50,7 +50,7 @@
           

          - + Parameters

          @@ -87,7 +87,7 @@
          - + Expression Semantics
          @@ -104,21 +104,21 @@ element e in seq.

          - + Complexity

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

          - + Header
           #include <boost/fusion/algorithm/query/all.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/query/functions/any.html b/doc/html/fusion/algorithms/query/functions/any.html
          index 7dbc7475..584fc0ba 100644
          --- a/doc/html/fusion/algorithms/query/functions/any.html
          +++ b/doc/html/fusion/algorithms/query/functions/any.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -50,7 +50,7 @@
           

          - + Parameters

          @@ -87,7 +87,7 @@
          - + Expression semantics
          @@ -104,21 +104,21 @@ element e in seq.

          - + Complexity

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

          - + Header
           #include <boost/fusion/algorithm/query/any.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/query/functions/count.html b/doc/html/fusion/algorithms/query/functions/count.html
          index c24940ec..06295ef7 100644
          --- a/doc/html/fusion/algorithms/query/functions/count.html
          +++ b/doc/html/fusion/algorithms/query/functions/count.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -46,7 +46,7 @@
           

          - + Parameters

          @@ -84,7 +84,7 @@
          - + Expression Semantics
          @@ -100,21 +100,21 @@ t in seq.

          - + Complexity

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

          - + Header
           #include <boost/fusion/algorithm/query/count.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/query/functions/count_if.html b/doc/html/fusion/algorithms/query/functions/count_if.html
          index db8ab3dd..14150b0f 100644
          --- a/doc/html/fusion/algorithms/query/functions/count_if.html
          +++ b/doc/html/fusion/algorithms/query/functions/count_if.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

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

          - + Parameters

          @@ -84,7 +84,7 @@
          - + Expression Semantics
          @@ -99,21 +99,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>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/query/functions/find.html b/doc/html/fusion/algorithms/query/functions/find.html
          index d99fa974..09539234 100644
          --- a/doc/html/fusion/algorithms/query/functions/find.html
          +++ b/doc/html/fusion/algorithms/query/functions/find.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -51,7 +51,7 @@
           

          - + Parameters

          @@ -85,7 +85,7 @@
          - + Expression Semantics
          @@ -103,21 +103,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>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/query/functions/find_if.html b/doc/html/fusion/algorithms/query/functions/find_if.html
          index 0e2b6ec3..5f0b81b1 100644
          --- a/doc/html/fusion/algorithms/query/functions/find_if.html
          +++ b/doc/html/fusion/algorithms/query/functions/find_if.html
          @@ -30,11 +30,11 @@
                       MPL Lambda Expression evaluates to boost::mpl::true_.
                     

          - + Description
          - + Synopsis
          @@ -52,7 +52,7 @@
           

          - + Parameters

          @@ -86,7 +86,7 @@
          - + Expression Semantics
          @@ -105,21 +105,21 @@ 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>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/query/functions/none.html b/doc/html/fusion/algorithms/query/functions/none.html
          index 4b00f79d..10878818 100644
          --- a/doc/html/fusion/algorithms/query/functions/none.html
          +++ b/doc/html/fusion/algorithms/query/functions/none.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -50,7 +50,7 @@
           

          - + Parameters

          @@ -87,7 +87,7 @@
          - + Expression Semantics
          @@ -104,21 +104,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>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/query/metafunctions/all.html b/doc/html/fusion/algorithms/query/metafunctions/all.html
          index f2503259..7b674ad9 100644
          --- a/doc/html/fusion/algorithms/query/metafunctions/all.html
          +++ b/doc/html/fusion/algorithms/query/metafunctions/all.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          A metafunction returning the result type of all.

          - + Synopsis
          @@ -48,7 +48,7 @@
           

          - + Parameters

          @@ -85,7 +85,7 @@
          - + Expression Semantics
          @@ -105,14 +105,14 @@ The return type is always bool.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/query/metafunctions/any.html b/doc/html/fusion/algorithms/query/metafunctions/any.html
          index 27182e2e..93506fd0 100644
          --- a/doc/html/fusion/algorithms/query/metafunctions/any.html
          +++ b/doc/html/fusion/algorithms/query/metafunctions/any.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          A metafunction returning the result type of any.

          - + Synopsis
          @@ -48,7 +48,7 @@
           

          - + Parameters

          @@ -85,7 +85,7 @@
          - + Expression Semantics
          @@ -105,14 +105,14 @@ The return type is always bool.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/query/metafunctions/count.html b/doc/html/fusion/algorithms/query/metafunctions/count.html
          index 2d8b8feb..1799328c 100644
          --- a/doc/html/fusion/algorithms/query/metafunctions/count.html
          +++ b/doc/html/fusion/algorithms/query/metafunctions/count.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -49,7 +49,7 @@
           

          - + Parameters

          @@ -84,7 +84,7 @@
          - + Expression Semantics
          @@ -100,14 +100,14 @@ int.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/query/metafunctions/count_if.html b/doc/html/fusion/algorithms/query/metafunctions/count_if.html
          index 500aba00..f73493fb 100644
          --- a/doc/html/fusion/algorithms/query/metafunctions/count_if.html
          +++ b/doc/html/fusion/algorithms/query/metafunctions/count_if.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -49,7 +49,7 @@
           

          - + Parameters

          @@ -83,7 +83,7 @@
          - + Expression Semantics
          @@ -99,14 +99,14 @@ always int.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/query/metafunctions/find.html b/doc/html/fusion/algorithms/query/metafunctions/find.html
          index 561998ed..98aa8fa4 100644
          --- a/doc/html/fusion/algorithms/query/metafunctions/find.html
          +++ b/doc/html/fusion/algorithms/query/metafunctions/find.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -49,7 +49,7 @@
           

          - + Parameters

          @@ -83,7 +83,7 @@
          - + Expression Semantics
          @@ -100,14 +100,14 @@ in Sequence, or result_of::end<Sequence>::type if there is no such element.

          - + Complexity

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

          - + Header
          diff --git a/doc/html/fusion/algorithms/query/metafunctions/find_if.html b/doc/html/fusion/algorithms/query/metafunctions/find_if.html
          index e00d34bb..0ae75818 100644
          --- a/doc/html/fusion/algorithms/query/metafunctions/find_if.html
          +++ b/doc/html/fusion/algorithms/query/metafunctions/find_if.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -49,7 +49,7 @@
           

          - + Parameters

          @@ -83,7 +83,7 @@
          - + Expression Semantics
          @@ -101,14 +101,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
          diff --git a/doc/html/fusion/algorithms/query/metafunctions/none.html b/doc/html/fusion/algorithms/query/metafunctions/none.html
          index 24a27fa1..c4fd8ef0 100644
          --- a/doc/html/fusion/algorithms/query/metafunctions/none.html
          +++ b/doc/html/fusion/algorithms/query/metafunctions/none.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          A metafunction returning the result type of none.

          - + Synopsis
          @@ -48,7 +48,7 @@
           

          - + Parameters

          @@ -85,7 +85,7 @@
          - + Expression Semantics
          @@ -105,14 +105,14 @@ The return type is always bool.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/transformation.html b/doc/html/fusion/algorithms/transformation.html
          index 2cc21705..fed28a64 100644
          --- a/doc/html/fusion/algorithms/transformation.html
          +++ b/doc/html/fusion/algorithms/transformation.html
          @@ -46,7 +46,7 @@
                   

          - + Header

          diff --git a/doc/html/fusion/algorithms/transformation/functions/clear.html b/doc/html/fusion/algorithms/transformation/functions/clear.html
          index eddbf20f..b5a65975 100644
          --- a/doc/html/fusion/algorithms/transformation/functions/clear.html
          +++ b/doc/html/fusion/algorithms/transformation/functions/clear.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          clear returns an empty sequence.

          - + Synposis
          @@ -44,7 +44,7 @@
           

          - + Parameters

          @@ -70,7 +70,7 @@
          - + Expression Semantics
          @@ -87,21 +87,21 @@ with no elements.

          - + Complexity

          Constant.

          - + Header
           #include <boost/fusion/algorithm/transformation/clear.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/transformation/functions/erase.html b/doc/html/fusion/algorithms/transformation/functions/erase.html
          index f03939ac..a30434ae 100644
          --- a/doc/html/fusion/algorithms/transformation/functions/erase.html
          +++ b/doc/html/fusion/algorithms/transformation/functions/erase.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synposis
          @@ -55,7 +55,7 @@
           

          - + Parameters

          @@ -104,7 +104,7 @@
          - + Expression Semantics
          @@ -135,21 +135,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>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/transformation/functions/erase_key.html b/doc/html/fusion/algorithms/transformation/functions/erase_key.html
          index 58738f4c..a31237db 100644
          --- a/doc/html/fusion/algorithms/transformation/functions/erase_key.html
          +++ b/doc/html/fusion/algorithms/transformation/functions/erase_key.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

          @@ -39,7 +39,7 @@ with a given key.

          - + Synposis
          @@ -51,7 +51,7 @@
           

          - + Parameters

          @@ -85,7 +85,7 @@
          - + Expression Semantics
          @@ -103,21 +103,21 @@ except those with key Key.

          - + Complexity

          Constant. Returns a view which is lazily evaluated.

          - + Header
           #include <boost/fusion/algorithm/transformation/erase_key.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/transformation/functions/filter.html b/doc/html/fusion/algorithms/transformation/functions/filter.html
          index a2e9d2b3..a1addc72 100644
          --- a/doc/html/fusion/algorithms/transformation/functions/filter.html
          +++ b/doc/html/fusion/algorithms/transformation/functions/filter.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -46,7 +46,7 @@
           

          - + Parameters

          @@ -80,7 +80,7 @@
          - + Expression Semantics
          @@ -99,21 +99,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>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/transformation/functions/filter_if.html b/doc/html/fusion/algorithms/transformation/functions/filter_if.html
          index c0bd73ed..745515e7 100644
          --- a/doc/html/fusion/algorithms/transformation/functions/filter_if.html
          +++ b/doc/html/fusion/algorithms/transformation/functions/filter_if.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

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

          - + Parameters

          @@ -82,7 +82,7 @@
          - + Expression Semantics
          @@ -102,21 +102,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>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/transformation/functions/insert.html b/doc/html/fusion/algorithms/transformation/functions/insert.html
          index 4c5ca95c..6b052da6 100644
          --- a/doc/html/fusion/algorithms/transformation/functions/insert.html
          +++ b/doc/html/fusion/algorithms/transformation/functions/insert.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

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

          - + Parameters

          @@ -90,7 +90,7 @@
          - + Expression Semantics
          @@ -110,21 +110,21 @@ pos.

          - + Complexity

          Constant. Returns a view which is lazily evaluated.

          - + Header
           #include <boost/fusion/algorithm/transformation/insert.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/transformation/functions/insert_range.html b/doc/html/fusion/algorithms/transformation/functions/insert_range.html
          index ff34d0ba..58e90f43 100644
          --- a/doc/html/fusion/algorithms/transformation/functions/insert_range.html
          +++ b/doc/html/fusion/algorithms/transformation/functions/insert_range.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

          @@ -34,7 +34,7 @@ iterator.

          - + Synposis
          @@ -48,7 +48,7 @@
           

          - + Parameters

          @@ -94,7 +94,7 @@
          - + Expression Semantics
          @@ -114,21 +114,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>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/transformation/functions/join.html b/doc/html/fusion/algorithms/transformation/functions/join.html
          index 3f6bd81b..92cd1ed8 100644
          --- a/doc/html/fusion/algorithms/transformation/functions/join.html
          +++ b/doc/html/fusion/algorithms/transformation/functions/join.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -45,7 +45,7 @@
           

          - + Parameters

          @@ -82,7 +82,7 @@
          - + Expression Semantics
          @@ -101,21 +101,21 @@ The order of th elements is preserved.

          - + Complexity

          Constant. Returns a view which is lazily evaluated.

          - + Header
           #include <boost/fusion/algorithm/transformation/join.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/transformation/functions/pop_back.html b/doc/html/fusion/algorithms/transformation/functions/pop_back.html
          index 3867dd26..07b02aa9 100644
          --- a/doc/html/fusion/algorithms/transformation/functions/pop_back.html
          +++ b/doc/html/fusion/algorithms/transformation/functions/pop_back.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -44,7 +44,7 @@
           

          - + Parameters

          @@ -70,7 +70,7 @@
          - + Expression Semantics
          @@ -89,21 +89,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>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/transformation/functions/pop_front.html b/doc/html/fusion/algorithms/transformation/functions/pop_front.html
          index 9d88d7e8..1427e71b 100644
          --- a/doc/html/fusion/algorithms/transformation/functions/pop_front.html
          +++ b/doc/html/fusion/algorithms/transformation/functions/pop_front.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -44,7 +44,7 @@
           

          - + Parameters

          @@ -70,7 +70,7 @@
          - + Expression Semantics
          @@ -89,21 +89,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>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/transformation/functions/push_back.html b/doc/html/fusion/algorithms/transformation/functions/push_back.html
          index bd226d9c..fa6422f8 100644
          --- a/doc/html/fusion/algorithms/transformation/functions/push_back.html
          +++ b/doc/html/fusion/algorithms/transformation/functions/push_back.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -46,7 +46,7 @@
           

          - + Parameters

          @@ -80,7 +80,7 @@
          - + Expression Semantics
          @@ -99,21 +99,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>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/transformation/functions/push_front.html b/doc/html/fusion/algorithms/transformation/functions/push_front.html
          index 9114a63a..0b3a7ac0 100644
          --- a/doc/html/fusion/algorithms/transformation/functions/push_front.html
          +++ b/doc/html/fusion/algorithms/transformation/functions/push_front.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -46,7 +46,7 @@
           

          - + Parameters

          @@ -80,7 +80,7 @@
          - + Expression Semantics
          @@ -100,21 +100,21 @@ seq.

          - + Complexity

          Constant. Returns a view which is lazily evaluated.

          - + Header
           #include <boost/fusion/algorithm/transformation/push_front.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/transformation/functions/remove.html b/doc/html/fusion/algorithms/transformation/functions/remove.html
          index 28694a22..55d66434 100644
          --- a/doc/html/fusion/algorithms/transformation/functions/remove.html
          +++ b/doc/html/fusion/algorithms/transformation/functions/remove.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -46,7 +46,7 @@
           

          - + Parameters

          @@ -80,7 +80,7 @@
          - + Expression Semantics
          @@ -99,21 +99,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>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/transformation/functions/remove_if.html b/doc/html/fusion/algorithms/transformation/functions/remove_if.html
          index 3b8f6fff..d3d88833 100644
          --- a/doc/html/fusion/algorithms/transformation/functions/remove_if.html
          +++ b/doc/html/fusion/algorithms/transformation/functions/remove_if.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -46,7 +46,7 @@
           

          - + Parameters

          @@ -80,7 +80,7 @@
          - + Expression Semantics
          @@ -99,21 +99,21 @@ Pred evaluates to boost::mpl::true_. Equivalent to filter<boost::mpl::not_<Pred> >(seq).

          - + Complexity

          Constant. Returns a view which is lazily evaluated.

          - + Header
           #include <boost/fusion/algorithm/transformation/remove_if.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/transformation/functions/replace.html b/doc/html/fusion/algorithms/transformation/functions/replace.html
          index 8b8b248f..ba8451e0 100644
          --- a/doc/html/fusion/algorithms/transformation/functions/replace.html
          +++ b/doc/html/fusion/algorithms/transformation/functions/replace.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

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

          - + Parameters

          @@ -92,7 +92,7 @@
          - + Expression Semantics
          @@ -111,21 +111,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>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/transformation/functions/replace_if.html b/doc/html/fusion/algorithms/transformation/functions/replace_if.html
          index 625dfba6..a6f4b693 100644
          --- a/doc/html/fusion/algorithms/transformation/functions/replace_if.html
          +++ b/doc/html/fusion/algorithms/transformation/functions/replace_if.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -48,7 +48,7 @@
           

          - + Parameters

          @@ -92,7 +92,7 @@
          - + Expression Semantics
          @@ -112,21 +112,21 @@ evaluates to true.

          - + Complexity

          Constant. Returns a view which is lazily evaluated.

          - + Header
           #include <boost/fusion/algorithm/transformation/replace_if.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/transformation/functions/reverse.html b/doc/html/fusion/algorithms/transformation/functions/reverse.html
          index 2ba4cd05..89d025a1 100644
          --- a/doc/html/fusion/algorithms/transformation/functions/reverse.html
          +++ b/doc/html/fusion/algorithms/transformation/functions/reverse.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

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

          - + Synposis
          @@ -44,7 +44,7 @@
           

          - + Parameters

          @@ -70,7 +70,7 @@
          - + Expression Semantics
          @@ -88,21 +88,21 @@ in reverse order.

          - + Complexity

          Constant. Returns a view which is lazily evaluated.

          - + Header
           #include <boost/fusion/algorithm/transformation/reverse.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/transformation/functions/transform.html b/doc/html/fusion/algorithms/transformation/functions/transform.html
          index b67c4fbd..d9669718 100644
          --- a/doc/html/fusion/algorithms/transformation/functions/transform.html
          +++ b/doc/html/fusion/algorithms/transformation/functions/transform.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

          @@ -39,7 +39,7 @@ to each element of seq.

          - + Unary version synopsis
          @@ -53,7 +53,7 @@

          - + Parameters

          @@ -92,7 +92,7 @@
          - + Expression Semantics
          @@ -110,7 +110,7 @@ within seq.

          - + Binary version synopsis
          @@ -125,7 +125,7 @@

          - + Parameters

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

          - + Complexity

          Constant. Returns a view which is lazily evaluated.

          - + Header
           #include <boost/fusion/algorithm/transformation/transform.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/transformation/functions/zip.html b/doc/html/fusion/algorithms/transformation/functions/zip.html
          index e3d2840e..995b94c1 100644
          --- a/doc/html/fusion/algorithms/transformation/functions/zip.html
          +++ b/doc/html/fusion/algorithms/transformation/functions/zip.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -49,7 +49,7 @@
           

          - + Parameters

          @@ -77,7 +77,7 @@
          - + Expression Semantics
          @@ -97,21 +97,21 @@ ('a', 'b', 'c') would return ((1, 'a'),(2, 'b'),(3, 'c'))

          - + Complexity

          Constant. Returns a view which is lazily evaluated.

          - + Header
           #include <boost/fusion/algorithm/transformation/zip.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/clear.html b/doc/html/fusion/algorithms/transformation/metafunctions/clear.html
          index b77eadf6..b16298fc 100644
          --- a/doc/html/fusion/algorithms/transformation/metafunctions/clear.html
          +++ b/doc/html/fusion/algorithms/transformation/metafunctions/clear.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

          @@ -34,7 +34,7 @@ type.

          - + Synopsis
          @@ -48,7 +48,7 @@
           

          - + Parameters

          @@ -71,7 +71,7 @@
          - + Expression Semantics
          @@ -87,14 +87,14 @@ Semantics: Returns an empty sequence.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/erase.html b/doc/html/fusion/algorithms/transformation/metafunctions/erase.html
          index c78c234f..ed47034b 100644
          --- a/doc/html/fusion/algorithms/transformation/metafunctions/erase.html
          +++ b/doc/html/fusion/algorithms/transformation/metafunctions/erase.html
          @@ -30,11 +30,11 @@
                       and range delimiting iterator types.
                     

          - + Description
          - + Synopsis
          @@ -49,7 +49,7 @@
           

          - + Parameters

          @@ -95,7 +95,7 @@
          - + Expression Semantics
          @@ -125,14 +125,14 @@ and It2 removed.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html b/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html
          index 28c24038..d80246f4 100644
          --- a/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html
          +++ b/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -49,7 +49,7 @@
           

          - + Parameters

          @@ -83,7 +83,7 @@
          - + Expression Semantics
          @@ -101,14 +101,14 @@ except those with key Key.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/filter.html b/doc/html/fusion/algorithms/transformation/metafunctions/filter.html
          index 9f2eb551..5207e822 100644
          --- a/doc/html/fusion/algorithms/transformation/metafunctions/filter.html
          +++ b/doc/html/fusion/algorithms/transformation/metafunctions/filter.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -49,7 +49,7 @@
           

          - + Parameter

          @@ -83,7 +83,7 @@
          - + Expression Semantics
          @@ -102,14 +102,14 @@ to result_of::filter_if<Sequence, boost::is_same<mpl::_, T> >::type.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html
          index dd743c7c..2b81831a 100644
          --- a/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html
          +++ b/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

          @@ -34,7 +34,7 @@ and unary MPL Lambda Expression predicate type.

          - + Synopsis
          @@ -49,7 +49,7 @@
           

          - + Parameter

          @@ -83,7 +83,7 @@
          - + Expression Semantics
          @@ -102,14 +102,14 @@ to boost::mpl::true_.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/insert.html b/doc/html/fusion/algorithms/transformation/metafunctions/insert.html
          index c147fa99..408bab32 100644
          --- a/doc/html/fusion/algorithms/transformation/metafunctions/insert.html
          +++ b/doc/html/fusion/algorithms/transformation/metafunctions/insert.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -50,7 +50,7 @@
           

          - + Parameters

          @@ -93,7 +93,7 @@
          - + Expression Semantics
          @@ -112,14 +112,14 @@ in Sequence.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html b/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html
          index 422c2e7c..85e236b6 100644
          --- a/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html
          +++ b/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -50,7 +50,7 @@
           

          - + Parameters

          @@ -96,7 +96,7 @@
          - + Expression Semantics
          @@ -115,14 +115,14 @@ into Sequence.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/join.html b/doc/html/fusion/algorithms/transformation/metafunctions/join.html
          index 564f471b..2c65e3d5 100644
          --- a/doc/html/fusion/algorithms/transformation/metafunctions/join.html
          +++ b/doc/html/fusion/algorithms/transformation/metafunctions/join.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -47,7 +47,7 @@
           };
           
          - + Expression Semantics
          @@ -66,14 +66,14 @@ The order of the elements in the 2 sequences is preserved.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html b/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html
          index b5678cba..eaaf66d3 100644
          --- a/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html
          +++ b/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

          @@ -34,7 +34,7 @@ type.

          - + Synopsis
          @@ -48,7 +48,7 @@
           

          - + Parameters

          @@ -74,7 +74,7 @@
          - + Expression Semantics
          @@ -92,14 +92,14 @@ except the last element.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html b/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html
          index eaab3904..125498df 100644
          --- a/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html
          +++ b/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

          @@ -34,7 +34,7 @@ type.

          - + Synopsis
          @@ -48,7 +48,7 @@
           

          - + Parameters

          @@ -74,7 +74,7 @@
          - + Expression Semantics
          @@ -92,14 +92,14 @@ except the first element.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html b/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html
          index d1156993..0b4fd1c2 100644
          --- a/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html
          +++ b/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -49,7 +49,7 @@
           

          - + Parameters

          @@ -83,7 +83,7 @@
          - + Expression Semantics
          @@ -102,14 +102,14 @@ added to the end.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html b/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html
          index 6058be6d..d64c2e38 100644
          --- a/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html
          +++ b/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -49,7 +49,7 @@
           

          - + Parameters

          @@ -83,7 +83,7 @@
          - + Expression Semantics
          @@ -102,14 +102,14 @@ added to the beginning.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/remove.html b/doc/html/fusion/algorithms/transformation/metafunctions/remove.html
          index 008436a2..c0d45701 100644
          --- a/doc/html/fusion/algorithms/transformation/metafunctions/remove.html
          +++ b/doc/html/fusion/algorithms/transformation/metafunctions/remove.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -49,7 +49,7 @@
           

          - + Parameters

          @@ -83,7 +83,7 @@
          - + Expression Semantics
          @@ -102,14 +102,14 @@ to result_of::replace_if<Sequence, boost::is_same<mpl::_, T> >::type.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html
          index 76ea41bb..83cdd1bc 100644
          --- a/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html
          +++ b/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

          @@ -34,7 +34,7 @@ and unary MPL Lambda Expression predicate types.

          - + Synopsis
          @@ -49,7 +49,7 @@
           

          - + Parameters

          @@ -85,7 +85,7 @@
          - + Expression Semantics
          @@ -104,14 +104,14 @@ to boost::mpl::false_.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/replace.html b/doc/html/fusion/algorithms/transformation/metafunctions/replace.html
          index 5c52575c..114f5080 100644
          --- a/doc/html/fusion/algorithms/transformation/metafunctions/replace.html
          +++ b/doc/html/fusion/algorithms/transformation/metafunctions/replace.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -49,7 +49,7 @@
           

          - + Parameters

          @@ -83,7 +83,7 @@
          - + Expression Semantics
          @@ -100,14 +100,14 @@ replace.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html
          index 4bea6695..cb599ff9 100644
          --- a/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html
          +++ b/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -51,7 +51,7 @@
           

          - + Parameters

          @@ -94,7 +94,7 @@
          - + Expression Semantics
          @@ -111,14 +111,14 @@ replace_if.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html b/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html
          index 5816225f..49cfedbe 100644
          --- a/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html
          +++ b/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

          @@ -34,7 +34,7 @@ type.

          - + Synopsis
          @@ -48,7 +48,7 @@
           

          - + Parameters

          @@ -74,7 +74,7 @@
          - + Expression Semantics
          @@ -91,14 +91,14 @@ elements in the reverse order to Sequence.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/transform.html b/doc/html/fusion/algorithms/transformation/metafunctions/transform.html
          index 2f78c8ab..5b231920 100644
          --- a/doc/html/fusion/algorithms/transformation/metafunctions/transform.html
          +++ b/doc/html/fusion/algorithms/transformation/metafunctions/transform.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

          @@ -36,7 +36,7 @@ Function Object types.

          - + Synopsis
          @@ -51,7 +51,7 @@
           

          - + Parameters

          @@ -87,7 +87,7 @@
          - + Expression Semantics
          @@ -104,14 +104,14 @@ F::apply<E>::type for each element type E in Sequence.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/zip.html b/doc/html/fusion/algorithms/transformation/metafunctions/zip.html
          index 22cf56bf..cb357f5b 100644
          --- a/doc/html/fusion/algorithms/transformation/metafunctions/zip.html
          +++ b/doc/html/fusion/algorithms/transformation/metafunctions/zip.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -50,7 +50,7 @@
           };
           
          - + Expression Semantics
          @@ -69,14 +69,14 @@ return ((1, 'a'),(2, 'b'),(3, 'c'))

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/extension.html b/doc/html/fusion/extension.html
          index 9ecba184..66c923d4 100644
          --- a/doc/html/fusion/extension.html
          +++ b/doc/html/fusion/extension.html
          @@ -48,7 +48,7 @@
                 

        - + Our example

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

        - + Enabling Tag Dispatching

        @@ -122,7 +122,7 @@ #include <boost/fusion/sequence/adapted/mpl/tag_of.hpp>

        - + Designing a suitable iterator

        @@ -199,7 +199,7 @@ clearer as we add features to our implementation.

        - + A first couple of instructive features

        @@ -349,7 +349,7 @@

      - + Implementing the remaining iterator functionality

      @@ -404,7 +404,7 @@ are provided in the example code.

      - + Implementing the intrinsic functions of the sequence

      @@ -463,7 +463,7 @@ value_at_impl and at_impl.

      - + Enabling our type as an associative container

      @@ -529,7 +529,7 @@ of is_associative_impl.

      - + Summary

      diff --git a/doc/html/fusion/iterators.html b/doc/html/fusion/iterators.html index 974e3cfb..0a800d42 100644 --- a/doc/html/fusion/iterators.html +++ b/doc/html/fusion/iterators.html @@ -40,7 +40,7 @@ Sequence.

      - + Header

      diff --git a/doc/html/fusion/iterators/concepts/bidirectional_iterator.html b/doc/html/fusion/iterators/concepts/bidirectional_iterator.html
      index 46c14d49..d83fd5e0 100644
      --- a/doc/html/fusion/iterators/concepts/bidirectional_iterator.html
      +++ b/doc/html/fusion/iterators/concepts/bidirectional_iterator.html
      @@ -31,7 +31,7 @@
               Iterator">Bidirectional
               Iterator
- + Description

@@ -61,7 +61,7 @@

- + Refinement of
@@ -70,7 +70,7 @@ Iterator">Forward Iterator

- + Expression requirements
@@ -81,7 +81,7 @@

- +

@@ -128,13 +128,13 @@
- + Meta Expressions

- +

@@ -153,7 +153,7 @@
- + Expression Semantics
@@ -165,7 +165,7 @@

- +

@@ -185,7 +185,7 @@
- + Invariants

@@ -202,7 +202,7 @@

- + Models
    diff --git a/doc/html/fusion/iterators/concepts/forward_iterator.html b/doc/html/fusion/iterators/concepts/forward_iterator.html index 39366e48..0961bbac 100644 --- a/doc/html/fusion/iterators/concepts/forward_iterator.html +++ b/doc/html/fusion/iterators/concepts/forward_iterator.html @@ -30,7 +30,7 @@ Iterator">Forward Iterator
- + Description

@@ -63,7 +63,7 @@

- + Expression requirements
@@ -73,7 +73,7 @@

- +

@@ -137,13 +137,13 @@
- + Meta Expressions

- +

@@ -191,13 +191,13 @@
- + Expression Semantics

- +

@@ -260,7 +260,7 @@
- + Invariants

@@ -283,7 +283,7 @@

- + Models
    diff --git a/doc/html/fusion/iterators/concepts/random_access_iterator.html b/doc/html/fusion/iterators/concepts/random_access_iterator.html index 1668bfe9..0d7d04cc 100644 --- a/doc/html/fusion/iterators/concepts/random_access_iterator.html +++ b/doc/html/fusion/iterators/concepts/random_access_iterator.html @@ -30,7 +30,7 @@ Access Iterator">Random Access Iterator
- + Description

@@ -63,7 +63,7 @@

- + Refinement of
@@ -73,7 +73,7 @@ Iterator

- + Expression requirements
@@ -84,7 +84,7 @@

- +

@@ -131,13 +131,13 @@
- + Meta Expressions

- +

@@ -168,7 +168,7 @@
- + Models
    diff --git a/doc/html/fusion/iterators/functions/advance.html b/doc/html/fusion/iterators/functions/advance.html index fbe9a883..2eb1ddd1 100644 --- a/doc/html/fusion/iterators/functions/advance.html +++ b/doc/html/fusion/iterators/functions/advance.html @@ -26,14 +26,14 @@
    - + Description

    Moves an iterator by a specified distance.

    - + Synopsis
    @@ -45,7 +45,7 @@
     

    - + Parameters

    @@ -79,7 +79,7 @@
    - + Expression Semantics
    @@ -100,14 +100,14 @@ may be negative.

    - + Header
     #include <boost/fusion/iterator/advance.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/functions/advance_c.html b/doc/html/fusion/iterators/functions/advance_c.html
    index d1d73ff4..78b086bf 100644
    --- a/doc/html/fusion/iterators/functions/advance_c.html
    +++ b/doc/html/fusion/iterators/functions/advance_c.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Moves an iterator by a specified distance.

    - + Synopsis
    @@ -45,7 +45,7 @@
     

    - + Parameters

    @@ -79,7 +79,7 @@
    - + Expression Semantics
    @@ -100,14 +100,14 @@ may be negative.

    - + Header
     #include <boost/fusion/iterator/advance.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/functions/deref.html b/doc/html/fusion/iterators/functions/deref.html
    index 06e91a42..b562fd59 100644
    --- a/doc/html/fusion/iterators/functions/deref.html
    +++ b/doc/html/fusion/iterators/functions/deref.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Deferences an iterator.

    - + Synopsis
    @@ -44,7 +44,7 @@
     

    - + Parameters

    @@ -70,7 +70,7 @@
    - + Expression Semantics
    @@ -85,14 +85,14 @@ i.

    - + Header
     #include <boost/fusion/iterator/deref.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/functions/distance.html b/doc/html/fusion/iterators/functions/distance.html
    index 952b8c58..16e837c2 100644
    --- a/doc/html/fusion/iterators/functions/distance.html
    +++ b/doc/html/fusion/iterators/functions/distance.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the distance between 2 iterators.

    - + Synopsis
    @@ -45,7 +45,7 @@
     

    - + Parameters

    @@ -72,7 +72,7 @@
    - + Expression Semantics
    @@ -87,14 +87,14 @@ iterators i and j.

    - + Header
     #include <boost/fusion/iterator/distance.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/functions/next.html b/doc/html/fusion/iterators/functions/next.html
    index 04f0b5ec..50483c48 100644
    --- a/doc/html/fusion/iterators/functions/next.html
    +++ b/doc/html/fusion/iterators/functions/next.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Moves an iterator 1 position forwards.

    - + Synopsis
    @@ -44,7 +44,7 @@
     

    - + Parameters

    @@ -70,7 +70,7 @@
    - + Expression Semantics
    @@ -86,14 +86,14 @@ next element after i.

    - + Header
     #include <boost/fusion/iterator/next.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/functions/prior.html b/doc/html/fusion/iterators/functions/prior.html
    index 29effb6f..3ee54891 100644
    --- a/doc/html/fusion/iterators/functions/prior.html
    +++ b/doc/html/fusion/iterators/functions/prior.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Moves an iterator 1 position backwards.

    - + Synopsis
    @@ -44,7 +44,7 @@
     

    - + Parameters

    @@ -70,7 +70,7 @@
    - + Expression Semantics
    @@ -86,14 +86,14 @@ element prior to i.

    - + Header
     #include <boost/fusion/iterator/prior.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/advance.html b/doc/html/fusion/iterators/metafunctions/advance.html
    index 6e205f63..3463371a 100644
    --- a/doc/html/fusion/iterators/metafunctions/advance.html
    +++ b/doc/html/fusion/iterators/metafunctions/advance.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Moves an iterator a specified distance.

    - + Synopsis
    @@ -48,7 +48,7 @@
     

    - + Parameters

    @@ -82,7 +82,7 @@
    - + Expression Semantics
    @@ -102,14 +102,14 @@ may be negative.

    - + Header
     #include <boost/fusion/iterator/advance.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/advance_c.html b/doc/html/fusion/iterators/metafunctions/advance_c.html
    index aba14bc1..e4e5f249 100644
    --- a/doc/html/fusion/iterators/metafunctions/advance_c.html
    +++ b/doc/html/fusion/iterators/metafunctions/advance_c.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Moves an iterator by a specified distance.

    - + Synopsis
    @@ -48,7 +48,7 @@
     

    - + Parameters

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

    - + Header
     #include <boost/fusion/iterator/advance.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/deref.html b/doc/html/fusion/iterators/metafunctions/deref.html
    index 0fe65db6..26e06c80 100644
    --- a/doc/html/fusion/iterators/metafunctions/deref.html
    +++ b/doc/html/fusion/iterators/metafunctions/deref.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

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

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

    - + Parameters

    @@ -73,7 +73,7 @@
    - + Expression Semantics
    @@ -88,14 +88,14 @@ an iterator of type I.

    - + Header
     #include <boost/fusion/iterator/deref.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/distance.html b/doc/html/fusion/iterators/metafunctions/distance.html
    index 3c4de8c6..4e052567 100644
    --- a/doc/html/fusion/iterators/metafunctions/distance.html
    +++ b/doc/html/fusion/iterators/metafunctions/distance.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the distance between two iterators.

    - + Synopsis
    @@ -48,7 +48,7 @@
     

    - + Parameters

    @@ -75,7 +75,7 @@
    - + Expression Semantics
    @@ -91,14 +91,14 @@ J.

    - + Header
     #include <boost/fusion/iterator/distance.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/equal_to.html b/doc/html/fusion/iterators/metafunctions/equal_to.html
    index 188de448..4967ce6e 100644
    --- a/doc/html/fusion/iterators/metafunctions/equal_to.html
    +++ b/doc/html/fusion/iterators/metafunctions/equal_to.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

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

    - + Synopsis
    @@ -49,7 +49,7 @@
     

    - + Parameters

    @@ -74,7 +74,7 @@
    - + Expression Semantics
    @@ -90,14 +90,14 @@ Returns boost::mpl::false_ otherwise.

    - + Header
     #include <boost/fusion/iterator/equal_to.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/next.html b/doc/html/fusion/iterators/metafunctions/next.html
    index bfff4e6b..92a47b77 100644
    --- a/doc/html/fusion/iterators/metafunctions/next.html
    +++ b/doc/html/fusion/iterators/metafunctions/next.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the type of the next iterator in a sequence.

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

    - + Parameters

    @@ -73,7 +73,7 @@
    - + Expression Semantics
    @@ -89,14 +89,14 @@ next element in the sequence after I.

    - + Header
     #include <boost/fusion/iterator/next.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/prior.html b/doc/html/fusion/iterators/metafunctions/prior.html
    index 0866f132..6b75ffd2 100644
    --- a/doc/html/fusion/iterators/metafunctions/prior.html
    +++ b/doc/html/fusion/iterators/metafunctions/prior.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the type of the previous iterator in a sequence.

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

    - + Parameters

    @@ -73,7 +73,7 @@
    - + Expression Semantics
    @@ -89,14 +89,14 @@ previous element in the sequence before I.

    - + Header
     #include <boost/fusion/iterator/prior.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/value_of.html b/doc/html/fusion/iterators/metafunctions/value_of.html
    index a338e3be..5087b29d 100644
    --- a/doc/html/fusion/iterators/metafunctions/value_of.html
    +++ b/doc/html/fusion/iterators/metafunctions/value_of.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the type stored at the position of an iterator.

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

    - + Parameters

    @@ -73,7 +73,7 @@
    - + Expression Semantics
    @@ -88,14 +88,14 @@ a sequence at iterator position I.

    - + Header
     #include <boost/fusion/iterator/value_of.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/operators/operator_equality.html b/doc/html/fusion/iterators/operators/operator_equality.html
    index 2f43dd12..c8e53336 100644
    --- a/doc/html/fusion/iterators/operators/operator_equality.html
    +++ b/doc/html/fusion/iterators/operators/operator_equality.html
    @@ -31,14 +31,14 @@
             =="> Operator
             ==
- + Description

Compares 2 iterators for equality.

- + Synopsis
@@ -50,7 +50,7 @@
 

- + Parameters

@@ -75,7 +75,7 @@
- + Expression Semantics
@@ -91,7 +91,7 @@ and j respectively.

- + Header
diff --git a/doc/html/fusion/iterators/operators/operator_inequality.html b/doc/html/fusion/iterators/operators/operator_inequality.html
index fd92ea05..798f8867 100644
--- a/doc/html/fusion/iterators/operators/operator_inequality.html
+++ b/doc/html/fusion/iterators/operators/operator_inequality.html
@@ -30,14 +30,14 @@
         !="> Operator
         !=
 
- + Description

Compares 2 iterators for inequality.

- + Synopsis
@@ -49,7 +49,7 @@
 

- + Parameters

@@ -74,7 +74,7 @@
- + Expression Semantics
@@ -87,7 +87,7 @@ and j respectively.

- + Header
diff --git a/doc/html/fusion/iterators/operators/operator_unary_star.html b/doc/html/fusion/iterators/operators/operator_unary_star.html
index 5ad77475..2af2374d 100644
--- a/doc/html/fusion/iterators/operators/operator_unary_star.html
+++ b/doc/html/fusion/iterators/operators/operator_unary_star.html
@@ -30,14 +30,14 @@
         *"> Operator
         *
 
- + Description

Dereferences an iterator.

- + Synopsis
@@ -48,7 +48,7 @@
 

- + Parameters

@@ -74,7 +74,7 @@
- + Expression Semantics
@@ -89,14 +89,14 @@ Semantics: Equivalent to deref(i).

- + Header
 #include <boost/fusion/iterator/deref.hpp>
 
- + Example
diff --git a/doc/html/fusion/notes.html b/doc/html/fusion/notes.html
index d58b99da..853e1247 100644
--- a/doc/html/fusion/notes.html
+++ b/doc/html/fusion/notes.html
@@ -26,7 +26,7 @@
 
 

- + Recursive Inlined Functions

@@ -39,7 +39,7 @@ compiler limit of course). Compile time complexity remains linear.

- + Overloaded Functions

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

- + Tag Dispatching

@@ -101,7 +101,7 @@

- + Extensibility

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

- + Element Conversion

@@ -158,7 +158,7 @@

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

@@ -191,7 +191,7 @@
 list<void (*)(int)>
 

- + boost::ref

@@ -234,7 +234,7 @@



-

[14] +

[14] 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 diff --git a/doc/html/fusion/sequences.html b/doc/html/fusion/sequences.html index 1771bab2..d7406992 100644 --- a/doc/html/fusion/sequences.html +++ b/doc/html/fusion/sequences.html @@ -46,7 +46,7 @@ type that can be used to iterate through the Sequence's elements.

- + Header

diff --git a/doc/html/fusion/sequences/adapted.html b/doc/html/fusion/sequences/adapted.html
index aa5cd3ce..9e35ce4d 100644
--- a/doc/html/fusion/sequences/adapted.html
+++ b/doc/html/fusion/sequences/adapted.html
@@ -38,11 +38,11 @@
         mechanism. If you wish to use these sequences with fusion, simply include
         the necessary files and they will be regarded as first-class, fully conforming
         fusion sequences
-        [4]
+        [4]
         .
       

- + Header

@@ -50,7 +50,7 @@
 


-

[4] +

[4] Fusion sequences may also be adapted as fully conforming MPL sequences (see Intrinsics). That way, we can have 2-way adaptation to and from MPL diff --git a/doc/html/fusion/sequences/adapted/boost__array.html b/doc/html/fusion/sequences/adapted/boost__array.html index 7d763796..d71c3e28 100644 --- a/doc/html/fusion/sequences/adapted/boost__array.html +++ b/doc/html/fusion/sequences/adapted/boost__array.html @@ -33,21 +33,21 @@ Access Sequence.

- + Header
 #include <boost/fusion/sequence/adapted/array.hpp>
 
- + Model of
- + Example
@@ -60,7 +60,7 @@
 std::cout << at_c<2>(arr) << std::endl;
 
- + See also

diff --git a/doc/html/fusion/sequences/adapted/mpl_sequence.html b/doc/html/fusion/sequences/adapted/mpl_sequence.html index ad7713ed..168cb677 100644 --- a/doc/html/fusion/sequences/adapted/mpl_sequence.html +++ b/doc/html/fusion/sequences/adapted/mpl_sequence.html @@ -31,14 +31,14 @@ sequences fully conforming fusion sequences.

- + Header
 #include <boost/fusion/sequence/adapted/mpl.hpp>
 
- + Model of
    @@ -62,7 +62,7 @@
- + Example
@@ -76,7 +76,7 @@
 std::cout << at_c<1>(v) << std::endl;
 
- + See also

diff --git a/doc/html/fusion/sequences/adapted/std__pair.html b/doc/html/fusion/sequences/adapted/std__pair.html index 03e6268f..d37ca264 100644 --- a/doc/html/fusion/sequences/adapted/std__pair.html +++ b/doc/html/fusion/sequences/adapted/std__pair.html @@ -33,21 +33,21 @@ Access Sequence.

- + Header
 #include <boost/fusion/sequence/adapted/std_pair.hpp>
 
- + Model of
- + Example
@@ -57,7 +57,7 @@
 std::cout << p << std::endl;
 
- + See also

diff --git a/doc/html/fusion/sequences/concepts.html b/doc/html/fusion/sequences/concepts.html index f26c5a7e..4ede7685 100644 --- a/doc/html/fusion/sequences/concepts.html +++ b/doc/html/fusion/sequences/concepts.html @@ -40,7 +40,7 @@ Fusion Sequences are organized into a hierarchy of concepts.

- + Traversal

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

- + Associativity

diff --git a/doc/html/fusion/sequences/concepts/associative_sequence.html b/doc/html/fusion/sequences/concepts/associative_sequence.html index a08093da..7955d937 100644 --- a/doc/html/fusion/sequences/concepts/associative_sequence.html +++ b/doc/html/fusion/sequences/concepts/associative_sequence.html @@ -30,7 +30,7 @@ Sequence">Associative Sequence

- + Description

@@ -71,7 +71,7 @@

- + Valid Expressions
@@ -80,7 +80,7 @@

- +

@@ -126,13 +126,13 @@
- + Result Type Expressions

- +

@@ -171,13 +171,13 @@ be a reference to begin with. For this purpose, you can use result_of::value_at_key<S, N>.

- + Expression Semantics

- +

@@ -208,7 +208,7 @@
- + Models
    diff --git a/doc/html/fusion/sequences/concepts/bidirectional_sequence.html b/doc/html/fusion/sequences/concepts/bidirectional_sequence.html index db23ae73..504eae8d 100644 --- a/doc/html/fusion/sequences/concepts/bidirectional_sequence.html +++ b/doc/html/fusion/sequences/concepts/bidirectional_sequence.html @@ -31,7 +31,7 @@ Sequence">Bidirectional Sequence
- + Description

@@ -42,7 +42,7 @@ Iterator.

- + Refinement of
@@ -72,7 +72,7 @@
- + Valid Expressions
@@ -83,7 +83,7 @@

- +

@@ -138,13 +138,13 @@
- + Result Type Expressions

- +

@@ -175,7 +175,7 @@
- + Expression Semantics
@@ -187,7 +187,7 @@

- +

@@ -206,7 +206,7 @@
- + Models
    diff --git a/doc/html/fusion/sequences/concepts/forward_sequence.html b/doc/html/fusion/sequences/concepts/forward_sequence.html index 26f99350..222a658e 100644 --- a/doc/html/fusion/sequences/concepts/forward_sequence.html +++ b/doc/html/fusion/sequences/concepts/forward_sequence.html @@ -30,7 +30,7 @@ Sequence">Forward Sequence
- + Description

@@ -62,7 +62,7 @@

- + Valid Expressions
@@ -71,7 +71,7 @@

- +

@@ -138,13 +138,13 @@
- + Result Type Expressions

- +

@@ -183,13 +183,13 @@
- + Expression Semantics

- +

@@ -232,7 +232,7 @@
- + Invariants

@@ -258,7 +258,7 @@

- + Models
    diff --git a/doc/html/fusion/sequences/concepts/random_access_sequence.html b/doc/html/fusion/sequences/concepts/random_access_sequence.html index 8c38fa1e..e1bc08a1 100644 --- a/doc/html/fusion/sequences/concepts/random_access_sequence.html +++ b/doc/html/fusion/sequences/concepts/random_access_sequence.html @@ -31,7 +31,7 @@ Access Sequence">Random Access Sequence
- + Description

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

- + Refinement of
@@ -78,7 +78,7 @@
- + Valid Expressions
@@ -89,7 +89,7 @@

- +

@@ -144,13 +144,13 @@
- + Result Type Expressions

- +

@@ -194,7 +194,7 @@ be a reference to begin with. For this purpose, you can use result_of::value_at<S, N>.

- + Expression Semantics
@@ -206,7 +206,7 @@

- +

@@ -225,7 +225,7 @@
- + Models
    diff --git a/doc/html/fusion/sequences/containers.html b/doc/html/fusion/sequences/containers.html index 0c084347..b75185ae 100644 --- a/doc/html/fusion/sequences/containers.html +++ b/doc/html/fusion/sequences/containers.html @@ -39,7 +39,7 @@ These containers are more or less counterparts of those in STL.

    - + Header

    diff --git a/doc/html/fusion/sequences/containers/cons.html b/doc/html/fusion/sequences/containers/cons.html
    index c11ece32..805c3796 100644
    --- a/doc/html/fusion/sequences/containers/cons.html
    +++ b/doc/html/fusion/sequences/containers/cons.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -41,14 +41,14 @@ Inlined Functions).

    - + Header
     #include <boost/fusion/sequence/container/list/cons.hpp>
     
    - + Synopsis
    @@ -56,13 +56,13 @@
     struct cons;
     
    - + Template parameters

    - +

    @@ -92,7 +92,7 @@
    - + Model of
    • - + Expression Semantics
      @@ -146,7 +146,7 @@

      - +

      @@ -215,7 +215,7 @@ Inlined Functions).

      - + Example
      diff --git a/doc/html/fusion/sequences/containers/list.html b/doc/html/fusion/sequences/containers/list.html
      index 5e30d850..a837fa52 100644
      --- a/doc/html/fusion/sequences/containers/list.html
      +++ b/doc/html/fusion/sequences/containers/list.html
      @@ -26,7 +26,7 @@
       
       
      - + Description

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

      - + Header
      @@ -46,7 +46,7 @@
       #include <boost/fusion/sequence/container/list/list_forward.hpp>
       
      - + Synopsis
      @@ -77,13 +77,13 @@
       #define FUSION_MAX_LIST_SIZE 20
       
      - + Template parameters

      - +

      @@ -106,7 +106,7 @@
      - + Model of
      • - + Expression Semantics
        @@ -151,7 +151,7 @@

        - +

        @@ -207,7 +207,7 @@ Inlined Functions).

        - + Example
        diff --git a/doc/html/fusion/sequences/containers/map.html b/doc/html/fusion/sequences/containers/map.html
        index 13075960..83a228d1 100644
        --- a/doc/html/fusion/sequences/containers/map.html
        +++ b/doc/html/fusion/sequences/containers/map.html
        @@ -26,7 +26,7 @@
         
         
        - + Description

        @@ -41,14 +41,14 @@ Functions).

        - + Header
         #include <boost/fusion/sequence/container/map.hpp>
         
        - + Synopsis
        @@ -79,13 +79,13 @@
         #define FUSION_MAX_MAP_SIZE 20
         
        - + Template parameters

        - +

        @@ -108,7 +108,7 @@
        - + Model of
          @@ -142,7 +142,7 @@
        - + Expression Semantics
        @@ -156,7 +156,7 @@

        - +

        @@ -196,7 +196,7 @@
        - + Example
        diff --git a/doc/html/fusion/sequences/containers/set.html b/doc/html/fusion/sequences/containers/set.html
        index fa52423a..adc5887e 100644
        --- a/doc/html/fusion/sequences/containers/set.html
        +++ b/doc/html/fusion/sequences/containers/set.html
        @@ -26,7 +26,7 @@
         
         
        - + Description

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

        - + Header
         #include <boost/fusion/sequence/container/set.hpp>
         
        - + Synopsis
        @@ -77,13 +77,13 @@
         #define FUSION_MAX_SET_SIZE 20
         
        - + Template parameters

        - +

        @@ -106,7 +106,7 @@
        - + Model of
          @@ -140,7 +140,7 @@
        - + Expression Semantics
        @@ -154,7 +154,7 @@

        - +

        @@ -194,7 +194,7 @@
        - + Example
        diff --git a/doc/html/fusion/sequences/containers/vector.html b/doc/html/fusion/sequences/containers/vector.html
        index ab22e137..446057ff 100644
        --- a/doc/html/fusion/sequences/containers/vector.html
        +++ b/doc/html/fusion/sequences/containers/vector.html
        @@ -26,7 +26,7 @@
         
         
        - + Description

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

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

        @@ -115,13 +115,13 @@ #define FUSION_MAX_VECTOR_SIZE 20

        - + Template parameters

        - +

        @@ -144,7 +144,7 @@
        - + Model of
        • - + Expression Semantics
          @@ -186,7 +186,7 @@

          - +

          @@ -226,7 +226,7 @@
          - + Example
          diff --git a/doc/html/fusion/sequences/conversion.html b/doc/html/fusion/sequences/conversion.html
          index d025fd7d..9aac0694 100644
          --- a/doc/html/fusion/sequences/conversion.html
          +++ b/doc/html/fusion/sequences/conversion.html
          @@ -34,7 +34,7 @@
                   types using one of these conversion functions.
                 

          - + Header

          diff --git a/doc/html/fusion/sequences/conversion/functions/as_list.html b/doc/html/fusion/sequences/conversion/functions/as_list.html
          index 8803c397..48db8834 100644
          --- a/doc/html/fusion/sequences/conversion/functions/as_list.html
          +++ b/doc/html/fusion/sequences/conversion/functions/as_list.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Convert a fusion sequence to a list.

          - + Synopsis
          @@ -46,12 +46,12 @@
           as_list(Sequence const& seq);
           
          - + Parameters

          - +

          @@ -73,7 +73,7 @@
          - + Expression Semantics
          @@ -88,14 +88,14 @@ seq, to a list.

          - + Header
           #include <boost/fusion/sequence/conversion/as_list.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/conversion/functions/as_map.html b/doc/html/fusion/sequences/conversion/functions/as_map.html
          index ba2f5f66..f6b3147b 100644
          --- a/doc/html/fusion/sequences/conversion/functions/as_map.html
          +++ b/doc/html/fusion/sequences/conversion/functions/as_map.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Convert a fusion sequence to a map.

          - + Synopsis
          @@ -46,12 +46,12 @@
           as_map(Sequence const& seq);
           
          - + Parameters

          - +

          @@ -73,7 +73,7 @@
          - + Expression Semantics
          @@ -93,14 +93,14 @@ There may be no duplicate fusion::pair key types.

          - + Header
           #include <boost/fusion/sequence/conversion/as_map.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/conversion/functions/as_set.html b/doc/html/fusion/sequences/conversion/functions/as_set.html
          index 848e2c06..4311f591 100644
          --- a/doc/html/fusion/sequences/conversion/functions/as_set.html
          +++ b/doc/html/fusion/sequences/conversion/functions/as_set.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Convert a fusion sequence to a set.

          - + Synopsis
          @@ -46,12 +46,12 @@
           as_set(Sequence const& seq);
           
          - + Parameters

          - +

          @@ -73,7 +73,7 @@
          - + Expression Semantics
          @@ -92,14 +92,14 @@ key types.

          - + Header
           #include <boost/fusion/sequence/conversion/as_set.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/conversion/functions/as_vector.html b/doc/html/fusion/sequences/conversion/functions/as_vector.html
          index cb8a8a46..9af845f9 100644
          --- a/doc/html/fusion/sequences/conversion/functions/as_vector.html
          +++ b/doc/html/fusion/sequences/conversion/functions/as_vector.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Convert a fusion sequence to a vector.

          - + Synopsis
          @@ -46,12 +46,12 @@
           as_vector(Sequence const& seq);
           
          - + Parameters

          - +

          @@ -73,7 +73,7 @@
          - + Expression Semantics
          @@ -88,14 +88,14 @@ seq, to a vector.

          - + Header
           #include <boost/fusion/sequence/conversion/as_vector.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_list.html b/doc/html/fusion/sequences/conversion/metafunctions/as_list.html
          index c3ffa5a3..507e3c08 100644
          --- a/doc/html/fusion/sequences/conversion/metafunctions/as_list.html
          +++ b/doc/html/fusion/sequences/conversion/metafunctions/as_list.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Returns the result type of as_list.

          - + Synopsis
          @@ -41,12 +41,12 @@
           struct as_list;
           
          - + Parameters

          - +

          @@ -70,7 +70,7 @@
          - + Expression Semantics
          @@ -86,14 +86,14 @@ Sequence, to a list.

          - + Header
           #include <boost/fusion/sequence/conversion/as_list.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_map.html b/doc/html/fusion/sequences/conversion/metafunctions/as_map.html
          index 6d6517a4..ba6ba5a4 100644
          --- a/doc/html/fusion/sequences/conversion/metafunctions/as_map.html
          +++ b/doc/html/fusion/sequences/conversion/metafunctions/as_map.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Returns the result type of as_map.

          - + Synopsis
          @@ -41,12 +41,12 @@
           struct as_map;
           
          - + Parameters

          - +

          @@ -70,7 +70,7 @@
          - + Expression Semantics
          @@ -91,14 +91,14 @@ There may be no duplicate fusion::pair key types.

          - + Header
           #include <boost/fusion/sequence/conversion/as_map.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_set.html b/doc/html/fusion/sequences/conversion/metafunctions/as_set.html
          index 79809925..5fbe7d46 100644
          --- a/doc/html/fusion/sequences/conversion/metafunctions/as_set.html
          +++ b/doc/html/fusion/sequences/conversion/metafunctions/as_set.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Returns the result type of as_set.

          - + Synopsis
          @@ -41,12 +41,12 @@
           struct as_set;
           
          - + Parameters

          - +

          @@ -70,7 +70,7 @@
          - + Expression Semantics
          @@ -90,14 +90,14 @@ key types.

          - + Header
           #include <boost/fusion/sequence/conversion/as_set.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html b/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html
          index 8cf18286..77d09be1 100644
          --- a/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html
          +++ b/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Returns the result type of as_vector.

          - + Synopsis
          @@ -41,12 +41,12 @@
           struct as_vector;
           
          - + Parameters

          - +

          @@ -70,7 +70,7 @@
          - + Expression Semantics
          @@ -86,14 +86,14 @@ Sequence, to a vector.

          - + Header
           #include <boost/fusion/sequence/conversion/as_vector.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/generation.html b/doc/html/fusion/sequences/generation.html
          index 515843b8..9cf8243f 100644
          --- a/doc/html/fusion/sequences/generation.html
          +++ b/doc/html/fusion/sequences/generation.html
          @@ -33,7 +33,7 @@
                   These are the functions that you can use to generate various forms of Containers from elemental values.
                 

          - + Header

          diff --git a/doc/html/fusion/sequences/generation/functions/list_tie.html b/doc/html/fusion/sequences/generation/functions/list_tie.html
          index 34be0d6a..647ff225 100644
          --- a/doc/html/fusion/sequences/generation/functions/list_tie.html
          +++ b/doc/html/fusion/sequences/generation/functions/list_tie.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Constructs a tie using a list sequence.

          - + Synopsis
          @@ -53,12 +53,12 @@
           #define FUSION_MAX_LIST_SIZE 20
           
          - + Parameters

          - +

          @@ -83,7 +83,7 @@
          - + Expression Semantics
          @@ -98,14 +98,14 @@ Semantics: Create a list of references from x0, x1,... xN.

          - + Header
           #include <boost/fusion/sequence/generation/list_tie.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/generation/functions/make_cons.html b/doc/html/fusion/sequences/generation/functions/make_cons.html
          index 17c2f422..5bbfb611 100644
          --- a/doc/html/fusion/sequences/generation/functions/make_cons.html
          +++ b/doc/html/fusion/sequences/generation/functions/make_cons.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

          @@ -35,7 +35,7 @@ (tail).

          - + Synopsis
          @@ -48,12 +48,12 @@
           make_cons(Car const& car, Cdr const& cdr);
           
          - + Parameters

          - +

          @@ -87,7 +87,7 @@
          - + Expression Semantics
          @@ -103,21 +103,21 @@ (tail).

          - + Header
           #include <boost/fusion/sequence/generation/make_cons.hpp>
           
          - + Example
           make_cons('x', make_cons(123))
           
          - + See also
          diff --git a/doc/html/fusion/sequences/generation/functions/make_list.html b/doc/html/fusion/sequences/generation/functions/make_list.html index a61a0620..cbd81bd5 100644 --- a/doc/html/fusion/sequences/generation/functions/make_list.html +++ b/doc/html/fusion/sequences/generation/functions/make_list.html @@ -26,14 +26,14 @@
          - + Description

          Create a list from one or more values.

          - + Synopsis
          @@ -53,12 +53,12 @@
           #define FUSION_MAX_LIST_SIZE 20
           
          - + Parameters

          - +

          @@ -83,7 +83,7 @@
          - + Expression Semantics
          @@ -97,21 +97,21 @@ Semantics: Create a list from x0, x1,... xN.

          - + Header
           #include <boost/fusion/sequence/generation/make_list.hpp>
           
          - + Example
           make_list(123, "hello", 12.5)
           
          - + See also
          diff --git a/doc/html/fusion/sequences/generation/functions/make_map.html b/doc/html/fusion/sequences/generation/functions/make_map.html index 48c80a52..15e7ac13 100644 --- a/doc/html/fusion/sequences/generation/functions/make_map.html +++ b/doc/html/fusion/sequences/generation/functions/make_map.html @@ -26,7 +26,7 @@
          - + Description

          @@ -34,7 +34,7 @@ pairs.

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

          The variadic function accepts 0 to FUSION_MAX_VECTOR_SIZE - [10] + [10] elements, where FUSION_MAX_VECTOR_SIZE is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE @@ -57,12 +57,12 @@ #define FUSION_MAX_VECTOR_SIZE 20

          - + Parameters

          - +

          @@ -96,7 +96,7 @@
          - + Expression Semantics
          @@ -115,14 +115,14 @@ key types.

          - + Header
           #include <boost/fusion/sequence/generation/make_map.hpp>
           
          - + Example
          @@ -131,7 +131,7 @@
             , make_pair<double>("Men"))
           
          - + See also
          @@ -141,7 +141,7 @@



          -

          [10] +

          [10] map is implemented in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

          diff --git a/doc/html/fusion/sequences/generation/functions/make_set.html b/doc/html/fusion/sequences/generation/functions/make_set.html index f41f92eb..bfc32596 100644 --- a/doc/html/fusion/sequences/generation/functions/make_set.html +++ b/doc/html/fusion/sequences/generation/functions/make_set.html @@ -26,14 +26,14 @@
          - + Description

          Create a set from one or more values.

          - + Synopsis
          @@ -44,7 +44,7 @@
           

          The variadic function accepts 0 to FUSION_MAX_VECTOR_SIZE - [9] + [9] elements, where FUSION_MAX_VECTOR_SIZE is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE @@ -54,12 +54,12 @@ #define FUSION_MAX_VECTOR_SIZE 20

          - + Parameters

          - +

          @@ -84,7 +84,7 @@
          - + Expression Semantics
          @@ -102,21 +102,21 @@ key types.

          - + Header
           #include <boost/fusion/sequence/generation/make_set.hpp>
           
          - + Example
           make_set(123, "hello", 12.5)
           
          - + See also
          @@ -125,7 +125,7 @@



          -

          [9] +

          [9] set is implemented in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

          diff --git a/doc/html/fusion/sequences/generation/functions/make_vector.html b/doc/html/fusion/sequences/generation/functions/make_vector.html index a62ece1c..72a6a10f 100644 --- a/doc/html/fusion/sequences/generation/functions/make_vector.html +++ b/doc/html/fusion/sequences/generation/functions/make_vector.html @@ -26,14 +26,14 @@
          - + Description

          Create a vector from one or more values.

          - + Synopsis
          @@ -53,12 +53,12 @@
           #define FUSION_MAX_VECTOR_SIZE 20
           
          - + Parameters

          - +

          @@ -83,7 +83,7 @@
          - + Expression Semantics
          @@ -97,21 +97,21 @@ Semantics: Create a vector from x0, x1,... xN.

          - + Header
           #include <boost/fusion/sequence/generation/make_vector.hpp>
           
          - + Example
           make_vector(123, "hello", 12.5)
           
          - + See also
          diff --git a/doc/html/fusion/sequences/generation/functions/tiers.html b/doc/html/fusion/sequences/generation/functions/tiers.html index b7188658..fa837f74 100644 --- a/doc/html/fusion/sequences/generation/functions/tiers.html +++ b/doc/html/fusion/sequences/generation/functions/tiers.html @@ -48,7 +48,7 @@ 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)) - [11] + [11] .

          @@ -66,7 +66,7 @@ when calling functions which return sequences.

          - + Ignore

          @@ -81,7 +81,7 @@



          -

          [11] +

          [11] see Boost.Ref for details about ref

          diff --git a/doc/html/fusion/sequences/generation/functions/vector_tie.html b/doc/html/fusion/sequences/generation/functions/vector_tie.html index 3db9e3f1..fef73f54 100644 --- a/doc/html/fusion/sequences/generation/functions/vector_tie.html +++ b/doc/html/fusion/sequences/generation/functions/vector_tie.html @@ -26,14 +26,14 @@
          - + Description

          Constructs a tie using a vector sequence.

          - + Synopsis
          @@ -53,12 +53,12 @@
           #define FUSION_MAX_VECTOR_SIZE 20
           
          - + Parameters

          - +

          @@ -83,7 +83,7 @@
          - + Expression Semantics
          @@ -98,14 +98,14 @@ Semantics: Create a vector of references from x0, x1,... xN.

          - + Header
           #include <boost/fusion/sequence/generation/vector_tie.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/generation/metafunctions/list_tie.html b/doc/html/fusion/sequences/generation/metafunctions/list_tie.html
          index 545ba6e1..25c2f064 100644
          --- a/doc/html/fusion/sequences/generation/metafunctions/list_tie.html
          +++ b/doc/html/fusion/sequences/generation/metafunctions/list_tie.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Returns the result type of list_tie.

          - + Synopsis
          @@ -52,12 +52,12 @@
           #define FUSION_MAX_LIST_SIZE 20
           
          - + Parameters

          - +

          @@ -80,7 +80,7 @@
          - + Expression Semantics
          @@ -95,14 +95,14 @@ Semantics: Create a list of references from T0, T1,... TN.

          - + Header
           #include <boost/fusion/sequence/generation/list_tie.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_cons.html b/doc/html/fusion/sequences/generation/metafunctions/make_cons.html
          index 7cf4c838..2cb9ab53 100644
          --- a/doc/html/fusion/sequences/generation/metafunctions/make_cons.html
          +++ b/doc/html/fusion/sequences/generation/metafunctions/make_cons.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Returns the result type of make_cons.

          - + Synopsis
          @@ -41,12 +41,12 @@
           struct make_cons;
           
          - + Parameters

          - +

          @@ -78,7 +78,7 @@
          - + Expression Semantics
          @@ -96,14 +96,14 @@ (tail).

          - + Header
           #include <boost/fusion/sequence/generation/make_cons.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_list.html b/doc/html/fusion/sequences/generation/metafunctions/make_list.html
          index d8ce1d48..6f9123a9 100644
          --- a/doc/html/fusion/sequences/generation/metafunctions/make_list.html
          +++ b/doc/html/fusion/sequences/generation/metafunctions/make_list.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Returns the result type of make_list.

          - + Synopsis
          @@ -52,12 +52,12 @@
           #define FUSION_MAX_LIST_SIZE 20
           
          - + Parameters

          - +

          @@ -80,7 +80,7 @@
          - + Expression Semantics
          @@ -96,14 +96,14 @@ Semantics: Create a list from T0, T1,... TN.

          - + Header
           #include <boost/fusion/sequence/generation/make_list.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_map.html b/doc/html/fusion/sequences/generation/metafunctions/make_map.html
          index d87705c9..a6d53d3f 100644
          --- a/doc/html/fusion/sequences/generation/metafunctions/make_map.html
          +++ b/doc/html/fusion/sequences/generation/metafunctions/make_map.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Returns the result type of make_map.

          - + Synopsis
          @@ -45,7 +45,7 @@
           

          The variadic function accepts 0 to FUSION_MAX_VECTOR_SIZE - [13] + [13] elements, where FUSION_MAX_VECTOR_SIZE is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE @@ -55,12 +55,12 @@ #define FUSION_MAX_VECTOR_SIZE 20

          - + Parameters

          - +

          @@ -92,7 +92,7 @@
          - + Expression Semantics
          @@ -112,21 +112,21 @@ key types.

          - + Header
           #include <boost/fusion/sequence/generation/make_map.hpp>
           
          - + Example
           result_of::make_map<int, double, char, double>::type
           
          - + See also
          @@ -135,7 +135,7 @@



          -

          [13] +

          [13] map is implemented in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

          diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_set.html b/doc/html/fusion/sequences/generation/metafunctions/make_set.html index f2f78d21..9b6ae69c 100644 --- a/doc/html/fusion/sequences/generation/metafunctions/make_set.html +++ b/doc/html/fusion/sequences/generation/metafunctions/make_set.html @@ -26,14 +26,14 @@
          - + Description

          Returns the result type of make_set.

          - + Synopsis
          @@ -43,7 +43,7 @@
           

          The variadic function accepts 0 to FUSION_MAX_VECTOR_SIZE - [12] + [12] elements, where FUSION_MAX_VECTOR_SIZE is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE @@ -53,12 +53,12 @@ #define FUSION_MAX_VECTOR_SIZE 20

          - + Parameters

          - +

          @@ -81,7 +81,7 @@
          - + Expression Semantics
          @@ -101,14 +101,14 @@ key types.

          - + Header
           #include <boost/fusion/sequence/generation/make_set.hpp>
           
          - + Example
          @@ -116,7 +116,7 @@
           


          -

          [12] +

          [12] set is implemented in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

          diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_vector.html b/doc/html/fusion/sequences/generation/metafunctions/make_vector.html index 901deeed..dafc02ae 100644 --- a/doc/html/fusion/sequences/generation/metafunctions/make_vector.html +++ b/doc/html/fusion/sequences/generation/metafunctions/make_vector.html @@ -26,14 +26,14 @@
          - + Description

          Returns the result type of make_vector.

          - + Synopsis
          @@ -52,12 +52,12 @@
           #define FUSION_MAX_VECTOR_SIZE 20
           
          - + Parameters

          - +

          @@ -80,7 +80,7 @@
          - + Expression Semantics
          @@ -96,14 +96,14 @@ Semantics: Create a vector from T0, T1,... TN.

          - + Header
           #include <boost/fusion/sequence/generation/make_list.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html b/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html
          index 4016bc6b..aeb425f9 100644
          --- a/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html
          +++ b/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Returns the result type of vector_tie.

          - + Synopsis
          @@ -52,12 +52,12 @@
           #define FUSION_MAX_VECTOR_SIZE 20
           
          - + Parameters

          - +

          @@ -80,7 +80,7 @@
          - + Expression Semantics
          @@ -95,14 +95,14 @@ Semantics: Create a vector of references from T0, T1,... TN.

          - + Header
           #include <boost/fusion/sequence/generation/vector_tie.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/intrinsics.html b/doc/html/fusion/sequences/intrinsics.html
          index e740939e..ce24a750 100644
          --- a/doc/html/fusion/sequences/intrinsics.html
          +++ b/doc/html/fusion/sequences/intrinsics.html
          @@ -36,11 +36,11 @@
                   Intrinsic functions, unlike Algorithms,
                   are not generic across the full Sequence
                   repertoire. They need to be implemented for each Fusion Sequence
          -        [5]
          +        [5]
                   .
                 

          - + Header

          @@ -48,7 +48,7 @@
           


          -

          [5] +

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

          diff --git a/doc/html/fusion/sequences/intrinsics/functions/at.html b/doc/html/fusion/sequences/intrinsics/functions/at.html index 857d65e6..5de7d6b8 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/at.html +++ b/doc/html/fusion/sequences/intrinsics/functions/at.html @@ -26,14 +26,14 @@
          - + Description

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

          - + Synopsis
          @@ -46,12 +46,12 @@
           at(Sequence const& seq);
           
          - + Parameters

          - +

          @@ -86,7 +86,7 @@
          - + Expression Semantics
          @@ -112,14 +112,14 @@ deref(advance<N>(begin(s)))
          - + Header
           #include <boost/fusion/sequence/intrinsic/at.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/intrinsics/functions/at_c.html b/doc/html/fusion/sequences/intrinsics/functions/at_c.html
          index 4b2e7b33..692d171f 100644
          --- a/doc/html/fusion/sequences/intrinsics/functions/at_c.html
          +++ b/doc/html/fusion/sequences/intrinsics/functions/at_c.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -46,12 +46,12 @@
           at_c(Sequence const& seq);
           
          - + Parameters

          - +

          @@ -85,7 +85,7 @@
          - + Expression Semantics
          @@ -111,14 +111,14 @@ deref(advance<N>(begin(s)))
          - + Header
           #include <boost/fusion/sequence/intrinsic/at_c.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/intrinsics/functions/at_key.html b/doc/html/fusion/sequences/intrinsics/functions/at_key.html
          index ca7eb5e6..dd71c515 100644
          --- a/doc/html/fusion/sequences/intrinsics/functions/at_key.html
          +++ b/doc/html/fusion/sequences/intrinsics/functions/at_key.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Returns the element associated with a Key from the sequence.

          - + Synopsis
          @@ -46,12 +46,12 @@
           at_key(Sequence const& seq);
           
          - + Parameters

          - +

          @@ -84,7 +84,7 @@
          - + Expression Semantics
          @@ -107,14 +107,14 @@ with Key.

          - + Header
           #include <boost/fusion/sequence/intrinsic/at_key.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/intrinsics/functions/back.html b/doc/html/fusion/sequences/intrinsics/functions/back.html
          index 792312f2..e7a5c361 100644
          --- a/doc/html/fusion/sequences/intrinsics/functions/back.html
          +++ b/doc/html/fusion/sequences/intrinsics/functions/back.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Returns the last element in the sequence.

          - + Synopsis
          @@ -46,12 +46,12 @@
           back(Sequence const& seq);
           
          - + Parameters

          - +

          @@ -76,7 +76,7 @@
          - + Expression Semantics
          @@ -99,14 +99,14 @@ in the sequence.

          - + Header
           #include <boost/fusion/sequence/intrinsic/back.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/intrinsics/functions/begin.html b/doc/html/fusion/sequences/intrinsics/functions/begin.html
          index 0280223e..a710e1a8 100644
          --- a/doc/html/fusion/sequences/intrinsics/functions/begin.html
          +++ b/doc/html/fusion/sequences/intrinsics/functions/begin.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -46,12 +46,12 @@
           begin(Sequence const& seq);
           
          - + Parameters

          - +

          @@ -77,7 +77,7 @@
          - + Expression Semantics
          @@ -107,14 +107,14 @@ to the first element in the sequence.

          - + Header
           #include <boost/fusion/sequence/intrinsic/begin.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/intrinsics/functions/empty.html b/doc/html/fusion/sequences/intrinsics/functions/empty.html
          index 4f163aee..e41d03e4 100644
          --- a/doc/html/fusion/sequences/intrinsics/functions/empty.html
          +++ b/doc/html/fusion/sequences/intrinsics/functions/empty.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -44,12 +44,12 @@
           empty(Sequence const& seq);
           
          - + Parameters

          - +

          @@ -74,7 +74,7 @@
          - + Expression Semantics
          @@ -89,14 +89,14 @@ to false.

          - + Header
           #include <boost/fusion/sequence/intrinsic/empty.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/intrinsics/functions/end.html b/doc/html/fusion/sequences/intrinsics/functions/end.html
          index c4c4aafb..278345fc 100644
          --- a/doc/html/fusion/sequences/intrinsics/functions/end.html
          +++ b/doc/html/fusion/sequences/intrinsics/functions/end.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -46,12 +46,12 @@
           end(Sequence const& seq);
           
          - + Parameters

          - +

          @@ -77,7 +77,7 @@
          - + Expression Semantics
          @@ -107,14 +107,14 @@ to one element past the end of the sequence.

          - + Header
           #include <boost/fusion/sequence/intrinsic/end.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/intrinsics/functions/front.html b/doc/html/fusion/sequences/intrinsics/functions/front.html
          index b46b483c..91454f78 100644
          --- a/doc/html/fusion/sequences/intrinsics/functions/front.html
          +++ b/doc/html/fusion/sequences/intrinsics/functions/front.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Returns the first element in the sequence.

          - + Synopsis
          @@ -46,12 +46,12 @@
           front(Sequence const& seq);
           
          - + Parameters

          - +

          @@ -76,7 +76,7 @@
          - + Expression Semantics
          @@ -99,14 +99,14 @@ in the sequence.

          - + Header
           #include <boost/fusion/sequence/intrinsic/front.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/intrinsics/functions/has_key.html b/doc/html/fusion/sequences/intrinsics/functions/has_key.html
          index 73016aa5..10bb16e3 100644
          --- a/doc/html/fusion/sequences/intrinsics/functions/has_key.html
          +++ b/doc/html/fusion/sequences/intrinsics/functions/has_key.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -45,12 +45,12 @@
           has_key(Sequence const& seq);
           
          - + Parameters

          - +

          @@ -83,7 +83,7 @@
          - + Expression Semantics
          @@ -98,14 +98,14 @@ associated with Key, else, evaluates to false.

          - + Header
           #include <boost/fusion/sequence/intrinsic/has_key.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/intrinsics/functions/size.html b/doc/html/fusion/sequences/intrinsics/functions/size.html
          index 9513d565..34add122 100644
          --- a/doc/html/fusion/sequences/intrinsics/functions/size.html
          +++ b/doc/html/fusion/sequences/intrinsics/functions/size.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -43,12 +43,12 @@
           size(Sequence const& seq);
           
          - + Parameters

          - +

          @@ -73,7 +73,7 @@
          - + Expression Semantics
          @@ -88,14 +88,14 @@ in the sequence.

          - + Header
           #include <boost/fusion/sequence/intrinsic/size.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/at.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at.html
          index 83d94b4e..72e7cb24 100644
          --- a/doc/html/fusion/sequences/intrinsics/metafunctions/at.html
          +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/at.html
          @@ -26,16 +26,16 @@
           
           
          - + Description

          Returns the result type of at - [6] + [6] .

          - + Synopsis
          @@ -49,7 +49,7 @@
           

          - + Parameters

          @@ -83,7 +83,7 @@
          - + Expression Semantics
          @@ -98,14 +98,14 @@ using at to access the Nth element of Seq.

          - + Header
           #include <boost/fusion/sequence/intrinsic/at.hpp>
           
          - + Example
          @@ -114,7 +114,7 @@
           


          -

          [6] +

          [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 diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html index 3f991aa4..a894bafc 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html @@ -26,16 +26,16 @@

          - + Description

          Returns the result type of at_c - [7] + [7] .

          - + Synopsis
          @@ -49,7 +49,7 @@
           

          - + Parameters

          @@ -83,7 +83,7 @@
          - + Expression Semantics
          @@ -98,14 +98,14 @@ using at_c to access the Mth element of Seq.

          - + Header
           #include <boost/fusion/sequence/intrinsic/at.hpp>
           
          - + Example
          @@ -114,7 +114,7 @@
           


          -

          [7] +

          [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 diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html index be323730..c0aea804 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html @@ -26,16 +26,16 @@

          - + Description

          Returns the result type of at_key - [8] + [8] .

          - + Synopsis
          @@ -49,7 +49,7 @@
           

          - + Parameters

          @@ -83,7 +83,7 @@
          - + Expression Semantics
          @@ -100,14 +100,14 @@ Seq.

          - + Header
           #include <boost/fusion/sequence/intrinsic/at_key.hpp>
           
          - + Example
          @@ -116,7 +116,7 @@
           


          -

          [8] +

          [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 diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/back.html b/doc/html/fusion/sequences/intrinsics/metafunctions/back.html index a677ceb9..837a3525 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/back.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/back.html @@ -26,14 +26,14 @@

          - + Description

          Returns the result type of back.

          - + Synopsis
          @@ -45,7 +45,7 @@
           

          - + Parameters

          @@ -71,7 +71,7 @@
          - + Expression Semantics
          @@ -86,14 +86,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>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html b/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html
          index e39445cd..d8b31663 100644
          --- a/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html
          +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Returns the result type of begin.

          - + Synopsis
          @@ -45,7 +45,7 @@
           

          - + Parameters

          @@ -71,7 +71,7 @@
          - + Expression Semantics
          @@ -87,14 +87,14 @@ to the first element of Seq.

          - + Header
           #include <boost/fusion/sequence/intrinsic/begin.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html b/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html
          index 323d1793..4657bb80 100644
          --- a/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html
          +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Returns the result type of empty.

          - + Synopsis
          @@ -45,7 +45,7 @@
           

          - + Parameters

          @@ -71,7 +71,7 @@
          - + Expression Semantics
          @@ -87,14 +87,14 @@ mpl::false_ otherwise.

          - + Header
           #include <boost/fusion/sequence/intrinsic/empty.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/end.html b/doc/html/fusion/sequences/intrinsics/metafunctions/end.html
          index 4e7488c8..cb39f4cc 100644
          --- a/doc/html/fusion/sequences/intrinsics/metafunctions/end.html
          +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/end.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Returns the result type of end.

          - + Synopsis
          @@ -45,7 +45,7 @@
           

          - + Parameters

          @@ -71,7 +71,7 @@
          - + Expression Semantics
          @@ -87,14 +87,14 @@ one past the end of Seq.

          - + Header
           #include <boost/fusion/sequence/intrinsic/end.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/front.html b/doc/html/fusion/sequences/intrinsics/metafunctions/front.html
          index b3046b41..ed5816c6 100644
          --- a/doc/html/fusion/sequences/intrinsics/metafunctions/front.html
          +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/front.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Returns the result type of front.

          - + Synopsis
          @@ -45,7 +45,7 @@
           

          - + Parameters

          @@ -71,7 +71,7 @@
          - + Expression Semantics
          @@ -87,14 +87,14 @@ Equivalent to result_of::deref<result_of::begin<Seq>::type>::type.

          - + Header
           #include <boost/fusion/sequence/intrinsic/front.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html
          index 6c32397a..af7564fe 100644
          --- a/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html
          +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Returns the result type of has_key.

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

          - + Parameters

          @@ -81,7 +81,7 @@
          - + Expression Semantics
          @@ -98,14 +98,14 @@ mpl::false_ otherwise.

          - + Header
           #include <boost/fusion/sequence/intrinsic/has_key.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/size.html b/doc/html/fusion/sequences/intrinsics/metafunctions/size.html
          index 5515d849..b43f94b5 100644
          --- a/doc/html/fusion/sequences/intrinsics/metafunctions/size.html
          +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/size.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Returns the result type of size.

          - + Synopsis
          @@ -45,7 +45,7 @@
           

          - + Parameters

          @@ -71,7 +71,7 @@
          - + Expression Semantics
          @@ -86,14 +86,14 @@ in Seq.

          - + Header
           #include <boost/fusion/sequence/intrinsic/size.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html
          index 7d376f8a..8b1ee812 100644
          --- a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html
          +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Returns the actual type at a given index from the Sequence.

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

          - + Parameters

          @@ -81,7 +81,7 @@
          - + Expression Semantics
          @@ -96,14 +96,14 @@ the Nth element of Seq.

          - + Header
           #include <boost/fusion/sequence/intrinsic/value_at.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html
          index e2c7a5a4..b7de2c44 100644
          --- a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html
          +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Returns the actual type at a given index from the Sequence.

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

          - + Parameters

          @@ -81,7 +81,7 @@
          - + Expression Semantics
          @@ -96,14 +96,14 @@ the Mth element of Seq.

          - + Header
           #include <boost/fusion/sequence/intrinsic/value_at.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html
          index a0937754..33bbc417 100644
          --- a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html
          +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Returns the actual element type associated with a Key from the Sequence.

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

          - + Parameters

          @@ -81,7 +81,7 @@
          - + Expression Semantics
          @@ -97,14 +97,14 @@ in Seq.

          - + Header
           #include <boost/fusion/sequence/intrinsic/value_at_key.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/operators/comparison.html b/doc/html/fusion/sequences/operators/comparison.html
          index c34664ee..494d17fe 100644
          --- a/doc/html/fusion/sequences/operators/comparison.html
          +++ b/doc/html/fusion/sequences/operators/comparison.html
          @@ -48,7 +48,7 @@
                     only until the result is clear.
                   

          - + Header
          diff --git a/doc/html/fusion/sequences/operators/comparison/equal.html b/doc/html/fusion/sequences/operators/comparison/equal.html
          index e3a2cd02..11bbbe70 100644
          --- a/doc/html/fusion/sequences/operators/comparison/equal.html
          +++ b/doc/html/fusion/sequences/operators/comparison/equal.html
          @@ -27,14 +27,14 @@
           
           
          - + Description

          Compare two sequences for equality.

          - + Synopsis
          @@ -43,12 +43,12 @@
           operator==(Seq1 const& a, Seq2 const& b);
           
          - + Parameters

          - +

          @@ -72,7 +72,7 @@
          - + Expression Semantics
          @@ -108,14 +108,14 @@ true.

          - + Header
           #include <boost/fusion/sequence/comparison/equal_to.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/operators/comparison/greater_than.html b/doc/html/fusion/sequences/operators/comparison/greater_than.html
          index ee28a0ef..8d7b3028 100644
          --- a/doc/html/fusion/sequences/operators/comparison/greater_than.html
          +++ b/doc/html/fusion/sequences/operators/comparison/greater_than.html
          @@ -34,7 +34,7 @@
                       Lexicographically compare two sequences.
                     

          - + Synopsis
          @@ -43,12 +43,12 @@
           operator>(Seq1 const& a, Seq2 const& b);
           
          - + Parameters

          - +

          @@ -72,7 +72,7 @@
          - + Expression Semantics
          @@ -100,14 +100,14 @@ Semantics: Returns b < a.

          - + Header
           #include <boost/fusion/sequence/comparison/less_equal.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html b/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html
          index a3b86905..47124b60 100644
          --- a/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html
          +++ b/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html
          @@ -33,7 +33,7 @@
                       Lexicographically compare two sequences.
                     

          - + Synopsis
          @@ -42,12 +42,12 @@
           operator>=(Seq1 const& a, Seq2 const& b);
           
          - + Parameters

          - +

          @@ -71,7 +71,7 @@
          - + Expression Semantics
          @@ -99,14 +99,14 @@ Semantics: Returns !(a < b).

          - + Header
           #include <boost/fusion/sequence/comparison/greater_equal.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/operators/comparison/less_than.html b/doc/html/fusion/sequences/operators/comparison/less_than.html
          index d443cb7a..afd7b8e7 100644
          --- a/doc/html/fusion/sequences/operators/comparison/less_than.html
          +++ b/doc/html/fusion/sequences/operators/comparison/less_than.html
          @@ -34,7 +34,7 @@
                       Lexicographically compare two sequences.
                     

          - + Synopsis
          @@ -43,12 +43,12 @@
           operator<(Seq1 const& a, Seq2 const& b);
           
          - + Parameters

          - +

          @@ -72,7 +72,7 @@
          - + Expression Semantics
          @@ -102,14 +102,14 @@ and b.

          - + Header
           #include <boost/fusion/sequence/comparison/less.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/operators/comparison/less_than_equal.html b/doc/html/fusion/sequences/operators/comparison/less_than_equal.html
          index 6226965c..efe2936e 100644
          --- a/doc/html/fusion/sequences/operators/comparison/less_than_equal.html
          +++ b/doc/html/fusion/sequences/operators/comparison/less_than_equal.html
          @@ -34,7 +34,7 @@
                       Lexicographically compare two sequences.
                     

          - + Synopsis
          @@ -43,12 +43,12 @@
           operator<=(Seq1 const& a, Seq2 const& b);
           
          - + Parameters

          - +

          @@ -72,7 +72,7 @@
          - + Expression Semantics
          @@ -100,14 +100,14 @@ Semantics: Returns !(b < a).

          - + Header
           #include <boost/fusion/sequence/comparison/less_equal.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/operators/comparison/not_equal.html b/doc/html/fusion/sequences/operators/comparison/not_equal.html
          index 44eca5e3..282f03d6 100644
          --- a/doc/html/fusion/sequences/operators/comparison/not_equal.html
          +++ b/doc/html/fusion/sequences/operators/comparison/not_equal.html
          @@ -33,7 +33,7 @@
                       Compare two sequences for inequality.
                     

          - + Synopsis
          @@ -42,12 +42,12 @@
           operator!=(Seq1 const& a, Seq2 const& b);
           
          - + Parameters

          - +

          @@ -71,7 +71,7 @@
          - + Expression Semantics
          @@ -102,14 +102,14 @@ Returns !(a == b).

          - + Header
           #include <boost/fusion/sequence/comparison/not_equal_to.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/operators/i_o.html b/doc/html/fusion/sequences/operators/i_o.html
          index 82747428..676d0929 100644
          --- a/doc/html/fusion/sequences/operators/i_o.html
          +++ b/doc/html/fusion/sequences/operators/i_o.html
          @@ -115,7 +115,7 @@
                     representation may not be unambiguously parseable.
                   

          - + Header
          diff --git a/doc/html/fusion/sequences/operators/i_o/in.html b/doc/html/fusion/sequences/operators/i_o/in.html
          index 48b0c1e2..4601fad8 100644
          --- a/doc/html/fusion/sequences/operators/i_o/in.html
          +++ b/doc/html/fusion/sequences/operators/i_o/in.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

          @@ -34,7 +34,7 @@ stream.

          - + Synopsis
          @@ -43,12 +43,12 @@
           operator>>(IStream& is, Sequence& seq);
           
          - + Parameters

          - +

          @@ -78,7 +78,7 @@
          - + Expression Semantics
          @@ -93,14 +93,14 @@ call is >> e.

          - + Header
           #include <boost/fusion/sequence/io/in.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/operators/i_o/out.html b/doc/html/fusion/sequences/operators/i_o/out.html
          index 4bcf5a37..85ca5c06 100644
          --- a/doc/html/fusion/sequences/operators/i_o/out.html
          +++ b/doc/html/fusion/sequences/operators/i_o/out.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

          @@ -34,7 +34,7 @@ stream.

          - + Synopsis
          @@ -43,12 +43,12 @@
           operator<<(OStream& os, Sequence& seq);
           
          - + Parameters

          - +

          @@ -78,7 +78,7 @@
          - + Expression Semantics
          @@ -93,14 +93,14 @@ call os << e.

          - + Header
           #include <boost/fusion/sequence/io/out.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/sequences/views.html b/doc/html/fusion/sequences/views.html
          index c90a32f8..900928c8 100644
          --- a/doc/html/fusion/sequences/views.html
          +++ b/doc/html/fusion/sequences/views.html
          @@ -44,7 +44,7 @@
                   very cheap to copy and be passed around by value.
                 

          - + Header

          diff --git a/doc/html/fusion/sequences/views/filter_view.html b/doc/html/fusion/sequences/views/filter_view.html
          index 155879d9..70d6f616 100644
          --- a/doc/html/fusion/sequences/views/filter_view.html
          +++ b/doc/html/fusion/sequences/views/filter_view.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

          @@ -37,14 +37,14 @@ only those elements for which its predicate evaluates to mpl::true_.

          - + Header
           #include <boost/fusion/sequence/view/filter_view.hpp>
           
          - + Synopsis
          @@ -52,13 +52,13 @@
           struct filter_view;
           
          - + Template parameters

          - +

          @@ -92,7 +92,7 @@
          - + Model of
          • - + Expression Semantics
            @@ -130,7 +130,7 @@

            - +

            @@ -165,7 +165,7 @@
            - + Example
            diff --git a/doc/html/fusion/sequences/views/iterator_range.html b/doc/html/fusion/sequences/views/iterator_range.html
            index 296ff8b3..f8c6df80 100644
            --- a/doc/html/fusion/sequences/views/iterator_range.html
            +++ b/doc/html/fusion/sequences/views/iterator_range.html
            @@ -26,7 +26,7 @@
             
             
            - + Description

            @@ -34,14 +34,14 @@ a sub-range of its underlying sequence delimited by a pair of iterators.

            - + Header
             #include <boost/fusion/sequence/view/iterator_range.hpp>
             
            - + Synopsis
            @@ -49,13 +49,13 @@
             struct iterator_range;
             
            - + Template parameters

            - +

            @@ -87,7 +87,7 @@
            - + Model of
            • - + Expression Semantics
              @@ -127,7 +127,7 @@

              - +

              @@ -165,7 +165,7 @@
              - + Example
              diff --git a/doc/html/fusion/sequences/views/joint_view.html b/doc/html/fusion/sequences/views/joint_view.html
              index 823a5926..bd9fab34 100644
              --- a/doc/html/fusion/sequences/views/joint_view.html
              +++ b/doc/html/fusion/sequences/views/joint_view.html
              @@ -26,7 +26,7 @@
               
               
              - + Description

              @@ -34,14 +34,14 @@ which is a concatenation of two sequences.

              - + Header
               #include <boost/fusion/sequence/view/joint_view.hpp>
               
              - + Synopsis
              @@ -49,13 +49,13 @@
               struct joint_view;
               
              - + Template parameters

              - +

              @@ -91,7 +91,7 @@
              - + Model of
              • - + Expression Semantics
                @@ -131,7 +131,7 @@

                - +

                @@ -166,7 +166,7 @@
                - + Example
                diff --git a/doc/html/fusion/sequences/views/reverse_view.html b/doc/html/fusion/sequences/views/reverse_view.html
                index 9dd4f872..29126354 100644
                --- a/doc/html/fusion/sequences/views/reverse_view.html
                +++ b/doc/html/fusion/sequences/views/reverse_view.html
                @@ -31,14 +31,14 @@
                           and the last element will be its first.
                         

                - + Header
                 #include <boost/fusion/sequence/view/reverse_view.hpp>
                 
                - + Synopsis
                @@ -46,13 +46,13 @@
                 struct reverse_view;
                 
                - + Template parameters

                - +

                @@ -77,7 +77,7 @@
                - + Model of
                • - + Expression Semantics
                  @@ -114,7 +114,7 @@

                  - +

                  @@ -148,7 +148,7 @@
                  - + Example
                  diff --git a/doc/html/fusion/sequences/views/single_view.html b/doc/html/fusion/sequences/views/single_view.html
                  index beb90a80..032eb741 100644
                  --- a/doc/html/fusion/sequences/views/single_view.html
                  +++ b/doc/html/fusion/sequences/views/single_view.html
                  @@ -30,14 +30,14 @@
                             a value as a single element sequence.
                           

                  - + Header
                   #include <boost/fusion/sequence/view/single_view.hpp>
                   
                  - + Synopsis
                  @@ -45,13 +45,13 @@
                   struct single_view;
                   
                  - + Template parameters

                  - +

                  @@ -73,7 +73,7 @@
                  - + Model of
                  • - + Expression Semantics
                    @@ -109,7 +109,7 @@

                    - +

                    @@ -144,7 +144,7 @@
                    - + Example
                    diff --git a/doc/html/fusion/sequences/views/transform_view.html b/doc/html/fusion/sequences/views/transform_view.html
                    index e3614d17..15954ab5 100644
                    --- a/doc/html/fusion/sequences/views/transform_view.html
                    +++ b/doc/html/fusion/sequences/views/transform_view.html
                    @@ -34,14 +34,14 @@
                               Traversal Concept) of its underlying sequence.
                             

                    - + Header
                     #include <boost/fusion/sequence/view/transform_view.hpp>
                     
                    - + Synopsis

                    @@ -59,13 +59,13 @@ struct transform_view;

                    - + Template parameters

                    - +

                    @@ -119,7 +119,7 @@
                    - + Model of
                    • @@ -174,7 +174,7 @@
                    - + Expression Semantics
                    @@ -192,7 +192,7 @@

                    - +

                    @@ -242,7 +242,7 @@
                    - + Example
                    diff --git a/doc/html/fusion/sequences/views/zip_view.html b/doc/html/fusion/sequences/views/zip_view.html
                    index cc351dbe..6c6c99af 100644
                    --- a/doc/html/fusion/sequences/views/zip_view.html
                    +++ b/doc/html/fusion/sequences/views/zip_view.html
                    @@ -26,7 +26,7 @@
                     
                     
                    - + Description

                    @@ -37,14 +37,14 @@ of references to the component _sequence_s.

                    - + Header
                     #include <boost/fusion/sequence/view/zip_view.hpp>
                     
                    - + Synopsis
                    @@ -52,13 +52,13 @@
                     struct zip_view;
                     
                    - + Template parameters

                    - +

                    @@ -82,7 +82,7 @@
                    - + Model of
                    • - + Expression Semantics
                      @@ -118,7 +118,7 @@

                      - +

                      @@ -152,7 +152,7 @@
                      - + Example
                      diff --git a/doc/html/fusion/support/category_of.html b/doc/html/fusion/support/category_of.html
                      index dd6a2fcf..8a7f5632 100644
                      --- a/doc/html/fusion/support/category_of.html
                      +++ b/doc/html/fusion/support/category_of.html
                      @@ -91,57 +91,66 @@
                               For Iterators, the return type is derived from one of:
                             

                      -struct incrementable_traversal_tag {};
                      +namespace boost { namespace fusion
                      +{
                      +    struct incrementable_traversal_tag {};
                       
                      -struct single_pass_traversal_tag
                      -    : incrementable_traversal_tag {};
                      +    struct single_pass_traversal_tag
                      +        : incrementable_traversal_tag {};
                       
                      -struct forward_traversal_tag
                      -    : single_pass_traversal_tag {};
                      +    struct forward_traversal_tag
                      +        : single_pass_traversal_tag {};
                       
                      -struct bidirectional_traversal_tag
                      -    : forward_traversal_tag {};
                      +    struct bidirectional_traversal_tag
                      +        : forward_traversal_tag {};
                       
                      -struct random_access_traversal_tag
                      -    : bidirectional_traversal_tag {};
                      +    struct random_access_traversal_tag
                      +        : bidirectional_traversal_tag {};
                      +}}
                       

                      For Sequences, the return type is derived from one of:

                      -struct incrementable_sequence_tag {};
                      +namespace boost { namespace fusion
                      +{
                      +    struct incrementable_sequence_tag {};
                       
                      -struct single_pass_sequence_tag
                      -    : incrementable_sequence_tag {};
                      +    struct single_pass_sequence_tag
                      +        : incrementable_sequence_tag {};
                       
                      -struct forward_sequence_tag
                      -    : single_pass_sequence_tag {};
                      +    struct forward_sequence_tag
                      +        : single_pass_sequence_tag {};
                       
                      -struct bidirectional_sequence_tag
                      -    : forward_sequence_tag {};
                      +    struct bidirectional_sequence_tag
                      +        : forward_sequence_tag {};
                       
                      -struct random_access_sequence_tag
                      -    : bidirectional_sequence_tag {};
                      +    struct random_access_sequence_tag
                      +        : bidirectional_sequence_tag {};
                      +}}
                       

                      And optionally from:

                      -struct associative_sequence_tag {};
                      +namespace boost { namespace fusion
                      +{
                      +    struct associative_sequence_tag {};
                      +}}
                       

                      Semantics: Establishes the conceptual classification of a particular Sequence or Iterator.

                      - + Header

                       #include <boost/fusion/support/category_of.hpp>
                       

                      - + Example

                      diff --git a/doc/html/fusion/support/pair.html b/doc/html/fusion/support/pair.html
                      index 8851cc0a..1eefef72 100644
                      --- a/doc/html/fusion/support/pair.html
                      +++ b/doc/html/fusion/support/pair.html
                      @@ -26,7 +26,7 @@
                       
                       

                      - + Description

                      @@ -37,7 +37,7 @@ for example.

                      - + Synopsis

                      @@ -45,12 +45,12 @@
                       struct pair;
                       

                      - + Template parameters

                      - +

                      @@ -106,12 +106,12 @@

                      - + Expression Semantics

                      - +

                      @@ -183,14 +183,14 @@

                      - + Header

                       #include <boost/fusion/support/pair.hpp>
                       

                      - + Example

                      diff --git a/doc/html/fusion/tuples/class_template_tuple/construction.html b/doc/html/fusion/tuples/class_template_tuple/construction.html
                      index 18757b91..69662472 100644
                      --- a/doc/html/fusion/tuples/class_template_tuple/construction.html
                      +++ b/doc/html/fusion/tuples/class_template_tuple/construction.html
                      @@ -27,7 +27,7 @@
                       
                       
                      - + Description

                      @@ -38,7 +38,7 @@ in this section.

                      - + Specification
                      diff --git a/doc/html/fusion/tuples/class_template_tuple/element_access.html b/doc/html/fusion/tuples/class_template_tuple/element_access.html index 4041f27e..69629e4c 100644 --- a/doc/html/fusion/tuples/class_template_tuple/element_access.html +++ b/doc/html/fusion/tuples/class_template_tuple/element_access.html @@ -31,7 +31,7 @@ access">Element access
                  - + Description

                  @@ -40,7 +40,7 @@ function to provide access to it's elements by zero based numeric index.

                  - + Specification
                  diff --git a/doc/html/fusion/tuples/class_template_tuple/relational_operators.html b/doc/html/fusion/tuples/class_template_tuple/relational_operators.html
                  index 0f7b8566..0670b59d 100644
                  --- a/doc/html/fusion/tuples/class_template_tuple/relational_operators.html
                  +++ b/doc/html/fusion/tuples/class_template_tuple/relational_operators.html
                  @@ -30,7 +30,7 @@
                           operators">Relational
                           operators
            - + Description

            @@ -38,7 +38,7 @@ Tuple provides the standard boolean relational operators.

            - + Specification
            diff --git a/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html b/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html index ad818f84..aa5200f5 100644 --- a/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html +++ b/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html @@ -30,7 +30,7 @@ creation functions">Tuple creation functions
          - + Description

          @@ -40,7 +40,7 @@ functions are described in this section.

          - + Specification
          diff --git a/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html b/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html
          index cea1931b..1b03723d 100644
          --- a/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html
          +++ b/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html
          @@ -31,7 +31,7 @@
                   helper classes">Tuple
                   helper classes
          - + Description

          @@ -40,7 +40,7 @@ tuple size, and the element types.

          - + Specification
          diff --git a/doc/html/fusion/tuples/pairs.html b/doc/html/fusion/tuples/pairs.html
          index f9705085..7301c186 100644
          --- a/doc/html/fusion/tuples/pairs.html
          +++ b/doc/html/fusion/tuples/pairs.html
          @@ -27,7 +27,7 @@
           
           

          - + Description

          @@ -36,7 +36,7 @@ as if it were a 2 element tuple.

          - + Specification

          diff --git a/doc/html/index.html b/doc/html/index.html
          index 35f068d6..a4e5c54c 100644
          --- a/doc/html/index.html
          +++ b/doc/html/index.html
          @@ -57,7 +57,7 @@
           
          - +

          Last revised: September 16, 2006 at 05:15:36 GMT

          Last revised: September 21, 2006 at 12:40:29 GMT


          diff --git a/doc/support.qbk b/doc/support.qbk index 66ecec7c..ee6059bf 100644 --- a/doc/support.qbk +++ b/doc/support.qbk @@ -193,39 +193,48 @@ __sequence_concepts__). For Iterators, the return type is derived from one of: - struct incrementable_traversal_tag {}; - - struct single_pass_traversal_tag - : incrementable_traversal_tag {}; - - struct forward_traversal_tag - : single_pass_traversal_tag {}; - - struct bidirectional_traversal_tag - : forward_traversal_tag {}; - - struct random_access_traversal_tag - : bidirectional_traversal_tag {}; + namespace boost { namespace fusion + { + struct incrementable_traversal_tag {}; + + struct single_pass_traversal_tag + : incrementable_traversal_tag {}; + + struct forward_traversal_tag + : single_pass_traversal_tag {}; + + struct bidirectional_traversal_tag + : forward_traversal_tag {}; + + struct random_access_traversal_tag + : bidirectional_traversal_tag {}; + }} For Sequences, the return type is derived from one of: - struct incrementable_sequence_tag {}; - - struct single_pass_sequence_tag - : incrementable_sequence_tag {}; - - struct forward_sequence_tag - : single_pass_sequence_tag {}; - - struct bidirectional_sequence_tag - : forward_sequence_tag {}; - - struct random_access_sequence_tag - : bidirectional_sequence_tag {}; + namespace boost { namespace fusion + { + struct incrementable_sequence_tag {}; + + struct single_pass_sequence_tag + : incrementable_sequence_tag {}; + + struct forward_sequence_tag + : single_pass_sequence_tag {}; + + struct bidirectional_sequence_tag + : forward_sequence_tag {}; + + struct random_access_sequence_tag + : bidirectional_sequence_tag {}; + }} And optionally from: - struct associative_sequence_tag {}; + namespace boost { namespace fusion + { + struct associative_sequence_tag {}; + }} [*Semantics]: Establishes the conceptual classification of a particular __sequence__ or __iterator__. From 980fe1f6abed89e997d8533157f13c881e5c8257 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Thu, 21 Sep 2006 14:20:59 +0000 Subject: [PATCH 012/234] Optimizing for RVO [SVN r35249] --- .../adapted/array/detail/distance_impl.hpp | 4 ++-- .../sequence/adapted/mpl/detail/advance_impl.hpp | 3 +-- .../sequence/adapted/mpl/detail/distance_impl.hpp | 4 ++-- .../sequence/adapted/mpl/detail/prior_impl.hpp | 3 +-- .../adapted/std_pair/detail/distance_impl.hpp | 4 ++-- .../container/vector/detail/distance_impl.hpp | 4 ++-- .../fusion/sequence/container/vector/vector.hpp | 15 ++------------- include/boost/fusion/sequence/intrinsic/empty.hpp | 4 ++-- .../boost/fusion/sequence/intrinsic/has_key.hpp | 4 ++-- include/boost/fusion/sequence/intrinsic/size.hpp | 4 ++-- 10 files changed, 18 insertions(+), 31 deletions(-) diff --git a/include/boost/fusion/sequence/adapted/array/detail/distance_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/distance_impl.hpp index 1383e92a..b504c920 100644 --- a/include/boost/fusion/sequence/adapted/array/detail/distance_impl.hpp +++ b/include/boost/fusion/sequence/adapted/array/detail/distance_impl.hpp @@ -31,10 +31,10 @@ namespace boost { namespace fusion call(First const&, Last const&) { - static typename mpl::minus< + typedef typename mpl::minus< typename Last::index, typename First::index>::type result; - return result; + return result(); } }; }; diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/advance_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/advance_impl.hpp index 5e2c3c06..9603a737 100644 --- a/include/boost/fusion/sequence/adapted/mpl/detail/advance_impl.hpp +++ b/include/boost/fusion/sequence/adapted/mpl/detail/advance_impl.hpp @@ -35,8 +35,7 @@ namespace boost { namespace fusion static type call(Iterator const& i) { - static type result; - return result; + return type(); } }; }; diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/distance_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/distance_impl.hpp index efe963fd..893c3112 100644 --- a/include/boost/fusion/sequence/adapted/mpl/detail/distance_impl.hpp +++ b/include/boost/fusion/sequence/adapted/mpl/detail/distance_impl.hpp @@ -34,11 +34,11 @@ namespace boost { namespace fusion , typename Last::iterator_type>::type call(First const&, Last const&) { - static typename mpl::distance< + typedef typename mpl::distance< typename First::iterator_type , typename Last::iterator_type>::type result; - return result; + return result(); } }; }; diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/prior_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/prior_impl.hpp index 1626b009..e2ae56be 100644 --- a/include/boost/fusion/sequence/adapted/mpl/detail/prior_impl.hpp +++ b/include/boost/fusion/sequence/adapted/mpl/detail/prior_impl.hpp @@ -35,8 +35,7 @@ namespace boost { namespace fusion static type call(Iterator) { - static type result; - return result; + return type(); } }; }; diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/distance_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/distance_impl.hpp index abd873a5..ad1761b7 100644 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/distance_impl.hpp +++ b/include/boost/fusion/sequence/adapted/std_pair/detail/distance_impl.hpp @@ -29,10 +29,10 @@ namespace boost { namespace fusion typename Last::index, typename First::index>::type call(First const&, Last const&) { - static typename mpl::minus< + typedef typename mpl::minus< typename Last::index, typename First::index>::type result; - return result; + return result(); } }; }; diff --git a/include/boost/fusion/sequence/container/vector/detail/distance_impl.hpp b/include/boost/fusion/sequence/container/vector/detail/distance_impl.hpp index 43f2a40e..bf383e10 100644 --- a/include/boost/fusion/sequence/container/vector/detail/distance_impl.hpp +++ b/include/boost/fusion/sequence/container/vector/detail/distance_impl.hpp @@ -29,10 +29,10 @@ namespace boost { namespace fusion typename Last::index, typename First::index>::type call(First const&, Last const&) { - static typename mpl::minus< + typedef typename mpl::minus< typename Last::index, typename First::index>::type result; - return result; + return result(); } }; }; diff --git a/include/boost/fusion/sequence/container/vector/vector.hpp b/include/boost/fusion/sequence/container/vector/vector.hpp index 46f8246d..c81fc738 100644 --- a/include/boost/fusion/sequence/container/vector/vector.hpp +++ b/include/boost/fusion/sequence/container/vector/vector.hpp @@ -16,8 +16,6 @@ #include #include #include -#include -#include namespace boost { namespace fusion { @@ -54,20 +52,11 @@ namespace boost { namespace fusion : vec(rhs.vec) {} template - explicit vector( - T const& rhs -#if defined(BOOST_MSVC) -// VC++ gets confused when RHS is a derived type. It fails to call -// the copy ctor and attempts to call this templated constructor instead. - , typename disable_if< - is_convertible // use copy ctor instead - >::type* dummy = 0 -#endif - ) + explicit vector(T const& rhs) : vec(rhs) {} // Expand a couple of forwarding constructors for arguments - // of type (T0), (T0, T1), (T0, T1, T2) etc. Exanple: + // of type (T0), (T0, T1), (T0, T1, T2) etc. Example: // // vector( // typename detail::call_param::type _0 diff --git a/include/boost/fusion/sequence/intrinsic/empty.hpp b/include/boost/fusion/sequence/intrinsic/empty.hpp index 0ce0636d..324b5985 100644 --- a/include/boost/fusion/sequence/intrinsic/empty.hpp +++ b/include/boost/fusion/sequence/intrinsic/empty.hpp @@ -41,8 +41,8 @@ namespace boost { namespace fusion inline typename result_of::empty::type empty(Sequence const&) { - static typename result_of::empty::type result; - return result; + typedef typename result_of::empty::type result; + return result(); } }} diff --git a/include/boost/fusion/sequence/intrinsic/has_key.hpp b/include/boost/fusion/sequence/intrinsic/has_key.hpp index a8b07e20..24190fb0 100644 --- a/include/boost/fusion/sequence/intrinsic/has_key.hpp +++ b/include/boost/fusion/sequence/intrinsic/has_key.hpp @@ -43,8 +43,8 @@ namespace boost { namespace fusion inline typename result_of::has_key::type has_key(Sequence const& seq) { - static typename result_of::has_key::type result; - return result; + typedef typename result_of::has_key::type result; + return result(); } }} diff --git a/include/boost/fusion/sequence/intrinsic/size.hpp b/include/boost/fusion/sequence/intrinsic/size.hpp index 1ff9360b..c9fe923b 100644 --- a/include/boost/fusion/sequence/intrinsic/size.hpp +++ b/include/boost/fusion/sequence/intrinsic/size.hpp @@ -38,8 +38,8 @@ namespace boost { namespace fusion inline typename result_of::size::type size(Sequence const&) { - static typename result_of::size::type result; - return result; + typedef typename result_of::size::type result; + return result(); } }} From aab92c85d0bfb9962b4efd75a47857668406bc2e Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Thu, 21 Sep 2006 14:26:48 +0000 Subject: [PATCH 013/234] ftag to fusion_tag [SVN r35250] --- doc/extension.qbk | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/doc/extension.qbk b/doc/extension.qbk index ba9c550a..0feb12d6 100644 --- a/doc/extension.qbk +++ b/doc/extension.qbk @@ -219,10 +219,8 @@ To see how `deref_impl` is used, lets have a look at the implementation of __der typename __result_of_deref__::type __deref__(Iterator const& i) { - typename __result_of_deref__::type result = - extension::deref_impl:: - template apply::call(i); - return result; + return extension::deref_impl:: + template apply::call(i); } So again __result_of_deref__ uses __tag_dispatching__ in exactly the From 1633f967aaa8161ae3c04216639ba5ae14ad0087 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Fri, 22 Sep 2006 00:17:30 +0000 Subject: [PATCH 014/234] fixed bug in test [SVN r35269] --- test/sequence/unpack_args.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/sequence/unpack_args.cpp b/test/sequence/unpack_args.cpp index d3249408..c46ea722 100644 --- a/test/sequence/unpack_args.cpp +++ b/test/sequence/unpack_args.cpp @@ -168,9 +168,9 @@ void test_sequence_n(Sequence & seq, boost::mpl::int_<2>) BOOST_TEST( f (element1, element2) == fusion::unpack_args( f , seq)); BOOST_TEST(const_(f)(element1, element2) == fusion::unpack_args(const_(f), seq)); - - BOOST_TEST( f (const_(element1), element2) == fusion::unpack_args( f , const_(seq))); - BOOST_TEST(const_(f)(const_(element1), element2) == fusion::unpack_args(const_(f), const_(seq))); + + BOOST_TEST( f (element1, const_(element2)) == fusion::unpack_args( f , const_(seq))); + BOOST_TEST(const_(f)(element1, const_(element2)) == fusion::unpack_args(const_(f), const_(seq))); } BOOST_TEST(baz1(element1, element2) == fusion::unpack_args(baz1, seq)); From 46134407cfd5df505090d3f2c688576ae7b025d0 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Fri, 22 Sep 2006 00:41:24 +0000 Subject: [PATCH 015/234] fixed for msvc [SVN r35270] --- .../fusion/sequence/utility/unpack_args.hpp | 29 ++++++++++++------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/include/boost/fusion/sequence/utility/unpack_args.hpp b/include/boost/fusion/sequence/utility/unpack_args.hpp index df3cb736..a379a693 100644 --- a/include/boost/fusion/sequence/utility/unpack_args.hpp +++ b/include/boost/fusion/sequence/utility/unpack_args.hpp @@ -33,23 +33,30 @@ namespace boost { namespace fusion { - namespace detail { + template + struct unpack_args_impl_helper + { + typedef typename remove_cv::type f_nocv; + + typedef + typename mpl::eval_if< + is_pointer, + mpl::identity, + mpl::eval_if< + is_function, + add_pointer, + mpl::identity + > + >::type + type; + }; template < class F, class Sequence, - class F_ = - typename boost::mpl::eval_if< - boost::is_pointer, - boost::remove_cv, - boost::mpl::eval_if< - boost::is_function::type>, - boost::add_pointer::type>, - boost::mpl::identity - > - >::type, + class F_ = typename unpack_args_impl_helper::type, class Size = mpl::int_::value> > struct unpack_args_impl; From da23c8a4cc50a9729f4a9586f08761fd54fa91e0 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Fri, 22 Sep 2006 06:31:17 +0000 Subject: [PATCH 016/234] fixed for msvc + gcc (all regresions ok) [SVN r35271] --- include/boost/fusion/iterator/deref.hpp | 3 +-- include/boost/fusion/iterator/detail/distance.hpp | 3 +-- include/boost/fusion/sequence/container/list/cons.hpp | 4 ++-- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/include/boost/fusion/iterator/deref.hpp b/include/boost/fusion/iterator/deref.hpp index 9819e034..8236fe5c 100644 --- a/include/boost/fusion/iterator/deref.hpp +++ b/include/boost/fusion/iterator/deref.hpp @@ -37,8 +37,7 @@ namespace boost { namespace fusion deref(Iterator const& i) { typedef result_of::deref deref_meta; - typename deref_meta::type result(deref_meta::call(i)); - return result; + return deref_meta::call(i); } template diff --git a/include/boost/fusion/iterator/detail/distance.hpp b/include/boost/fusion/iterator/detail/distance.hpp index d41d4c2e..2ee467d6 100644 --- a/include/boost/fusion/iterator/detail/distance.hpp +++ b/include/boost/fusion/iterator/detail/distance.hpp @@ -56,8 +56,7 @@ namespace boost { namespace fusion { namespace distance_detail static type call(First const&, Last const&) { - static type result; - return result; + return type(); } }; diff --git a/include/boost/fusion/sequence/container/list/cons.hpp b/include/boost/fusion/sequence/container/list/cons.hpp index 8be6b239..c3de861d 100644 --- a/include/boost/fusion/sequence/container/list/cons.hpp +++ b/include/boost/fusion/sequence/container/list/cons.hpp @@ -87,7 +87,7 @@ namespace boost { namespace fusion template explicit cons( Sequence const& seq -#if defined(BOOST_MSVC) +//~ #if defined(BOOST_MSVC) // VC++ gets confused when RHS is a derived type. It fails to call // the copy ctor and attempts to call this templated constructor instead. , typename disable_if< @@ -96,7 +96,7 @@ namespace boost { namespace fusion , is_convertible // use copy to car instead > >::type* dummy = 0 -#endif +//~ #endif ) : car(*fusion::begin(seq)) , cdr(fusion::next(fusion::begin(seq)), mpl::true_()) {} From a37b435ce6439f937bf43242a53d0015b3d4fd9b Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Fri, 22 Sep 2006 13:39:27 +0000 Subject: [PATCH 017/234] ODR safe code [SVN r35275] --- include/boost/fusion/iterator/advance.hpp | 12 ++++++++ include/boost/fusion/iterator/deref.hpp | 13 +++++++++ include/boost/fusion/iterator/distance.hpp | 12 ++++++++ include/boost/fusion/iterator/equal_to.hpp | 13 +++++++++ include/boost/fusion/iterator/next.hpp | 13 +++++++++ include/boost/fusion/iterator/prior.hpp | 13 +++++++++ include/boost/fusion/iterator/value_of.hpp | 13 +++++++++ .../fusion/sequence/adapted/mpl/tag_of.hpp | 2 +- .../boost/fusion/sequence/intrinsic/at.hpp | 13 +++++++++ .../fusion/sequence/intrinsic/at_key.hpp | 13 +++++++++ .../boost/fusion/sequence/intrinsic/begin.hpp | 12 ++++++++ .../boost/fusion/sequence/intrinsic/empty.hpp | 4 +++ .../boost/fusion/sequence/intrinsic/end.hpp | 12 ++++++++ .../fusion/sequence/intrinsic/has_key.hpp | 12 ++++++++ .../boost/fusion/sequence/intrinsic/size.hpp | 9 ++++++ .../fusion/sequence/intrinsic/value_at.hpp | 13 +++++++++ .../sequence/intrinsic/value_at_key.hpp | 13 +++++++++ include/boost/fusion/support/category_of.hpp | 15 +++++++++- .../boost/fusion/support/is_associative.hpp | 29 ++++++++++--------- include/boost/fusion/support/is_sequence.hpp | 19 ++++++++++-- include/boost/fusion/support/is_view.hpp | 16 +++++++++- include/boost/fusion/support/tag_of.hpp | 19 +++++++++++- 22 files changed, 269 insertions(+), 21 deletions(-) diff --git a/include/boost/fusion/iterator/advance.hpp b/include/boost/fusion/iterator/advance.hpp index 8cde48db..f62b84b1 100644 --- a/include/boost/fusion/iterator/advance.hpp +++ b/include/boost/fusion/iterator/advance.hpp @@ -19,6 +19,9 @@ namespace boost { namespace fusion { struct random_access_traversal_tag; + struct array_iterator_tag; // boost::array iterator tag + struct mpl_iterator_tag; // mpl sequence iterator tag + struct std_pair_iterator_tag; // std::pair iterator tag namespace extension { @@ -38,6 +41,15 @@ namespace boost { namespace fusion BOOST_MPL_ASSERT_NOT((is_same)); }; }; + + template <> + struct advance_impl; + + template <> + struct advance_impl; + + template <> + struct advance_impl; } namespace result_of diff --git a/include/boost/fusion/iterator/deref.hpp b/include/boost/fusion/iterator/deref.hpp index 8236fe5c..c2a40564 100644 --- a/include/boost/fusion/iterator/deref.hpp +++ b/include/boost/fusion/iterator/deref.hpp @@ -13,6 +13,10 @@ namespace boost { namespace fusion { + struct array_iterator_tag; // boost::array iterator tag + struct mpl_iterator_tag; // mpl sequence iterator tag + struct std_pair_iterator_tag; // std::pair iterator tag + namespace extension { template @@ -21,6 +25,15 @@ namespace boost { namespace fusion template struct apply {}; }; + + template <> + struct deref_impl; + + template <> + struct deref_impl; + + template <> + struct deref_impl; } namespace result_of diff --git a/include/boost/fusion/iterator/distance.hpp b/include/boost/fusion/iterator/distance.hpp index c77a28ab..422a1231 100644 --- a/include/boost/fusion/iterator/distance.hpp +++ b/include/boost/fusion/iterator/distance.hpp @@ -20,6 +20,9 @@ namespace boost { namespace fusion { struct random_access_traversal_tag; + struct array_iterator_tag; // boost::array iterator tag + struct mpl_iterator_tag; // mpl sequence iterator tag + struct std_pair_iterator_tag; // std::pair iterator tag namespace extension { @@ -36,6 +39,15 @@ namespace boost { namespace fusion BOOST_MPL_ASSERT_NOT((is_same)); }; }; + + template <> + struct distance_impl; + + template <> + struct distance_impl; + + template <> + struct distance_impl; } namespace result_of diff --git a/include/boost/fusion/iterator/equal_to.hpp b/include/boost/fusion/iterator/equal_to.hpp index 1a559e22..f6cd826c 100644 --- a/include/boost/fusion/iterator/equal_to.hpp +++ b/include/boost/fusion/iterator/equal_to.hpp @@ -17,6 +17,10 @@ namespace boost { namespace fusion { + struct array_iterator_tag; // boost::array iterator tag + struct mpl_iterator_tag; // mpl sequence iterator tag + struct std_pair_iterator_tag; // std::pair iterator tag + namespace extension { template @@ -28,6 +32,15 @@ namespace boost { namespace fusion : is_same::type, typename add_const::type> {}; }; + + template <> + struct equal_to_impl; + + template <> + struct equal_to_impl; + + template <> + struct equal_to_impl; } namespace result_of diff --git a/include/boost/fusion/iterator/next.hpp b/include/boost/fusion/iterator/next.hpp index 5cefb9d2..aa7f2de8 100644 --- a/include/boost/fusion/iterator/next.hpp +++ b/include/boost/fusion/iterator/next.hpp @@ -12,6 +12,10 @@ namespace boost { namespace fusion { + struct array_iterator_tag; // boost::array iterator tag + struct mpl_iterator_tag; // mpl sequence iterator tag + struct std_pair_iterator_tag; // std::pair iterator tag + namespace extension { template @@ -20,6 +24,15 @@ namespace boost { namespace fusion template struct apply {}; }; + + template <> + struct next_impl; + + template <> + struct next_impl; + + template <> + struct next_impl; } namespace result_of diff --git a/include/boost/fusion/iterator/prior.hpp b/include/boost/fusion/iterator/prior.hpp index ddfb15ca..0e859d9b 100644 --- a/include/boost/fusion/iterator/prior.hpp +++ b/include/boost/fusion/iterator/prior.hpp @@ -12,6 +12,10 @@ namespace boost { namespace fusion { + struct array_iterator_tag; // boost::array iterator tag + struct mpl_iterator_tag; // mpl sequence iterator tag + struct std_pair_iterator_tag; // std::pair iterator tag + namespace extension { template @@ -20,6 +24,15 @@ namespace boost { namespace fusion template struct apply {}; }; + + template <> + struct prior_impl; + + template <> + struct prior_impl; + + template <> + struct prior_impl; } namespace result_of diff --git a/include/boost/fusion/iterator/value_of.hpp b/include/boost/fusion/iterator/value_of.hpp index 15d2f812..5a4f6585 100644 --- a/include/boost/fusion/iterator/value_of.hpp +++ b/include/boost/fusion/iterator/value_of.hpp @@ -13,6 +13,10 @@ namespace boost { namespace fusion { + struct array_iterator_tag; // boost::array iterator tag + struct mpl_iterator_tag; // mpl sequence iterator tag + struct std_pair_iterator_tag; // std::pair iterator tag + namespace extension { template @@ -21,6 +25,15 @@ namespace boost { namespace fusion template struct apply {}; }; + + template <> + struct value_of_impl; + + template <> + struct value_of_impl; + + template <> + struct value_of_impl; } namespace result_of diff --git a/include/boost/fusion/sequence/adapted/mpl/tag_of.hpp b/include/boost/fusion/sequence/adapted/mpl/tag_of.hpp index d987c5c2..6dcbea15 100644 --- a/include/boost/fusion/sequence/adapted/mpl/tag_of.hpp +++ b/include/boost/fusion/sequence/adapted/mpl/tag_of.hpp @@ -19,7 +19,7 @@ namespace boost { namespace fusion namespace traits { - template + template struct tag_of >::type> { typedef mpl_sequence_tag type; diff --git a/include/boost/fusion/sequence/intrinsic/at.hpp b/include/boost/fusion/sequence/intrinsic/at.hpp index 62f9f9d4..1eb11198 100644 --- a/include/boost/fusion/sequence/intrinsic/at.hpp +++ b/include/boost/fusion/sequence/intrinsic/at.hpp @@ -15,6 +15,10 @@ namespace boost { namespace fusion { + struct array_tag; // boost::array tag + struct mpl_sequence_tag; // mpl sequence tag + struct std_pair_tag; // std::pair tag + namespace extension { template @@ -23,6 +27,15 @@ namespace boost { namespace fusion template struct apply; }; + + template <> + struct at_impl; + + template <> + struct at_impl; + + template <> + struct at_impl; } namespace result_of diff --git a/include/boost/fusion/sequence/intrinsic/at_key.hpp b/include/boost/fusion/sequence/intrinsic/at_key.hpp index 1612c47b..9229f5c0 100644 --- a/include/boost/fusion/sequence/intrinsic/at_key.hpp +++ b/include/boost/fusion/sequence/intrinsic/at_key.hpp @@ -15,6 +15,10 @@ namespace boost { namespace fusion { + struct array_tag; // boost::array tag + struct mpl_sequence_tag; // mpl sequence tag + struct std_pair_tag; // std::pair tag + namespace extension { template @@ -23,6 +27,15 @@ namespace boost { namespace fusion template struct apply; }; + + template <> + struct at_key_impl; + + template <> + struct at_key_impl; + + template <> + struct at_key_impl; } namespace result_of diff --git a/include/boost/fusion/sequence/intrinsic/begin.hpp b/include/boost/fusion/sequence/intrinsic/begin.hpp index b5e94849..b2a616d1 100644 --- a/include/boost/fusion/sequence/intrinsic/begin.hpp +++ b/include/boost/fusion/sequence/intrinsic/begin.hpp @@ -13,6 +13,9 @@ namespace boost { namespace fusion { struct fusion_sequence_tag; + struct array_tag; // boost::array tag + struct mpl_sequence_tag; // mpl sequence tag + struct std_pair_tag; // std::pair tag namespace extension { @@ -22,6 +25,15 @@ namespace boost { namespace fusion template struct apply; }; + + template <> + struct begin_impl; + + template <> + struct begin_impl; + + template <> + struct begin_impl; } namespace result_of diff --git a/include/boost/fusion/sequence/intrinsic/empty.hpp b/include/boost/fusion/sequence/intrinsic/empty.hpp index 324b5985..d8e17c8c 100644 --- a/include/boost/fusion/sequence/intrinsic/empty.hpp +++ b/include/boost/fusion/sequence/intrinsic/empty.hpp @@ -15,6 +15,7 @@ namespace boost { namespace fusion { struct fusion_sequence_tag; + struct mpl_sequence_tag; // mpl sequence tag namespace extension { @@ -26,6 +27,9 @@ namespace boost { namespace fusion : mpl::bool_<(result_of::size::value == 0)> {}; }; + + template <> + struct empty_impl; } namespace result_of diff --git a/include/boost/fusion/sequence/intrinsic/end.hpp b/include/boost/fusion/sequence/intrinsic/end.hpp index b8ba514c..fcce8e04 100644 --- a/include/boost/fusion/sequence/intrinsic/end.hpp +++ b/include/boost/fusion/sequence/intrinsic/end.hpp @@ -13,6 +13,9 @@ namespace boost { namespace fusion { struct fusion_sequence_tag; + struct array_tag; // boost::array tag + struct mpl_sequence_tag; // mpl sequence tag + struct std_pair_tag; // std::pair tag namespace extension { @@ -22,6 +25,15 @@ namespace boost { namespace fusion template struct apply; }; + + template <> + struct end_impl; + + template <> + struct end_impl; + + template <> + struct end_impl; } namespace result_of diff --git a/include/boost/fusion/sequence/intrinsic/has_key.hpp b/include/boost/fusion/sequence/intrinsic/has_key.hpp index 24190fb0..b0962afa 100644 --- a/include/boost/fusion/sequence/intrinsic/has_key.hpp +++ b/include/boost/fusion/sequence/intrinsic/has_key.hpp @@ -16,6 +16,9 @@ namespace boost { namespace fusion { struct void_; struct fusion_sequence_tag; + struct array_tag; // boost::array tag + struct mpl_sequence_tag; // mpl sequence tag + struct std_pair_tag; // std::pair tag namespace extension { @@ -28,6 +31,15 @@ namespace boost { namespace fusion template meta_at_impl::type, void_> > {}; }; + + template <> + struct has_key_impl; + + template <> + struct has_key_impl; + + template <> + struct has_key_impl; } namespace result_of diff --git a/include/boost/fusion/sequence/intrinsic/size.hpp b/include/boost/fusion/sequence/intrinsic/size.hpp index c9fe923b..a79f824a 100644 --- a/include/boost/fusion/sequence/intrinsic/size.hpp +++ b/include/boost/fusion/sequence/intrinsic/size.hpp @@ -23,6 +23,15 @@ namespace boost { namespace fusion template struct apply : Sequence::size {}; }; + + template <> + struct size_impl; + + template <> + struct size_impl; + + template <> + struct size_impl; } namespace result_of diff --git a/include/boost/fusion/sequence/intrinsic/value_at.hpp b/include/boost/fusion/sequence/intrinsic/value_at.hpp index de518391..cd589429 100644 --- a/include/boost/fusion/sequence/intrinsic/value_at.hpp +++ b/include/boost/fusion/sequence/intrinsic/value_at.hpp @@ -13,6 +13,10 @@ namespace boost { namespace fusion { + struct array_tag; // boost::array tag + struct mpl_sequence_tag; // mpl sequence tag + struct std_pair_tag; // std::pair tag + namespace extension { template @@ -21,6 +25,15 @@ namespace boost { namespace fusion template struct apply; }; + + template <> + struct value_at_impl; + + template <> + struct value_at_impl; + + template <> + struct value_at_impl; } namespace result_of diff --git a/include/boost/fusion/sequence/intrinsic/value_at_key.hpp b/include/boost/fusion/sequence/intrinsic/value_at_key.hpp index a6c8aeec..51fc88c2 100644 --- a/include/boost/fusion/sequence/intrinsic/value_at_key.hpp +++ b/include/boost/fusion/sequence/intrinsic/value_at_key.hpp @@ -14,6 +14,10 @@ namespace boost { namespace fusion { + struct array_tag; // boost::array tag + struct mpl_sequence_tag; // mpl sequence tag + struct std_pair_tag; // std::pair tag + namespace extension { template @@ -22,6 +26,15 @@ namespace boost { namespace fusion template struct apply; }; + + template <> + struct value_at_key_impl; + + template <> + struct value_at_key_impl; + + template <> + struct value_at_key_impl; } namespace result_of diff --git a/include/boost/fusion/support/category_of.hpp b/include/boost/fusion/support/category_of.hpp index 9502b21e..7aebc9ac 100644 --- a/include/boost/fusion/support/category_of.hpp +++ b/include/boost/fusion/support/category_of.hpp @@ -13,7 +13,11 @@ #include namespace boost { namespace fusion -{ +{ + struct array_tag; // boost::array tag + struct mpl_sequence_tag; // mpl sequence tag + struct std_pair_tag; // std::pair tag + namespace extension { template @@ -24,6 +28,15 @@ namespace boost { namespace fusion : detail::fusion_category_of {}; }; + + template <> + struct category_of_impl; + + template <> + struct category_of_impl; + + template <> + struct category_of_impl; } namespace traits diff --git a/include/boost/fusion/support/is_associative.hpp b/include/boost/fusion/support/is_associative.hpp index 4cda074a..ae339f25 100644 --- a/include/boost/fusion/support/is_associative.hpp +++ b/include/boost/fusion/support/is_associative.hpp @@ -12,25 +12,26 @@ #include #include -namespace boost { namespace fusion { +namespace boost { namespace fusion +{ namespace extension { - template - struct is_associative_impl - { - template - struct apply - : mpl::false_ - {}; - }; + template + struct is_associative_impl + { + template + struct apply : mpl::false_ {}; + }; } namespace traits { - template - struct is_associative - : extension::is_associative_impl::type>::template apply - {}; -}}} + template + struct is_associative + : extension::is_associative_impl::type>:: + template apply + {}; + } +}} #endif diff --git a/include/boost/fusion/support/is_sequence.hpp b/include/boost/fusion/support/is_sequence.hpp index 539fd396..86ed6f77 100644 --- a/include/boost/fusion/support/is_sequence.hpp +++ b/include/boost/fusion/support/is_sequence.hpp @@ -18,10 +18,13 @@ namespace boost { namespace fusion { struct non_fusion_tag; + struct array_tag; // boost::array tag + struct mpl_sequence_tag; // mpl sequence tag + struct std_pair_tag; // std::pair tag namespace extension { - template + template struct is_sequence_impl : is_base_and_derived { @@ -31,19 +34,29 @@ namespace boost { namespace fusion {}; }; - template<> + template <> struct is_sequence_impl { template struct apply : mpl::false_ {}; }; + + template <> + struct is_sequence_impl; + + template <> + struct is_sequence_impl; + + template <> + struct is_sequence_impl; } namespace traits { template struct is_sequence - : extension::is_sequence_impl::type>::template apply + : extension::is_sequence_impl::type>:: + template apply {}; } }} diff --git a/include/boost/fusion/support/is_view.hpp b/include/boost/fusion/support/is_view.hpp index e95038c8..e1a03add 100644 --- a/include/boost/fusion/support/is_view.hpp +++ b/include/boost/fusion/support/is_view.hpp @@ -13,6 +13,10 @@ namespace boost { namespace fusion { + struct array_tag; // boost::array tag + struct mpl_sequence_tag; // mpl sequence tag + struct std_pair_tag; // std::pair tag + namespace extension { template @@ -23,6 +27,15 @@ namespace boost { namespace fusion : detail::fusion_is_view {}; }; + + template <> + struct is_view_impl; + + template <> + struct is_view_impl; + + template <> + struct is_view_impl; } namespace traits @@ -32,6 +45,7 @@ namespace boost { namespace fusion extension::is_view_impl::type>:: template apply::type {}; -}}} + } +}} #endif diff --git a/include/boost/fusion/support/tag_of.hpp b/include/boost/fusion/support/tag_of.hpp index d5701136..0fbb47a6 100644 --- a/include/boost/fusion/support/tag_of.hpp +++ b/include/boost/fusion/support/tag_of.hpp @@ -10,8 +10,16 @@ #include #include +#include #include #include +#include + +namespace boost +{ + template + class array; // forward +} namespace boost { namespace fusion { @@ -30,11 +38,20 @@ namespace boost { namespace fusion typedef non_fusion_tag type; }; - template + template struct tag_of >::type> { typedef typename Sequence::fusion_tag type; }; + + template + struct tag_of >; + + template + struct tag_of >::type>; + + template + struct tag_of >; } namespace detail From 654fd0918ebd6416c7e24a97b49ae7cab5ea9cbe Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Mon, 25 Sep 2006 08:37:16 +0000 Subject: [PATCH 018/234] prelude to iterator_facade and sequence_facade [SVN r35316] --- doc/html/fusion/support/category_of.html | 14 ++++---- doc/support.qbk | 14 ++++---- .../adapted/array/detail/distance_impl.hpp | 1 - .../adapted/mpl/detail/category_of_impl.hpp | 9 ++--- .../fusion/sequence/container/list/cons.hpp | 6 ++-- .../map/detail/is_associative_impl.hpp | 33 ------------------- .../fusion/sequence/container/map/map.hpp | 7 ++-- .../set/detail/is_associative_impl.hpp | 33 ------------------- .../fusion/sequence/container/set/set.hpp | 6 ++-- .../container/vector/detail/vector_n.hpp | 2 +- .../sequence/container/vector/vector10.hpp | 4 +-- .../sequence/container/vector/vector20.hpp | 2 +- .../sequence/container/vector/vector30.hpp | 2 +- .../sequence/container/vector/vector40.hpp | 2 +- .../sequence/container/vector/vector50.hpp | 2 +- .../boost/fusion/sequence/intrinsic/at.hpp | 9 +++++ .../fusion/sequence/intrinsic/at_key.hpp | 9 +++++ .../boost/fusion/sequence/intrinsic/begin.hpp | 10 +++++- .../boost/fusion/sequence/intrinsic/empty.hpp | 10 +++++- .../boost/fusion/sequence/intrinsic/end.hpp | 10 +++++- .../fusion/sequence/intrinsic/has_key.hpp | 11 ++++++- .../boost/fusion/sequence/intrinsic/size.hpp | 13 +++++++- .../fusion/sequence/intrinsic/value_at.hpp | 9 +++++ .../sequence/intrinsic/value_at_key.hpp | 11 ++++++- .../boost/fusion/sequence/sequence_facade.hpp | 28 ++++++++++++++++ .../sequence/view/filter_view/filter_view.hpp | 4 +-- .../view/iterator_range/iterator_range.hpp | 7 +--- .../sequence/view/joint_view/joint_view.hpp | 4 +-- .../view/reverse_view/reverse_view.hpp | 4 +-- .../reverse_view/reverse_view_iterator.hpp | 4 +-- .../sequence/view/single_view/single_view.hpp | 4 +-- test/sequence/map.cpp | 2 +- test/sequence/set.cpp | 2 +- 33 files changed, 160 insertions(+), 128 deletions(-) delete mode 100644 include/boost/fusion/sequence/container/map/detail/is_associative_impl.hpp delete mode 100644 include/boost/fusion/sequence/container/set/detail/is_associative_impl.hpp create mode 100644 include/boost/fusion/sequence/sequence_facade.hpp diff --git a/doc/html/fusion/support/category_of.html b/doc/html/fusion/support/category_of.html index 8a7f5632..c9e03fff 100644 --- a/doc/html/fusion/support/category_of.html +++ b/doc/html/fusion/support/category_of.html @@ -119,14 +119,14 @@ struct single_pass_sequence_tag : incrementable_sequence_tag {}; - struct forward_sequence_tag + struct forward_traversal_tag : single_pass_sequence_tag {}; - struct bidirectional_sequence_tag - : forward_sequence_tag {}; + struct bidirectional_traversal_tag + : forward_traversal_tag {}; - struct random_access_sequence_tag - : bidirectional_sequence_tag {}; + struct random_access_traversal_tag + : bidirectional_traversal_tag {}; }}

          @@ -157,8 +157,8 @@ using boost::is_base_of; typedef traits::category_of<list<> >::type list_category; typedef traits::category_of<vector<> >::type vector_category; -BOOST_MPL_ASSERT(( is_base_of<forward_sequence_tag, list_category> )); -BOOST_MPL_ASSERT(( is_base_of<random_access_sequence_tag, vector_category> )); +BOOST_MPL_ASSERT(( is_base_of<forward_traversal_tag, list_category> )); +BOOST_MPL_ASSERT(( is_base_of<random_access_traversal_tag, vector_category> ));

          diff --git a/doc/support.qbk b/doc/support.qbk index ee6059bf..5815c4ec 100644 --- a/doc/support.qbk +++ b/doc/support.qbk @@ -219,14 +219,14 @@ For Sequences, the return type is derived from one of: struct single_pass_sequence_tag : incrementable_sequence_tag {}; - struct forward_sequence_tag + struct forward_traversal_tag : single_pass_sequence_tag {}; - struct bidirectional_sequence_tag - : forward_sequence_tag {}; + struct bidirectional_traversal_tag + : forward_traversal_tag {}; - struct random_access_sequence_tag - : bidirectional_sequence_tag {}; + struct random_access_traversal_tag + : bidirectional_traversal_tag {}; }} And optionally from: @@ -248,8 +248,8 @@ __sequence__ or __iterator__. using boost::is_base_of; typedef traits::category_of<__list__<> >::type list_category; typedef traits::category_of<__vector__<> >::type vector_category; - BOOST_MPL_ASSERT(( is_base_of )); - BOOST_MPL_ASSERT(( is_base_of )); + BOOST_MPL_ASSERT(( is_base_of )); + BOOST_MPL_ASSERT(( is_base_of )); [endsect] diff --git a/include/boost/fusion/sequence/adapted/array/detail/distance_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/distance_impl.hpp index b504c920..062dc7d9 100644 --- a/include/boost/fusion/sequence/adapted/array/detail/distance_impl.hpp +++ b/include/boost/fusion/sequence/adapted/array/detail/distance_impl.hpp @@ -28,7 +28,6 @@ namespace boost { namespace fusion { static typename mpl::minus< typename Last::index, typename First::index>::type - call(First const&, Last const&) { typedef typename mpl::minus< diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/category_of_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/category_of_impl.hpp index 1cba8043..c196a71d 100644 --- a/include/boost/fusion/sequence/adapted/mpl/detail/category_of_impl.hpp +++ b/include/boost/fusion/sequence/adapted/mpl/detail/category_of_impl.hpp @@ -9,7 +9,6 @@ #if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_20060217_2141) #define BOOST_FUSION_CATEGORY_OF_IMPL_20060217_2141 -#include #include #include #include @@ -28,11 +27,9 @@ namespace boost { namespace fusion { BOOST_STATIC_ASSERT(mpl::is_sequence::value); typedef typename - iterator_to_sequence_category< - typename mpl_iterator_category< - typename mpl::begin::type::category - >::type - >::type + mpl_iterator_category< + typename mpl::begin::type::category + >::type type; }; } diff --git a/include/boost/fusion/sequence/container/list/cons.hpp b/include/boost/fusion/sequence/container/list/cons.hpp index c3de861d..3b5e7131 100644 --- a/include/boost/fusion/sequence/container/list/cons.hpp +++ b/include/boost/fusion/sequence/container/list/cons.hpp @@ -30,7 +30,7 @@ namespace boost { namespace fusion { struct void_; struct cons_tag; - struct forward_sequence_tag; + struct forward_traversal_tag; struct fusion_sequence_tag; struct nil : sequence_base @@ -39,7 +39,7 @@ namespace boost { namespace fusion typedef cons_tag fusion_tag; typedef fusion_sequence_tag tag; // this gets picked up by MPL typedef mpl::false_ is_view; - typedef forward_sequence_tag category; + typedef forward_traversal_tag category; typedef void_ car_type; typedef void_ cdr_type; @@ -62,7 +62,7 @@ namespace boost { namespace fusion typedef cons_tag fusion_tag; typedef fusion_sequence_tag tag; // this gets picked up by MPL typedef mpl::false_ is_view; - typedef forward_sequence_tag category; + typedef forward_traversal_tag category; typedef Car car_type; typedef Cdr cdr_type; diff --git a/include/boost/fusion/sequence/container/map/detail/is_associative_impl.hpp b/include/boost/fusion/sequence/container/map/detail/is_associative_impl.hpp deleted file mode 100644 index 656d0114..00000000 --- a/include/boost/fusion/sequence/container/map/detail/is_associative_impl.hpp +++ /dev/null @@ -1,33 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2006 Dan Marsden - - Use, modification and distribution is 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_IS_ASSOCIATIVE_IMPL_20060304_2310) -#define BOOST_FUSION_IS_ASSOCIATIVE_IMPL_20060304_2310 - -#include - -namespace boost { namespace fusion { - - struct map_tag; - - namespace extension { - template - struct is_associative_impl; - - template<> - struct is_associative_impl - { - template - struct apply - : mpl::true_ - {}; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/container/map/map.hpp b/include/boost/fusion/sequence/container/map/map.hpp index ddd9807b..82bcfe8e 100644 --- a/include/boost/fusion/sequence/container/map/map.hpp +++ b/include/boost/fusion/sequence/container/map/map.hpp @@ -9,7 +9,7 @@ #define FUSION_MAP_07212005_1106 #include -#include +#include #include #include #include @@ -17,7 +17,6 @@ #include #include #include -#include #include #include #include @@ -26,15 +25,15 @@ namespace boost { namespace fusion { struct void_; struct map_tag; - struct forward_sequence_tag; struct fusion_sequence_tag; template struct map : sequence_base > { + struct category : forward_traversal_tag, associative_sequence_tag {}; + typedef map_tag fusion_tag; typedef fusion_sequence_tag tag; // this gets picked up by MPL - typedef forward_sequence_tag category; typedef mpl::false_ is_view; typedef vector< diff --git a/include/boost/fusion/sequence/container/set/detail/is_associative_impl.hpp b/include/boost/fusion/sequence/container/set/detail/is_associative_impl.hpp deleted file mode 100644 index d167ee63..00000000 --- a/include/boost/fusion/sequence/container/set/detail/is_associative_impl.hpp +++ /dev/null @@ -1,33 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2006 Dan Marsden - - Use, modification and distribution is 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_IS_ASSOCIATIVE_IMPL_20060304_2219) -#define BOOST_FUSION_IS_ASSOCIATIVE_IMPL_20060304_2219 - -#include - -namespace boost { namespace fusion { - - struct set_tag; - - namespace extension { - template - struct is_associative_impl; - - template<> - struct is_associative_impl - { - template - struct apply - : mpl::true_ - {}; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/container/set/set.hpp b/include/boost/fusion/sequence/container/set/set.hpp index 81db3a7f..68b2f7c9 100644 --- a/include/boost/fusion/sequence/container/set/set.hpp +++ b/include/boost/fusion/sequence/container/set/set.hpp @@ -9,6 +9,7 @@ #define FUSION_SET_09162005_1104 #include +#include #include #include #include @@ -16,7 +17,6 @@ #include #include #include -#include #include #include #include @@ -25,15 +25,15 @@ namespace boost { namespace fusion { struct void_; struct set_tag; - struct forward_sequence_tag; struct fusion_sequence_tag; template struct set : sequence_base > { + struct category : forward_traversal_tag, associative_sequence_tag {}; + typedef set_tag fusion_tag; typedef fusion_sequence_tag tag; // this gets picked up by MPL - typedef forward_sequence_tag category; typedef mpl::false_ is_view; typedef vector< diff --git a/include/boost/fusion/sequence/container/vector/detail/vector_n.hpp b/include/boost/fusion/sequence/container/vector/detail/vector_n.hpp index 9c967e4d..923165d0 100644 --- a/include/boost/fusion/sequence/container/vector/detail/vector_n.hpp +++ b/include/boost/fusion/sequence/container/vector/detail/vector_n.hpp @@ -84,7 +84,7 @@ typedef vector_tag fusion_tag; typedef fusion_sequence_tag tag; // this gets picked up by MPL typedef mpl::false_ is_view; - typedef random_access_sequence_tag category; + typedef random_access_traversal_tag category; typedef mpl::int_ size; BOOST_PP_CAT(vector, N)() {} diff --git a/include/boost/fusion/sequence/container/vector/vector10.hpp b/include/boost/fusion/sequence/container/vector/vector10.hpp index 4f092128..da09e811 100644 --- a/include/boost/fusion/sequence/container/vector/vector10.hpp +++ b/include/boost/fusion/sequence/container/vector/vector10.hpp @@ -38,7 +38,7 @@ namespace boost { namespace fusion { struct vector_tag; struct fusion_sequence_tag; - struct random_access_sequence_tag; + struct random_access_traversal_tag; struct vector0 : sequence_base { @@ -46,7 +46,7 @@ namespace boost { namespace fusion typedef vector_tag fusion_tag; typedef fusion_sequence_tag tag; // this gets picked up by MPL typedef mpl::false_ is_view; - typedef random_access_sequence_tag category; + typedef random_access_traversal_tag category; typedef mpl::int_<0> size; }; diff --git a/include/boost/fusion/sequence/container/vector/vector20.hpp b/include/boost/fusion/sequence/container/vector/vector20.hpp index 1a4f94d2..a1c3477c 100644 --- a/include/boost/fusion/sequence/container/vector/vector20.hpp +++ b/include/boost/fusion/sequence/container/vector/vector20.hpp @@ -38,7 +38,7 @@ namespace boost { namespace fusion { struct vector_tag; struct fusion_sequence_tag; - struct random_access_sequence_tag; + struct random_access_traversal_tag; // expand vector11 to vector20 #define BOOST_PP_FILENAME_1 diff --git a/include/boost/fusion/sequence/container/vector/vector30.hpp b/include/boost/fusion/sequence/container/vector/vector30.hpp index 8b5325ba..4a40c82d 100644 --- a/include/boost/fusion/sequence/container/vector/vector30.hpp +++ b/include/boost/fusion/sequence/container/vector/vector30.hpp @@ -38,7 +38,7 @@ namespace boost { namespace fusion { struct vector_tag; struct fusion_sequence_tag; - struct random_access_sequence_tag; + struct random_access_traversal_tag; // expand vector21 to vector30 #define BOOST_PP_FILENAME_1 diff --git a/include/boost/fusion/sequence/container/vector/vector40.hpp b/include/boost/fusion/sequence/container/vector/vector40.hpp index 90aa1614..9a1f8afc 100644 --- a/include/boost/fusion/sequence/container/vector/vector40.hpp +++ b/include/boost/fusion/sequence/container/vector/vector40.hpp @@ -38,7 +38,7 @@ namespace boost { namespace fusion { struct vector_tag; struct fusion_sequence_tag; - struct random_access_sequence_tag; + struct random_access_traversal_tag; // expand vector31 to vector40 #define BOOST_PP_FILENAME_1 diff --git a/include/boost/fusion/sequence/container/vector/vector50.hpp b/include/boost/fusion/sequence/container/vector/vector50.hpp index 12fca5bf..437a9ed2 100644 --- a/include/boost/fusion/sequence/container/vector/vector50.hpp +++ b/include/boost/fusion/sequence/container/vector/vector50.hpp @@ -38,7 +38,7 @@ namespace boost { namespace fusion { struct vector_tag; struct fusion_sequence_tag; - struct random_access_sequence_tag; + struct random_access_traversal_tag; // expand vector41 to vector50 #define BOOST_PP_FILENAME_1 diff --git a/include/boost/fusion/sequence/intrinsic/at.hpp b/include/boost/fusion/sequence/intrinsic/at.hpp index 1eb11198..ec3a1fdc 100644 --- a/include/boost/fusion/sequence/intrinsic/at.hpp +++ b/include/boost/fusion/sequence/intrinsic/at.hpp @@ -15,6 +15,8 @@ namespace boost { namespace fusion { + // Special tags: + struct sequence_facade_tag; struct array_tag; // boost::array tag struct mpl_sequence_tag; // mpl sequence tag struct std_pair_tag; // std::pair tag @@ -28,6 +30,13 @@ namespace boost { namespace fusion struct apply; }; + template <> + struct at_impl + { + template + struct apply : Sequence::template at {}; + }; + template <> struct at_impl; diff --git a/include/boost/fusion/sequence/intrinsic/at_key.hpp b/include/boost/fusion/sequence/intrinsic/at_key.hpp index 9229f5c0..fc29c615 100644 --- a/include/boost/fusion/sequence/intrinsic/at_key.hpp +++ b/include/boost/fusion/sequence/intrinsic/at_key.hpp @@ -15,6 +15,8 @@ namespace boost { namespace fusion { + // Special tags: + struct sequence_facade_tag; struct array_tag; // boost::array tag struct mpl_sequence_tag; // mpl sequence tag struct std_pair_tag; // std::pair tag @@ -28,6 +30,13 @@ namespace boost { namespace fusion struct apply; }; + template <> + struct at_key_impl + { + template + struct apply : Sequence::template at_key {}; + }; + template <> struct at_key_impl; diff --git a/include/boost/fusion/sequence/intrinsic/begin.hpp b/include/boost/fusion/sequence/intrinsic/begin.hpp index b2a616d1..c6b053fa 100644 --- a/include/boost/fusion/sequence/intrinsic/begin.hpp +++ b/include/boost/fusion/sequence/intrinsic/begin.hpp @@ -12,7 +12,8 @@ namespace boost { namespace fusion { - struct fusion_sequence_tag; + // Special tags: + struct sequence_facade_tag; // iterator facade tag struct array_tag; // boost::array tag struct mpl_sequence_tag; // mpl sequence tag struct std_pair_tag; // std::pair tag @@ -26,6 +27,13 @@ namespace boost { namespace fusion struct apply; }; + template <> + struct begin_impl + { + template + struct apply : Sequence::template begin {}; + }; + template <> struct begin_impl; diff --git a/include/boost/fusion/sequence/intrinsic/empty.hpp b/include/boost/fusion/sequence/intrinsic/empty.hpp index d8e17c8c..9013cf01 100644 --- a/include/boost/fusion/sequence/intrinsic/empty.hpp +++ b/include/boost/fusion/sequence/intrinsic/empty.hpp @@ -14,7 +14,8 @@ namespace boost { namespace fusion { - struct fusion_sequence_tag; + // Special tags: + struct sequence_facade_tag; struct mpl_sequence_tag; // mpl sequence tag namespace extension @@ -28,6 +29,13 @@ namespace boost { namespace fusion {}; }; + template <> + struct empty_impl + { + template + struct apply : Sequence::template empty {}; + }; + template <> struct empty_impl; } diff --git a/include/boost/fusion/sequence/intrinsic/end.hpp b/include/boost/fusion/sequence/intrinsic/end.hpp index fcce8e04..47ea2479 100644 --- a/include/boost/fusion/sequence/intrinsic/end.hpp +++ b/include/boost/fusion/sequence/intrinsic/end.hpp @@ -12,7 +12,8 @@ namespace boost { namespace fusion { - struct fusion_sequence_tag; + // Special tags: + struct sequence_facade_tag; struct array_tag; // boost::array tag struct mpl_sequence_tag; // mpl sequence tag struct std_pair_tag; // std::pair tag @@ -26,6 +27,13 @@ namespace boost { namespace fusion struct apply; }; + template <> + struct end_impl + { + template + struct apply : Sequence::template end {}; + }; + template <> struct end_impl; diff --git a/include/boost/fusion/sequence/intrinsic/has_key.hpp b/include/boost/fusion/sequence/intrinsic/has_key.hpp index b0962afa..dc0335e9 100644 --- a/include/boost/fusion/sequence/intrinsic/has_key.hpp +++ b/include/boost/fusion/sequence/intrinsic/has_key.hpp @@ -15,7 +15,9 @@ namespace boost { namespace fusion { struct void_; - struct fusion_sequence_tag; + + // Special tags: + struct sequence_facade_tag; struct array_tag; // boost::array tag struct mpl_sequence_tag; // mpl sequence tag struct std_pair_tag; // std::pair tag @@ -32,6 +34,13 @@ namespace boost { namespace fusion {}; }; + template <> + struct has_key_impl + { + template + struct apply : Sequence::template has_key {}; + }; + template <> struct has_key_impl; diff --git a/include/boost/fusion/sequence/intrinsic/size.hpp b/include/boost/fusion/sequence/intrinsic/size.hpp index a79f824a..9b3f9a7b 100644 --- a/include/boost/fusion/sequence/intrinsic/size.hpp +++ b/include/boost/fusion/sequence/intrinsic/size.hpp @@ -13,7 +13,11 @@ namespace boost { namespace fusion { - struct fusion_sequence_tag; + // Special tags: + struct sequence_facade_tag; + struct array_tag; // boost::array tag + struct mpl_sequence_tag; // mpl sequence tag + struct std_pair_tag; // std::pair tag namespace extension { @@ -24,6 +28,13 @@ namespace boost { namespace fusion struct apply : Sequence::size {}; }; + template <> + struct size_impl + { + template + struct apply : Sequence::template size {}; + }; + template <> struct size_impl; diff --git a/include/boost/fusion/sequence/intrinsic/value_at.hpp b/include/boost/fusion/sequence/intrinsic/value_at.hpp index cd589429..f8fcd0b2 100644 --- a/include/boost/fusion/sequence/intrinsic/value_at.hpp +++ b/include/boost/fusion/sequence/intrinsic/value_at.hpp @@ -13,6 +13,8 @@ namespace boost { namespace fusion { + // Special tags: + struct sequence_facade_tag; struct array_tag; // boost::array tag struct mpl_sequence_tag; // mpl sequence tag struct std_pair_tag; // std::pair tag @@ -26,6 +28,13 @@ namespace boost { namespace fusion struct apply; }; + template <> + struct value_at_impl + { + template + struct apply : Sequence::template value_at {}; + }; + template <> struct value_at_impl; diff --git a/include/boost/fusion/sequence/intrinsic/value_at_key.hpp b/include/boost/fusion/sequence/intrinsic/value_at_key.hpp index 51fc88c2..84c1cdeb 100644 --- a/include/boost/fusion/sequence/intrinsic/value_at_key.hpp +++ b/include/boost/fusion/sequence/intrinsic/value_at_key.hpp @@ -14,6 +14,8 @@ namespace boost { namespace fusion { + // Special tags: + struct sequence_facade_tag; struct array_tag; // boost::array tag struct mpl_sequence_tag; // mpl sequence tag struct std_pair_tag; // std::pair tag @@ -23,10 +25,17 @@ namespace boost { namespace fusion template struct value_at_key_impl { - template + template struct apply; }; + template <> + struct value_at_key_impl + { + template + struct apply : Sequence::template value_at_key {}; + }; + template <> struct value_at_key_impl; diff --git a/include/boost/fusion/sequence/sequence_facade.hpp b/include/boost/fusion/sequence/sequence_facade.hpp new file mode 100644 index 00000000..69e3daf5 --- /dev/null +++ b/include/boost/fusion/sequence/sequence_facade.hpp @@ -0,0 +1,28 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_SEQUENCE_FACADE_09252006_1044) +#define FUSION_SEQUENCE_FACADE_09252006_1044 + +#include +#include + +namespace boost { namespace fusion +{ + struct sequence_facade_tag; + + template + struct sequence_facade : sequence_base + { + typedef sequence_facade_tag fusion_tag; + typedef Derived derived_type; + typedef Category category; + typedef IsView is_view; + }; +}} + +#endif diff --git a/include/boost/fusion/sequence/view/filter_view/filter_view.hpp b/include/boost/fusion/sequence/view/filter_view/filter_view.hpp index 4629e541..69e0b80f 100644 --- a/include/boost/fusion/sequence/view/filter_view/filter_view.hpp +++ b/include/boost/fusion/sequence/view/filter_view/filter_view.hpp @@ -22,7 +22,7 @@ namespace boost { namespace fusion { struct filter_view_tag; - struct forward_sequence_tag; + struct forward_traversal_tag; struct fusion_sequence_tag; template @@ -30,7 +30,7 @@ namespace boost { namespace fusion { typedef filter_view_tag fusion_tag; typedef fusion_sequence_tag tag; // this gets picked up by MPL - typedef forward_sequence_tag category; + typedef forward_traversal_tag category; typedef mpl::true_ is_view; typedef typename result_of::begin::type first_type; diff --git a/include/boost/fusion/sequence/view/iterator_range/iterator_range.hpp b/include/boost/fusion/sequence/view/iterator_range/iterator_range.hpp index 05856be2..87635f79 100644 --- a/include/boost/fusion/sequence/view/iterator_range/iterator_range.hpp +++ b/include/boost/fusion/sequence/view/iterator_range/iterator_range.hpp @@ -9,7 +9,6 @@ #define FUSION_ITERATOR_RANGE_05062005_1224 #include -#include #include #include #include @@ -33,11 +32,7 @@ namespace boost { namespace fusion typedef typename result_of::distance::type size; typedef mpl::true_ is_view; - typedef typename - detail::iterator_to_sequence_category< - typename traits::category_of::type - >::type - category; + typedef typename traits::category_of::type category; iterator_range(First const& first, Last const& last) : first(convert_iterator::call(first)) diff --git a/include/boost/fusion/sequence/view/joint_view/joint_view.hpp b/include/boost/fusion/sequence/view/joint_view/joint_view.hpp index 1c5cb54b..40abc41c 100644 --- a/include/boost/fusion/sequence/view/joint_view/joint_view.hpp +++ b/include/boost/fusion/sequence/view/joint_view/joint_view.hpp @@ -24,7 +24,7 @@ namespace boost { namespace fusion { struct joint_view_tag; - struct forward_sequence_tag; + struct forward_traversal_tag; struct fusion_sequence_tag; template @@ -32,7 +32,7 @@ namespace boost { namespace fusion { typedef joint_view_tag fusion_tag; typedef fusion_sequence_tag tag; // this gets picked up by MPL - typedef forward_sequence_tag category; + typedef forward_traversal_tag category; typedef mpl::true_ is_view; typedef typename result_of::begin::type first_type; diff --git a/include/boost/fusion/sequence/view/reverse_view/reverse_view.hpp b/include/boost/fusion/sequence/view/reverse_view/reverse_view.hpp index 08ba4c61..e8fb92a8 100644 --- a/include/boost/fusion/sequence/view/reverse_view/reverse_view.hpp +++ b/include/boost/fusion/sequence/view/reverse_view/reverse_view.hpp @@ -18,7 +18,7 @@ #include #include #include -#include +#include #include #include @@ -40,7 +40,7 @@ namespace boost { namespace fusion typedef typename result_of::size::type size; BOOST_STATIC_ASSERT(( - is_base_and_derived< + is_base_of< bidirectional_traversal_tag , typename traits::category_of::type>::value)); diff --git a/include/boost/fusion/sequence/view/reverse_view/reverse_view_iterator.hpp b/include/boost/fusion/sequence/view/reverse_view/reverse_view_iterator.hpp index 7ba2fedf..6f09d1cb 100644 --- a/include/boost/fusion/sequence/view/reverse_view/reverse_view_iterator.hpp +++ b/include/boost/fusion/sequence/view/reverse_view/reverse_view_iterator.hpp @@ -17,7 +17,7 @@ #include #include #include -#include +#include #include namespace boost { namespace fusion @@ -34,7 +34,7 @@ namespace boost { namespace fusion typedef typename traits::category_of::type category; BOOST_STATIC_ASSERT(( - is_base_and_derived< + is_base_of< bidirectional_traversal_tag , category>::value)); diff --git a/include/boost/fusion/sequence/view/single_view/single_view.hpp b/include/boost/fusion/sequence/view/single_view/single_view.hpp index c0a32876..4584905d 100644 --- a/include/boost/fusion/sequence/view/single_view/single_view.hpp +++ b/include/boost/fusion/sequence/view/single_view/single_view.hpp @@ -20,7 +20,7 @@ namespace boost { namespace fusion { struct single_view_tag; - struct forward_sequence_tag; + struct forward_traversal_tag; struct fusion_sequence_tag; template @@ -28,7 +28,7 @@ namespace boost { namespace fusion { typedef single_view_tag fusion_tag; typedef fusion_sequence_tag tag; // this gets picked up by MPL - typedef forward_sequence_tag category; + typedef forward_traversal_tag category; typedef mpl::true_ is_view; typedef mpl::int_<1> size; typedef T value_type; diff --git a/test/sequence/map.cpp b/test/sequence/map.cpp index 93ce92a7..bef6880c 100644 --- a/test/sequence/map.cpp +++ b/test/sequence/map.cpp @@ -13,7 +13,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/test/sequence/set.cpp b/test/sequence/set.cpp index 3a10a77f..08c86833 100644 --- a/test/sequence/set.cpp +++ b/test/sequence/set.cpp @@ -13,7 +13,7 @@ #include #include #include -#include +#include #include #include #include From f017aa86ceea16b1301c67dbbbc5f18d7c58194d Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Mon, 25 Sep 2006 09:06:15 +0000 Subject: [PATCH 019/234] adapted/array is now using iterator_facade [SVN r35317] --- include/boost/fusion/algorithm/query/find.hpp | 2 +- include/boost/fusion/iterator.hpp | 1 + include/boost/fusion/iterator/advance.hpp | 13 +- include/boost/fusion/iterator/deref.hpp | 9 ++ include/boost/fusion/iterator/distance.hpp | 16 ++- include/boost/fusion/iterator/equal_to.hpp | 9 ++ .../boost/fusion/iterator/iterator_facade.hpp | 35 ++++++ include/boost/fusion/iterator/next.hpp | 9 ++ include/boost/fusion/iterator/prior.hpp | 9 ++ include/boost/fusion/iterator/value_of.hpp | 9 ++ include/boost/fusion/sequence.hpp | 1 + .../sequence/adapted/array/array_iterator.hpp | 112 +++++++++++++++--- .../adapted/array/detail/advance_impl.hpp | 44 ------- .../adapted/array/detail/deref_impl.hpp | 49 -------- .../adapted/array/detail/distance_impl.hpp | 43 ------- .../adapted/array/detail/equal_to_impl.hpp | 40 ------- .../adapted/array/detail/next_impl.hpp | 47 -------- .../adapted/array/detail/prior_impl.hpp | 45 ------- .../adapted/array/detail/value_of_impl.hpp | 34 ------ include/boost/fusion/support.hpp | 1 - include/boost/fusion/support/category_of.hpp | 68 ++++++++++- .../detail/iterator_to_sequence_category.hpp | 62 ---------- .../boost/fusion/support/is_associative.hpp | 37 ------ include/boost/fusion/support/is_iterator.hpp | 4 +- include/boost/fusion/support/is_sequence.hpp | 12 +- include/boost/fusion/support/is_view.hpp | 11 +- include/boost/fusion/support/tag_of.hpp | 3 +- include/boost/fusion/support/tags.hpp | 47 -------- 28 files changed, 281 insertions(+), 491 deletions(-) create mode 100644 include/boost/fusion/iterator/iterator_facade.hpp delete mode 100644 include/boost/fusion/sequence/adapted/array/detail/advance_impl.hpp delete mode 100644 include/boost/fusion/sequence/adapted/array/detail/deref_impl.hpp delete mode 100644 include/boost/fusion/sequence/adapted/array/detail/distance_impl.hpp delete mode 100644 include/boost/fusion/sequence/adapted/array/detail/equal_to_impl.hpp delete mode 100644 include/boost/fusion/sequence/adapted/array/detail/next_impl.hpp delete mode 100644 include/boost/fusion/sequence/adapted/array/detail/prior_impl.hpp delete mode 100644 include/boost/fusion/sequence/adapted/array/detail/value_of_impl.hpp delete mode 100644 include/boost/fusion/support/detail/iterator_to_sequence_category.hpp delete mode 100644 include/boost/fusion/support/is_associative.hpp delete mode 100644 include/boost/fusion/support/tags.hpp diff --git a/include/boost/fusion/algorithm/query/find.hpp b/include/boost/fusion/algorithm/query/find.hpp index 7bb74413..fcc74341 100644 --- a/include/boost/fusion/algorithm/query/find.hpp +++ b/include/boost/fusion/algorithm/query/find.hpp @@ -12,7 +12,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/include/boost/fusion/iterator.hpp b/include/boost/fusion/iterator.hpp index 48083ddf..074d9542 100644 --- a/include/boost/fusion/iterator.hpp +++ b/include/boost/fusion/iterator.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_ITERATOR_10022005_0559) #define FUSION_ITERATOR_10022005_0559 +#include #include #include #include diff --git a/include/boost/fusion/iterator/advance.hpp b/include/boost/fusion/iterator/advance.hpp index f62b84b1..918a37fa 100644 --- a/include/boost/fusion/iterator/advance.hpp +++ b/include/boost/fusion/iterator/advance.hpp @@ -19,6 +19,9 @@ namespace boost { namespace fusion { struct random_access_traversal_tag; + + // Special tags: + struct iterator_facade_tag; // iterator facade tag struct array_iterator_tag; // boost::array iterator tag struct mpl_iterator_tag; // mpl sequence iterator tag struct std_pair_iterator_tag; // std::pair iterator tag @@ -37,11 +40,17 @@ namespace boost { namespace fusion , advance_detail::backward >::type { - typedef typename traits::category_of::type category; - BOOST_MPL_ASSERT_NOT((is_same)); + BOOST_MPL_ASSERT_NOT((traits::is_random_access)); }; }; + template <> + struct advance_impl + { + template + struct apply : Iterator::template advance {}; + }; + template <> struct advance_impl; diff --git a/include/boost/fusion/iterator/deref.hpp b/include/boost/fusion/iterator/deref.hpp index c2a40564..dae0a04e 100644 --- a/include/boost/fusion/iterator/deref.hpp +++ b/include/boost/fusion/iterator/deref.hpp @@ -13,6 +13,8 @@ namespace boost { namespace fusion { + // Special tags: + struct iterator_facade_tag; // iterator facade tag struct array_iterator_tag; // boost::array iterator tag struct mpl_iterator_tag; // mpl sequence iterator tag struct std_pair_iterator_tag; // std::pair iterator tag @@ -26,6 +28,13 @@ namespace boost { namespace fusion struct apply {}; }; + template <> + struct deref_impl + { + template + struct apply : Iterator::template deref {}; + }; + template <> struct deref_impl; diff --git a/include/boost/fusion/iterator/distance.hpp b/include/boost/fusion/iterator/distance.hpp index 422a1231..bdafa9f1 100644 --- a/include/boost/fusion/iterator/distance.hpp +++ b/include/boost/fusion/iterator/distance.hpp @@ -20,6 +20,9 @@ namespace boost { namespace fusion { struct random_access_traversal_tag; + + // Special tags: + struct iterator_facade_tag; // iterator facade tag struct array_iterator_tag; // boost::array iterator tag struct mpl_iterator_tag; // mpl sequence iterator tag struct std_pair_iterator_tag; // std::pair iterator tag @@ -33,13 +36,18 @@ namespace boost { namespace fusion template struct apply : distance_detail::linear_distance { - typedef typename traits::category_of::type first_category; - typedef typename traits::category_of::type last_category; - BOOST_MPL_ASSERT((is_same)); - BOOST_MPL_ASSERT_NOT((is_same)); + BOOST_MPL_ASSERT_NOT((traits::is_random_access)); + BOOST_MPL_ASSERT_NOT((traits::is_random_access)); }; }; + template <> + struct distance_impl + { + template + struct apply : First::template distance {}; + }; + template <> struct distance_impl; diff --git a/include/boost/fusion/iterator/equal_to.hpp b/include/boost/fusion/iterator/equal_to.hpp index f6cd826c..be1e7ed7 100644 --- a/include/boost/fusion/iterator/equal_to.hpp +++ b/include/boost/fusion/iterator/equal_to.hpp @@ -17,6 +17,8 @@ namespace boost { namespace fusion { + // Special tags: + struct iterator_facade_tag; // iterator facade tag struct array_iterator_tag; // boost::array iterator tag struct mpl_iterator_tag; // mpl sequence iterator tag struct std_pair_iterator_tag; // std::pair iterator tag @@ -33,6 +35,13 @@ namespace boost { namespace fusion {}; }; + template <> + struct equal_to_impl + { + template + struct apply : I1::template equal_to {}; + }; + template <> struct equal_to_impl; diff --git a/include/boost/fusion/iterator/iterator_facade.hpp b/include/boost/fusion/iterator/iterator_facade.hpp new file mode 100644 index 00000000..a7250427 --- /dev/null +++ b/include/boost/fusion/iterator/iterator_facade.hpp @@ -0,0 +1,35 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_ITERATOR_FACADE_09252006_1011) +#define FUSION_ITERATOR_FACADE_09252006_1011 + +#include +#include + +namespace boost { namespace fusion +{ + struct iterator_facade_tag; + + template + struct iterator_facade : iterator_base + { + typedef iterator_facade_tag fusion_tag; + typedef Derived derived_type; + typedef Category category; + + template + struct equal_to // default implementation + : is_same< + typename I1::derived_type + , typename I2::derived_type + > + {}; + }; +}} + +#endif diff --git a/include/boost/fusion/iterator/next.hpp b/include/boost/fusion/iterator/next.hpp index aa7f2de8..fa69ae66 100644 --- a/include/boost/fusion/iterator/next.hpp +++ b/include/boost/fusion/iterator/next.hpp @@ -12,6 +12,8 @@ namespace boost { namespace fusion { + // Special tags: + struct iterator_facade_tag; // iterator facade tag struct array_iterator_tag; // boost::array iterator tag struct mpl_iterator_tag; // mpl sequence iterator tag struct std_pair_iterator_tag; // std::pair iterator tag @@ -25,6 +27,13 @@ namespace boost { namespace fusion struct apply {}; }; + template <> + struct next_impl + { + template + struct apply : Iterator::template next {}; + }; + template <> struct next_impl; diff --git a/include/boost/fusion/iterator/prior.hpp b/include/boost/fusion/iterator/prior.hpp index 0e859d9b..b9528150 100644 --- a/include/boost/fusion/iterator/prior.hpp +++ b/include/boost/fusion/iterator/prior.hpp @@ -12,6 +12,8 @@ namespace boost { namespace fusion { + // Special tags: + struct iterator_facade_tag; // iterator facade tag struct array_iterator_tag; // boost::array iterator tag struct mpl_iterator_tag; // mpl sequence iterator tag struct std_pair_iterator_tag; // std::pair iterator tag @@ -25,6 +27,13 @@ namespace boost { namespace fusion struct apply {}; }; + template <> + struct prior_impl + { + template + struct apply : Iterator::template prior {}; + }; + template <> struct prior_impl; diff --git a/include/boost/fusion/iterator/value_of.hpp b/include/boost/fusion/iterator/value_of.hpp index 5a4f6585..17ab07c8 100644 --- a/include/boost/fusion/iterator/value_of.hpp +++ b/include/boost/fusion/iterator/value_of.hpp @@ -13,6 +13,8 @@ namespace boost { namespace fusion { + // Special tags: + struct iterator_facade_tag; // iterator facade tag struct array_iterator_tag; // boost::array iterator tag struct mpl_iterator_tag; // mpl sequence iterator tag struct std_pair_iterator_tag; // std::pair iterator tag @@ -26,6 +28,13 @@ namespace boost { namespace fusion struct apply {}; }; + template <> + struct value_of_impl + { + template + struct apply : Iterator::template value_of {}; + }; + template <> struct value_of_impl; diff --git a/include/boost/fusion/sequence.hpp b/include/boost/fusion/sequence.hpp index 5b6763c6..86d7bdd3 100644 --- a/include/boost/fusion/sequence.hpp +++ b/include/boost/fusion/sequence.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_SEQUENCE_10022005_0559) #define FUSION_ITERATOR_10022005_0559 +#include #include #include #include diff --git a/include/boost/fusion/sequence/adapted/array/array_iterator.hpp b/include/boost/fusion/sequence/adapted/array/array_iterator.hpp index 93a0fa0f..71a9921c 100644 --- a/include/boost/fusion/sequence/adapted/array/array_iterator.hpp +++ b/include/boost/fusion/sequence/adapted/array/array_iterator.hpp @@ -10,45 +10,119 @@ #define BOOST_FUSION_ARRAY_ITERATOR_26122005_2250 #include - #include #include #include -#include +#include +#include +#include +#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion { - - struct array_iterator_tag; +namespace boost { namespace fusion +{ struct random_access_traversal_tag; template struct array_iterator - : iterator_base > + : iterator_facade, random_access_traversal_tag> { BOOST_MPL_ASSERT_RELATION(Pos,>=,0); BOOST_MPL_ASSERT_RELATION(Pos,<=,std::size_t(Array::static_size)); typedef mpl::size_t index; - typedef array_iterator_tag fusion_tag; - typedef random_access_traversal_tag category; typedef Array array_type; - typedef array_iterator< - typename add_const::type, Pos> identity; array_iterator(Array& a) : array(a) {} Array& array; + + template + struct value_of + { + typedef typename Iterator::array_type array_type; + typedef typename array_type::value_type type; + }; + + template + struct deref + { + typedef typename Iterator::array_type array_type; + typedef typename + mpl::if_< + is_const + , typename array_type::const_reference + , typename array_type::reference + >::type + type; + + static type + call(Iterator const & it) + { + return it.array[Iterator::index::value]; + } + }; + + template + struct next + { + typedef typename Iterator::array_type array_type; + typedef typename Iterator::index index; + static int const index_val = index::value; + typedef array_iterator type; + + static type + call(Iterator const& i) + { + return type(i.array); + } + }; + + template + struct prior + { + typedef typename Iterator::array_type array_type; + typedef typename Iterator::index index; + static int const index_val = index::value; + typedef array_iterator type; + + static type + call(Iterator const& i) + { + return type(i.array); + } + }; + + template + struct advance + { + typedef typename Iterator::index index; + typedef typename Iterator::array_type array_type; + typedef array_iterator type; + + static type + call(Iterator const& i) + { + return type(i.array); + } + }; + + template + struct distance : mpl::minus + { + typedef typename mpl::minus< + typename Last::index, typename First::index>::type + type; + + static type + call(First const&, Last const&) + { + return type(); + } + }; + private: + array_iterator operator=(const array_iterator&); }; }} diff --git a/include/boost/fusion/sequence/adapted/array/detail/advance_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/advance_impl.hpp deleted file mode 100644 index c93133da..00000000 --- a/include/boost/fusion/sequence/adapted/array/detail/advance_impl.hpp +++ /dev/null @@ -1,44 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - Use, modification and distribution is 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_ADVANCE_IMPL_27122005_0938) -#define BOOST_FUSION_ADVANCE_IMPL_27122005_0938 - -namespace boost { namespace fusion { - - struct array_iterator_tag; - - template - struct array_iterator; - - namespace extension - { - template - struct advance_impl; - - template<> - struct advance_impl - { - template - struct apply - { - typedef typename Iterator::index index; - typedef typename Iterator::array_type array_type; - typedef array_iterator type; - - static type - call(Iterator const& i) - { - return type(i.array); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/array/detail/deref_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/deref_impl.hpp deleted file mode 100644 index 012d1aaf..00000000 --- a/include/boost/fusion/sequence/adapted/array/detail/deref_impl.hpp +++ /dev/null @@ -1,49 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - Use, modification and distribution is 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_DEREF_IMPL_27122005_0951) -#define BOOST_FUSION_DEREF_IMPL_27122005_0951 - -#include -#include - -namespace boost { namespace fusion { - - struct array_iterator_tag; - - template - struct array_iterator; - - namespace extension - { - template - struct deref_impl; - - template<> - struct deref_impl - { - template - struct apply - { - typedef typename Iterator::array_type array_type; - typedef typename mpl::if_< - is_const, - typename array_type::const_reference, - typename array_type::reference>::type type; - - static type - call(Iterator const & it) - { - return it.array[Iterator::index::value]; - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/array/detail/distance_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/distance_impl.hpp deleted file mode 100644 index 062dc7d9..00000000 --- a/include/boost/fusion/sequence/adapted/array/detail/distance_impl.hpp +++ /dev/null @@ -1,43 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - Use, modification and distribution is 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_DISTANCE_IMPL_27122005_1016) -#define BOOST_FUSION_DISTANCE_IMPL_27122005_1016 - -#include - -namespace boost { namespace fusion -{ - struct array_iterator_tag; - - namespace extension - { - template - struct distance_impl; - - template <> - struct distance_impl - { - template - struct apply : mpl::minus - { - static typename mpl::minus< - typename Last::index, typename First::index>::type - call(First const&, Last const&) - { - typedef typename mpl::minus< - typename Last::index, typename First::index>::type - result; - return result(); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/array/detail/equal_to_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/equal_to_impl.hpp deleted file mode 100644 index f395ba5d..00000000 --- a/include/boost/fusion/sequence/adapted/array/detail/equal_to_impl.hpp +++ /dev/null @@ -1,40 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - Use, modification and distribution is 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_EQUAL_TO_IMPL_27122005_1020) -#define BOOST_FUSION_EQUAL_TO_IMPL_27122005_1020 - -#include -#include -#include - -namespace boost { namespace fusion -{ - struct array_iterator_tag; - - namespace extension - { - template - struct equal_to_impl; - - template <> - struct equal_to_impl - { - template - struct apply - : is_same< - typename I1::identity - , typename I2::identity - > - {}; - }; - } -}} - -#endif - diff --git a/include/boost/fusion/sequence/adapted/array/detail/next_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/next_impl.hpp deleted file mode 100644 index 3f6d1df2..00000000 --- a/include/boost/fusion/sequence/adapted/array/detail/next_impl.hpp +++ /dev/null @@ -1,47 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - Use, modification and distribution is 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) -==============================================================================*/ -#if !defined(FUSION_NEXT_IMPL_27122005_0927) -#define FUSION_NEXT_IMPL_27122005_0927 - -#include - -namespace boost { namespace fusion { - - struct array_iterator_tag; - - template - struct array_iterator; - - namespace extension - { - template - struct next_impl; - - template<> - struct next_impl - { - template - struct apply - { - typedef typename Iterator::array_type array_type; - typedef typename Iterator::index index; - static int const index_val = index::value; - typedef array_iterator type; - - static type - call(Iterator const& i) - { - return type(i.array); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/array/detail/prior_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/prior_impl.hpp deleted file mode 100644 index 27f4d2e5..00000000 --- a/include/boost/fusion/sequence/adapted/array/detail/prior_impl.hpp +++ /dev/null @@ -1,45 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - Use, modification and distribution is 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) -==============================================================================*/ -#if !defined(FUSION_PRIOR_IMPL_27122005_0935) -#define FUSION_PRIOR_IMPL_27122005_0935 - -namespace boost { namespace fusion { - - struct array_iterator_tag; - - template - struct array_iterator; - - namespace extension - { - template - struct prior_impl; - - template<> - struct prior_impl - { - template - struct apply - { - typedef typename Iterator::array_type array_type; - typedef typename Iterator::index index; - static int const index_val = index::value; - typedef array_iterator type; - - static type - call(Iterator const& i) - { - return type(i.array); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/array/detail/value_of_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/value_of_impl.hpp deleted file mode 100644 index 5056ac8b..00000000 --- a/include/boost/fusion/sequence/adapted/array/detail/value_of_impl.hpp +++ /dev/null @@ -1,34 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - Use, modification and distribution is 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_VALUE_OF_IMPL_27122005_1011) -#define BOOST_FUSION_VALUE_OF_IMPL_27122005_1011 - -namespace boost { namespace fusion -{ - struct array_iterator_tag; - - namespace extension - { - template - struct value_of_impl; - - template <> - struct value_of_impl - { - template - struct apply - { - typedef typename Iterator::array_type array_type; - typedef typename array_type::value_type type; - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/support.hpp b/include/boost/fusion/support.hpp index adede25c..764fe795 100644 --- a/include/boost/fusion/support.hpp +++ b/include/boost/fusion/support.hpp @@ -16,6 +16,5 @@ #include #include #include -#include #endif diff --git a/include/boost/fusion/support/category_of.hpp b/include/boost/fusion/support/category_of.hpp index 7aebc9ac..fa8f795f 100644 --- a/include/boost/fusion/support/category_of.hpp +++ b/include/boost/fusion/support/category_of.hpp @@ -10,23 +10,38 @@ #include #include -#include +#include namespace boost { namespace fusion { + // Special tags: struct array_tag; // boost::array tag struct mpl_sequence_tag; // mpl sequence tag struct std_pair_tag; // std::pair tag + struct incrementable_traversal_tag {}; + + struct single_pass_traversal_tag + : incrementable_traversal_tag {}; + + struct forward_traversal_tag + : single_pass_traversal_tag {}; + + struct bidirectional_traversal_tag + : forward_traversal_tag {}; + + struct random_access_traversal_tag + : bidirectional_traversal_tag {}; + + struct associative_sequence_tag {}; + namespace extension { template struct category_of_impl { template - struct apply - : detail::fusion_category_of - {}; + struct apply : detail::fusion_category_of {}; }; template <> @@ -46,6 +61,49 @@ namespace boost { namespace fusion : extension::category_of_impl::type>:: template apply {}; -}}} + + template + struct is_associative + : is_base_of< + associative_sequence_tag + , typename category_of::type> + {}; + + template + struct is_incrementable + : is_base_of< + incrementable_traversal_tag + , typename category_of::type> + {}; + + template + struct is_single_pass + : is_base_of< + single_pass_traversal_tag + , typename category_of::type> + {}; + + template + struct is_forward + : is_base_of< + forward_traversal_tag + , typename category_of::type> + {}; + + template + struct is_bidirectional + : is_base_of< + bidirectional_traversal_tag + , typename category_of::type> + {}; + + template + struct is_random_access + : is_base_of< + random_access_traversal_tag + , typename category_of::type> + {}; + } +}} #endif diff --git a/include/boost/fusion/support/detail/iterator_to_sequence_category.hpp b/include/boost/fusion/support/detail/iterator_to_sequence_category.hpp deleted file mode 100644 index 9ffbb5a5..00000000 --- a/include/boost/fusion/support/detail/iterator_to_sequence_category.hpp +++ /dev/null @@ -1,62 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - Use, modification and distribution is 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) -==============================================================================*/ -#if !defined(FUSION_ITERATOR_TO_SEQUENCE_CATEGORY_07212005_0726) -#define FUSION_ITERATOR_TO_SEQUENCE_CATEGORY_07212005_0726 - -namespace boost { namespace fusion -{ - struct incrementable_traversal_tag; - struct single_pass_traversal_tag; - struct forward_traversal_tag; - struct bidirectional_traversal_tag; - struct random_access_traversal_tag; - - struct incrementable_sequence_tag; - struct single_pass_sequence_tag; - struct forward_sequence_tag; - struct bidirectional_sequence_tag; - struct random_access_sequence_tag; -}} - -namespace boost { namespace fusion { namespace detail -{ - template - struct iterator_to_sequence_category; - - template <> - struct iterator_to_sequence_category - { - typedef incrementable_sequence_tag type; - }; - - template <> - struct iterator_to_sequence_category - { - typedef single_pass_sequence_tag type; - }; - - template <> - struct iterator_to_sequence_category - { - typedef forward_sequence_tag type; - }; - - template <> - struct iterator_to_sequence_category - { - typedef bidirectional_sequence_tag type; - }; - - template <> - struct iterator_to_sequence_category - { - typedef random_access_sequence_tag type; - }; -}}} - -#endif diff --git a/include/boost/fusion/support/is_associative.hpp b/include/boost/fusion/support/is_associative.hpp deleted file mode 100644 index ae339f25..00000000 --- a/include/boost/fusion/support/is_associative.hpp +++ /dev/null @@ -1,37 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2006 Dan Marsden - - Use, modification and distribution is 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) -==============================================================================*/ -#if !defined(FUSION_IS_ASSOCIATIVE_09242005_1018) -#define FUSION_IS_ASSOCIATIVE_09242005_1018 - -#include -#include - -namespace boost { namespace fusion -{ - namespace extension - { - template - struct is_associative_impl - { - template - struct apply : mpl::false_ {}; - }; - } - - namespace traits - { - template - struct is_associative - : extension::is_associative_impl::type>:: - template apply - {}; - } -}} - -#endif diff --git a/include/boost/fusion/support/is_iterator.hpp b/include/boost/fusion/support/is_iterator.hpp index 3e9415cb..63020a4b 100644 --- a/include/boost/fusion/support/is_iterator.hpp +++ b/include/boost/fusion/support/is_iterator.hpp @@ -8,14 +8,14 @@ #if !defined(FUSION_IS_ITERATOR_05062005_1219) #define FUSION_IS_ITERATOR_05062005_1219 -#include +#include namespace boost { namespace fusion { struct iterator_root; template - struct is_fusion_iterator : is_base_and_derived {}; + struct is_fusion_iterator : is_base_of {}; }} #endif diff --git a/include/boost/fusion/support/is_sequence.hpp b/include/boost/fusion/support/is_sequence.hpp index 86ed6f77..5de2e94c 100644 --- a/include/boost/fusion/support/is_sequence.hpp +++ b/include/boost/fusion/support/is_sequence.hpp @@ -8,7 +8,7 @@ #if !defined(FUSION_IS_SEQUENCE_05052005_1002) #define FUSION_IS_SEQUENCE_05052005_1002 -#include +#include #include #include #include @@ -17,6 +17,7 @@ namespace boost { namespace fusion { + // Special tags: struct non_fusion_tag; struct array_tag; // boost::array tag struct mpl_sequence_tag; // mpl sequence tag @@ -26,18 +27,15 @@ namespace boost { namespace fusion { template struct is_sequence_impl - : is_base_and_derived { - template - struct apply - : is_base_and_derived - {}; + template + struct apply : is_base_of {}; }; template <> struct is_sequence_impl { - template + template struct apply : mpl::false_ {}; }; diff --git a/include/boost/fusion/support/is_view.hpp b/include/boost/fusion/support/is_view.hpp index e1a03add..4db7883e 100644 --- a/include/boost/fusion/support/is_view.hpp +++ b/include/boost/fusion/support/is_view.hpp @@ -13,6 +13,8 @@ namespace boost { namespace fusion { + // Special tags: + struct sequence_facade_tag; struct array_tag; // boost::array tag struct mpl_sequence_tag; // mpl sequence tag struct std_pair_tag; // std::pair tag @@ -22,12 +24,19 @@ namespace boost { namespace fusion template struct is_view_impl { - template + template struct apply : detail::fusion_is_view {}; }; + template <> + struct is_view_impl + { + template + struct apply : Sequence::is_view {}; + }; + template <> struct is_view_impl; diff --git a/include/boost/fusion/support/tag_of.hpp b/include/boost/fusion/support/tag_of.hpp index 0fbb47a6..cf5b9a32 100644 --- a/include/boost/fusion/support/tag_of.hpp +++ b/include/boost/fusion/support/tag_of.hpp @@ -13,6 +13,7 @@ #include #include #include +#include #include namespace boost @@ -24,7 +25,7 @@ namespace boost namespace boost { namespace fusion { struct non_fusion_tag; - + namespace detail { BOOST_MPL_HAS_XXX_TRAIT_DEF(fusion_tag) diff --git a/include/boost/fusion/support/tags.hpp b/include/boost/fusion/support/tags.hpp deleted file mode 100644 index 5571d779..00000000 --- a/include/boost/fusion/support/tags.hpp +++ /dev/null @@ -1,47 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - Use, modification and distribution is 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) -==============================================================================*/ -#if !defined(FUSION_TAGS_07212005_1031) -#define FUSION_TAGS_07212005_1031 - -namespace boost { namespace fusion -{ -// Iterator Classification - struct incrementable_traversal_tag {}; - - struct single_pass_traversal_tag - : incrementable_traversal_tag {}; - - struct forward_traversal_tag - : single_pass_traversal_tag {}; - - struct bidirectional_traversal_tag - : forward_traversal_tag {}; - - struct random_access_traversal_tag - : bidirectional_traversal_tag {}; - -// Sequence Classification - struct incrementable_sequence_tag {}; - - struct single_pass_sequence_tag - : incrementable_sequence_tag {}; - - struct forward_sequence_tag - : single_pass_sequence_tag {}; - - struct bidirectional_sequence_tag - : forward_sequence_tag {}; - - struct random_access_sequence_tag - : bidirectional_sequence_tag {}; - - struct associative_sequence_tag // $$$ this is no longer true $$$ - : forward_sequence_tag {}; -}} - -#endif From ac31f6d1cb8e3c1b5c12036c63393ce36a94918b Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Mon, 25 Sep 2006 13:56:22 +0000 Subject: [PATCH 020/234] migrated std_pair_iterator and mpl_iterator to iterator_facade [SVN r35321] --- .../sequence/adapted/array/array_iterator.hpp | 60 +++------ .../adapted/mpl/detail/advance_impl.hpp | 45 ------- .../adapted/mpl/detail/deref_impl.hpp | 44 ------ .../adapted/mpl/detail/distance_impl.hpp | 48 ------- .../adapted/mpl/detail/equal_to_impl.hpp | 41 ------ .../sequence/adapted/mpl/detail/next_impl.hpp | 47 ------- .../adapted/mpl/detail/prior_impl.hpp | 47 ------- .../adapted/mpl/detail/value_of_impl.hpp | 38 ------ .../sequence/adapted/mpl/mpl_iterator.hpp | 104 +++++++++++--- .../std_pair/Attic/std_pair_iterator.hpp | 127 +++++++++++++++--- .../adapted/std_pair/detail/Attic/at_impl.hpp | 1 + .../adapted/std_pair/detail/advance_impl.hpp | 47 ------- .../adapted/std_pair/detail/at_impl.hpp | 1 + .../adapted/std_pair/detail/deref_impl.hpp | 74 ---------- .../adapted/std_pair/detail/distance_impl.hpp | 42 ------ .../adapted/std_pair/detail/equal_to_impl.hpp | 40 ------ .../adapted/std_pair/detail/next_impl.hpp | 46 ------- .../adapted/std_pair/detail/prior_impl.hpp | 46 ------- .../adapted/std_pair/detail/value_of_impl.hpp | 46 ------- .../adapted/std_pair/std_pair_iterator.hpp | 127 +++++++++++++++--- 20 files changed, 328 insertions(+), 743 deletions(-) delete mode 100644 include/boost/fusion/sequence/adapted/mpl/detail/advance_impl.hpp delete mode 100644 include/boost/fusion/sequence/adapted/mpl/detail/deref_impl.hpp delete mode 100644 include/boost/fusion/sequence/adapted/mpl/detail/distance_impl.hpp delete mode 100644 include/boost/fusion/sequence/adapted/mpl/detail/equal_to_impl.hpp delete mode 100644 include/boost/fusion/sequence/adapted/mpl/detail/next_impl.hpp delete mode 100644 include/boost/fusion/sequence/adapted/mpl/detail/prior_impl.hpp delete mode 100644 include/boost/fusion/sequence/adapted/mpl/detail/value_of_impl.hpp delete mode 100644 include/boost/fusion/sequence/adapted/std_pair/detail/advance_impl.hpp delete mode 100644 include/boost/fusion/sequence/adapted/std_pair/detail/deref_impl.hpp delete mode 100644 include/boost/fusion/sequence/adapted/std_pair/detail/distance_impl.hpp delete mode 100644 include/boost/fusion/sequence/adapted/std_pair/detail/equal_to_impl.hpp delete mode 100644 include/boost/fusion/sequence/adapted/std_pair/detail/next_impl.hpp delete mode 100644 include/boost/fusion/sequence/adapted/std_pair/detail/prior_impl.hpp delete mode 100644 include/boost/fusion/sequence/adapted/std_pair/detail/value_of_impl.hpp diff --git a/include/boost/fusion/sequence/adapted/array/array_iterator.hpp b/include/boost/fusion/sequence/adapted/array/array_iterator.hpp index 71a9921c..a0eef60f 100644 --- a/include/boost/fusion/sequence/adapted/array/array_iterator.hpp +++ b/include/boost/fusion/sequence/adapted/array/array_iterator.hpp @@ -11,7 +11,7 @@ #include #include -#include +#include #include #include #include @@ -22,14 +22,14 @@ namespace boost { namespace fusion { struct random_access_traversal_tag; - template + template struct array_iterator : iterator_facade, random_access_traversal_tag> { - BOOST_MPL_ASSERT_RELATION(Pos,>=,0); - BOOST_MPL_ASSERT_RELATION(Pos,<=,std::size_t(Array::static_size)); + BOOST_MPL_ASSERT_RELATION(Pos, >=, 0); + BOOST_MPL_ASSERT_RELATION(Pos, <=, Array::static_size); - typedef mpl::size_t index; + typedef mpl::int_ index; typedef Array array_type; array_iterator(Array& a) @@ -63,36 +63,6 @@ namespace boost { namespace fusion } }; - template - struct next - { - typedef typename Iterator::array_type array_type; - typedef typename Iterator::index index; - static int const index_val = index::value; - typedef array_iterator type; - - static type - call(Iterator const& i) - { - return type(i.array); - } - }; - - template - struct prior - { - typedef typename Iterator::array_type array_type; - typedef typename Iterator::index index; - static int const index_val = index::value; - typedef array_iterator type; - - static type - call(Iterator const& i) - { - return type(i.array); - } - }; - template struct advance { @@ -107,15 +77,23 @@ namespace boost { namespace fusion } }; - template - struct distance : mpl::minus + template + struct next : advance > {}; + + template + struct prior : advance > {}; + + template + struct distance : mpl::minus { - typedef typename mpl::minus< - typename Last::index, typename First::index>::type + typedef typename + mpl::minus< + typename I2::index, typename I1::index + >::type type; static type - call(First const&, Last const&) + call(I1 const&, I2 const&) { return type(); } @@ -123,7 +101,7 @@ namespace boost { namespace fusion private: - array_iterator operator=(const array_iterator&); + array_iterator& operator=(array_iterator const&); }; }} diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/advance_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/advance_impl.hpp deleted file mode 100644 index 9603a737..00000000 --- a/include/boost/fusion/sequence/adapted/mpl/detail/advance_impl.hpp +++ /dev/null @@ -1,45 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - Use, modification and distribution is 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) -==============================================================================*/ -#if !defined(FUSION_ADVANCE_IMPL_09232005_2324) -#define FUSION_ADVANCE_IMPL_09232005_2324 - -#include - -namespace boost { namespace fusion -{ - struct mpl_iterator_tag; - - template - struct mpl_iterator; - - namespace extension - { - template - struct advance_impl; - - template <> - struct advance_impl - { - template - struct apply - { - typedef mpl_iterator< - typename mpl::advance::type> - type; - - static type - call(Iterator const& i) - { - return type(); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/deref_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/deref_impl.hpp deleted file mode 100644 index e692c93b..00000000 --- a/include/boost/fusion/sequence/adapted/mpl/detail/deref_impl.hpp +++ /dev/null @@ -1,44 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - Use, modification and distribution is 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) -==============================================================================*/ -#if !defined(FUSION_DEREF_IMPL_05052005_0733) -#define FUSION_DEREF_IMPL_05052005_0733 - -#include - -namespace boost { namespace fusion -{ - struct mpl_iterator_tag; - - namespace extension - { - template - struct deref_impl; - - template <> - struct deref_impl - { - template - struct apply - { - typedef typename mpl::deref< - typename Iterator::iterator_type>::type - type; - - static type - call(Iterator) - { - return type(); - } - }; - }; - } -}} - -#endif - - diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/distance_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/distance_impl.hpp deleted file mode 100644 index 893c3112..00000000 --- a/include/boost/fusion/sequence/adapted/mpl/detail/distance_impl.hpp +++ /dev/null @@ -1,48 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - Use, modification and distribution is 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) -==============================================================================*/ -#if !defined(FUSION_DISTANCE_IMPL_09232005_2303) -#define FUSION_DISTANCE_IMPL_09232005_2303 - -#include -#include - -namespace boost { namespace fusion -{ - struct mpl_iterator_tag; - - namespace extension - { - template - struct distance_impl; - - template <> - struct distance_impl - { - template - struct apply - : mpl::distance< - typename First::iterator_type - , typename Last::iterator_type> - { - static typename mpl::distance< - typename First::iterator_type - , typename Last::iterator_type>::type - call(First const&, Last const&) - { - typedef typename mpl::distance< - typename First::iterator_type - , typename Last::iterator_type>::type - result; - return result(); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/equal_to_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/equal_to_impl.hpp deleted file mode 100644 index 25a3e886..00000000 --- a/include/boost/fusion/sequence/adapted/mpl/detail/equal_to_impl.hpp +++ /dev/null @@ -1,41 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - Use, modification and distribution is 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) -==============================================================================*/ -#if !defined(FUSION_EQUAL_TO_IMPL_05232005_0621) -#define FUSION_EQUAL_TO_IMPL_05232005_0621 - -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct mpl_iterator_tag; - - namespace extension - { - template - struct equal_to_impl; - - template <> - struct equal_to_impl - { - template - struct apply - : is_same< - typename remove_const::type - , typename remove_const::type - > - { - }; - }; - } -}} - -#endif - diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/next_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/next_impl.hpp deleted file mode 100644 index 6427e283..00000000 --- a/include/boost/fusion/sequence/adapted/mpl/detail/next_impl.hpp +++ /dev/null @@ -1,47 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - Use, modification and distribution is 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) -==============================================================================*/ -#if !defined(FUSION_NEXT_IMPL_05052005_0733) -#define FUSION_NEXT_IMPL_05052005_0733 - -#include - -namespace boost { namespace fusion -{ - struct mpl_iterator_tag; - - template - struct mpl_iterator; - - namespace extension - { - template - struct next_impl; - - template <> - struct next_impl - { - template - struct apply - { - typedef mpl_iterator< - typename mpl::next::type - > type; - - static type - call(Iterator) - { - return type(); - } - }; - }; - } -}} - -#endif - - diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/prior_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/prior_impl.hpp deleted file mode 100644 index e2ae56be..00000000 --- a/include/boost/fusion/sequence/adapted/mpl/detail/prior_impl.hpp +++ /dev/null @@ -1,47 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - Use, modification and distribution is 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) -==============================================================================*/ -#if !defined(FUSION_PRIOR_IMPL_05202005_0930) -#define FUSION_PRIOR_IMPL_05202005_0930 - -#include - -namespace boost { namespace fusion -{ - struct mpl_iterator_tag; - - template - struct mpl_iterator; - - namespace extension - { - template - struct prior_impl; - - template <> - struct prior_impl - { - template - struct apply - { - typedef mpl_iterator< - typename mpl::prior::type - > type; - - static type - call(Iterator) - { - return type(); - } - }; - }; - } -}} - -#endif - - diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/value_of_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/value_of_impl.hpp deleted file mode 100644 index 3d7c9fff..00000000 --- a/include/boost/fusion/sequence/adapted/mpl/detail/value_of_impl.hpp +++ /dev/null @@ -1,38 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - Use, modification and distribution is 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) -==============================================================================*/ -#if !defined(FUSION_VALUE_OF_TRAITS_05052005_0734) -#define FUSION_VALUE_OF_TRAITS_05052005_0734 - -#include - -namespace boost { namespace fusion -{ - struct mpl_iterator_tag; - - namespace extension - { - template - struct value_of_impl; - - template <> - struct value_of_impl - { - template - struct apply - { - typedef typename mpl::deref< - typename Iterator::iterator_type>::type - type; - }; - }; - } -}} - -#endif - - diff --git a/include/boost/fusion/sequence/adapted/mpl/mpl_iterator.hpp b/include/boost/fusion/sequence/adapted/mpl/mpl_iterator.hpp index 68612a44..baf85db4 100644 --- a/include/boost/fusion/sequence/adapted/mpl/mpl_iterator.hpp +++ b/include/boost/fusion/sequence/adapted/mpl/mpl_iterator.hpp @@ -8,30 +8,104 @@ #if !defined(FUSION_MPL_ITERATOR_05052005_0731) #define FUSION_MPL_ITERATOR_05052005_0731 -#include #include -#include -#include -#include -#include -#include -#include -#include +#include #include +#include +#include +#include +#include +#include namespace boost { namespace fusion { - struct mpl_iterator_tag; - template struct mpl_iterator - : iterator_base > + : iterator_facade< + mpl_iterator + , typename detail::mpl_iterator_category::type + > { - typedef mpl_iterator_tag fusion_tag; - typedef typename detail::mpl_iterator_category< - typename Iterator::category>::type - category; typedef typename remove_const::type iterator_type; + + template + struct value_of : mpl::deref {}; + + template + struct deref + { + typedef typename mpl::deref< + typename Iterator::iterator_type>::type + type; + + static type + call(Iterator) + { + return type(); + } + }; + + template + struct next + { + typedef mpl_iterator< + typename mpl::next::type> + type; + + static type + call(Iterator) + { + return type(); + } + }; + + template + struct prior + { + typedef mpl_iterator< + typename mpl::prior::type> + type; + + static type + call(Iterator) + { + return type(); + } + }; + + template + struct advance + { + typedef mpl_iterator< + typename mpl::advance::type> + type; + + static type + call(Iterator const& i) + { + return type(); + } + }; + + template + struct distance : + mpl::distance< + typename I1::iterator_type + , typename I2::iterator_type> + { + typedef typename + mpl::distance< + typename I1::iterator_type + , typename I2::iterator_type + >::type + type; + + static type + call(I1 const&, I2 const&) + { + return type(); + } + }; }; }} diff --git a/include/boost/fusion/sequence/adapted/std_pair/Attic/std_pair_iterator.hpp b/include/boost/fusion/sequence/adapted/std_pair/Attic/std_pair_iterator.hpp index 1121e315..a2cb7f52 100644 --- a/include/boost/fusion/sequence/adapted/std_pair/Attic/std_pair_iterator.hpp +++ b/include/boost/fusion/sequence/adapted/std_pair/Attic/std_pair_iterator.hpp @@ -8,39 +8,130 @@ #if !defined(FUSION_STD_PAIR_ITERATOR_09262005_0934) #define FUSION_STD_PAIR_ITERATOR_09262005_0934 -#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 boost { namespace fusion { - struct std_pair_iterator_tag; struct random_access_traversal_tag; - template - struct std_pair_iterator_identity; - template struct std_pair_iterator - : iterator_base > + : iterator_facade, random_access_traversal_tag> { + BOOST_MPL_ASSERT_RELATION(N, >=, 0); + BOOST_MPL_ASSERT_RELATION(N, <=, 2); + typedef mpl::int_ index; - typedef std_pair_iterator_tag fusion_tag; - typedef random_access_traversal_tag category; - typedef std_pair_iterator_identity< - typename add_const::type, N> identity; typedef Pair pair_type; std_pair_iterator(Pair& pair) : pair(pair) {} Pair& pair; + + template + struct value_of; + + template + struct value_of > + : mpl::identity {}; + + template + struct value_of > + : mpl::identity {}; + + template + struct deref; + + template + struct deref > + { + typedef typename + mpl::if_< + is_const + , typename Pair_::first_type const& + , typename Pair_::first_type& + >::type + type; + + static type + call(std_pair_iterator const& iter) + { + return iter.pair.first; + } + }; + + template + struct deref > + { + typedef typename + mpl::if_< + is_const + , typename Pair_::second_type const& + , typename Pair_::second_type& + >::type + type; + + static type + call(std_pair_iterator const& iter) + { + return iter.pair.second; + } + }; + + template + struct advance + { + typedef typename Iterator::index index; + typedef typename Iterator::pair_type pair_type; + typedef std_pair_iterator type; + + static type + call(Iterator const& iter) + { + return type(iter.pair); + } + }; + + 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(); + } + }; }; }} diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/at_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/at_impl.hpp index dce5f86c..b257089d 100644 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/at_impl.hpp +++ b/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/at_impl.hpp @@ -12,6 +12,7 @@ #include #include #include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/advance_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/advance_impl.hpp deleted file mode 100644 index 6a883994..00000000 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/advance_impl.hpp +++ /dev/null @@ -1,47 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - Use, modification and distribution is 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) -==============================================================================*/ -#if !defined(FUSION_ADVANCE_IMPL_09302005_1847) -#define FUSION_ADVANCE_IMPL_09302005_1847 - -#include - -namespace boost { namespace fusion -{ - struct std_pair_iterator_tag; - - template - struct std_pair_iterator; - - namespace extension - { - template - struct advance_impl; - - template <> - struct advance_impl - { - template - struct apply - { - typedef typename Iterator::index index; - typedef typename Iterator::pair_type pair_type; - typedef std_pair_iterator type; - BOOST_STATIC_ASSERT( - (index::value+N::value) >= 0 &&(index::value+N::value) < 2); - - static type - call(Iterator const& i) - { - return type(i.vec); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/at_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/at_impl.hpp index dce5f86c..b257089d 100644 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/at_impl.hpp +++ b/include/boost/fusion/sequence/adapted/std_pair/detail/at_impl.hpp @@ -12,6 +12,7 @@ #include #include #include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/deref_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/deref_impl.hpp deleted file mode 100644 index 371cf2ce..00000000 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/deref_impl.hpp +++ /dev/null @@ -1,74 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - Use, modification and distribution is 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) -==============================================================================*/ -#if !defined(FUSION_DEREF_IMPL_09302005_1846) -#define FUSION_DEREF_IMPL_09302005_1846 - -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct std_pair_iterator_tag; - - namespace extension - { - template - struct deref_impl; - - template <> - struct deref_impl - { - template - struct apply - { - typedef typename Iterator::pair_type pair_type; - typedef typename Iterator::index index; - static int const index_val = index::value; - - BOOST_STATIC_ASSERT(index_val >= 0 && index_val <= 2); - typedef typename - mpl::if_c< - (index::value == 0) - , typename pair_type::first_type - , typename pair_type::second_type - > - element; - - typedef typename - mpl::eval_if< - is_const - , fusion::detail::cref_result - , fusion::detail::ref_result - >::type - type; - - template - static RT get(pair_type& p, mpl::int_<0>) - { - return p.first; - } - - template - static RT get(pair_type& p, mpl::int_<1>) - { - return p.second; - } - - static type - call(Iterator const& iter) - { - return get(iter.pair, index()); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/distance_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/distance_impl.hpp deleted file mode 100644 index ad1761b7..00000000 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/distance_impl.hpp +++ /dev/null @@ -1,42 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - Use, modification and distribution is 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) -==============================================================================*/ -#if !defined(FUSION_DISTANCE_IMPL_09302005_1846) -#define FUSION_DISTANCE_IMPL_09302005_1846 - -#include - -namespace boost { namespace fusion -{ - struct std_pair_iterator_tag; - - namespace extension - { - template - struct distance_impl; - - template <> - struct distance_impl - { - template - struct apply : mpl::minus - { - static typename mpl::minus< - typename Last::index, typename First::index>::type - call(First const&, Last const&) - { - typedef typename mpl::minus< - typename Last::index, typename First::index>::type - result; - return result(); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/equal_to_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/equal_to_impl.hpp deleted file mode 100644 index 85088280..00000000 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/equal_to_impl.hpp +++ /dev/null @@ -1,40 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - Use, modification and distribution is 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) -==============================================================================*/ -#if !defined(FUSION_EQUAL_TO_IMPL_09302005_1847) -#define FUSION_EQUAL_TO_IMPL_09302005_1847 - -#include -#include -#include - -namespace boost { namespace fusion -{ - struct std_pair_iterator_tag; - - namespace extension - { - template - struct equal_to_impl; - - template <> - struct equal_to_impl - { - template - struct apply - : is_same< - typename I1::identity - , typename I2::identity - > - { - }; - }; - } -}} - -#endif - diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/next_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/next_impl.hpp deleted file mode 100644 index dc320903..00000000 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/next_impl.hpp +++ /dev/null @@ -1,46 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - Use, modification and distribution is 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) -==============================================================================*/ -#if !defined(FUSION_NEXT_IMPL_09302005_1847) -#define FUSION_NEXT_IMPL_09302005_1847 - -#include - -namespace boost { namespace fusion -{ - struct std_pair_iterator_tag; - template - struct std_pair_iterator; - - namespace extension - { - template - struct next_impl; - - template <> - struct next_impl - { - template - struct apply - { - typedef typename Iterator::pair_type pair_type; - typedef typename Iterator::index index; - static int const index_val = index::value; - typedef std_pair_iterator type; - BOOST_STATIC_ASSERT((index_val+1) >= 0 &&(index_val+1) <= 2); - - static type - call(Iterator const& i) - { - return type(i.pair); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/prior_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/prior_impl.hpp deleted file mode 100644 index fe243185..00000000 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/prior_impl.hpp +++ /dev/null @@ -1,46 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - Use, modification and distribution is 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) -==============================================================================*/ -#if !defined(FUSION_PRIOR_IMPL_09302005_1847) -#define FUSION_PRIOR_IMPL_09302005_1847 - -#include - -namespace boost { namespace fusion -{ - struct std_pair_iterator_tag; - template - struct std_pair_iterator; - - namespace extension - { - template - struct prior_impl; - - template <> - struct prior_impl - { - template - struct apply - { - typedef typename Iterator::pair_type pair_type; - typedef typename Iterator::index index; - static int const index_val = index::value; - typedef std_pair_iterator type; - BOOST_STATIC_ASSERT((index_val-1) >= 0 &&(index_val-1) <= 2); - - static type - call(Iterator const& i) - { - return type(i.pair); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/value_of_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/value_of_impl.hpp deleted file mode 100644 index 240b56e9..00000000 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/value_of_impl.hpp +++ /dev/null @@ -1,46 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - Use, modification and distribution is 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) -==============================================================================*/ -#if !defined(FUSION_VALUE_OF_IMPL_09302005_1847) -#define FUSION_VALUE_OF_IMPL_09302005_1847 - -#include -#include - -namespace boost { namespace fusion -{ - struct std_pair_iterator_tag; - - namespace extension - { - template - struct value_of_impl; - - template <> - struct value_of_impl - { - template - struct apply - { - typedef typename Iterator::pair_type pair_type; - typedef typename Iterator::index index; - static int const index_value = index::value; - - BOOST_STATIC_ASSERT(index_value >= 0 && index_value <= 2); - typedef typename - mpl::if_c< - (index_value == 0) - , typename pair_type::first_type - , typename pair_type::second_type - >::type - type; - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/std_pair/std_pair_iterator.hpp b/include/boost/fusion/sequence/adapted/std_pair/std_pair_iterator.hpp index 1121e315..a2cb7f52 100644 --- a/include/boost/fusion/sequence/adapted/std_pair/std_pair_iterator.hpp +++ b/include/boost/fusion/sequence/adapted/std_pair/std_pair_iterator.hpp @@ -8,39 +8,130 @@ #if !defined(FUSION_STD_PAIR_ITERATOR_09262005_0934) #define FUSION_STD_PAIR_ITERATOR_09262005_0934 -#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 boost { namespace fusion { - struct std_pair_iterator_tag; struct random_access_traversal_tag; - template - struct std_pair_iterator_identity; - template struct std_pair_iterator - : iterator_base > + : iterator_facade, random_access_traversal_tag> { + BOOST_MPL_ASSERT_RELATION(N, >=, 0); + BOOST_MPL_ASSERT_RELATION(N, <=, 2); + typedef mpl::int_ index; - typedef std_pair_iterator_tag fusion_tag; - typedef random_access_traversal_tag category; - typedef std_pair_iterator_identity< - typename add_const::type, N> identity; typedef Pair pair_type; std_pair_iterator(Pair& pair) : pair(pair) {} Pair& pair; + + template + struct value_of; + + template + struct value_of > + : mpl::identity {}; + + template + struct value_of > + : mpl::identity {}; + + template + struct deref; + + template + struct deref > + { + typedef typename + mpl::if_< + is_const + , typename Pair_::first_type const& + , typename Pair_::first_type& + >::type + type; + + static type + call(std_pair_iterator const& iter) + { + return iter.pair.first; + } + }; + + template + struct deref > + { + typedef typename + mpl::if_< + is_const + , typename Pair_::second_type const& + , typename Pair_::second_type& + >::type + type; + + static type + call(std_pair_iterator const& iter) + { + return iter.pair.second; + } + }; + + template + struct advance + { + typedef typename Iterator::index index; + typedef typename Iterator::pair_type pair_type; + typedef std_pair_iterator type; + + static type + call(Iterator const& iter) + { + return type(iter.pair); + } + }; + + 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(); + } + }; }; }} From 6723082617395a0c19698176bb81c82aae5cc718 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Mon, 25 Sep 2006 13:57:43 +0000 Subject: [PATCH 021/234] tweak [SVN r35322] --- .../adapted/std_pair/Attic/std_pair_iterator.hpp | 12 ------------ .../sequence/adapted/std_pair/std_pair_iterator.hpp | 12 ------------ 2 files changed, 24 deletions(-) diff --git a/include/boost/fusion/sequence/adapted/std_pair/Attic/std_pair_iterator.hpp b/include/boost/fusion/sequence/adapted/std_pair/Attic/std_pair_iterator.hpp index a2cb7f52..d4fb4712 100644 --- a/include/boost/fusion/sequence/adapted/std_pair/Attic/std_pair_iterator.hpp +++ b/include/boost/fusion/sequence/adapted/std_pair/Attic/std_pair_iterator.hpp @@ -8,18 +8,6 @@ #if !defined(FUSION_STD_PAIR_ITERATOR_09262005_0934) #define FUSION_STD_PAIR_ITERATOR_09262005_0934 -//~ #include -//~ #include -//~ #include -//~ #include -//~ #include -//~ #include -//~ #include -//~ #include -//~ #include - - - #include #include #include diff --git a/include/boost/fusion/sequence/adapted/std_pair/std_pair_iterator.hpp b/include/boost/fusion/sequence/adapted/std_pair/std_pair_iterator.hpp index a2cb7f52..d4fb4712 100644 --- a/include/boost/fusion/sequence/adapted/std_pair/std_pair_iterator.hpp +++ b/include/boost/fusion/sequence/adapted/std_pair/std_pair_iterator.hpp @@ -8,18 +8,6 @@ #if !defined(FUSION_STD_PAIR_ITERATOR_09262005_0934) #define FUSION_STD_PAIR_ITERATOR_09262005_0934 -//~ #include -//~ #include -//~ #include -//~ #include -//~ #include -//~ #include -//~ #include -//~ #include -//~ #include - - - #include #include #include From 1f9388ec86e8d8b7eeb06534d723956f0c4fe3d9 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Tue, 26 Sep 2006 22:25:45 +0000 Subject: [PATCH 022/234] fixed g++ complaining "error: shadows template parm" [SVN r35346] --- .../sequence/adapted/mpl/mpl_iterator.hpp | 8 ++-- .../std_pair/Attic/std_pair_iterator.hpp | 46 +++++++++---------- .../adapted/std_pair/std_pair_iterator.hpp | 46 +++++++++---------- 3 files changed, 50 insertions(+), 50 deletions(-) diff --git a/include/boost/fusion/sequence/adapted/mpl/mpl_iterator.hpp b/include/boost/fusion/sequence/adapted/mpl/mpl_iterator.hpp index baf85db4..0c5587b9 100644 --- a/include/boost/fusion/sequence/adapted/mpl/mpl_iterator.hpp +++ b/include/boost/fusion/sequence/adapted/mpl/mpl_iterator.hpp @@ -19,14 +19,14 @@ namespace boost { namespace fusion { - template + template struct mpl_iterator : iterator_facade< - mpl_iterator - , typename detail::mpl_iterator_category::type + mpl_iterator + , typename detail::mpl_iterator_category::type > { - typedef typename remove_const::type iterator_type; + typedef typename remove_const::type iterator_type; template struct value_of : mpl::deref {}; diff --git a/include/boost/fusion/sequence/adapted/std_pair/Attic/std_pair_iterator.hpp b/include/boost/fusion/sequence/adapted/std_pair/Attic/std_pair_iterator.hpp index d4fb4712..fde36144 100644 --- a/include/boost/fusion/sequence/adapted/std_pair/Attic/std_pair_iterator.hpp +++ b/include/boost/fusion/sequence/adapted/std_pair/Attic/std_pair_iterator.hpp @@ -21,65 +21,65 @@ namespace boost { namespace fusion { struct random_access_traversal_tag; - template + template struct std_pair_iterator - : iterator_facade, random_access_traversal_tag> + : iterator_facade, random_access_traversal_tag> { BOOST_MPL_ASSERT_RELATION(N, >=, 0); BOOST_MPL_ASSERT_RELATION(N, <=, 2); typedef mpl::int_ index; - typedef Pair pair_type; + typedef Pair_ pair_type; - std_pair_iterator(Pair& pair) + std_pair_iterator(Pair_& pair) : pair(pair) {} - Pair& pair; + Pair_& pair; template struct value_of; - template - struct value_of > - : mpl::identity {}; + template + struct value_of > + : mpl::identity {}; - template - struct value_of > - : mpl::identity {}; + template + struct value_of > + : mpl::identity {}; template struct deref; - template - struct deref > + template + struct deref > { typedef typename mpl::if_< - is_const - , typename Pair_::first_type const& - , typename Pair_::first_type& + is_const + , typename Pair::first_type const& + , typename Pair::first_type& >::type type; static type - call(std_pair_iterator const& iter) + call(std_pair_iterator const& iter) { return iter.pair.first; } }; - template - struct deref > + template + struct deref > { typedef typename mpl::if_< - is_const - , typename Pair_::second_type const& - , typename Pair_::second_type& + is_const + , typename Pair::second_type const& + , typename Pair::second_type& >::type type; static type - call(std_pair_iterator const& iter) + call(std_pair_iterator const& iter) { return iter.pair.second; } diff --git a/include/boost/fusion/sequence/adapted/std_pair/std_pair_iterator.hpp b/include/boost/fusion/sequence/adapted/std_pair/std_pair_iterator.hpp index d4fb4712..fde36144 100644 --- a/include/boost/fusion/sequence/adapted/std_pair/std_pair_iterator.hpp +++ b/include/boost/fusion/sequence/adapted/std_pair/std_pair_iterator.hpp @@ -21,65 +21,65 @@ namespace boost { namespace fusion { struct random_access_traversal_tag; - template + template struct std_pair_iterator - : iterator_facade, random_access_traversal_tag> + : iterator_facade, random_access_traversal_tag> { BOOST_MPL_ASSERT_RELATION(N, >=, 0); BOOST_MPL_ASSERT_RELATION(N, <=, 2); typedef mpl::int_ index; - typedef Pair pair_type; + typedef Pair_ pair_type; - std_pair_iterator(Pair& pair) + std_pair_iterator(Pair_& pair) : pair(pair) {} - Pair& pair; + Pair_& pair; template struct value_of; - template - struct value_of > - : mpl::identity {}; + template + struct value_of > + : mpl::identity {}; - template - struct value_of > - : mpl::identity {}; + template + struct value_of > + : mpl::identity {}; template struct deref; - template - struct deref > + template + struct deref > { typedef typename mpl::if_< - is_const - , typename Pair_::first_type const& - , typename Pair_::first_type& + is_const + , typename Pair::first_type const& + , typename Pair::first_type& >::type type; static type - call(std_pair_iterator const& iter) + call(std_pair_iterator const& iter) { return iter.pair.first; } }; - template - struct deref > + template + struct deref > { typedef typename mpl::if_< - is_const - , typename Pair_::second_type const& - , typename Pair_::second_type& + is_const + , typename Pair::second_type const& + , typename Pair::second_type& >::type type; static type - call(std_pair_iterator const& iter) + call(std_pair_iterator const& iter) { return iter.pair.second; } From 798c527173d10b805cf958d8027512502c81b787 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Tue, 26 Sep 2006 22:37:55 +0000 Subject: [PATCH 023/234] fixed g++ complaining "error: shadows template parm" [SVN r35347] --- .../adapted/std_pair/Attic/std_pair_iterator.hpp | 10 +++++----- .../sequence/adapted/std_pair/std_pair_iterator.hpp | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/include/boost/fusion/sequence/adapted/std_pair/Attic/std_pair_iterator.hpp b/include/boost/fusion/sequence/adapted/std_pair/Attic/std_pair_iterator.hpp index fde36144..799bd90d 100644 --- a/include/boost/fusion/sequence/adapted/std_pair/Attic/std_pair_iterator.hpp +++ b/include/boost/fusion/sequence/adapted/std_pair/Attic/std_pair_iterator.hpp @@ -21,14 +21,14 @@ namespace boost { namespace fusion { struct random_access_traversal_tag; - template + template struct std_pair_iterator - : iterator_facade, random_access_traversal_tag> + : iterator_facade, random_access_traversal_tag> { - BOOST_MPL_ASSERT_RELATION(N, >=, 0); - BOOST_MPL_ASSERT_RELATION(N, <=, 2); + BOOST_MPL_ASSERT_RELATION(N_, >=, 0); + BOOST_MPL_ASSERT_RELATION(N_, <=, 2); - typedef mpl::int_ index; + typedef mpl::int_ index; typedef Pair_ pair_type; std_pair_iterator(Pair_& pair) diff --git a/include/boost/fusion/sequence/adapted/std_pair/std_pair_iterator.hpp b/include/boost/fusion/sequence/adapted/std_pair/std_pair_iterator.hpp index fde36144..799bd90d 100644 --- a/include/boost/fusion/sequence/adapted/std_pair/std_pair_iterator.hpp +++ b/include/boost/fusion/sequence/adapted/std_pair/std_pair_iterator.hpp @@ -21,14 +21,14 @@ namespace boost { namespace fusion { struct random_access_traversal_tag; - template + template struct std_pair_iterator - : iterator_facade, random_access_traversal_tag> + : iterator_facade, random_access_traversal_tag> { - BOOST_MPL_ASSERT_RELATION(N, >=, 0); - BOOST_MPL_ASSERT_RELATION(N, <=, 2); + BOOST_MPL_ASSERT_RELATION(N_, >=, 0); + BOOST_MPL_ASSERT_RELATION(N_, <=, 2); - typedef mpl::int_ index; + typedef mpl::int_ index; typedef Pair_ pair_type; std_pair_iterator(Pair_& pair) From 3f27fbe96960d42408d72d9d0125f9ebd57731cb Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Wed, 27 Sep 2006 00:42:32 +0000 Subject: [PATCH 024/234] support for boost::tuples [SVN r35350] --- include/boost/fusion/sequence/adapted.hpp | 1 + .../fusion/sequence/adapted/boost_tuple.hpp | 21 ++++ .../boost_tuple/boost_tuple_iterator.hpp | 113 ++++++++++++++++++ .../adapted/boost_tuple/detail/at_impl.hpp | 51 ++++++++ .../adapted/boost_tuple/detail/begin_impl.hpp | 40 +++++++ .../boost_tuple/detail/category_of_impl.hpp | 33 +++++ .../adapted/boost_tuple/detail/end_impl.hpp | 55 +++++++++ .../boost_tuple/detail/is_sequence_impl.hpp | 31 +++++ .../boost_tuple/detail/is_view_impl.hpp | 31 +++++ .../adapted/boost_tuple/detail/size_impl.hpp | 32 +++++ .../boost_tuple/detail/value_at_impl.hpp | 31 +++++ .../sequence/adapted/boost_tuple/tag_of.hpp | 56 +++++++++ .../fusion/sequence/container/list/cons.hpp | 4 - .../boost/fusion/sequence/intrinsic/at.hpp | 4 + .../boost/fusion/sequence/intrinsic/begin.hpp | 4 + .../boost/fusion/sequence/intrinsic/end.hpp | 4 + .../boost/fusion/sequence/intrinsic/size.hpp | 4 + .../fusion/sequence/intrinsic/value_at.hpp | 4 + include/boost/fusion/support/category_of.hpp | 4 + include/boost/fusion/support/is_sequence.hpp | 4 + include/boost/fusion/support/is_view.hpp | 4 + include/boost/fusion/support/tag_of.hpp | 26 ++++ test/Jamfile.v2 | 1 + test/sequence/boost_tuple.cpp | 91 ++++++++++++++ 24 files changed, 645 insertions(+), 4 deletions(-) create mode 100644 include/boost/fusion/sequence/adapted/boost_tuple.hpp create mode 100644 include/boost/fusion/sequence/adapted/boost_tuple/boost_tuple_iterator.hpp create mode 100644 include/boost/fusion/sequence/adapted/boost_tuple/detail/at_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/boost_tuple/detail/begin_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/boost_tuple/detail/category_of_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/boost_tuple/detail/end_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/boost_tuple/detail/is_sequence_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/boost_tuple/detail/is_view_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/boost_tuple/detail/size_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/boost_tuple/detail/value_at_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/boost_tuple/tag_of.hpp create mode 100644 test/sequence/boost_tuple.cpp diff --git a/include/boost/fusion/sequence/adapted.hpp b/include/boost/fusion/sequence/adapted.hpp index c7181e0d..b9f6ca3c 100644 --- a/include/boost/fusion/sequence/adapted.hpp +++ b/include/boost/fusion/sequence/adapted.hpp @@ -9,6 +9,7 @@ #if !defined(BOOST_FUSION_ADAPTED_30122005_1420) #define BOOST_FUSION_ADAPTED_30122005_1420 +#include #include #include #include diff --git a/include/boost/fusion/sequence/adapted/boost_tuple.hpp b/include/boost/fusion/sequence/adapted/boost_tuple.hpp new file mode 100644 index 00000000..d6e5b1b2 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/boost_tuple.hpp @@ -0,0 +1,21 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_BOOST_TUPLE_09272006_0732) +#define BOOST_FUSION_BOOST_TUPLE_09272006_0732 + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#endif diff --git a/include/boost/fusion/sequence/adapted/boost_tuple/boost_tuple_iterator.hpp b/include/boost/fusion/sequence/adapted/boost_tuple/boost_tuple_iterator.hpp new file mode 100644 index 00000000..d8cc5fb7 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/boost_tuple/boost_tuple_iterator.hpp @@ -0,0 +1,113 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_BOOST_TUPLE_ITERATOR_09262006_1851) +#define FUSION_BOOST_TUPLE_ITERATOR_09262006_1851 + +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct forward_traversal_tag; + + template + struct boost_tuple_iterator + : iterator_facade, forward_traversal_tag> + { + typedef Cons cons_type; + + explicit boost_tuple_iterator(Cons& cons) + : cons(cons) {} + Cons& cons; + + template + struct value_of : mpl::identity {}; + + template + struct deref + { + typedef typename value_of::type element; + + typedef typename + mpl::if_< + is_const + , typename tuples::access_traits::const_type + , typename tuples::access_traits::non_const_type + >::type + type; + + static type + call(Iterator const& iter) + { + return iter.cons.get_head(); + } + }; + + template + struct next + { + typedef typename Iterator::cons_type cons_type; + typedef typename cons_type::tail_type tail_type; + + typedef boost_tuple_iterator< + typename mpl::eval_if< + is_const + , add_const + , mpl::identity + >::type> + type; + + static type + call(Iterator const& iter) + { + return type(iter.cons.get_tail()); + } + }; + }; + + template <> + struct boost_tuple_iterator + : iterator_facade, forward_traversal_tag> + { + template + explicit boost_tuple_iterator(Cons const&) {} + }; + + template <> + struct boost_tuple_iterator + : iterator_facade, forward_traversal_tag> + { + template + explicit boost_tuple_iterator(Cons const&) {} + }; + + template <> + struct boost_tuple_iterator > + : iterator_facade >, forward_traversal_tag> + { + template + explicit boost_tuple_iterator(Cons const&) {} + }; + + template <> + struct boost_tuple_iterator const> + : iterator_facade const>, forward_traversal_tag> + { + template + explicit boost_tuple_iterator(Cons const&) {} + }; +}} + +#endif + + diff --git a/include/boost/fusion/sequence/adapted/boost_tuple/detail/at_impl.hpp b/include/boost/fusion/sequence/adapted/boost_tuple/detail/at_impl.hpp new file mode 100644 index 00000000..7ed9c945 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/boost_tuple/detail/at_impl.hpp @@ -0,0 +1,51 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_AT_IMPL_09262006_1920) +#define BOOST_FUSION_AT_IMPL_09262006_1920 + +#include +#include + +namespace boost { namespace fusion +{ + struct boost_tuple_tag; + + namespace extension + { + template + struct at_impl; + + template <> + struct at_impl + { + template + struct apply + { + typedef typename + tuples::element::type + element; + + typedef typename + mpl::if_< + is_const + , typename tuples::access_traits::const_type + , typename tuples::access_traits::non_const_type + >::type + type; + + static type + call(Sequence& seq) + { + return tuples::get(seq); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/boost_tuple/detail/begin_impl.hpp b/include/boost/fusion/sequence/adapted/boost_tuple/detail/begin_impl.hpp new file mode 100644 index 00000000..699eabac --- /dev/null +++ b/include/boost/fusion/sequence/adapted/boost_tuple/detail/begin_impl.hpp @@ -0,0 +1,40 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_BEGIN_IMPL_09272006_0719) +#define BOOST_FUSION_BEGIN_IMPL_09272006_0719 + +#include + +namespace boost { namespace fusion +{ + struct boost_tuple_tag; + + namespace extension + { + template + struct begin_impl; + + template <> + struct begin_impl + { + template + struct apply + { + typedef boost_tuple_iterator type; + + static type + call(Sequence& v) + { + return type(v); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/boost_tuple/detail/category_of_impl.hpp b/include/boost/fusion/sequence/adapted/boost_tuple/detail/category_of_impl.hpp new file mode 100644 index 00000000..677e1825 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/boost_tuple/detail/category_of_impl.hpp @@ -0,0 +1,33 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_09272006_0726) +#define BOOST_FUSION_CATEGORY_OF_IMPL_09272006_0726 + +namespace boost { namespace fusion +{ + struct boost_tuple_tag; + struct forward_traversal_tag; + + namespace extension + { + template + struct category_of_impl; + + template<> + struct category_of_impl + { + template + struct apply + { + typedef forward_traversal_tag type; + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/boost_tuple/detail/end_impl.hpp b/include/boost/fusion/sequence/adapted/boost_tuple/detail/end_impl.hpp new file mode 100644 index 00000000..95e81e80 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/boost_tuple/detail/end_impl.hpp @@ -0,0 +1,55 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_END_IMPL_09272006_0721) +#define BOOST_FUSION_END_IMPL_09272006_0721 + +#include +#include +#include + +namespace boost { namespace tuples +{ + struct null_type; +}} + +namespace boost { namespace fusion +{ + struct boost_tuple_tag; + + namespace extension + { + template + struct end_impl; + + template <> + struct end_impl + { + template + struct apply + { + typedef + boost_tuple_iterator< + typename mpl::if_< + is_const + , tuples::null_type const + , tuples::null_type + >::type + > + type; + + static type + call(Sequence& seq) + { + return type(seq); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/boost_tuple/detail/is_sequence_impl.hpp b/include/boost/fusion/sequence/adapted/boost_tuple/detail/is_sequence_impl.hpp new file mode 100644 index 00000000..69266b11 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/boost_tuple/detail/is_sequence_impl.hpp @@ -0,0 +1,31 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_IS_SEQUENCE_IMPL_09272006_0726) +#define BOOST_FUSION_IS_SEQUENCE_IMPL_09272006_0726 + +#include + +namespace boost { namespace fusion +{ + struct boost_tuple_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/sequence/adapted/boost_tuple/detail/is_view_impl.hpp b/include/boost/fusion/sequence/adapted/boost_tuple/detail/is_view_impl.hpp new file mode 100644 index 00000000..2e394f84 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/boost_tuple/detail/is_view_impl.hpp @@ -0,0 +1,31 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_IS_VIEW_IMPL_09272006_0725) +#define BOOST_FUSION_IS_VIEW_IMPL_09272006_0725 + +#include + +namespace boost { namespace fusion +{ + struct boost_tuple_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/sequence/adapted/boost_tuple/detail/size_impl.hpp b/include/boost/fusion/sequence/adapted/boost_tuple/detail/size_impl.hpp new file mode 100644 index 00000000..0723d6f4 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/boost_tuple/detail/size_impl.hpp @@ -0,0 +1,32 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_SIZE_IMPL_09272006_0724) +#define BOOST_FUSION_SIZE_IMPL_09272006_0724 + +#include +#include + +namespace boost { namespace fusion +{ + struct boost_tuple_tag; + + namespace extension + { + template + struct size_impl; + + template <> + struct size_impl + { + template + struct apply : mpl::int_::value> {}; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/boost_tuple/detail/value_at_impl.hpp b/include/boost/fusion/sequence/adapted/boost_tuple/detail/value_at_impl.hpp new file mode 100644 index 00000000..7ee6bd69 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/boost_tuple/detail/value_at_impl.hpp @@ -0,0 +1,31 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_VALUE_AT_IMPL_09262006_1926) +#define BOOST_FUSION_VALUE_AT_IMPL_09262006_1926 + +#include + +namespace boost { namespace fusion +{ + struct boost_tuple_tag; + + namespace extension + { + template + struct value_at_impl; + + template <> + struct value_at_impl + { + template + struct apply : tuples::element {}; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/boost_tuple/tag_of.hpp b/include/boost/fusion/sequence/adapted/boost_tuple/tag_of.hpp new file mode 100644 index 00000000..37e16807 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/boost_tuple/tag_of.hpp @@ -0,0 +1,56 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_TAG_OF_09262006_1900) +#define BOOST_FUSION_TAG_OF_09262006_1900 + +#include + +namespace boost { namespace tuples +{ + struct null_type; + + template < + class T0, class T1, class T2, class T3, class T4, + class T5, class T6, class T7, class T8, class T9 + > + class tuple; + + template + struct cons; +}} + +namespace boost { namespace fusion +{ + struct boost_tuple_tag; + + namespace traits + { + template < + class T0, class T1, class T2, class T3, class T4, + class T5, class T6, class T7, class T8, class T9 + > + struct tag_of > + { + typedef boost_tuple_tag type; + }; + + template + struct tag_of > + { + typedef boost_tuple_tag type; + }; + + template <> + struct tag_of + { + typedef boost_tuple_tag type; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/container/list/cons.hpp b/include/boost/fusion/sequence/container/list/cons.hpp index 3b5e7131..41196974 100644 --- a/include/boost/fusion/sequence/container/list/cons.hpp +++ b/include/boost/fusion/sequence/container/list/cons.hpp @@ -87,16 +87,12 @@ namespace boost { namespace fusion template explicit cons( Sequence const& seq -//~ #if defined(BOOST_MSVC) -// VC++ gets confused when RHS is a derived type. It fails to call -// the copy ctor and attempts to call this templated constructor instead. , typename disable_if< mpl::or_< is_convertible // use copy ctor instead , is_convertible // use copy to car instead > >::type* dummy = 0 -//~ #endif ) : car(*fusion::begin(seq)) , cdr(fusion::next(fusion::begin(seq)), mpl::true_()) {} diff --git a/include/boost/fusion/sequence/intrinsic/at.hpp b/include/boost/fusion/sequence/intrinsic/at.hpp index ec3a1fdc..029135db 100644 --- a/include/boost/fusion/sequence/intrinsic/at.hpp +++ b/include/boost/fusion/sequence/intrinsic/at.hpp @@ -17,6 +17,7 @@ namespace boost { namespace fusion { // Special tags: struct sequence_facade_tag; + struct boost_tuple_tag; // boost::tuples::tuple tag struct array_tag; // boost::array tag struct mpl_sequence_tag; // mpl sequence tag struct std_pair_tag; // std::pair tag @@ -37,6 +38,9 @@ namespace boost { namespace fusion struct apply : Sequence::template at {}; }; + template <> + struct at_impl; + template <> struct at_impl; diff --git a/include/boost/fusion/sequence/intrinsic/begin.hpp b/include/boost/fusion/sequence/intrinsic/begin.hpp index c6b053fa..2c60008d 100644 --- a/include/boost/fusion/sequence/intrinsic/begin.hpp +++ b/include/boost/fusion/sequence/intrinsic/begin.hpp @@ -14,6 +14,7 @@ namespace boost { namespace fusion { // Special tags: struct sequence_facade_tag; // iterator facade tag + struct boost_tuple_tag; // boost::tuples::tuple tag struct array_tag; // boost::array tag struct mpl_sequence_tag; // mpl sequence tag struct std_pair_tag; // std::pair tag @@ -34,6 +35,9 @@ namespace boost { namespace fusion struct apply : Sequence::template begin {}; }; + template <> + struct begin_impl; + template <> struct begin_impl; diff --git a/include/boost/fusion/sequence/intrinsic/end.hpp b/include/boost/fusion/sequence/intrinsic/end.hpp index 47ea2479..0194e53e 100644 --- a/include/boost/fusion/sequence/intrinsic/end.hpp +++ b/include/boost/fusion/sequence/intrinsic/end.hpp @@ -14,6 +14,7 @@ namespace boost { namespace fusion { // Special tags: struct sequence_facade_tag; + struct boost_tuple_tag; // boost::tuples::tuple tag struct array_tag; // boost::array tag struct mpl_sequence_tag; // mpl sequence tag struct std_pair_tag; // std::pair tag @@ -34,6 +35,9 @@ namespace boost { namespace fusion struct apply : Sequence::template end {}; }; + template <> + struct end_impl; + template <> struct end_impl; diff --git a/include/boost/fusion/sequence/intrinsic/size.hpp b/include/boost/fusion/sequence/intrinsic/size.hpp index 9b3f9a7b..231e2f74 100644 --- a/include/boost/fusion/sequence/intrinsic/size.hpp +++ b/include/boost/fusion/sequence/intrinsic/size.hpp @@ -15,6 +15,7 @@ namespace boost { namespace fusion { // Special tags: struct sequence_facade_tag; + struct boost_tuple_tag; // boost::tuples::tuple tag struct array_tag; // boost::array tag struct mpl_sequence_tag; // mpl sequence tag struct std_pair_tag; // std::pair tag @@ -35,6 +36,9 @@ namespace boost { namespace fusion struct apply : Sequence::template size {}; }; + template <> + struct size_impl; + template <> struct size_impl; diff --git a/include/boost/fusion/sequence/intrinsic/value_at.hpp b/include/boost/fusion/sequence/intrinsic/value_at.hpp index f8fcd0b2..bc73a162 100644 --- a/include/boost/fusion/sequence/intrinsic/value_at.hpp +++ b/include/boost/fusion/sequence/intrinsic/value_at.hpp @@ -15,6 +15,7 @@ namespace boost { namespace fusion { // Special tags: struct sequence_facade_tag; + struct boost_tuple_tag; // boost::tuples::tuple tag struct array_tag; // boost::array tag struct mpl_sequence_tag; // mpl sequence tag struct std_pair_tag; // std::pair tag @@ -35,6 +36,9 @@ namespace boost { namespace fusion struct apply : Sequence::template value_at {}; }; + template <> + struct value_at_impl; + template <> struct value_at_impl; diff --git a/include/boost/fusion/support/category_of.hpp b/include/boost/fusion/support/category_of.hpp index fa8f795f..c22ac8c3 100644 --- a/include/boost/fusion/support/category_of.hpp +++ b/include/boost/fusion/support/category_of.hpp @@ -15,6 +15,7 @@ namespace boost { namespace fusion { // Special tags: + struct boost_tuple_tag; // boost::tuples::tuple tag struct array_tag; // boost::array tag struct mpl_sequence_tag; // mpl sequence tag struct std_pair_tag; // std::pair tag @@ -44,6 +45,9 @@ namespace boost { namespace fusion struct apply : detail::fusion_category_of {}; }; + template <> + struct category_of_impl; + template <> struct category_of_impl; diff --git a/include/boost/fusion/support/is_sequence.hpp b/include/boost/fusion/support/is_sequence.hpp index 5de2e94c..b13af130 100644 --- a/include/boost/fusion/support/is_sequence.hpp +++ b/include/boost/fusion/support/is_sequence.hpp @@ -19,6 +19,7 @@ namespace boost { namespace fusion { // Special tags: struct non_fusion_tag; + struct boost_tuple_tag; // boost::tuples::tuple tag struct array_tag; // boost::array tag struct mpl_sequence_tag; // mpl sequence tag struct std_pair_tag; // std::pair tag @@ -39,6 +40,9 @@ namespace boost { namespace fusion struct apply : mpl::false_ {}; }; + template <> + struct is_sequence_impl; + template <> struct is_sequence_impl; diff --git a/include/boost/fusion/support/is_view.hpp b/include/boost/fusion/support/is_view.hpp index 4db7883e..12818319 100644 --- a/include/boost/fusion/support/is_view.hpp +++ b/include/boost/fusion/support/is_view.hpp @@ -15,6 +15,7 @@ namespace boost { namespace fusion { // Special tags: struct sequence_facade_tag; + struct boost_tuple_tag; // boost::tuples::tuple tag struct array_tag; // boost::array tag struct mpl_sequence_tag; // mpl sequence tag struct std_pair_tag; // std::pair tag @@ -37,6 +38,9 @@ namespace boost { namespace fusion struct apply : Sequence::is_view {}; }; + template <> + struct is_view_impl; + template <> struct is_view_impl; diff --git a/include/boost/fusion/support/tag_of.hpp b/include/boost/fusion/support/tag_of.hpp index cf5b9a32..33a954c0 100644 --- a/include/boost/fusion/support/tag_of.hpp +++ b/include/boost/fusion/support/tag_of.hpp @@ -20,6 +20,20 @@ namespace boost { template class array; // forward + + namespace tuples + { + struct null_type; + + template < + class T0, class T1, class T2, class T3, class T4, + class T5, class T6, class T7, class T8, class T9 + > + class tuple; + + template + struct cons; + } } namespace boost { namespace fusion @@ -45,6 +59,18 @@ namespace boost { namespace fusion typedef typename Sequence::fusion_tag type; }; + template < + class T0, class T1, class T2, class T3, class T4, + class T5, class T6, class T7, class T8, class T9 + > + struct tag_of >; + + template + struct tag_of >; + + template <> + struct tag_of; + template struct tag_of >; diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 437efad6..4b645a16 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -45,6 +45,7 @@ import testing ; [ run sequence/as_map.cpp : : : : ] [ run sequence/as_set.cpp : : : : ] [ run sequence/as_vector.cpp : : : : ] + [ run sequence/boost_tuple.cpp : : : : ] [ run sequence/cons.cpp : : : : ] [ run sequence/filter_view.cpp : : : : ] [ run sequence/io.cpp : : : : ] diff --git a/test/sequence/boost_tuple.cpp b/test/sequence/boost_tuple.cpp new file mode 100644 index 00000000..9fc93985 --- /dev/null +++ b/test/sequence/boost_tuple.cpp @@ -0,0 +1,91 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +int +main() +{ + using namespace boost::fusion; + using namespace boost; + using namespace std; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + + { + typedef boost::tuple tuple_type; + BOOST_MPL_ASSERT_NOT((traits::is_view)); + tuple_type t(123, "Hola!!!"); + + std::cout << at_c<0>(t) << std::endl; + std::cout << at_c<1>(t) << std::endl; + std::cout << t << std::endl; + BOOST_TEST(t == make_vector(123, "Hola!!!")); + + at_c<0>(t) = 6; + at_c<1>(t) = "mama mia"; + BOOST_TEST(t == make_vector(6, "mama mia")); + + BOOST_STATIC_ASSERT(result_of::size::value == 2); + BOOST_STATIC_ASSERT(!result_of::empty::value); + + BOOST_TEST(front(t) == 6); + } + + { + fusion::vector v1(4, 3.3f); + boost::tuple v2(5, 3.3f); + fusion::vector v3(5, 4.4); + BOOST_TEST(v1 < v2); + BOOST_TEST(v1 <= v2); + BOOST_TEST(v2 > v1); + BOOST_TEST(v2 >= v1); + BOOST_TEST(v2 < v3); + BOOST_TEST(v2 <= v3); + BOOST_TEST(v3 > v2); + BOOST_TEST(v3 >= v2); + } + + { + // conversion from boost tuple to vector + fusion::vector v(tuples::make_tuple(123, "Hola!!!")); + v = tuples::make_tuple(123, "Hola!!!"); + } + + { + // conversion from boost tuple to list + fusion::list l(tuples::make_tuple(123, "Hola!!!")); + l = tuples::make_tuple(123, "Hola!!!"); + } + + return boost::report_errors(); +} + From dbb2975df84fd08939ae56f9eca9353c61f2529f Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Sun, 1 Oct 2006 15:47:17 +0000 Subject: [PATCH 025/234] better namespace discipline, ftag removal [SVN r35435] --- example/extension/detail/advance_impl.hpp | 11 +++--- example/extension/detail/at_impl.hpp | 9 +++-- example/extension/detail/at_key_impl.hpp | 9 +++-- example/extension/detail/begin_impl.hpp | 11 +++--- example/extension/detail/category_of_impl.hpp | 16 +++++---- example/extension/detail/deref_impl.hpp | 17 ++++++---- example/extension/detail/distance_impl.hpp | 9 +++-- example/extension/detail/end_impl.hpp | 11 +++--- example/extension/detail/equal_to_impl.hpp | 9 +++-- example/extension/detail/has_key_impl.hpp | 9 +++-- .../extension/detail/is_associative_impl.hpp | 34 ------------------- example/extension/detail/is_sequence_impl.hpp | 7 ++-- example/extension/detail/is_view_impl.hpp | 7 ++-- example/extension/detail/next_impl.hpp | 11 +++--- example/extension/detail/prior_impl.hpp | 11 +++--- example/extension/detail/size_impl.hpp | 9 +++-- example/extension/detail/value_at_impl.hpp | 9 +++-- .../extension/detail/value_at_key_impl.hpp | 9 +++-- example/extension/detail/value_of_impl.hpp | 14 ++++---- example/extension/example_struct.hpp | 1 - example/extension/example_struct_iterator.hpp | 34 ++++++++++++++----- example/extension/tag_of.hpp | 9 +++-- example/extension/test_example.cpp | 12 +++---- 23 files changed, 158 insertions(+), 120 deletions(-) delete mode 100644 example/extension/detail/is_associative_impl.hpp diff --git a/example/extension/detail/advance_impl.hpp b/example/extension/detail/advance_impl.hpp index 6663c88e..91309672 100644 --- a/example/extension/detail/advance_impl.hpp +++ b/example/extension/detail/advance_impl.hpp @@ -9,12 +9,15 @@ #if !defined(BOOST_FUSION_ADVANCE_IMPL_20060222_2150) #define BOOST_FUSION_ADVANCE_IMPL_20060222_2150 -namespace boost { namespace fusion { - +namespace example +{ struct example_struct_iterator_tag; template struct example_struct_iterator; +} + +namespace boost { namespace fusion { namespace extension { @@ -22,14 +25,14 @@ namespace boost { namespace fusion { struct advance_impl; template<> - struct advance_impl + struct advance_impl { template struct apply { typedef typename Iterator::struct_type struct_type; typedef typename Iterator::index index; - typedef example_struct_iterator< + typedef example::example_struct_iterator< struct_type, index::value + N::value> type; static type diff --git a/example/extension/detail/at_impl.hpp b/example/extension/detail/at_impl.hpp index 1fca18d9..058c31cc 100644 --- a/example/extension/detail/at_impl.hpp +++ b/example/extension/detail/at_impl.hpp @@ -14,9 +14,12 @@ #include #include -namespace boost { namespace fusion { - +namespace example +{ struct example_sequence_tag; +} + +namespace boost { namespace fusion { namespace extension { @@ -24,7 +27,7 @@ namespace boost { namespace fusion { struct at_impl; template<> - struct at_impl + struct at_impl { template struct apply; diff --git a/example/extension/detail/at_key_impl.hpp b/example/extension/detail/at_key_impl.hpp index 33761815..39d914dc 100644 --- a/example/extension/detail/at_key_impl.hpp +++ b/example/extension/detail/at_key_impl.hpp @@ -19,9 +19,12 @@ namespace fields struct age; } -namespace boost { namespace fusion { - +namespace example +{ struct example_sequence_tag; +} + +namespace boost { namespace fusion { namespace extension { @@ -29,7 +32,7 @@ namespace boost { namespace fusion { struct at_key_impl; template<> - struct at_key_impl + struct at_key_impl { template struct apply; diff --git a/example/extension/detail/begin_impl.hpp b/example/extension/detail/begin_impl.hpp index e24ef48b..d0c1dafc 100644 --- a/example/extension/detail/begin_impl.hpp +++ b/example/extension/detail/begin_impl.hpp @@ -11,22 +11,25 @@ #include "../example_struct_iterator.hpp" +namespace example +{ + struct example_sequence_tag; +} + namespace boost { namespace fusion { - struct example_sequence_tag; - namespace extension { template struct begin_impl; template<> - struct begin_impl + struct begin_impl { template struct apply { - typedef example_struct_iterator type; + typedef example::example_struct_iterator type; static type call(Sequence& seq) diff --git a/example/extension/detail/category_of_impl.hpp b/example/extension/detail/category_of_impl.hpp index f3fbf63e..56fdd082 100644 --- a/example/extension/detail/category_of_impl.hpp +++ b/example/extension/detail/category_of_impl.hpp @@ -9,22 +9,24 @@ #if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_20060223_2037) #define BOOST_FUSION_CATEGORY_OF_IMPL_20060223_2037 -namespace boost { namespace fusion { +#include - struct random_access_traversal_tag; +namespace example +{ + struct example_sequence_tag; +} + +namespace boost { namespace fusion { namespace extension { - template - struct category_of_impl; - template<> - struct category_of_impl + struct category_of_impl { template struct apply { - typedef random_access_traversal_tag type; + struct type : random_access_traversal_tag, associative_sequence_tag {}; }; }; } diff --git a/example/extension/detail/deref_impl.hpp b/example/extension/detail/deref_impl.hpp index 2be589d6..7454c44c 100644 --- a/example/extension/detail/deref_impl.hpp +++ b/example/extension/detail/deref_impl.hpp @@ -15,12 +15,15 @@ #include -namespace boost { namespace fusion { - +namespace example +{ struct example_struct_iterator_tag; template struct example_struct_iterator; +} + +namespace boost { namespace fusion { namespace extension { @@ -28,32 +31,32 @@ namespace boost { namespace fusion { struct deref_impl; template<> - struct deref_impl + struct deref_impl { template struct apply; template - struct apply > + struct apply > { typedef typename mpl::if_< is_const, std::string const&, std::string&>::type type; static type - call(example_struct_iterator const& it) + call(example::example_struct_iterator const& it) { return it.struct_.name; } }; template - struct apply > + struct apply > { typedef typename mpl::if_< is_const, int const&, int&>::type type; static type - call(example_struct_iterator const& it) + call(example::example_struct_iterator const& it) { return it.struct_.age; } diff --git a/example/extension/detail/distance_impl.hpp b/example/extension/detail/distance_impl.hpp index d576cdb7..3b93d1e0 100644 --- a/example/extension/detail/distance_impl.hpp +++ b/example/extension/detail/distance_impl.hpp @@ -11,9 +11,12 @@ #include -namespace boost { namespace fusion { - +namespace example +{ struct example_struct_iterator_tag; +} + +namespace boost { namespace fusion { namespace extension { @@ -21,7 +24,7 @@ namespace boost { namespace fusion { struct distance_impl; template<> - struct distance_impl + struct distance_impl { template struct apply diff --git a/example/extension/detail/end_impl.hpp b/example/extension/detail/end_impl.hpp index 197ed5b7..5ab0608b 100644 --- a/example/extension/detail/end_impl.hpp +++ b/example/extension/detail/end_impl.hpp @@ -11,22 +11,25 @@ #include "../example_struct_iterator.hpp" +namespace example +{ + struct example_sequence_tag; +} + namespace boost { namespace fusion { - struct example_sequence_tag; - namespace extension { template struct end_impl; template<> - struct end_impl + struct end_impl { template struct apply { - typedef example_struct_iterator type; + typedef example::example_struct_iterator type; static type call(Sequence& seq) diff --git a/example/extension/detail/equal_to_impl.hpp b/example/extension/detail/equal_to_impl.hpp index 6ab5841f..fb261071 100644 --- a/example/extension/detail/equal_to_impl.hpp +++ b/example/extension/detail/equal_to_impl.hpp @@ -11,9 +11,12 @@ #include -namespace boost { namespace fusion { - +namespace example +{ struct example_struct_iterator_tag; +} + +namespace boost { namespace fusion { namespace extension { @@ -21,7 +24,7 @@ namespace boost { namespace fusion { struct equal_to_impl; template<> - struct equal_to_impl + struct equal_to_impl { template struct apply diff --git a/example/extension/detail/has_key_impl.hpp b/example/extension/detail/has_key_impl.hpp index 45cd554c..47a39fda 100644 --- a/example/extension/detail/has_key_impl.hpp +++ b/example/extension/detail/has_key_impl.hpp @@ -18,9 +18,12 @@ namespace fields struct age; } -namespace boost { namespace fusion { - +namespace example +{ struct example_sequence_tag; +} + +namespace boost { namespace fusion { namespace extension { @@ -28,7 +31,7 @@ namespace boost { namespace fusion { struct has_key_impl; template<> - struct has_key_impl + struct has_key_impl { template struct apply diff --git a/example/extension/detail/is_associative_impl.hpp b/example/extension/detail/is_associative_impl.hpp deleted file mode 100644 index 18fc9922..00000000 --- a/example/extension/detail/is_associative_impl.hpp +++ /dev/null @@ -1,34 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2006 Dan Marsden - - Use, modification and distribution is 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_IS_ASSOCIATIVE_IMPL_20060304_2324) -#define BOOST_FUSION_IS_ASSOCIATIVE_IMPL_20060304_2324 - -#include - -namespace boost { namespace fusion { - - struct example_sequence_tag; - - namespace extension - { - template - struct is_associative_impl; - - template<> - struct is_associative_impl - { - template - struct apply - : mpl::true_ - {}; - }; - } -}} - -#endif diff --git a/example/extension/detail/is_sequence_impl.hpp b/example/extension/detail/is_sequence_impl.hpp index b8c9bede..06a7d433 100644 --- a/example/extension/detail/is_sequence_impl.hpp +++ b/example/extension/detail/is_sequence_impl.hpp @@ -11,17 +11,20 @@ #include -namespace boost { namespace fusion +namespace example { struct example_sequence_tag; +} +namespace boost { namespace fusion +{ namespace extension { template struct is_sequence_impl; template<> - struct is_sequence_impl + struct is_sequence_impl { template struct apply : mpl::true_ {}; diff --git a/example/extension/detail/is_view_impl.hpp b/example/extension/detail/is_view_impl.hpp index 957051d5..02151d52 100644 --- a/example/extension/detail/is_view_impl.hpp +++ b/example/extension/detail/is_view_impl.hpp @@ -11,17 +11,20 @@ #include -namespace boost { namespace fusion +namespace example { struct example_sequence_tag; +} +namespace boost { namespace fusion +{ namespace extension { template struct is_view_impl; template<> - struct is_view_impl + struct is_view_impl : boost::mpl::false_ {}; } diff --git a/example/extension/detail/next_impl.hpp b/example/extension/detail/next_impl.hpp index c83f414d..763a7ccc 100644 --- a/example/extension/detail/next_impl.hpp +++ b/example/extension/detail/next_impl.hpp @@ -9,12 +9,15 @@ #if !defined(BOOST_FUSION_NEXT_IMPL_20060222_1859) #define BOOST_FUSION_NEXT_IMPL_20060222_1859 -namespace boost { namespace fusion { - +namespace example +{ struct example_struct_iterator_tag; template struct example_struct_iterator; +} + +namespace boost { namespace fusion { namespace extension { @@ -22,14 +25,14 @@ namespace boost { namespace fusion { struct next_impl; template<> - struct next_impl + struct next_impl { template struct apply { typedef typename Iterator::struct_type struct_type; typedef typename Iterator::index index; - typedef example_struct_iterator type; + typedef example::example_struct_iterator type; static type call(Iterator const& i) diff --git a/example/extension/detail/prior_impl.hpp b/example/extension/detail/prior_impl.hpp index 5f8a7d22..990fbbc7 100644 --- a/example/extension/detail/prior_impl.hpp +++ b/example/extension/detail/prior_impl.hpp @@ -9,12 +9,15 @@ #if !defined(BOOST_FUSION_PRIOR_IMPL_20060222_1944) #define BOOST_FUSION_PRIOR_IMPL_20060222_1944 -namespace boost { namespace fusion { - +namespace example +{ struct example_struct_iterator_tag; template struct example_struct_iterator; +} + +namespace boost { namespace fusion { namespace extension { @@ -22,14 +25,14 @@ namespace boost { namespace fusion { struct prior_impl; template<> - struct prior_impl + struct prior_impl { template struct apply { typedef typename Iterator::struct_type struct_type; typedef typename Iterator::index index; - typedef example_struct_iterator type; + typedef example::example_struct_iterator type; static type call(Iterator const& i) diff --git a/example/extension/detail/size_impl.hpp b/example/extension/detail/size_impl.hpp index 4e62331f..a9c081c3 100644 --- a/example/extension/detail/size_impl.hpp +++ b/example/extension/detail/size_impl.hpp @@ -11,9 +11,12 @@ #include -namespace boost { namespace fusion { - +namespace example +{ struct example_sequence_tag; +} + +namespace boost { namespace fusion { namespace extension { @@ -21,7 +24,7 @@ namespace boost { namespace fusion { struct size_impl; template<> - struct size_impl + struct size_impl { template struct apply diff --git a/example/extension/detail/value_at_impl.hpp b/example/extension/detail/value_at_impl.hpp index 9685e88c..38fc6ab3 100644 --- a/example/extension/detail/value_at_impl.hpp +++ b/example/extension/detail/value_at_impl.hpp @@ -9,9 +9,12 @@ #if !defined(BOOST_FUSION_VALUE_AT_IMPL_20060223_2025) #define BOOST_FUSION_VALUE_AT_IMPL_20060223_2025 -namespace boost { namespace fusion { - +namespace example +{ struct example_sequence_tag; +} + +namespace boost { namespace fusion { namespace extension { @@ -19,7 +22,7 @@ namespace boost { namespace fusion { struct value_at_impl; template<> - struct value_at_impl + struct value_at_impl { template struct apply; diff --git a/example/extension/detail/value_at_key_impl.hpp b/example/extension/detail/value_at_key_impl.hpp index 52b246bb..bb0c68e9 100644 --- a/example/extension/detail/value_at_key_impl.hpp +++ b/example/extension/detail/value_at_key_impl.hpp @@ -15,9 +15,12 @@ namespace fields struct age; } -namespace boost { namespace fusion { - +namespace example +{ struct example_sequence_tag; +} + +namespace boost { namespace fusion { namespace extension { @@ -25,7 +28,7 @@ namespace boost { namespace fusion { struct value_at_key_impl; template<> - struct value_at_key_impl + struct value_at_key_impl { template struct apply; diff --git a/example/extension/detail/value_of_impl.hpp b/example/extension/detail/value_of_impl.hpp index 2d2d33c5..b4a09742 100644 --- a/example/extension/detail/value_of_impl.hpp +++ b/example/extension/detail/value_of_impl.hpp @@ -11,12 +11,15 @@ #include -namespace boost { namespace fusion { - +namespace example +{ struct example_struct_iterator_tag; template struct example_struct_iterator; +} + +namespace boost { namespace fusion { namespace extension { @@ -24,23 +27,22 @@ namespace boost { namespace fusion { struct value_of_impl; template<> - struct value_of_impl + struct value_of_impl { template struct apply; template - struct apply > + struct apply > { typedef std::string type; }; template - struct apply > + struct apply > { typedef int type; }; - }; } }} diff --git a/example/extension/example_struct.hpp b/example/extension/example_struct.hpp index 9e742ae3..d07aeb78 100644 --- a/example/extension/example_struct.hpp +++ b/example/extension/example_struct.hpp @@ -21,7 +21,6 @@ #include "./detail/value_at_key_impl.hpp" #include "./detail/has_key_impl.hpp" #include "./detail/is_sequence_impl.hpp" -#include "./detail/is_associative_impl.hpp" #include "./detail/is_view_impl.hpp" #endif diff --git a/example/extension/example_struct_iterator.hpp b/example/extension/example_struct_iterator.hpp index 04425acc..c3165d8e 100644 --- a/example/extension/example_struct_iterator.hpp +++ b/example/extension/example_struct_iterator.hpp @@ -10,6 +10,7 @@ #define BOOST_FUSION_EXAMPLE_STRUCT_ITERATOR #include +#include #include #include #include @@ -22,26 +23,43 @@ #include "./detail/value_of_impl.hpp" #include "./detail/equal_to_impl.hpp" -namespace boost { namespace fusion { - +namespace example +{ struct example_struct_iterator_tag; - struct random_access_traversal_tag; + template + struct example_struct_iterator; +} + +namespace boost { namespace fusion { + + struct random_access_traversal_tag; + + namespace traits + { + template + struct tag_of > + { + typedef example::example_struct_iterator_tag type; + }; + } +}} + +namespace example { template struct example_struct_iterator - : iterator_base > + : boost::fusion::iterator_base > { BOOST_STATIC_ASSERT(Pos >=0 && Pos < 3); typedef Struct struct_type; - typedef mpl::int_ index; - typedef example_struct_iterator_tag fusion_tag; - typedef random_access_traversal_tag category; + typedef boost::mpl::int_ index; + typedef boost::fusion::random_access_traversal_tag category; example_struct_iterator(Struct& str) : struct_(str) {} Struct& struct_; }; -}} +} #endif diff --git a/example/extension/tag_of.hpp b/example/extension/tag_of.hpp index dfe06dfc..4eb3e936 100644 --- a/example/extension/tag_of.hpp +++ b/example/extension/tag_of.hpp @@ -12,16 +12,19 @@ #include #include "./example_struct_type.hpp" -namespace boost { namespace fusion { - +namespace example +{ struct example_sequence_tag; +} + +namespace boost { namespace fusion { namespace traits { template<> struct tag_of { - typedef example_sequence_tag type; + typedef example::example_sequence_tag type; }; }}} diff --git a/example/extension/test_example.cpp b/example/extension/test_example.cpp index 8a858c0b..dc16a462 100644 --- a/example/extension/test_example.cpp +++ b/example/extension/test_example.cpp @@ -12,8 +12,8 @@ #include #include +#include #include -#include #include #include @@ -21,8 +21,12 @@ int main() { example::example_struct bert("bert", 99); using namespace boost::fusion; + BOOST_MPL_ASSERT((traits::is_associative)); - BOOST_TEST(*begin(bert) == "bert"); + BOOST_MPL_ASSERT((traits::is_random_access)); + BOOST_MPL_ASSERT((traits::is_sequence)); + + BOOST_TEST(deref(begin(bert)) == "bert"); BOOST_TEST(*next(begin(bert)) == 99); BOOST_TEST(*prior(end(bert)) == 99); BOOST_TEST(*advance_c<1>(begin(bert)) == 99); @@ -55,9 +59,5 @@ int main() BOOST_TEST(size(bert) == 2); - BOOST_MPL_ASSERT((boost::is_same::type, random_access_traversal_tag>)); - - BOOST_MPL_ASSERT((traits::is_sequence)); - return boost::report_errors(); } From 9591dc6dd16ae0c9dafbd5855aa3b691047428c7 Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Mon, 2 Oct 2006 21:18:39 +0000 Subject: [PATCH 026/234] fixing exposing ftag, and namespace discipline issues [SVN r35446] --- doc/extension.qbk | 103 +++++++++++++++++++--------------------------- 1 file changed, 42 insertions(+), 61 deletions(-) diff --git a/doc/extension.qbk b/doc/extension.qbk index 0feb12d6..de6d183c 100644 --- a/doc/extension.qbk +++ b/doc/extension.qbk @@ -41,9 +41,9 @@ correct code for a given sequence type. In order to exploit the tag dispatching mechanism we must first declare a new tag type for the mechanism to use. For example: - namespace boost { namespace fusion { + namespace example { struct example_sequence_tag; // Only definition needed - }} + } Next we need to enable the `traits::tag_of` metafunction to return our newly chosen tag type for operations involving our sequence. This is done by specializing @@ -51,18 +51,17 @@ tag type for operations involving our sequence. This is done by specializing #include - namespace boost { namespace fusion { namespace traits { - + namespace boost { namespace fusion { namespace traits { template<> struct tag_of { - typedef example_sequence_tag type; + typedef example::example_sequence_tag type; }; }}} `traits::tag_of` also has a second template argument, that can be used in conjuction with `boost::enable_if` to provide tag -support for whole clases of types. This feature is not necessary +support for groups of related types. This feature is not necessary for our sequence, but for an example see the code in: #include @@ -79,12 +78,12 @@ We will use a simple design, in which the 2 members of template struct example_struct_iterator - : iterator_base > + : boost::fusion::iterator_base > { BOOST_STATIC_ASSERT(Pos >=0 && Pos < 3); typedef Struct struct_type; - typedef mpl::int_ index; - typedef random_access_traversal_tag category; + typedef boost::mpl::int_ index; + typedef boost::fusion::random_access_traversal_tag category; example_struct_iterator(Struct& str) : struct_(str) {} @@ -102,20 +101,7 @@ A quick summary of the details of our iterator: # The constructor stores a reference to the `example_struct` being iterated over. We also need to enable __tag_dispatching__ for our iterator type, with another specialization of -`traits::tag_of`: - - namespace boost { namespace fusion { - struct example_struct_iterator_tag; - - namespace traits - { - template - struct tag_of > - { - typedef example_struct_iterator_tag type; - }; - } - }} +`traits::tag_of`. In isolation, the iterator implementation is pretty dry. Things should become clearer as we add features to our implementation. @@ -127,19 +113,19 @@ do this, we provide a specialization of the `boost::fusion::extension::value_of_ our iterator's tag type. template<> - struct value_of_impl + struct value_of_impl { template struct apply; template - struct apply > + struct apply > { typedef std::string type; }; template - struct apply > + struct apply > { typedef int type; }; @@ -152,12 +138,9 @@ To understand how `value_of_impl` is used by the library we will look at the imp template struct __value_of__ - { - typedef typename - extension::value_of_impl:: - template apply::type - type; - }; + : extension::value_of_impl::type>:: + template apply + {}; So __value_of__ uses __tag_dispatching__ to select an __mpl_metafunction_class__ to provide its functionality. You will notice this pattern throughout the @@ -167,37 +150,38 @@ Ok, lets enable dereferencing of our iterator. In this case we must provide a su specialization of `deref_impl`. template<> - struct deref_impl + struct deref_impl { template struct apply; template - struct apply > + struct apply > { typedef typename mpl::if_< is_const, std::string const&, std::string&>::type type; static type - call(example_struct_iterator const& it) + call(example::example_struct_iterator const& it) { return it.struct_.name; } }; template - struct apply > + struct apply > { typedef typename mpl::if_< is_const, int const&, int&>::type type; static type - call(example_struct_iterator const& it) + call(example::example_struct_iterator const& it) { - return it.struct_.age; - } + return it.struct_.age; + } + }; }; - }; + } The use of `deref_impl` is very similar to that of `value_of_impl`, but it also provides some runtime functionality this time via the `call` static member function. @@ -207,20 +191,17 @@ To see how `deref_impl` is used, lets have a look at the implementation of __der { template struct __deref__ - { - typedef typename - deref_impl:: - template apply::type - type; - }; + : extension::deref_impl::type>:: + template apply + {}; } template - typename __result_of_deref__::type + typename result_of::deref::type __deref__(Iterator const& i) { - return extension::deref_impl:: - template apply::call(i); + typedef result_of::deref deref_meta; + return deref_meta::call(i); } So again __result_of_deref__ uses __tag_dispatching__ in exactly the @@ -247,19 +228,19 @@ Ok, now we have seen the way __value_of__ and __deref__ work, everything else wi by providing a `next_impl`: template<> - struct next_impl + struct next_impl { template struct apply { typedef typename Iterator::struct_type struct_type; typedef typename Iterator::index index; - typedef example_struct_iterator type; + typedef example::example_struct_iterator type; static type call(Iterator const& i) { - return type(i.struct_); + return type(i.struct_); } }; }; @@ -285,12 +266,12 @@ In order that Fusion can correctly identify our sequence as a Fusion sequence, w need to enable `is_sequence` for our sequence type. As usual we just create an `impl` type specialized for our sequence tag: - template<> - struct is_sequence_impl - { - template - struct apply : mpl::true_ {}; - }; + template<> + struct is_sequence_impl + { + template + struct apply : mpl::true_ {}; + }; We've some similar formalities to complete, providing `category_of_impl` so Fusion can correctly identify our sequence type, and `is_view_impl` so Fusion can correctly @@ -302,12 +283,12 @@ __begin__ working so that we can get an iterator to start accessing the data in our sequence. template<> - struct begin_impl + struct begin_impl { template struct apply { - typedef example_struct_iterator type; + typedef example::example_struct_iterator type; static type call(Sequence& seq) @@ -337,7 +318,7 @@ types described in the __quick_start__ guide with the appropriate members of `ex Our implementation is as follows: template<> - struct at_key_impl + struct at_key_impl { template struct apply; From 114556bbba1d9134c57fb9a3d27bc0565658712d Mon Sep 17 00:00:00 2001 From: Eric Niebler Date: Thu, 5 Oct 2006 01:25:32 +0000 Subject: [PATCH 027/234] experimental segmented Fusion support [SVN r35493] --- .../algorithm/iteration/ext_/for_each_s.hpp | 92 +++ .../fusion/algorithm/query/ext_/find_if_s.hpp | 223 ++++++++ .../fusion/sequence/container/ext_/tree.hpp | 130 +++++ .../sequence/intrinsic/ext_/segments.hpp | 57 ++ .../sequence/view/ext_/multiple_view.hpp | 179 ++++++ .../sequence/view/ext_/segmented_iterator.hpp | 416 ++++++++++++++ .../view/ext_/segmented_iterator_range.hpp | 522 ++++++++++++++++++ .../fusion/support/ext_/is_segmented.hpp | 49 ++ test/Jamfile.v2 | 14 + test/algorithm/ext_/find_if_s.cpp | 110 ++++ test/algorithm/ext_/for_each_s.cpp | 83 +++ test/sequence/ext_/iterator_range_s.cpp | 147 +++++ 12 files changed, 2022 insertions(+) create mode 100755 include/boost/fusion/algorithm/iteration/ext_/for_each_s.hpp create mode 100755 include/boost/fusion/algorithm/query/ext_/find_if_s.hpp create mode 100755 include/boost/fusion/sequence/container/ext_/tree.hpp create mode 100755 include/boost/fusion/sequence/intrinsic/ext_/segments.hpp create mode 100755 include/boost/fusion/sequence/view/ext_/multiple_view.hpp create mode 100755 include/boost/fusion/sequence/view/ext_/segmented_iterator.hpp create mode 100755 include/boost/fusion/sequence/view/ext_/segmented_iterator_range.hpp create mode 100755 include/boost/fusion/support/ext_/is_segmented.hpp create mode 100755 test/algorithm/ext_/find_if_s.cpp create mode 100755 test/algorithm/ext_/for_each_s.cpp create mode 100755 test/sequence/ext_/iterator_range_s.cpp diff --git a/include/boost/fusion/algorithm/iteration/ext_/for_each_s.hpp b/include/boost/fusion/algorithm/iteration/ext_/for_each_s.hpp new file mode 100755 index 00000000..2a0f9a48 --- /dev/null +++ b/include/boost/fusion/algorithm/iteration/ext_/for_each_s.hpp @@ -0,0 +1,92 @@ +/*============================================================================= + Copyright (c) 2006 Eric Niebler + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_FOR_EACH_S_05022006_1027) +#define FUSION_FOR_EACH_S_05022006_1027 + +#include +#include +#include +#include +#include + +// fwd declarations +namespace boost { namespace fusion +{ + template + void + for_each_s(Sequence& seq, F const& f); + + template + void + for_each_s(Sequence const& seq, F const& f); +}} + +namespace boost { namespace fusion { namespace detail +{ + template + struct for_each_s_bind + { + explicit for_each_s_bind(F const &f) + : f_(f) + {} + + template + void operator ()(Sequence &seq) const + { + fusion::for_each_s(seq, this->f_); + } + + template + void operator ()(Sequence const &seq) const + { + fusion::for_each_s(seq, this->f_); + } + private: + F const &f_; + }; + + template + void for_each_s(Sequence &seq, F const &f, mpl::true_) + { + fusion::for_each_s(fusion::segments(seq), for_each_s_bind(f)); + } + + template + void for_each_s(Sequence &seq, F const &f, mpl::false_) + { + fusion::for_each(seq, f); + } +}}} + +namespace boost { namespace fusion +{ + namespace result_of + { + template + struct for_each_s + { + typedef void type; + }; + } + + template + inline void + for_each_s(Sequence& seq, F const& f) + { + detail::for_each_s(seq, f, traits::is_segmented()); + } + + template + inline void + for_each_s(Sequence const& seq, F const& f) + { + detail::for_each_s(seq, f, traits::is_segmented()); + } +}} + +#endif diff --git a/include/boost/fusion/algorithm/query/ext_/find_if_s.hpp b/include/boost/fusion/algorithm/query/ext_/find_if_s.hpp new file mode 100755 index 00000000..6d2d1ea8 --- /dev/null +++ b/include/boost/fusion/algorithm/query/ext_/find_if_s.hpp @@ -0,0 +1,223 @@ +/*============================================================================= + Copyright (c) 2006 Eric Niebler + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FIND_IF_S_05152006_1027) +#define FIND_IF_S_05152006_1027 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// fwd declarations +namespace boost { namespace fusion +{ + namespace detail + { + template::value> + struct static_find_if_s_recurse; + } + + namespace result_of + { + template + struct find_if_s; + } +}} + +namespace boost { namespace fusion { namespace detail +{ + + template::value> + struct is_found + : mpl::not_::type> > + {}; + + template + struct is_found + : mpl::not_ > + {}; + + template< + typename SegmentedRange + , typename Where + , typename Sequence = typename remove_reference< + typename result_of::deref< + typename SegmentedRange::iterator_type + >::type + >::type + , bool IsSegmented = traits::is_segmented::value + > + struct as_segmented_cons + { + typedef cons< + SegmentedRange + , cons > + > type; + + static type call(SegmentedRange const &range, Where const &where) + { + return fusion::make_cons( + range + , fusion::make_cons( + segmented_range(*fusion::begin(range), where) + ) + ); + } + }; + + template< + typename SegmentedRange + , typename Where + , typename Sequence + > + struct as_segmented_cons + { + typedef cons type; + + static type call(SegmentedRange const &range, Where const &where) + { + return fusion::make_cons(range, where); + } + }; + + template< + typename SegmentedRange + , typename Pred + , bool IsEmpty = is_empty::value + > + struct static_find_if_s_seg + { + typedef typename SegmentedRange::iterator_type first; + typedef typename result_of::deref::type segment_ref; + typedef typename remove_reference::type segment; + typedef static_find_if_s_recurse where; + typedef range_next next; + typedef is_found is_found; + typedef as_segmented_cons found; + typedef static_find_if_s_seg not_found; + typedef typename mpl::eval_if::type type; + + static type call(SegmentedRange const &range) + { + return call_(range, is_found()); + } + + private: + static type call_(SegmentedRange const &range, mpl::true_) + { + return found::call(range, where::call(*range.where)); + } + + static type call_(SegmentedRange const &range, mpl::false_) + { + return not_found::call(next::call(range)); + } + }; + + template< + typename SegmentedRange + , typename Pred + > + struct static_find_if_s_seg + { + typedef nil type; + + static type call(SegmentedRange const &) + { + return nil(); + } + }; + + template + struct static_find_if_s_recurse + { + typedef typename as_segmented_range::type range; + typedef static_find_if_s_seg find_if; + typedef typename find_if::type type; + + static type call(Sequence &seq) + { + return find_if::call(range(fusion::segments(seq))); + } + }; + + template + struct static_find_if_s_recurse + { + typedef typename result_of::find_if::type type; + + static type call(Sequence &seq) + { + return fusion::find_if(seq); + } + }; + + template::value> + struct static_find_if_s + : static_find_if_s_recurse + {}; + + template + struct static_find_if_s + { + typedef typename as_segmented_range::type range; + typedef static_find_if_s_recurse find_if; + typedef typename find_if::type found; + + typedef segmented_iterator::type> type; + + static type call(Sequence &seq) + { + return type(reverse_cons::call(find_if::call(seq))); + } + }; +}}} + +namespace boost { namespace fusion +{ + namespace result_of + { + template + struct find_if_s + { + typedef typename + detail::static_find_if_s< + Sequence + , Pred + >::type + type; + }; + } + + template + typename lazy_disable_if< + is_const + , result_of::find_if_s + >::type + find_if_s(Sequence& seq) + { + return detail::static_find_if_s::call(seq); + } + + template + typename result_of::find_if_s::type + find_if_s(Sequence const& seq) + { + return detail::static_find_if_s::call(seq); + } +}} + +#endif diff --git a/include/boost/fusion/sequence/container/ext_/tree.hpp b/include/boost/fusion/sequence/container/ext_/tree.hpp new file mode 100755 index 00000000..c6edc28c --- /dev/null +++ b/include/boost/fusion/sequence/container/ext_/tree.hpp @@ -0,0 +1,130 @@ +/*============================================================================= + Copyright (c) 2006 Eric Niebler + + Use, modification and distribution is 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) +==============================================================================*/ +#ifndef FUSION_BINARY_TREE_EAN_05032006_1027 +#define FUSION_BINARY_TREE_EAN_05032006_1027 + +#include +#include +#include +#include +#include +#include +#include +#include // for nil +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct tree_tag; + + namespace detail + { + template + struct reference : add_reference {}; + + template + struct reference : reference::type, false> {}; + + template + struct reference : reference {}; + } + + template + struct tree + : sequence_base > + { + typedef Data data_type; + typedef Left left_type; + typedef Right right_type; + typedef tree_tag fusion_tag; + typedef forward_traversal_tag category; + typedef mpl::false_ is_view; + + typedef typename mpl::if_< + traits::is_sequence + , Data + , single_view + >::type data_view; + + explicit tree( + typename fusion::detail::call_param::type data_ + , typename fusion::detail::call_param::type left_ = Left() + , typename fusion::detail::call_param::type right_ = Right() + ) + : segments(left_, data_view(data_), right_) + {} + + typedef vector3 segments_type; + segments_type segments; + }; + + template + tree make_tree(Data const &data) + { + return tree(data); + } + + template + tree make_tree(Data const &data, Left const &left, Right const &right) + { + return tree(data, left, right); + } + + namespace extension + { + template<> + struct is_segmented_impl + { + template + struct apply : mpl::true_ {}; + }; + + template<> + struct segments_impl + { + template + struct apply + { + typedef typename mpl::if_< + is_const + , typename Sequence::segments_type const & + , typename Sequence::segments_type & + >::type type; + + static type call(Sequence &seq) + { + return seq.segments; + } + }; + }; + + template<> + struct begin_impl + { + template + struct apply + : segmented_begin + {}; + }; + + template<> + struct end_impl + { + template + struct apply + : segmented_end + {}; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/intrinsic/ext_/segments.hpp b/include/boost/fusion/sequence/intrinsic/ext_/segments.hpp new file mode 100755 index 00000000..1d4fd220 --- /dev/null +++ b/include/boost/fusion/sequence/intrinsic/ext_/segments.hpp @@ -0,0 +1,57 @@ +/*============================================================================= + Copyright (c) 2006 Eric Niebler + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_SEGMENTS_04052005_1141) +#define FUSION_SEGMENTS_04052005_1141 + +#include + +namespace boost { namespace fusion +{ + // segments: returns a sequence of sequences + namespace extension + { + template + struct segments_impl + { + template + struct apply {}; + }; + } + + namespace result_of + { + template + struct segments + { + typedef typename + extension::segments_impl::type>:: + template apply::type + type; + }; + } + + template + typename result_of::segments::type + segments(Sequence & seq) + { + return + extension::segments_impl::type>:: + template apply::call(seq); + } + + template + typename result_of::segments::type + segments(Sequence const& seq) + { + return + extension::segments_impl::type>:: + template apply::call(seq); + } +}} + +#endif diff --git a/include/boost/fusion/sequence/view/ext_/multiple_view.hpp b/include/boost/fusion/sequence/view/ext_/multiple_view.hpp new file mode 100755 index 00000000..2297aa7f --- /dev/null +++ b/include/boost/fusion/sequence/view/ext_/multiple_view.hpp @@ -0,0 +1,179 @@ +/*============================================================================= + Copyright (c) 2001-2006 Eric Niebler + + Use, modification and distribution is 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) +==============================================================================*/ +#ifndef FUSION_MULTIPLE_VIEW_05052005_0335 +#define FUSION_MULTIPLE_VIEW_05052005_0335 + +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct multiple_view_tag; + struct forward_traversal_tag; + struct fusion_sequence_tag; + + template + struct multiple_view + : sequence_base > + { + typedef multiple_view_tag fusion_tag; + typedef fusion_sequence_tag tag; // this gets picked up by MPL + typedef forward_traversal_tag category; + typedef mpl::true_ is_view; + typedef mpl::int_ size; + typedef T value_type; + + multiple_view() + : val() + {} + + explicit multiple_view(typename detail::call_param::type val) + : val(val) + {} + + value_type val; + }; + + template + inline multiple_view::type> + make_multiple_view(T const& v) + { + return multiple_view::type>(v); + } + + struct multiple_view_iterator_tag; + struct forward_traversal_tag; + + template + struct multiple_view_iterator + : iterator_base > + { + typedef multiple_view_iterator_tag fusion_tag; + typedef forward_traversal_tag category; + typedef typename MultipleView::value_type value_type; + typedef MultipleView multiple_view_type; + typedef Index index; + + explicit multiple_view_iterator(multiple_view_type const &view_) + : view(view_) + {} + + multiple_view_type view; + }; + + namespace extension + { + template + struct next_impl; + + template <> + struct next_impl + { + template + struct apply + { + typedef multiple_view_iterator< + typename mpl::next::type + , typename Iterator::multiple_view_type + > type; + + static type + call(Iterator const &where) + { + return type(where.view); + } + }; + }; + + template + struct end_impl; + + template <> + struct end_impl + { + template + struct apply + { + typedef multiple_view_iterator< + typename Sequence::size + , Sequence + > type; + + static type + call(Sequence &seq) + { + return type(seq); + } + }; + }; + + template + struct deref_impl; + + template <> + struct deref_impl + { + template + struct apply + { + typedef typename Iterator::value_type type; + + static type + call(Iterator const& i) + { + return i.view.val; + } + }; + }; + + template + struct begin_impl; + + template <> + struct begin_impl + { + template + struct apply + { + typedef multiple_view_iterator< + mpl::int_<0> + , Sequence + > type; + + static type + call(Sequence &seq) + { + return type(seq); + } + }; + }; + + template + struct value_of_impl; + + template <> + struct value_of_impl + { + template + struct apply + { + typedef typename Iterator::multiple_view_type multiple_view_type; + typedef typename multiple_view_type::value_type type; + }; + }; + } +}} + +#endif + + diff --git a/include/boost/fusion/sequence/view/ext_/segmented_iterator.hpp b/include/boost/fusion/sequence/view/ext_/segmented_iterator.hpp new file mode 100755 index 00000000..f242aa43 --- /dev/null +++ b/include/boost/fusion/sequence/view/ext_/segmented_iterator.hpp @@ -0,0 +1,416 @@ +/*============================================================================= + Copyright (c) 2006 Eric Niebler + + Use, modification and distribution is 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) +==============================================================================*/ +#ifndef FUSION_SEGMENTED_ITERATOR_EAN_05032006_1027 +#define FUSION_SEGMENTED_ITERATOR_EAN_05032006_1027 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include // for nil +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct fusion_sequence_tag; + + namespace detail + { + using mpl::_; + using mpl::not_; + + //////////////////////////////////////////////////////////////////////////// + template + struct is_empty + : result_of::equal_to< + typename result_of::begin::type + , typename result_of::end::type + > + {}; + + struct segmented_range_tag; + + //////////////////////////////////////////////////////////////////////////// + template + struct segmented_range + : sequence_base > + { + typedef mpl::bool_ is_segmented; + typedef segmented_range_tag fusion_tag; + typedef fusion_sequence_tag tag; // this gets picked up by MPL + typedef mpl::true_ is_view; + typedef Iterator iterator_type; + + // If this is a range of segments, skip over the empty ones + typedef typename mpl::if_< + is_segmented + , filter_view > > + , Sequence + >::type sequence_non_ref_type; + + typedef typename mpl::if_< + traits::is_view + , sequence_non_ref_type + , sequence_non_ref_type & + >::type sequence_type; + + typedef typename traits::category_of::type category; + + explicit segmented_range(Sequence &sequence_) + : sequence(sequence_type(sequence_)) + , where(fusion::begin(sequence)) + {} + + segmented_range(sequence_type sequence_, iterator_type const &where_) + : sequence(sequence_) + , where(where_) + {} + + sequence_type sequence; + iterator_type where; + }; + } + + namespace extension + { + template<> + struct is_segmented_impl + { + template + struct apply + : Sequence::is_segmented + {}; + }; + + template<> + struct size_impl + { + template + struct apply + : mpl::int_< + result_of::distance< + typename Sequence::iterator_type + , typename result_of::end::type + >::value + > + {}; + }; + + template<> + struct segments_impl + { + template + struct apply + { + typedef Sequence &type; + static type call(Sequence &seq) + { + return seq; + } + }; + }; + + template<> + struct begin_impl + { + template + struct apply + { + typedef typename Sequence::iterator_type type; + static type call(Sequence &seq) + { + return seq.where; + } + }; + }; + + template<> + struct end_impl + { + template + struct apply + { + typedef typename Sequence::sequence_non_ref_type sequence; + typedef typename result_of::end::type type; + + static type call(Sequence &seq) + { + return fusion::end(seq.sequence); + } + }; + }; + } + + namespace detail + { + /////////////////////////////////////////////////////////////////////// + template + struct range_next; + + template + struct range_next > + { + typedef typename result_of::next::type iterator_type; + typedef segmented_range type; + + static type call(segmented_range const &rng) + { + return type(rng.sequence, fusion::next(rng.where)); + } + }; + + /////////////////////////////////////////////////////////////////////// + template + struct is_range_next_empty + : is_empty::type> + {}; + + template<> + struct is_range_next_empty + : mpl::true_ + {}; + + /////////////////////////////////////////////////////////////////////// + template::value> + struct as_segmented_range + { + typedef typename result_of::segments::type segments; + typedef typename remove_reference::type sequence; + typedef typename result_of::begin > > >::type begin; + typedef segmented_range type; + + static type call(Sequence &seq) + { + return type(fusion::segments(seq)); + } + }; + + template + struct as_segmented_range + { + typedef typename remove_reference::type sequence; + typedef typename result_of::begin::type begin; + typedef segmented_range type; + + static type call(Sequence &seq) + { + return type(seq); + } + }; + + template + struct as_segmented_range, IsSegmented> + { + typedef segmented_range type; + static type &call(type &seq) + { + return seq; + } + }; + + /////////////////////////////////////////////////////////////////////// + template< + typename Sequence + , typename State = nil + , bool IsSegmented = traits::is_segmented::value + > + struct push_segments + { + typedef typename as_segmented_range::type range; + typedef typename result_of::begin::type begin; + typedef typename result_of::deref::type next_ref; + typedef typename remove_reference::type next; + typedef push_segments > push; + typedef typename push::type type; + + static type call(Sequence &seq, State const &state) + { + range rng(as_segmented_range::call(seq)); + return push::call(*fusion::begin(rng), fusion::make_cons(rng, state)); + } + }; + + template + struct push_segments + { + typedef typename as_segmented_range::type range; + typedef cons type; + + static type call(Sequence &seq, State const &state) + { + range rng(as_segmented_range::call(seq)); + return fusion::make_cons(rng, state); + } + }; + + /////////////////////////////////////////////////////////////////////// + template::value> + struct pop_segments + { + typedef range_next next; + typedef push_segments push; + typedef typename push::type type; + + static type call(State const &state) + { + typename next::type rng(next::call(state.car)); + return push::call(rng, state.cdr); + } + }; + + template + struct pop_segments + { + typedef pop_segments pop; + typedef typename pop::type type; + + static type call(State const &state) + { + return pop::call(state.cdr); + } + }; + + template<> + struct pop_segments + { + typedef nil type; + + static type call(nil const &) + { + return nil(); + } + }; + } // namespace detail + + struct segmented_iterator_tag; + + //////////////////////////////////////////////////////////////////////////// + template + struct segmented_iterator + : fusion::iterator_base > + { + typedef segmented_iterator_tag fusion_tag; + typedef fusion::forward_traversal_tag category; + + typedef Cons cons_type; + typedef typename Cons::car_type car_type; + typedef typename Cons::cdr_type cdr_type; + + explicit segmented_iterator(Cons const &cons) + : cons_(cons) + {} + + cons_type const &cons() const { return this->cons_; }; + car_type const &car() const { return this->cons_.car; }; + cdr_type const &cdr() const { return this->cons_.cdr; }; + + private: + Cons cons_; + }; + + /////////////////////////////////////////////////////////////////////////// + template + struct segmented_begin + { + typedef typename detail::push_segments push; + typedef segmented_iterator type; + + static type call(Sequence &seq) + { + return type(push::call(seq, nil())); + } + }; + + /////////////////////////////////////////////////////////////////////////// + template + struct segmented_end + { + typedef segmented_iterator type; + + static type call(Sequence &) + { + return type(nil()); + } + }; + + namespace extension + { + template<> + struct value_of_impl + { + template + struct apply + { + typedef typename result_of::begin::type begin; + typedef typename result_of::value_of::type type; + }; + }; + + template<> + struct deref_impl + { + template + struct apply + { + typedef typename result_of::begin::type begin; + typedef typename result_of::deref::type type; + + static type call(Iterator const &it) + { + return *fusion::begin(it.car()); + } + }; + }; + + // discards the old head, expands the right child of the new head + // and pushes the result to the head of the list. + + template<> + struct next_impl + { + template< + typename Iterator + , bool IsSegmentDone = detail::is_range_next_empty::value + > + struct apply + { + typedef typename Iterator::cdr_type cdr_type; + typedef detail::range_next next; + typedef segmented_iterator > type; + + static type call(Iterator const &it) + { + return type(fusion::make_cons(next::call(it.car()), it.cdr())); + } + }; + + template + struct apply // segment done, move to next segment + { + typedef typename Iterator::cdr_type cdr_type; + typedef typename detail::pop_segments pop; + typedef segmented_iterator type; + + static type call(Iterator const &it) + { + return type(pop::call(it.cdr())); + } + }; + }; + } +}} // namespace boost::fusion + +#endif diff --git a/include/boost/fusion/sequence/view/ext_/segmented_iterator_range.hpp b/include/boost/fusion/sequence/view/ext_/segmented_iterator_range.hpp new file mode 100755 index 00000000..7bab8789 --- /dev/null +++ b/include/boost/fusion/sequence/view/ext_/segmented_iterator_range.hpp @@ -0,0 +1,522 @@ +/*============================================================================= + Copyright (c) 2006 Eric Niebler + + Use, modification and distribution is 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) +==============================================================================*/ +#ifndef FUSION_SEGMENTED_ITERATOR_RANGE_EAN_05032006_1027 +#define FUSION_SEGMENTED_ITERATOR_RANGE_EAN_05032006_1027 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + namespace detail + { + //////////////////////////////////////////////////////////////////////////// + template + struct reverse_cons; + + template + struct reverse_cons, State> + { + typedef reverse_cons > reverse; + typedef typename reverse::type type; + + static type call(cons const &cons, State const &state = State()) + { + return reverse::call(cons.cdr, fusion::make_cons(cons.car, state)); + } + }; + + template + struct reverse_cons + { + typedef State type; + + static State const &call(nil const &, State const &state = State()) + { + return state; + } + }; + + //////////////////////////////////////////////////////////////////////////// + // tags + struct full_view {}; + struct left_view {}; + struct right_view {}; + struct center_view {}; + + template + struct segmented_view_tag; + + //////////////////////////////////////////////////////////////////////////// + // a segmented view of that includes all elements either to the + // right or the left of a segmented iterator. + template + struct segmented_view + : sequence_base > + { + typedef segmented_view_tag fusion_tag; + typedef fusion_sequence_tag tag; // this gets picked up by MPL + typedef mpl::true_ is_view; + typedef forward_traversal_tag category; + + explicit segmented_view(Cons1 const &cons) + : cons(cons) + {} + + typedef Cons1 cons_type; + cons_type const &cons; + }; + + // a segmented view that contains all the elements in between + // two segmented iterators + template + struct segmented_view + : sequence_base > + { + typedef segmented_view_tag fusion_tag; + typedef fusion_sequence_tag tag; // this gets picked up by MPL + typedef mpl::true_ is_view; + typedef forward_traversal_tag category; + + segmented_view(Cons1 const &lcons, Cons2 const &rcons) + : left_cons(lcons) + , right_cons(rcons) + {} + + typedef Cons1 left_cons_type; + typedef Cons2 right_cons_type; + + left_cons_type const &left_cons; + right_cons_type const &right_cons; + }; + + //////////////////////////////////////////////////////////////////////////// + // Used to transform a sequence of segments. The first segment is + // bounded by RightCons, and the last segment is bounded by LeftCons + // and all the others are passed through unchanged. + template + struct segments_transform + { + explicit segments_transform(RightCons const &cons_) + : right_cons(cons_) + , left_cons(cons_) + {} + + segments_transform(RightCons const &right_cons_, LeftCons const &left_cons_) + : right_cons(right_cons_) + , left_cons(left_cons_) + {} + + template + struct result; + + template + struct result + { + typedef segmented_view type; + }; + + template + struct result + { + typedef segmented_view type; + }; + + template + struct result + { + typedef Second type; + }; + + template + segmented_view operator ()(right_view, Second &second) const + { + return segmented_view(this->right_cons); + } + + template + segmented_view operator ()(left_view, Second &second) const + { + return segmented_view(this->left_cons); + } + + template + Second &operator ()(full_view, Second &second) const + { + return second; + } + + private: + RightCons const &right_cons; + LeftCons const &left_cons; + }; + + } // namespace detail + + namespace extension + { + //////////////////////////////////////////////////////////////////////////// + template + struct is_segmented_impl > + { + template + struct apply + : mpl::true_ + {}; + }; + + //////////////////////////////////////////////////////////////////////////// + template<> + struct segments_impl > + { + template< + typename Sequence + , typename Cdr = typename Sequence::cons_type::cdr_type + > + struct apply + { + typedef typename Sequence::cons_type::car_type segmented_range; + typedef typename result_of::size::type size; + typedef typename mpl::prior::type size_minus_1; + typedef detail::segments_transform tfx; + typedef joint_view< + single_view const + , multiple_view const + > mask; + typedef transform_view type; + + static type call(Sequence &seq) + { + return type( + mask( + make_single_view(detail::right_view()) + , make_multiple_view(detail::full_view()) + ) + , seq.cons.car + , tfx(seq.cons.cdr) + ); + } + }; + + template + struct apply + { + typedef typename Sequence::cons_type::car_type segmented_range; + typedef typename segmented_range::iterator_type begin; + typedef typename segmented_range::sequence_non_ref_type sequence_type; + typedef typename result_of::end::type end; + typedef iterator_range range; + typedef single_view type; + + static type call(Sequence &seq) + { + return type(range(seq.cons.car.where, fusion::end(seq.cons.car.sequence))); + } + }; + }; + + //////////////////////////////////////////////////////////////////////////// + template<> + struct segments_impl > + { + template< + typename Sequence + , typename Cdr = typename Sequence::cons_type::cdr_type + > + struct apply + { + typedef typename Sequence::cons_type::car_type right_segmented_range; + typedef typename right_segmented_range::sequence_type sequence_type; + typedef typename right_segmented_range::iterator_type iterator_type; + + typedef iterator_range< + typename result_of::begin::type + , typename result_of::next::type + > segmented_range; + + typedef detail::segments_transform tfx; + typedef typename result_of::size::type size; + typedef typename mpl::prior::type size_minus_1; + typedef joint_view< + multiple_view const + , single_view const + > mask; + typedef transform_view type; + + static type call(Sequence &seq) + { + return type( + mask( + make_multiple_view(detail::full_view()) + , make_single_view(detail::left_view()) + ) + , segmented_range(fusion::begin(seq.cons.car.sequence), fusion::next(seq.cons.car.where)) + , tfx(seq.cons.cdr) + ); + } + }; + + template + struct apply + { + typedef typename Sequence::cons_type::car_type segmented_range; + typedef typename segmented_range::sequence_non_ref_type sequence_type; + typedef typename result_of::begin::type begin; + typedef typename segmented_range::iterator_type end; + typedef iterator_range range; + typedef single_view type; + + static type call(Sequence &seq) + { + return type(range(fusion::begin(seq.cons.car.sequence), seq.cons.car.where)); + } + }; + }; + + //////////////////////////////////////////////////////////////////////////// + template<> + struct segments_impl > + { + template + struct apply + { + typedef typename Sequence::right_cons_type right_cons_type; + typedef typename Sequence::left_cons_type left_cons_type; + typedef typename right_cons_type::car_type right_segmented_range; + typedef typename left_cons_type::car_type left_segmented_range; + + typedef iterator_range< + typename result_of::begin::type + , typename result_of::next::type>::type + > segmented_range; + + typedef typename mpl::minus< + typename result_of::size::type + , mpl::int_<2> + >::type size_minus_2; + + BOOST_MPL_ASSERT_RELATION(0, <=, size_minus_2::value); + + typedef detail::segments_transform< + typename left_cons_type::cdr_type + , typename right_cons_type::cdr_type + > tfx; + + typedef joint_view< + multiple_view const + , single_view const + > left_mask; + + typedef joint_view< + single_view const + , left_mask const + > mask; + + typedef transform_view type; + + static type call(Sequence &seq) + { + left_mask lmask( + make_multiple_view(detail::full_view()) + , make_single_view(detail::left_view()) + ); + return type( + mask(make_single_view(detail::right_view()), lmask) + , segmented_range(fusion::begin(seq.left_cons.car), fusion::next(fusion::begin(seq.right_cons.car))) + , tfx(seq.left_cons.cdr, seq.right_cons.cdr) + ); + } + }; + }; + } + + // specialize iterator_range for use with segmented iterators, so that + // it presents a segmented view of the range. + template + struct iterator_range; + + template + struct iterator_range, segmented_iterator > + : sequence_base, segmented_iterator > > + { + typedef typename convert_iterator >::type begin_type; + typedef typename convert_iterator >::type end_type; + typedef typename detail::reverse_cons::type begin_cons_type; + typedef typename detail::reverse_cons::type end_cons_type; + typedef iterator_range_tag fusion_tag; + typedef fusion_sequence_tag tag; // this gets picked up by MPL + typedef typename traits::category_of::type category; + typedef typename result_of::distance::type size; + typedef mpl::true_ is_view; + + iterator_range(segmented_iterator const& first_, segmented_iterator const& last_) + : first(convert_iterator >::call(first_)) + , last(convert_iterator >::call(last_)) + , first_cons(detail::reverse_cons::call(first_.cons())) + , last_cons(detail::reverse_cons::call(last_.cons())) + {} + + begin_type first; + end_type last; + + begin_cons_type first_cons; + end_cons_type last_cons; + }; + + namespace detail + { + + template + struct same_segment + : mpl::false_ + {}; + + template + struct same_segment, cons > + : mpl::and_< + traits::is_segmented + , is_same + > + {}; + + //////////////////////////////////////////////////////////////////////////// + template + struct segments_gen; + + //////////////////////////////////////////////////////////////////////////// + template + struct segments_gen2 + { + typedef segments_gen gen; + typedef typename gen::type type; + + static type call(Cons1 const &cons1, Cons2 const &cons2) + { + return gen::call(cons1.cdr, cons2.cdr); + } + }; + + template + struct segments_gen2 + { + typedef segmented_view view; + typedef typename result_of::segments::type type; + + static type call(Cons1 const &cons1, Cons2 const &cons2) + { + view v(cons1, cons2); + return fusion::segments(v); + } + }; + + template + struct segments_gen2, cons, false> + { + typedef iterator_range< + typename Car1::iterator_type + , typename Car2::iterator_type + > range; + + typedef single_view type; + + static type call(cons const &cons1, cons const &cons2) + { + return type(range(cons1.car.where, cons2.car.where)); + } + }; + + //////////////////////////////////////////////////////////////////////////// + template + struct segments_gen + : segments_gen2::value> + {}; + + template + struct segments_gen, nil> + { + typedef segmented_view > view; + typedef typename result_of::segments::type type; + + static type call(cons const &cons, nil const &) + { + view v(cons); + return fusion::segments(v); + } + }; + + template<> + struct segments_gen + { + typedef nil type; + + static type call(nil const &, nil const &) + { + return nil(); + } + }; + } // namespace detail + + namespace extension + { + template + struct is_segmented_impl; + + // An iterator_range of segmented_iterators is segmented + template<> + struct is_segmented_impl + { + template + struct is_segmented_iterator : mpl::false_ {}; + + template + struct is_segmented_iterator > : mpl::true_ {}; + + template + struct apply + : mpl::and_< + is_segmented_iterator + , is_segmented_iterator + > + {}; + }; + + template + struct segments_impl; + + template<> + struct segments_impl + { + template + struct apply + { + typedef typename Sequence::begin_cons_type begin_cons; + typedef typename Sequence::end_cons_type end_cons; + + typedef detail::segments_gen gen; + typedef typename gen::type type; + + static type call(Sequence &sequence) + { + return gen::call(sequence.first_cons, sequence.last_cons); + } + }; + }; + } + +}} + +#endif diff --git a/include/boost/fusion/support/ext_/is_segmented.hpp b/include/boost/fusion/support/ext_/is_segmented.hpp new file mode 100755 index 00000000..eb6b9e93 --- /dev/null +++ b/include/boost/fusion/support/ext_/is_segmented.hpp @@ -0,0 +1,49 @@ +/*============================================================================= + Copyright (c) 2006 Eric Niebler + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_IS_SEGMENTED_03202006_0015) +#define FUSION_IS_SEGMENTED_03202006_0015 + +#include + +namespace boost { namespace fusion +{ + // Special tags: + struct sequence_facade_tag; + struct boost_tuple_tag; // boost::tuples::tuple tag + struct array_tag; // boost::array tag + struct mpl_sequence_tag; // mpl sequence tag + struct std_pair_tag; // std::pair tag + struct iterator_range_tag; + + namespace extension + { + template + struct is_segmented_impl + { + template + struct apply + : mpl::false_ + {}; + }; + + template<> + struct is_segmented_impl; + } + + namespace traits + { + template + struct is_segmented + : extension::is_segmented_impl::type>:: + template apply + { + }; + } +}} + +#endif diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 4b645a16..31bedbc3 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -95,3 +95,17 @@ import testing ; ; } +{ + # Text for extension features, must be explicitly specified on the command line to be run + # TODO these are not in a test-suite because currently test-suites cannot be marked "explicit" + + run algorithm/ext_/for_each_s.cpp ; + explicit for_each_s ; + + run algorithm/ext_/find_if_s.cpp ; + explicit find_if_s ; + + run sequence/ext_/iterator_range_s.cpp ; + explicit iterator_range_s ; +} + diff --git a/test/algorithm/ext_/find_if_s.cpp b/test/algorithm/ext_/find_if_s.cpp new file mode 100755 index 00000000..8f5484ad --- /dev/null +++ b/test/algorithm/ext_/find_if_s.cpp @@ -0,0 +1,110 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 + +struct X +{ + operator int() const + { + return 12345; + } +}; + +template +void +process_tree(Tree const &tree) +{ + using namespace boost; + using mpl::_; + + typedef typename fusion::result_of::find_if_s >::type short_iter; + typedef typename fusion::result_of::find_if_s >::type float_iter; + + // find_if_s of a segmented data structure returns generic + // segmented iterators + short_iter si = fusion::find_if_s >(tree); + float_iter fi = fusion::find_if_s >(tree); + + // they behave like ordinary Fusion iterators ... + BOOST_TEST((*si == short('d'))); + BOOST_TEST((*fi == float(1))); +} + +int +main() +{ + using namespace boost::fusion; + + { + using boost::is_same; + using boost::mpl::_; + + typedef vector vector_type; + vector_type v(12345, 'x', 678910, 3.36); + + std::cout << *find_if_s >(v) << std::endl; + BOOST_TEST((*find_if_s >(v) == 'x')); + + std::cout << *find_if_s >(v) << std::endl; + BOOST_TEST((*find_if_s >(v) == 12345)); + + std::cout << *find_if_s >(v) << std::endl; + BOOST_TEST((*find_if_s >(v) == 3.36)); + } + + { + using boost::mpl::vector; + using boost::is_same; + using boost::mpl::_; + + typedef vector mpl_vec; + BOOST_TEST((*find_if_s >(mpl_vec()) == 12345)); + } + + { + using boost::mpl::vector_c; + using boost::mpl::less; + using boost::mpl::int_; + using boost::is_same; + using boost::mpl::_; + + typedef vector_c mpl_vec; + BOOST_TEST((*find_if_s > >(mpl_vec()) == 1)); + } + + { + process_tree( + make_tree( + make_vector(double(0),'B') + , make_tree( + make_vector(1,2,long(3)) + , make_tree(make_vector('a','b','c')) + , make_tree(make_vector(short('d'),'e','f')) + ) + , make_tree( + make_vector(4,5,6) + , make_tree(make_vector(float(1),'h','i')) + , make_tree(make_vector('j','k','l')) + ) + ) + ); + } + + return boost::report_errors(); +} + diff --git a/test/algorithm/ext_/for_each_s.cpp b/test/algorithm/ext_/for_each_s.cpp new file mode 100755 index 00000000..b0e28f7a --- /dev/null +++ b/test/algorithm/ext_/for_each_s.cpp @@ -0,0 +1,83 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman, Eric Niebler + + Use, modification and distribution is 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 + +struct print +{ + template + void operator()(T const& v) const + { + std::cout << "[ " << v << " ] "; + } +}; + +struct increment +{ + template + void operator()(T& v) const + { + ++v; + } +}; + +int +main() +{ + using namespace boost::fusion; + using boost::mpl::vector_c; + namespace fusion = boost::fusion; + + { + typedef vector vector_type; + vector_type v(1, 'x', 3.3, "Ruby"); + for_each_s(v, print()); + std::cout << std::endl; + } + + { + typedef vector vector_type; + vector_type v(1, 'x', 3.3, "Ruby"); + for_each_s(v, increment()); + std::cout << v << std::endl; + } + + { + typedef vector_c mpl_vec; + fusion::for_each_s(mpl_vec(), print()); + std::cout << std::endl; + } + + { + fusion::for_each_s( + make_tree( + make_vector(double(0),'B') + , make_tree( + make_vector(1,2,long(3)) + , make_tree(make_vector('a','b','c')) + , make_tree(make_vector(short('d'),'e','f')) + ) + , make_tree( + make_vector(4,5,6) + , make_tree(make_vector(float(1),'h','i')) + , make_tree(make_vector('j','k','l')) + ) + ) + , print() + ); + } + + return boost::report_errors(); +} + diff --git a/test/sequence/ext_/iterator_range_s.cpp b/test/sequence/ext_/iterator_range_s.cpp new file mode 100755 index 00000000..ddbfd682 --- /dev/null +++ b/test/sequence/ext_/iterator_range_s.cpp @@ -0,0 +1,147 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 +#include +#include +#include +#include + +struct ostream_fun +{ + ostream_fun(std::ostream &sout) + : sout_(sout) + {} + template + void operator ()(T const &t) const + { + sout_ << t << ' '; + } +private: + std::ostream & sout_; +}; + +template +void +process_tree(Tree const &tree) +{ + using namespace boost; + using namespace fusion; + using mpl::_; + + typedef typename result_of::find_if_s >::type short_iter; + typedef typename result_of::find_if_s >::type float_iter; + + typedef iterator_range slice_t; + BOOST_STATIC_ASSERT(traits::is_segmented::value); + + // find_if_s of a segmented data structure returns generic + // segmented iterators + short_iter si = find_if_s >(tree); + float_iter fi = find_if_s >(tree); + + // If you put them in an iterator range, the range + // is automatically a segmented data structure. + slice_t slice(si, fi); + + std::stringstream sout; + fusion::for_each_s(slice, ostream_fun(sout)); + BOOST_TEST((sout.str() == "100 e f 0 B ")); +} + +int +main() +{ + using namespace boost::fusion; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + + { + char const* s = "Ruby"; + typedef vector vector_type; + vector_type vec(1, 'x', 3.3, s); + + { + typedef vector_iterator i1t; + typedef vector_iterator i3t; + + i1t i1(vec); + i3t i3(vec); + + typedef iterator_range slice_t; + slice_t slice(i1, i3); + std::cout << slice << std::endl; + BOOST_TEST((slice == make_vector('x', 3.3))); + BOOST_STATIC_ASSERT(result_of::size::value == 2); + } + + { + typedef vector_iterator i1t; + typedef vector_iterator i3t; + + i1t i1(vec); + i3t i3(vec); + + typedef iterator_range slice_t; + slice_t slice(i1, i3); + std::cout << slice << std::endl; + BOOST_TEST(slice == make_vector()); + BOOST_STATIC_ASSERT(result_of::size::value == 0); + } + } + + { + typedef boost::mpl::vector_c mpl_vec; + typedef boost::mpl::begin::type it0; + typedef boost::mpl::next::type it1; + typedef boost::mpl::next::type it2; + typedef boost::mpl::next::type it3; + + it1 f; + it3 l; + + typedef iterator_range slice_t; + slice_t slice(f, l); + std::cout << slice << std::endl; + BOOST_TEST((slice == make_vector(3, 4))); + BOOST_STATIC_ASSERT(result_of::size::value == 2); + } + + { + process_tree( + make_tree( + make_vector(double(0),'B') + , make_tree( + make_vector(1,2,long(3)) + , make_tree(make_vector('a','b','c')) + , make_tree(make_vector(short('d'),'e','f')) + ) + , make_tree( + make_vector(4,5,6) + , make_tree(make_vector(float(1),'h','i')) + , make_tree(make_vector('j','k','l')) + ) + ) + ); + } + + return boost::report_errors(); +} + From 7cd89c8d9c5fe8a39a3aa78a476f071ad6a8cf6b Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Sat, 7 Oct 2006 15:40:49 +0000 Subject: [PATCH 028/234] additional zip tests for variable length input sequences [SVN r35516] --- test/Jamfile.v2 | 1 + test/algorithm/zip2.cpp | 31 +++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 test/algorithm/zip2.cpp diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 31bedbc3..03acc124 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -40,6 +40,7 @@ import testing ; [ run algorithm/transform.cpp : : : : ] [ run algorithm/join.cpp : : : : ] [ run algorithm/zip.cpp : : : : ] + [ run algorithm/zip2.cpp : : : : ] [ run sequence/as_list.cpp : : : : ] [ run sequence/as_map.cpp : : : : ] diff --git a/test/algorithm/zip2.cpp b/test/algorithm/zip2.cpp new file mode 100644 index 00000000..f7efbb7c --- /dev/null +++ b/test/algorithm/zip2.cpp @@ -0,0 +1,31 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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 + +int main() +{ + using namespace boost::fusion; + { + const vector2 shorter(1,2); + const vector3 longer('a', 'b', 'c'); + const vector2, vector2 > result(vector2(1,'a'), vector2(2,'b')); + BOOST_TEST(zip(shorter, longer) == result); + } + { + const vector3 longer(1,2,3); + const vector2 shorter('a', 'b'); + const vector2, vector2 > result(vector2(1,'a'), vector2(2,'b')); + BOOST_TEST(zip(longer, shorter) == result); + } + return boost::report_errors(); +} From 521574b39d7761bff0d0d0c4bbc3a1dcf2942d1e Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Sat, 7 Oct 2006 15:43:33 +0000 Subject: [PATCH 029/234] zip to shortest of collection of variable length seqs@ [SVN r35517] --- .../view/zip_view/detail/end_impl.hpp | 29 +++++++++-------- .../view/zip_view/detail/size_impl.hpp | 31 +----------------- .../sequence/view/zip_view/zip_view.hpp | 32 +++++++++++-------- 3 files changed, 36 insertions(+), 56 deletions(-) diff --git a/include/boost/fusion/sequence/view/zip_view/detail/end_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/end_impl.hpp index c6a10e9e..95735da8 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/end_impl.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/end_impl.hpp @@ -9,12 +9,17 @@ #if !defined(FUSION_END_IMPL_20060123_2208) #define FUSION_END_IMPL_20060123_2208 -#include #include +#include +#include +#include +#include +#include #include #include #include #include +#include namespace boost { namespace fusion { @@ -22,29 +27,30 @@ namespace boost { namespace fusion { namespace detail { - struct poly_end + template + struct endpoints { template struct result - : result_of::end::type> { - BOOST_MPL_ASSERT((is_reference)); + typedef typename remove_reference::type Seq; + typedef typename result_of::begin::type begin; + typedef typename result_of::advance::type type; }; template typename result::type operator()(Seq& seq) const { - return fusion::end(seq); + return fusion::advance(fusion::begin(seq)); } template typename result::type - operator()(Seq const& seq) const + operator()(Seq const& seq) { - return fusion::end(seq); + return fusion::advance(fusion::begin(seq)); } - }; } @@ -60,19 +66,16 @@ namespace boost { namespace fusion { struct apply { typedef zip_view_iterator< - typename result_of::transform::type, + typename result_of::transform >::type, typename Sequence::category> type; static type call(Sequence& sequence) { return type( - fusion::transform(sequence.sequences_, detail::poly_end())); + fusion::transform(sequence.sequences_, detail::endpoints())); } }; - - - }; } }} diff --git a/include/boost/fusion/sequence/view/zip_view/detail/size_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/size_impl.hpp index 692c9d3f..d6d576f2 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/size_impl.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/size_impl.hpp @@ -9,38 +9,9 @@ #if !defined(FUSION_SIZE_IMPL_20060124_0800) #define FUSION_SIZE_IMPL_20060124_0800 -#include -#include -#include -#include -#include -#include -#include -#include -#include - namespace boost { namespace fusion { struct zip_view_tag; - struct random_access_iterator_tag; - - namespace detail - { - template - struct zip_view_size - { - typedef result_of::find_if< - typename Sequence::sequences, - is_same >, random_access_iterator_tag> > finder; - - typedef typename remove_reference::type>, - result_of::value_at_c, - result_of::deref >::type>::type best_sequence; - - typedef typename fusion::result_of::size type; - }; - } namespace extension { @@ -55,7 +26,7 @@ namespace boost { namespace fusion { { template struct apply - : detail::zip_view_size::type + : Sequence::size {}; }; } diff --git a/include/boost/fusion/sequence/view/zip_view/zip_view.hpp b/include/boost/fusion/sequence/view/zip_view/zip_view.hpp index 5448ab95..ef9d6a8c 100644 --- a/include/boost/fusion/sequence/view/zip_view/zip_view.hpp +++ b/include/boost/fusion/sequence/view/zip_view/zip_view.hpp @@ -44,22 +44,28 @@ namespace boost { namespace fusion { : fusion::result_of::equal_to > >::type, typename fusion::result_of::end::type> {}; - template - struct all_same_size_impl + struct seq_ref_size { - typedef mpl::transform_view > > sizes; - typedef typename mpl::at_c::type first_size; - typedef mpl::iterator_range< - typename mpl::next::type>::type, - typename mpl::end::type> remainder; - typedef typename mpl::find_if > >::type found_difference; - typedef typename is_same::type>::type type; + template + struct result + : result_of::size::type> + {}; + }; + + struct poly_min + { + template + struct result + : mpl::min + {}; }; template - struct all_same_size - : all_same_size_impl::type - {}; + struct min_size + { + typedef typename result_of::transform::type sizes; + typedef typename result_of::fold::type, detail::poly_min>::type type; + }; } struct zip_view_tag; @@ -69,12 +75,12 @@ namespace boost { namespace fusion { struct zip_view : sequence_base< zip_view > { BOOST_MPL_ASSERT((detail::all_references)); - BOOST_MPL_ASSERT((detail::all_same_size)); typedef typename detail::strictest_traversal::type category; typedef zip_view_tag fusion_tag; typedef fusion_sequence_tag tag; // this gets picked up by MPL typedef mpl::true_ is_view; typedef typename fusion::result_of::as_vector::type sequences; + typedef typename detail::min_size::type size; zip_view( const Sequences& seqs) From fc434bd837ed28f84297955eecced784d7a65f00 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Wed, 11 Oct 2006 12:10:06 +0000 Subject: [PATCH 030/234] workaround for vc++ mistakenly calling constructor from T instead of copy constructor when T is derived from vector. [SVN r35553] --- .../sequence/container/vector/vector.hpp | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/include/boost/fusion/sequence/container/vector/vector.hpp b/include/boost/fusion/sequence/container/vector/vector.hpp index c81fc738..e4da4e70 100644 --- a/include/boost/fusion/sequence/container/vector/vector.hpp +++ b/include/boost/fusion/sequence/container/vector/vector.hpp @@ -16,6 +16,8 @@ #include #include #include +#include +#include namespace boost { namespace fusion { @@ -51,9 +53,16 @@ namespace boost { namespace fusion vector(vector const& rhs) : vec(rhs.vec) {} + vector(vector const& rhs) + : vec(rhs.vec) {} + template explicit vector(T const& rhs) +#if BOOST_WORKAROUND(BOOST_MSVC, <= 1400) + : vec(ctor_helper(rhs, is_base_of())) {} +#else : vec(rhs) {} +#endif // Expand a couple of forwarding constructors for arguments // of type (T0), (T0, T1), (T0, T1, T2) etc. Example: @@ -117,10 +126,25 @@ namespace boost { namespace fusion >::type at_impl(I index) const { - return vec.at_impl(mpl::int_()); + return vec.at_impl(mpl::int_()); } private: + +#if BOOST_WORKAROUND(BOOST_MSVC, <= 1400) + static vector_n const& + ctor_helper(vector const& rhs, mpl::true_) + { + return rhs.vec; + } + + template + static T const& + ctor_helper(T const& rhs, mpl::false_) + { + return rhs; + } +#endif vector_n vec; }; From 3732bb538a160b591ee63b790e28599bd6865df1 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Sun, 22 Oct 2006 10:23:04 +0000 Subject: [PATCH 031/234] comeau, intel has problems with this [SVN r35689] --- test/sequence/filter_view.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/sequence/filter_view.cpp b/test/sequence/filter_view.cpp index 7f365545..4d54166e 100644 --- a/test/sequence/filter_view.cpp +++ b/test/sequence/filter_view.cpp @@ -92,7 +92,8 @@ main() } { - // $$$ JDG $$$ For some obscure reason, comeau 4.3.3 has problems with this. + // $$$ 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. typedef vector_c vector_type; From aede3f33004f4659459e2270d8fe12d851480d65 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Tue, 24 Oct 2006 23:26:52 +0000 Subject: [PATCH 032/234] fixed "explicit" problem [SVN r35732] --- include/boost/fusion/sequence/container/list/cons.hpp | 2 +- include/boost/fusion/sequence/container/list/list.hpp | 4 ++-- include/boost/fusion/sequence/container/map/map.hpp | 4 ++-- include/boost/fusion/sequence/container/set/set.hpp | 4 ++-- .../fusion/sequence/container/vector/detail/vector_n.hpp | 7 +++++-- include/boost/fusion/sequence/container/vector/vector.hpp | 6 +++--- include/boost/fusion/tuple/tuple.hpp | 4 ++-- 7 files changed, 17 insertions(+), 14 deletions(-) diff --git a/include/boost/fusion/sequence/container/list/cons.hpp b/include/boost/fusion/sequence/container/list/cons.hpp index 41196974..075bee7d 100644 --- a/include/boost/fusion/sequence/container/list/cons.hpp +++ b/include/boost/fusion/sequence/container/list/cons.hpp @@ -85,7 +85,7 @@ namespace boost { namespace fusion : car(rhs.car), cdr(rhs.cdr) {} template - explicit cons( + cons( Sequence const& seq , typename disable_if< mpl::or_< diff --git a/include/boost/fusion/sequence/container/list/list.hpp b/include/boost/fusion/sequence/container/list/list.hpp index d3743d10..67219fff 100644 --- a/include/boost/fusion/sequence/container/list/list.hpp +++ b/include/boost/fusion/sequence/container/list/list.hpp @@ -35,8 +35,8 @@ namespace boost { namespace fusion list(list const& rhs) : inherited_type(rhs) {} - template - explicit list(T const& rhs) + template + list(Sequence const& rhs) : inherited_type(rhs) {} // Expand a couple of forwarding constructors for arguments diff --git a/include/boost/fusion/sequence/container/map/map.hpp b/include/boost/fusion/sequence/container/map/map.hpp index 82bcfe8e..0a19d823 100644 --- a/include/boost/fusion/sequence/container/map/map.hpp +++ b/include/boost/fusion/sequence/container/map/map.hpp @@ -45,8 +45,8 @@ namespace boost { namespace fusion map() : data() {} - template - explicit map(T const& rhs) + template + map(Sequence const& rhs) : data(rhs) {} #include diff --git a/include/boost/fusion/sequence/container/set/set.hpp b/include/boost/fusion/sequence/container/set/set.hpp index 68b2f7c9..965e6e60 100644 --- a/include/boost/fusion/sequence/container/set/set.hpp +++ b/include/boost/fusion/sequence/container/set/set.hpp @@ -45,8 +45,8 @@ namespace boost { namespace fusion set() : data() {} - template - explicit set(T const& rhs) + template + set(Sequence const& rhs) : data(rhs) {} #include diff --git a/include/boost/fusion/sequence/container/vector/detail/vector_n.hpp b/include/boost/fusion/sequence/container/vector/detail/vector_n.hpp index 923165d0..ab295432 100644 --- a/include/boost/fusion/sequence/container/vector/detail/vector_n.hpp +++ b/include/boost/fusion/sequence/container/vector/detail/vector_n.hpp @@ -88,7 +88,10 @@ typedef mpl::int_ size; BOOST_PP_CAT(vector, N)() {} - + +#if (N == 1) + explicit +#endif BOOST_PP_CAT(vector, N)( BOOST_PP_ENUM_BINARY_PARAMS( N, typename detail::call_param::type _)) @@ -100,7 +103,7 @@ : base_type(BOOST_PP_ENUM_PARAMS(N, vec.m)) {} template - explicit BOOST_PP_CAT(vector, N)( + BOOST_PP_CAT(vector, N)( Sequence const& seq , typename disable_if >::type* dummy = 0) : base_type(base_type::init_from_sequence(seq)) {} diff --git a/include/boost/fusion/sequence/container/vector/vector.hpp b/include/boost/fusion/sequence/container/vector/vector.hpp index e4da4e70..bf7ea597 100644 --- a/include/boost/fusion/sequence/container/vector/vector.hpp +++ b/include/boost/fusion/sequence/container/vector/vector.hpp @@ -56,10 +56,10 @@ namespace boost { namespace fusion vector(vector const& rhs) : vec(rhs.vec) {} - template - explicit vector(T const& rhs) + template + vector(Sequence const& rhs) #if BOOST_WORKAROUND(BOOST_MSVC, <= 1400) - : vec(ctor_helper(rhs, is_base_of())) {} + : vec(ctor_helper(rhs, is_base_of())) {} #else : vec(rhs) {} #endif diff --git a/include/boost/fusion/tuple/tuple.hpp b/include/boost/fusion/tuple/tuple.hpp index 2e5ef15c..1e3d9cca 100644 --- a/include/boost/fusion/tuple/tuple.hpp +++ b/include/boost/fusion/tuple/tuple.hpp @@ -30,8 +30,8 @@ namespace boost { namespace fusion tuple() : base_type() {} - template - explicit tuple(T const& rhs) + template + tuple(Sequence const& rhs) : base_type(rhs) {} #include From 7ba53d33ce6baf75df6d6cbeff59f7cd4eec0e39 Mon Sep 17 00:00:00 2001 From: Eric Niebler Date: Wed, 25 Oct 2006 05:27:43 +0000 Subject: [PATCH 033/234] minor bug fixes [SVN r35735] --- .../sequence/view/ext_/segmented_iterator.hpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/include/boost/fusion/sequence/view/ext_/segmented_iterator.hpp b/include/boost/fusion/sequence/view/ext_/segmented_iterator.hpp index f242aa43..acde578c 100755 --- a/include/boost/fusion/sequence/view/ext_/segmented_iterator.hpp +++ b/include/boost/fusion/sequence/view/ext_/segmented_iterator.hpp @@ -13,6 +13,7 @@ #include #include #include +#include #include #include #include @@ -41,6 +42,11 @@ namespace boost { namespace fusion > {}; + template + struct is_empty + : is_empty + {}; + struct segmented_range_tag; //////////////////////////////////////////////////////////////////////////// @@ -48,6 +54,7 @@ namespace boost { namespace fusion struct segmented_range : sequence_base > { + BOOST_MPL_ASSERT_NOT((is_reference)); typedef mpl::bool_ is_segmented; typedef segmented_range_tag fusion_tag; typedef fusion_sequence_tag tag; // this gets picked up by MPL @@ -194,7 +201,8 @@ namespace boost { namespace fusion static type call(Sequence &seq) { - return type(fusion::segments(seq)); + segments segs(fusion::segments(seq)); + return type(segs); } }; @@ -239,7 +247,8 @@ namespace boost { namespace fusion static type call(Sequence &seq, State const &state) { range rng(as_segmented_range::call(seq)); - return push::call(*fusion::begin(rng), fusion::make_cons(rng, state)); + next_ref nxt(*fusion::begin(rng)); + return push::call(nxt, fusion::make_cons(rng, state)); } }; From 1c3c70f4ccad4d5c24da173ebdb6b360905383af Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Wed, 25 Oct 2006 09:05:00 +0000 Subject: [PATCH 034/234] added test for returning a tuple of double with conversion from a tuple of ints [SVN r35740] --- test/sequence/copy.hpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/test/sequence/copy.hpp b/test/sequence/copy.hpp index 665983c7..7e88caf4 100644 --- a/test/sequence/copy.hpp +++ b/test/sequence/copy.hpp @@ -31,6 +31,12 @@ namespace struct DD { operator CC() const { return CC(); }; }; } +boost::fusion::FUSION_SEQUENCE +foo(int i) +{ + return boost::fusion::FUSION_MAKE(i, i+1, i+2, i+3); +} + void test() { @@ -60,4 +66,7 @@ test() BOOST_TEST(i==1); BOOST_TEST(c=='a'); BOOST_TEST(d>5.4 && d<5.6); + + // returning a tuple with conversion + foo(2); } From bac5e1b5c574931e9d391afc319555982803e523 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Thu, 26 Oct 2006 07:45:43 +0000 Subject: [PATCH 035/234] adds result metafunction for make_pair and pair members [SVN r35748] --- include/boost/fusion/support/pair.hpp | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/include/boost/fusion/support/pair.hpp b/include/boost/fusion/support/pair.hpp index e69c631c..8cbc841d 100644 --- a/include/boost/fusion/support/pair.hpp +++ b/include/boost/fusion/support/pair.hpp @@ -1,5 +1,6 @@ /*============================================================================= Copyright (c) 2005 Joel de Guzman + Copyright (c) 2006 Tobias Schwinger Use, modification and distribution is subject to the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at @@ -40,8 +41,30 @@ namespace boost { namespace fusion Second second; }; + namespace result_of + { + template + struct make_pair + { + typedef fusion::pair::type> type; + }; + + template + struct first + { + typedef typename Pair::first_type type; + }; + + template + struct second + { + typedef typename Pair::second_type type; + }; + } + template - inline pair::type> + inline typename result_of::make_pair::type make_pair(Second const& val) { return pair::type>(val); From f6ebceef8a3214aae5e87fcd1878c548c375fecc Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Thu, 26 Oct 2006 07:46:43 +0000 Subject: [PATCH 036/234] documents result metafunctions for make_pair and pair members [SVN r35749] --- doc/support.qbk | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/doc/support.qbk b/doc/support.qbk index 5815c4ec..9736a484 100644 --- a/doc/support.qbk +++ b/doc/support.qbk @@ -266,6 +266,22 @@ It is used as elements in __map__s, for example. template struct pair; + namespace result_of + { + template + struct first; + + template + struct second; + + template + struct make_pair; + } + + template + typename result_of::make_pair::type + make_pair(Second const &); + [heading Template parameters] [table @@ -287,8 +303,10 @@ It is used as elements in __map__s, for example. [table [[Expression] [Semantics]] - [[`P::first_type`] [The type of the first template parameter, `F`.]] - [[`P::second_type`] [The type of the second template parameter, `S`.]] + [[`P::first_type`] [The type of the first template parameter, `F`, equivalent to + `result_of::first

          ::type`. ]] + [[`P::second_type`] [The type of the second template parameter, `S`, equivalent to + `result_of::second

          ::type`. ]] [[`P()`] [Default construction.]] [[`P(s)`] [Construct a pair given value for the second type, `s`.]] [[`P(p2)`] [Copy constructs a pair from another pair, `p2`.]] From eca5a201e9d5714de62d2f39eea85e96168e37d4 Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Sun, 29 Oct 2006 21:16:00 +0000 Subject: [PATCH 037/234] added at impl for transform view random access [SVN r35782] --- .../view/transform_view/detail/at_impl.hpp | 64 +++++++++++++++++++ .../view/transform_view/transform_view.hpp | 4 ++ 2 files changed, 68 insertions(+) create mode 100644 include/boost/fusion/sequence/view/transform_view/detail/at_impl.hpp diff --git a/include/boost/fusion/sequence/view/transform_view/detail/at_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/at_impl.hpp new file mode 100644 index 00000000..3d935c26 --- /dev/null +++ b/include/boost/fusion/sequence/view/transform_view/detail/at_impl.hpp @@ -0,0 +1,64 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_AT_IMPL_20061029_1946) +#define BOOST_FUSION_AT_IMPL_20061029_1946 + +#include +#include +#include + +namespace boost { namespace fusion { + struct transform_view_tag; + struct transform_view2_tag; + + namespace extension + { + template + struct at_impl; + + template<> + struct at_impl + { + template + struct apply + { + typedef typename Seq::transform_type F; + typedef detail::apply_transform_result transform_type; + typedef typename boost::fusion::result_of::at::type value_type; + typedef typename mpl::apply::type type; + + static type call(Seq& seq) + { + return seq.f(boost::fusion::at(seq.seq)); + } + }; + }; + + template<> + struct at_impl + { + template + struct apply + { + typedef typename Seq::transform_type F; + typedef detail::apply_transform_result transform_type; + typedef typename boost::fusion::result_of::at::type value1_type; + typedef typename boost::fusion::result_of::at::type value2_type; + typedef typename mpl::apply::type type; + + static type call(Seq& seq) + { + return seq.f(boost::fusion::at(seq.seq1), boost::fusion::at(seq.seq2)); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/view/transform_view/transform_view.hpp b/include/boost/fusion/sequence/view/transform_view/transform_view.hpp index 1209b0c2..a506c9f9 100644 --- a/include/boost/fusion/sequence/view/transform_view/transform_view.hpp +++ b/include/boost/fusion/sequence/view/transform_view/transform_view.hpp @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -46,6 +47,8 @@ namespace boost { namespace fusion typedef typename result_of::end::type last1_type; typedef typename result_of::end::type last2_type; typedef typename result_of::size::type size; + typedef Sequence1 sequence1_type; + typedef Sequence2 sequence2_type; typedef F transform_type; transform_view(Sequence1& seq1, Sequence2& seq2, F const& binop) @@ -76,6 +79,7 @@ namespace boost { namespace fusion typedef typename result_of::begin::type first_type; typedef typename result_of::end::type last_type; typedef typename result_of::size::type size; + typedef Sequence sequence_type; typedef F transform_type; transform_view(Sequence& seq, F const& f) From 82e6dfd876ecae37e7872ab378e59b69ac481101 Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Sun, 29 Oct 2006 21:17:22 +0000 Subject: [PATCH 038/234] added tests for at_c on transform view [SVN r35783] --- test/sequence/transform_view.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/sequence/transform_view.cpp b/test/sequence/transform_view.cpp index 554ac00f..b6e4ec4e 100644 --- a/test/sequence/transform_view.cpp +++ b/test/sequence/transform_view.cpp @@ -13,6 +13,7 @@ #include #include #include +#include #include #include #include @@ -82,6 +83,7 @@ main() BOOST_TEST((boost::fusion::distance(first_it, next_it) == 1)); BOOST_TEST((*boost::fusion::advance_c<3>(boost::fusion::begin(xform)) == 64)); + BOOST_TEST((boost::fusion::at_c<2>(xform) == 49)); } { @@ -95,6 +97,7 @@ main() std::cout << xform << std::endl; BOOST_TEST((xform == make_vector(15, 17, 19, 21))); + BOOST_TEST((boost::fusion::at_c<2>(xform) == 19)); } return boost::report_errors(); From 6ca462baa0a069adce4737dbe764969c7d74feea Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Mon, 30 Oct 2006 01:20:23 +0000 Subject: [PATCH 039/234] doc updates [SVN r35784] --- doc/html/fusion/algorithms.html | 6 +- .../concepts/polymorphic_function_object.html | 15 +-- doc/html/fusion/algorithms/iteration.html | 2 +- .../iteration/functions/accumulate.html | 38 +++--- .../algorithms/iteration/functions/fold.html | 37 +++--- .../iteration/functions/for_each.html | 33 +++--- .../iteration/metafunctions/accumulate.html | 35 +++--- .../iteration/metafunctions/fold.html | 35 +++--- .../iteration/metafunctions/for_each.html | 25 ++-- doc/html/fusion/algorithms/query.html | 2 +- .../algorithms/query/functions/all.html | 33 +++--- .../algorithms/query/functions/any.html | 33 +++--- .../algorithms/query/functions/count.html | 35 +++--- .../algorithms/query/functions/count_if.html | 33 +++--- .../algorithms/query/functions/find.html | 27 ++--- .../algorithms/query/functions/find_if.html | 27 ++--- .../algorithms/query/functions/none.html | 33 +++--- .../algorithms/query/metafunctions/all.html | 27 ++--- .../algorithms/query/metafunctions/any.html | 27 ++--- .../algorithms/query/metafunctions/count.html | 27 ++--- .../query/metafunctions/count_if.html | 25 ++-- .../algorithms/query/metafunctions/find.html | 25 ++-- .../query/metafunctions/find_if.html | 25 ++-- .../algorithms/query/metafunctions/none.html | 27 ++--- .../fusion/algorithms/transformation.html | 2 +- .../transformation/functions/clear.html | 25 ++-- .../transformation/functions/erase.html | 35 +++--- .../transformation/functions/erase_key.html | 27 ++--- .../transformation/functions/filter.html | 27 ++--- .../transformation/functions/filter_if.html | 29 ++--- .../transformation/functions/insert.html | 31 +++-- .../functions/insert_range.html | 33 +++--- .../transformation/functions/join.html | 29 ++--- .../transformation/functions/pop_back.html | 25 ++-- .../transformation/functions/pop_front.html | 25 ++-- .../transformation/functions/push_back.html | 27 ++--- .../transformation/functions/push_front.html | 27 ++--- .../transformation/functions/remove.html | 27 ++--- .../transformation/functions/remove_if.html | 27 ++--- .../transformation/functions/replace.html | 39 +++--- .../transformation/functions/replace_if.html | 36 +++--- .../transformation/functions/reverse.html | 25 ++-- .../transformation/functions/transform.html | 62 +++++----- .../transformation/functions/zip.html | 30 ++--- .../transformation/metafunctions/clear.html | 21 ++-- .../transformation/metafunctions/erase.html | 31 +++-- .../metafunctions/erase_key.html | 25 ++-- .../transformation/metafunctions/filter.html | 25 ++-- .../metafunctions/filter_if.html | 25 ++-- .../transformation/metafunctions/insert.html | 29 ++--- .../metafunctions/insert_range.html | 31 +++-- .../transformation/metafunctions/join.html | 10 +- .../metafunctions/pop_back.html | 23 ++-- .../metafunctions/pop_front.html | 23 ++-- .../metafunctions/push_back.html | 25 ++-- .../metafunctions/push_front.html | 25 ++-- .../transformation/metafunctions/remove.html | 25 ++-- .../metafunctions/remove_if.html | 27 ++--- .../transformation/metafunctions/replace.html | 25 ++-- .../metafunctions/replace_if.html | 29 ++--- .../transformation/metafunctions/reverse.html | 23 ++-- .../metafunctions/transform.html | 27 ++--- .../transformation/metafunctions/zip.html | 10 +- doc/html/fusion/extension.html | 112 +++++++----------- doc/html/fusion/iterators.html | 2 +- .../concepts/bidirectional_iterator.html | 41 ++----- .../iterators/concepts/forward_iterator.html | 39 ++---- .../concepts/random_access_iterator.html | 28 ++--- .../fusion/iterators/functions/advance.html | 25 ++-- .../fusion/iterators/functions/advance_c.html | 25 ++-- .../fusion/iterators/functions/deref.html | 23 ++-- .../fusion/iterators/functions/distance.html | 27 ++--- doc/html/fusion/iterators/functions/next.html | 23 ++-- .../fusion/iterators/functions/prior.html | 23 ++-- .../iterators/metafunctions/advance.html | 25 ++-- .../iterators/metafunctions/advance_c.html | 25 ++-- .../fusion/iterators/metafunctions/deref.html | 23 ++-- .../iterators/metafunctions/distance.html | 27 ++--- .../iterators/metafunctions/equal_to.html | 21 ++-- .../fusion/iterators/metafunctions/next.html | 23 ++-- .../fusion/iterators/metafunctions/prior.html | 23 ++-- .../iterators/metafunctions/value_of.html | 23 ++-- .../operators/operator_equality.html | 19 ++- .../operators/operator_inequality.html | 19 ++- .../operators/operator_unary_star.html | 23 ++-- doc/html/fusion/notes.html | 16 +-- doc/html/fusion/organization.html | 10 +- doc/html/fusion/preface.html | 25 ++-- doc/html/fusion/quick_start.html | 16 +-- doc/html/fusion/sequences.html | 2 +- doc/html/fusion/sequences/adapted.html | 6 +- .../sequences/adapted/boost__array.html | 8 +- .../sequences/adapted/mpl_sequence.html | 8 +- .../fusion/sequences/adapted/std__pair.html | 8 +- doc/html/fusion/sequences/concepts.html | 4 +- .../concepts/associative_sequence.html | 37 ++---- .../concepts/bidirectional_sequence.html | 39 ++---- .../sequences/concepts/forward_sequence.html | 39 ++---- .../concepts/random_access_sequence.html | 39 ++---- doc/html/fusion/sequences/containers.html | 2 +- .../fusion/sequences/containers/cons.html | 32 ++--- .../fusion/sequences/containers/list.html | 32 ++--- doc/html/fusion/sequences/containers/map.html | 32 ++--- doc/html/fusion/sequences/containers/set.html | 32 ++--- .../fusion/sequences/containers/vector.html | 32 ++--- doc/html/fusion/sequences/conversion.html | 2 +- .../conversion/functions/as_list.html | 21 ++-- .../conversion/functions/as_map.html | 21 ++-- .../conversion/functions/as_set.html | 21 ++-- .../conversion/functions/as_vector.html | 21 ++-- .../conversion/metafunctions/as_list.html | 21 ++-- .../conversion/metafunctions/as_map.html | 21 ++-- .../conversion/metafunctions/as_set.html | 21 ++-- .../conversion/metafunctions/as_vector.html | 21 ++-- doc/html/fusion/sequences/generation.html | 2 +- .../generation/functions/list_tie.html | 21 ++-- .../generation/functions/make_cons.html | 23 ++-- .../generation/functions/make_list.html | 23 ++-- .../generation/functions/make_map.html | 27 ++--- .../generation/functions/make_set.html | 27 ++--- .../generation/functions/make_vector.html | 23 ++-- .../sequences/generation/functions/tiers.html | 6 +- .../generation/functions/vector_tie.html | 21 ++-- .../generation/metafunctions/list_tie.html | 21 ++-- .../generation/metafunctions/make_cons.html | 21 ++-- .../generation/metafunctions/make_list.html | 21 ++-- .../generation/metafunctions/make_map.html | 27 ++--- .../generation/metafunctions/make_set.html | 25 ++-- .../generation/metafunctions/make_vector.html | 21 ++-- .../generation/metafunctions/vector_tie.html | 21 ++-- doc/html/fusion/sequences/intrinsics.html | 6 +- .../sequences/intrinsics/functions/at.html | 21 ++-- .../sequences/intrinsics/functions/at_c.html | 21 ++-- .../intrinsics/functions/at_key.html | 21 ++-- .../sequences/intrinsics/functions/back.html | 21 ++-- .../sequences/intrinsics/functions/begin.html | 21 ++-- .../sequences/intrinsics/functions/empty.html | 21 ++-- .../sequences/intrinsics/functions/end.html | 21 ++-- .../sequences/intrinsics/functions/front.html | 21 ++-- .../intrinsics/functions/has_key.html | 21 ++-- .../sequences/intrinsics/functions/size.html | 21 ++-- .../intrinsics/metafunctions/at.html | 29 ++--- .../intrinsics/metafunctions/at_c.html | 29 ++--- .../intrinsics/metafunctions/at_key.html | 29 ++--- .../intrinsics/metafunctions/back.html | 23 ++-- .../intrinsics/metafunctions/begin.html | 23 ++-- .../intrinsics/metafunctions/empty.html | 23 ++-- .../intrinsics/metafunctions/end.html | 23 ++-- .../intrinsics/metafunctions/front.html | 23 ++-- .../intrinsics/metafunctions/has_key.html | 25 ++-- .../intrinsics/metafunctions/size.html | 23 ++-- .../intrinsics/metafunctions/value_at.html | 25 ++-- .../intrinsics/metafunctions/value_at_c.html | 25 ++-- .../metafunctions/value_at_key.html | 25 ++-- .../sequences/operators/comparison.html | 2 +- .../sequences/operators/comparison/equal.html | 21 ++-- .../operators/comparison/greater_than.html | 19 ++- .../comparison/greater_than_equal.html | 19 ++- .../operators/comparison/less_than.html | 19 ++- .../operators/comparison/less_than_equal.html | 19 ++- .../operators/comparison/not_equal.html | 19 ++- doc/html/fusion/sequences/operators/i_o.html | 2 +- .../fusion/sequences/operators/i_o/in.html | 21 ++-- .../fusion/sequences/operators/i_o/out.html | 21 ++-- doc/html/fusion/sequences/views.html | 2 +- .../fusion/sequences/views/filter_view.html | 32 ++--- .../sequences/views/iterator_range.html | 32 ++--- .../fusion/sequences/views/joint_view.html | 32 ++--- .../fusion/sequences/views/reverse_view.html | 30 ++--- .../fusion/sequences/views/single_view.html | 30 ++--- .../sequences/views/transform_view.html | 30 ++--- doc/html/fusion/sequences/views/zip_view.html | 32 ++--- doc/html/fusion/support/category_of.html | 21 ++-- doc/html/fusion/support/is_sequence.html | 21 ++-- doc/html/fusion/support/is_view.html | 21 ++-- doc/html/fusion/support/pair.html | 54 +++++---- doc/html/fusion/support/tag_of.html | 19 ++- .../fusion/tuples/class_template_tuple.html | 4 +- .../class_template_tuple/construction.html | 4 +- .../class_template_tuple/element_access.html | 4 +- .../relational_operators.html | 4 +- .../tuple_creation_functions.html | 4 +- .../tuple_helper_classes.html | 4 +- doc/html/fusion/tuples/pairs.html | 4 +- doc/html/index.html | 4 +- 185 files changed, 1790 insertions(+), 2518 deletions(-) diff --git a/doc/html/fusion/algorithms.html b/doc/html/fusion/algorithms.html index 9977a0bc..533de96c 100644 --- a/doc/html/fusion/algorithms.html +++ b/doc/html/fusion/algorithms.html @@ -33,7 +33,7 @@

          Transformation

          - + Lazy Evaluation

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

          - + Sequence Extension

          @@ -79,7 +79,7 @@ functions to convert back to the original sequence type.

          - + Header

          diff --git a/doc/html/fusion/algorithms/concepts/polymorphic_function_object.html b/doc/html/fusion/algorithms/concepts/polymorphic_function_object.html
          index 685a8da5..b4034a5d 100644
          --- a/doc/html/fusion/algorithms/concepts/polymorphic_function_object.html
          +++ b/doc/html/fusion/algorithms/concepts/polymorphic_function_object.html
          @@ -29,7 +29,7 @@
                   Function Object">Polymorphic
                   Function Object
           
          - + Description

          @@ -61,7 +61,7 @@

          - + Refinement of
          @@ -69,15 +69,11 @@ MPL Metafunction Class

          - + Expression requirements
          -
          -

          - -

          -
          +
          @@ -94,8 +90,7 @@ -
          F::result<T1, ...TN>::type Unspecified
          -
          +
          diff --git a/doc/html/fusion/algorithms/iteration.html b/doc/html/fusion/algorithms/iteration.html index 083d281e..98766d3f 100644 --- a/doc/html/fusion/algorithms/iteration.html +++ b/doc/html/fusion/algorithms/iteration.html @@ -35,7 +35,7 @@ a sequence repeatedly applying an operation to its elements.

          - + Header

          diff --git a/doc/html/fusion/algorithms/iteration/functions/accumulate.html b/doc/html/fusion/algorithms/iteration/functions/accumulate.html
          index 08f7c7f0..b7f9bdfa 100644
          --- a/doc/html/fusion/algorithms/iteration/functions/accumulate.html
          +++ b/doc/html/fusion/algorithms/iteration/functions/accumulate.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

          @@ -37,7 +37,7 @@ fold.

          - + Synopsis
          @@ -49,12 +49,9 @@
           typename result_of::accumulate<Sequence, State, F>::type accumulate(
               Sequence& seq, State const& initial_state, F const& f);
           
          -
          -

          - - Parameters -

          -
          +
          +

          Table 1.33. Parameters

          +
          @@ -69,27 +66,26 @@ - + + type @@ -97,7 +93,7 @@
          seq A - model of Forward - Sequence, f(eN ....f(e2,f(e1,initial_state))) must be a valid expression for - each element e1 - to eN in seq + Sequence, f(eN ....f(e2,f(e1,initial_state))) must be a valid expression for + each element e1 to + eN in seq Operation's - argumentOperation's argument
          initial_state Any - type Initial state
          f A - model of binary Polymorphic - Function Object + Function Object Operation's argument
          - + Expression Semantics
          @@ -112,21 +108,21 @@ where e1 ...eN are the elements of seq.

          - + Complexity

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

          - + Header
           #include <boost/fusion/algorithm/iteration/accumulate.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/iteration/functions/fold.html b/doc/html/fusion/algorithms/iteration/functions/fold.html
          index f3c73764..864db0d6 100644
          --- a/doc/html/fusion/algorithms/iteration/functions/fold.html
          +++ b/doc/html/fusion/algorithms/iteration/functions/fold.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

          @@ -36,7 +36,7 @@ to each element of a sequence and the previous state.

          - + Synopsis
          @@ -48,12 +48,9 @@
           typename result_of::fold<Sequence, State, F>::type fold(
               Sequence& seq, State const& initial_state, F const& f);
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.32. Parameters

          +
          @@ -68,27 +65,25 @@ - + + type @@ -96,7 +91,7 @@
          seq A - model of Forward - Sequence,f(e) must be a valid expression for - each element e - in seq + Sequence,f(e) must be a valid expression for each + element e in seq Operation's - argumentOperation's argument
          initial_state Any - type Initial state
          f A - model of binary Polymorphic - Function Object + Function Object Operation's argument
          - + Expression Semantics
          @@ -111,21 +106,21 @@ where e1 ...eN are the elements of seq.

          - + Complexity

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

          - + Header
           #include <boost/fusion/algorithm/iteration/fold.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/iteration/functions/for_each.html b/doc/html/fusion/algorithms/iteration/functions/for_each.html
          index 8bb93fda..c25aa70a 100644
          --- a/doc/html/fusion/algorithms/iteration/functions/for_each.html
          +++ b/doc/html/fusion/algorithms/iteration/functions/for_each.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -44,12 +44,9 @@
           typename result_of::for_each<Sequence, F>::type for_each(
               Sequence& seq, F const& f);
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.34. Parameters

          +
          @@ -64,26 +61,24 @@ - + + unary function object
          seq A - model of Forward - Sequence, f(e) must be a valid expression for - each element e - in seq + Sequence, f(e) must be a valid expression for each + element e in seq Operation's - argumentOperation's argument
          f A - unary function object Operation's argument
          - + Expression Semantics
          @@ -98,21 +93,21 @@ in seq.

          - + Complexity

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

          - + Header
           #include <boost/fusion/algorithm/iteration/for_each.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html b/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html
          index 82c1709c..07db6a46 100644
          --- a/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html
          +++ b/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Returns the result type of accumulate.

          - + Synopsis
          @@ -46,12 +46,9 @@
               typedef unspecified type;
           };
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.36. Parameters

          +
          @@ -66,35 +63,35 @@ - + + on forward traversal
          Sequence A - model of Forward - Sequence + Sequence The sequence to iterate
          State Any - typeThe initial state for the first application - of F + typeThe initial state for the first application of + F
          F A - model of binary Polymorphic - Function Object + Function Object The operation to be applied - on forward traversal
          - + Expression Semantics
          @@ -114,14 +111,14 @@ Function Object of type F.

          - + Complexity

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

          - + Header
          diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/fold.html b/doc/html/fusion/algorithms/iteration/metafunctions/fold.html
          index 911060e5..64a6c6cd 100644
          --- a/doc/html/fusion/algorithms/iteration/metafunctions/fold.html
          +++ b/doc/html/fusion/algorithms/iteration/metafunctions/fold.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          Returns the result type of fold.

          - + Synopsis
          @@ -46,12 +46,9 @@
               typedef unspecified type;
           };
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.35. Parameters

          +
          @@ -66,35 +63,35 @@ - + + on forward traversal
          Sequence A - model of Forward - Sequence + Sequence The sequence to iterate
          State Any - typeThe initial state for the first application - of F + typeThe initial state for the first application of + F
          F A - model of binary Polymorphic - Function Object + Function Object The operation to be applied - on forward traversal
          - + Expression Semantics
          @@ -114,14 +111,14 @@ Function Object of type F.

          - + Complexity

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

          - + Header
          diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html b/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html
          index 193a1168..b48e3184 100644
          --- a/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html
          +++ b/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html
          @@ -30,11 +30,11 @@
                       return type of for_each is always void.
                     

          - + Description
          - + Synopsis
          @@ -47,12 +47,9 @@
               typedef void type;
           };
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.37. Parameters

          +
          @@ -67,23 +64,23 @@ + type
          Sequence A - model of Forward - Sequence + Sequence Operation's argument
          F Any - type Operation's argument
          - + Expression Semantics
          @@ -101,14 +98,14 @@ return type is always void.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/query.html b/doc/html/fusion/algorithms/query.html
          index 6624be60..6f3a2880 100644
          --- a/doc/html/fusion/algorithms/query.html
          +++ b/doc/html/fusion/algorithms/query.html
          @@ -33,7 +33,7 @@
                   The query algorithms provide support for searching and analyzing sequences.
                 

          - + Header

          diff --git a/doc/html/fusion/algorithms/query/functions/all.html b/doc/html/fusion/algorithms/query/functions/all.html
          index 9e2f65b4..dc3349a4 100644
          --- a/doc/html/fusion/algorithms/query/functions/all.html
          +++ b/doc/html/fusion/algorithms/query/functions/all.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -48,12 +48,9 @@
           typename result_of::all<Sequence,F>::type all(
               Sequence const& seq, F f);
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.39. Parameters

          +
          @@ -68,26 +65,26 @@ + to search + unary function object
          seq A - model of Forward - Sequence, f(e) is a valid expression, convertible - to bool, for every - element e in seq + Sequence, f(e) is a valid expression, convertible + to bool, for every element + e in seq The sequence - to search
          f A - unary function object The search predicate
          - + Expression Semantics
          @@ -104,21 +101,21 @@ element e in seq.

          - + Complexity

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

          - + Header
           #include <boost/fusion/algorithm/query/all.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/query/functions/any.html b/doc/html/fusion/algorithms/query/functions/any.html
          index 584fc0ba..b9634c87 100644
          --- a/doc/html/fusion/algorithms/query/functions/any.html
          +++ b/doc/html/fusion/algorithms/query/functions/any.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -48,12 +48,9 @@
           typename result_of::any<Sequence,F>::type any(
               Sequence const& seq, F f);
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.38. Parameters

          +
          @@ -68,26 +65,26 @@ + to search + unary function object
          seq A - model of Forward - Sequence, f(e) must be a valid expression, convertible - to bool, for each - element e in seq + Sequence, f(e) must be a valid expression, convertible + to bool, for each element + e in seq The sequence - to search
          f A - unary function object The search predicate
          - + Expression semantics
          @@ -104,21 +101,21 @@ element e in seq.

          - + Complexity

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

          - + Header
           #include <boost/fusion/algorithm/query/any.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/query/functions/count.html b/doc/html/fusion/algorithms/query/functions/count.html
          index 06295ef7..e049fa21 100644
          --- a/doc/html/fusion/algorithms/query/functions/count.html
          +++ b/doc/html/fusion/algorithms/query/functions/count.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -44,12 +44,9 @@
           typename result_of::count<Sequence, T>::type count(
               Sequence const& seq, T const& t);
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.43. Parameters

          +
          @@ -64,27 +61,27 @@ + sequence to search + type
          seq A - model of Forward - Sequence, e == t - must be a valid expression, convertible to bool, - for each element e - in seq + Sequence, e == t + must be a valid expression, convertible to bool, + for each element e + in seq The - sequence to search
          T Any - type The type to count
          - + Expression Semantics
          @@ -100,21 +97,21 @@ t in seq.

          - + Complexity

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

          - + Header
           #include <boost/fusion/algorithm/query/count.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/query/functions/count_if.html b/doc/html/fusion/algorithms/query/functions/count_if.html
          index 14150b0f..db43103e 100644
          --- a/doc/html/fusion/algorithms/query/functions/count_if.html
          +++ b/doc/html/fusion/algorithms/query/functions/count_if.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -45,12 +45,9 @@
           typename result_of::count_if<Sequence, F>::type count_if(
               Sequence const& seq, F f);
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.44. Parameters

          +
          @@ -65,26 +62,26 @@ + to search + unary function object
          seq A - model of Forward - Sequence, f(e) is a valid expression, convertible - to bool, for each - element e in seq + Sequence, f(e) is a valid expression, convertible + to bool, for each element + e in seq The sequence - to search
          f A - unary function object The search predicate
          - + Expression Semantics
          @@ -99,21 +96,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>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/query/functions/find.html b/doc/html/fusion/algorithms/query/functions/find.html
          index 09539234..d1e3edc3 100644
          --- a/doc/html/fusion/algorithms/query/functions/find.html
          +++ b/doc/html/fusion/algorithms/query/functions/find.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -49,12 +49,9 @@
               >
           unspecified find(Sequence& seq);
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.41. Parameters

          +
          @@ -69,23 +66,23 @@ + type
          seq A - model of Forward - Sequence + Sequence The sequence to search
          T Any - type The type to search for
          - + Expression Semantics
          @@ -103,21 +100,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>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/query/functions/find_if.html b/doc/html/fusion/algorithms/query/functions/find_if.html
          index 5f0b81b1..dc662903 100644
          --- a/doc/html/fusion/algorithms/query/functions/find_if.html
          +++ b/doc/html/fusion/algorithms/query/functions/find_if.html
          @@ -30,11 +30,11 @@
                       MPL Lambda Expression evaluates to boost::mpl::true_.
                     

          - + Description
          - + Synopsis
          @@ -50,12 +50,9 @@
               >
           unspecified find_if(Sequence& seq);
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.42. Parameters

          +
          @@ -70,23 +67,23 @@ + unary MPL Lambda Expression
          seq A - model of Forward - Sequence + Sequence The sequence to search
          F A - unary MPL Lambda Expression The search predicate
          - + Expression Semantics
          @@ -105,21 +102,21 @@ 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>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/query/functions/none.html b/doc/html/fusion/algorithms/query/functions/none.html
          index 10878818..14a3db19 100644
          --- a/doc/html/fusion/algorithms/query/functions/none.html
          +++ b/doc/html/fusion/algorithms/query/functions/none.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -48,12 +48,9 @@
           typename result_of::none<Sequence,F>::type none(
               Sequence const& seq, F f);
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.40. Parameters

          +
          @@ -68,26 +65,26 @@ + to search + unary function object
          seq A - model of Forward - Sequence, f(e) is a valid expression, convertible - to bool, for every - element e in seq + Sequence, f(e) is a valid expression, convertible + to bool, for every element + e in seq The sequence - to search
          f A - unary function object The search predicate
          - + Expression Semantics
          @@ -104,21 +101,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>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/query/metafunctions/all.html b/doc/html/fusion/algorithms/query/metafunctions/all.html
          index 7b674ad9..ec66bd45 100644
          --- a/doc/html/fusion/algorithms/query/metafunctions/all.html
          +++ b/doc/html/fusion/algorithms/query/metafunctions/all.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          A metafunction returning the result type of all.

          - + Synopsis
          @@ -46,12 +46,9 @@
               typedef bool type;
           };
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.46. Parameters

          +
          @@ -66,18 +63,18 @@ @@ -85,7 +82,7 @@
          Sequence A - model of Forward - Sequence + Sequence Operation's argument
          F A - model of unary Polymorphic - Function Object + Function Object Operation's argument
          - + Expression Semantics
          @@ -105,14 +102,14 @@ The return type is always bool.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/query/metafunctions/any.html b/doc/html/fusion/algorithms/query/metafunctions/any.html
          index 93506fd0..03d1d144 100644
          --- a/doc/html/fusion/algorithms/query/metafunctions/any.html
          +++ b/doc/html/fusion/algorithms/query/metafunctions/any.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          A metafunction returning the result type of any.

          - + Synopsis
          @@ -46,12 +46,9 @@
               typedef bool type;
           };
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.45. Parameters

          +
          @@ -66,18 +63,18 @@ @@ -85,7 +82,7 @@
          Sequence A - model of Forward - Sequence + Sequence Operation's argument
          F A - model of unary Polymorphic - Function Object + Function Object Operation's argument
          - + Expression Semantics
          @@ -105,14 +102,14 @@ The return type is always bool.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/query/metafunctions/count.html b/doc/html/fusion/algorithms/query/metafunctions/count.html
          index 1799328c..c3ef2654 100644
          --- a/doc/html/fusion/algorithms/query/metafunctions/count.html
          +++ b/doc/html/fusion/algorithms/query/metafunctions/count.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -47,12 +47,9 @@
               typedef int type;
           };
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.50. Parameters

          +
          @@ -62,29 +59,29 @@ + Description + type
          Parameter Requirement heading - Description
          Sequence A - model of Forward - Sequence + Sequence Operation's argument
          T Any - type Operation's argument
          - + Expression Semantics
          @@ -100,14 +97,14 @@ int.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/query/metafunctions/count_if.html b/doc/html/fusion/algorithms/query/metafunctions/count_if.html
          index f73493fb..f97f55f5 100644
          --- a/doc/html/fusion/algorithms/query/metafunctions/count_if.html
          +++ b/doc/html/fusion/algorithms/query/metafunctions/count_if.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -47,12 +47,9 @@
               typedef int type;
           };
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.51. Parameters

          +
          @@ -67,23 +64,23 @@ + unary function object
          Sequence A - model of Forward - Sequence + Sequence Operation's argument
          Pred A - unary function object Operation's argument
          - + Expression Semantics
          @@ -99,14 +96,14 @@ always int.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/query/metafunctions/find.html b/doc/html/fusion/algorithms/query/metafunctions/find.html
          index 98aa8fa4..697666fe 100644
          --- a/doc/html/fusion/algorithms/query/metafunctions/find.html
          +++ b/doc/html/fusion/algorithms/query/metafunctions/find.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -47,12 +47,9 @@
               typedef unspecified type;
           };
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.48. Parameters

          +
          @@ -67,23 +64,23 @@ + type
          Sequence Model - of Forward - Sequence + Sequence Operation's argument
          T Any - type Operation's argument
          - + Expression Semantics
          @@ -100,14 +97,14 @@ in Sequence, or result_of::end<Sequence>::type if there is no such element.

          - + Complexity

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

          - + Header
          diff --git a/doc/html/fusion/algorithms/query/metafunctions/find_if.html b/doc/html/fusion/algorithms/query/metafunctions/find_if.html
          index 0ae75818..e678e5a2 100644
          --- a/doc/html/fusion/algorithms/query/metafunctions/find_if.html
          +++ b/doc/html/fusion/algorithms/query/metafunctions/find_if.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -47,12 +47,9 @@
               typedef unspecified type;
           };
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.49. Parameters

          +
          @@ -67,23 +64,23 @@ + model of MPL Lambda Expression
          Sequence A - model of Forward - Sequence + Sequence Operation's argument
          Pred A - model of MPL Lambda Expression Operation's arguments
          - + Expression Semantics
          @@ -101,14 +98,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
          diff --git a/doc/html/fusion/algorithms/query/metafunctions/none.html b/doc/html/fusion/algorithms/query/metafunctions/none.html
          index c4fd8ef0..525ccc39 100644
          --- a/doc/html/fusion/algorithms/query/metafunctions/none.html
          +++ b/doc/html/fusion/algorithms/query/metafunctions/none.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          A metafunction returning the result type of none.

          - + Synopsis
          @@ -46,12 +46,9 @@
               typedef bool type;
           };
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.47. Parameters

          +
          @@ -66,18 +63,18 @@ @@ -85,7 +82,7 @@
          Sequence A - model of Forward - Sequence + Sequence Operation's argument
          F A - model of unary Polymorphic - Function Object + Function Object Operation's argument
          - + Expression Semantics
          @@ -105,14 +102,14 @@ The return type is always bool.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/transformation.html b/doc/html/fusion/algorithms/transformation.html
          index fed28a64..7d0a1219 100644
          --- a/doc/html/fusion/algorithms/transformation.html
          +++ b/doc/html/fusion/algorithms/transformation.html
          @@ -46,7 +46,7 @@
                   

          - + Header

          diff --git a/doc/html/fusion/algorithms/transformation/functions/clear.html b/doc/html/fusion/algorithms/transformation/functions/clear.html
          index b5a65975..1eb35893 100644
          --- a/doc/html/fusion/algorithms/transformation/functions/clear.html
          +++ b/doc/html/fusion/algorithms/transformation/functions/clear.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

          clear returns an empty sequence.

          - + Synposis
          @@ -42,12 +42,9 @@
               >
           typename result_of::clear<Sequence const>::type clear(Sequence const& seq);
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.61. Parameters

          +
          @@ -61,16 +58,16 @@
          seq A - model of Forward - Sequence + Sequence Operation's argument
          - + Expression Semantics
          @@ -87,21 +84,21 @@ with no elements.

          - + Complexity

          Constant.

          - + Header
           #include <boost/fusion/algorithm/transformation/clear.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/transformation/functions/erase.html b/doc/html/fusion/algorithms/transformation/functions/erase.html
          index a30434ae..1016a97e 100644
          --- a/doc/html/fusion/algorithms/transformation/functions/erase.html
          +++ b/doc/html/fusion/algorithms/transformation/functions/erase.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synposis
          @@ -53,12 +53,9 @@
           typename result_of::erase<Sequence const, First, Last>::type erase(
               Sequence const& seq, First const& it1, Last const& it2);
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.62. Parameters

          +
          @@ -73,18 +70,18 @@ @@ -92,19 +89,19 @@
          seq A - model of Forward - Sequence + Sequence Operation's argument
          it1 A - model of Forward - Iterator + Iterator Iterator into seq
          it2 A - model of Forward - Iterator + Iterator Iterator into seq - after it1 + after it1
          - + Expression Semantics
          @@ -135,21 +132,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>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/transformation/functions/erase_key.html b/doc/html/fusion/algorithms/transformation/functions/erase_key.html
          index a31237db..b1f8a57a 100644
          --- a/doc/html/fusion/algorithms/transformation/functions/erase_key.html
          +++ b/doc/html/fusion/algorithms/transformation/functions/erase_key.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

          @@ -39,7 +39,7 @@ with a given key.

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

          - - Parameters -

          - +
          +

          Table 1.63. Parameters

          +
          @@ -69,23 +66,23 @@ + type
          seq A - model of Associative - Sequence + Sequence Operation's argument
          Key Any - type Key to erase
          - + Expression Semantics
          @@ -103,21 +100,21 @@ except those with key Key.

          - + Complexity

          Constant. Returns a view which is lazily evaluated.

          - + Header
           #include <boost/fusion/algorithm/transformation/erase_key.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/transformation/functions/filter.html b/doc/html/fusion/algorithms/transformation/functions/filter.html
          index a1addc72..201b9707 100644
          --- a/doc/html/fusion/algorithms/transformation/functions/filter.html
          +++ b/doc/html/fusion/algorithms/transformation/functions/filter.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -44,12 +44,9 @@
               >
           typename result_of::filter<Sequence const, T>::type filter(Sequence const& seq);
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.52. Parameters

          +
          @@ -64,23 +61,23 @@ + type
          seq A - model of Forward - Sequence + Sequence Operation's argument
          T Any - type The type to retain
          - + Expression Semantics
          @@ -99,21 +96,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>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/transformation/functions/filter_if.html b/doc/html/fusion/algorithms/transformation/functions/filter_if.html
          index 745515e7..d9407e68 100644
          --- a/doc/html/fusion/algorithms/transformation/functions/filter_if.html
          +++ b/doc/html/fusion/algorithms/transformation/functions/filter_if.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -45,12 +45,9 @@
               >
           typename result_of::filter_if<Sequence const, Pred>::type filter_if(Sequence const& seq);
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.53. Parameters

          +
          @@ -65,24 +62,24 @@ + unary MPL Lambda Expression + by
          seq A - model of Forward - Sequence + Sequence Operation's argument
          Pred A - unary MPL Lambda Expression The predicate to filter - by
          - + Expression Semantics
          @@ -102,21 +99,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>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/transformation/functions/insert.html b/doc/html/fusion/algorithms/transformation/functions/insert.html
          index 6b052da6..5faf5c17 100644
          --- a/doc/html/fusion/algorithms/transformation/functions/insert.html
          +++ b/doc/html/fusion/algorithms/transformation/functions/insert.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synposis
          @@ -45,12 +45,9 @@
               >
           unspecified insert(Sequence const& seq, Pos const& pos, T const& t);
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.64. Parameters

          +
          @@ -65,32 +62,32 @@ + type
          seq A - model of Forward - Sequence + Sequence Operation's argument
          pos A - model of Forward - Iterator + Iterator The position to insert at
          t Any - type The value to insert
          - + Expression Semantics
          @@ -110,21 +107,21 @@ pos.

          - + Complexity

          Constant. Returns a view which is lazily evaluated.

          - + Header
           #include <boost/fusion/algorithm/transformation/insert.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/transformation/functions/insert_range.html b/doc/html/fusion/algorithms/transformation/functions/insert_range.html
          index 58e90f43..6d3d7982 100644
          --- a/doc/html/fusion/algorithms/transformation/functions/insert_range.html
          +++ b/doc/html/fusion/algorithms/transformation/functions/insert_range.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

          @@ -34,7 +34,7 @@ iterator.

          - + Synposis
          @@ -46,12 +46,9 @@
           typename result_of::insert_range<Sequence const, Pos, Range>::type insert_range(
               Sequence const& seq, Pos const& pos, Range const& range);
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.65. Parameters

          +
          @@ -66,27 +63,27 @@ @@ -94,7 +91,7 @@
          seq A - model of Forward - Sequence + Sequence Operation's argument
          pos A - model of Forward - Iterator + Iterator The position to insert at
          range A - model of Forward - Sequence + Sequence Range to insert
          - + Expression Semantics
          @@ -114,21 +111,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>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/transformation/functions/join.html b/doc/html/fusion/algorithms/transformation/functions/join.html
          index 92cd1ed8..c2d3062d 100644
          --- a/doc/html/fusion/algorithms/transformation/functions/join.html
          +++ b/doc/html/fusion/algorithms/transformation/functions/join.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -43,12 +43,9 @@
               typename RhSequence>
           typename result_of::join<LhSequence, RhSequence>::type join(LhSequence const& lhs, RhSequence const& rhs);
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.66. Parameters

          +
          @@ -63,18 +60,18 @@ @@ -82,7 +79,7 @@
          lhs A - model of Forward - Sequence + Sequence Operation's argument
          rhs A - model of Forward - Sequence + Sequence Operation's argument
          - + Expression Semantics
          @@ -101,21 +98,21 @@ The order of th elements is preserved.

          - + Complexity

          Constant. Returns a view which is lazily evaluated.

          - + Header
           #include <boost/fusion/algorithm/transformation/join.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/transformation/functions/pop_back.html b/doc/html/fusion/algorithms/transformation/functions/pop_back.html
          index 07b02aa9..e8b1a026 100644
          --- a/doc/html/fusion/algorithms/transformation/functions/pop_back.html
          +++ b/doc/html/fusion/algorithms/transformation/functions/pop_back.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -42,12 +42,9 @@
               >
           typename result_of::pop_back<Sequence const>::type pop_back(Sequence const& seq);
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.68. Parameters

          +
          @@ -61,16 +58,16 @@
          seq A - model of Forward - Sequence + Sequence Operation's argument
          - + Expression Semantics
          @@ -89,21 +86,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>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/transformation/functions/pop_front.html b/doc/html/fusion/algorithms/transformation/functions/pop_front.html
          index 1427e71b..96bb3e14 100644
          --- a/doc/html/fusion/algorithms/transformation/functions/pop_front.html
          +++ b/doc/html/fusion/algorithms/transformation/functions/pop_front.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -42,12 +42,9 @@
               >
           typename result_of::pop_front<Sequence const>::type pop_front(Sequence const& seq);
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.69. Parameters

          +
          @@ -61,16 +58,16 @@
          seq A - model of Forward - Sequence + Sequence Operation's argument
          - + Expression Semantics
          @@ -89,21 +86,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>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/transformation/functions/push_back.html b/doc/html/fusion/algorithms/transformation/functions/push_back.html
          index fa6422f8..7a0b631c 100644
          --- a/doc/html/fusion/algorithms/transformation/functions/push_back.html
          +++ b/doc/html/fusion/algorithms/transformation/functions/push_back.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -44,12 +44,9 @@
           typename result_of::push_back<Sequence, T>::type push_back(
               Sequence const& seq, T const& t);
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.70. Parameters

          +
          @@ -64,23 +61,23 @@ + type
          seq A - model of Forward - Sequence + Sequence Operation's argument
          t Any - type The value to add to the end
          - + Expression Semantics
          @@ -99,21 +96,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>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/transformation/functions/push_front.html b/doc/html/fusion/algorithms/transformation/functions/push_front.html
          index 0b3a7ac0..eaa4eeaa 100644
          --- a/doc/html/fusion/algorithms/transformation/functions/push_front.html
          +++ b/doc/html/fusion/algorithms/transformation/functions/push_front.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -44,12 +44,9 @@
           typename result_of::push_front<Sequence, T>::type push_front(
               Sequence const& seq, T const& t);
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.71. Parameters

          +
          @@ -64,23 +61,23 @@ + type
          seq A - model of Forward - Sequence + Sequence Operation's argument
          t Any - type The value to add to the beginning
          - + Expression Semantics
          @@ -100,21 +97,21 @@ seq.

          - + Complexity

          Constant. Returns a view which is lazily evaluated.

          - + Header
           #include <boost/fusion/algorithm/transformation/push_front.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/transformation/functions/remove.html b/doc/html/fusion/algorithms/transformation/functions/remove.html
          index 55d66434..d775ac0e 100644
          --- a/doc/html/fusion/algorithms/transformation/functions/remove.html
          +++ b/doc/html/fusion/algorithms/transformation/functions/remove.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -44,12 +44,9 @@
               >
           typename result_of::remove<Sequence const, T>::type replace(Sequence const& seq);
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.58. Parameters

          +
          @@ -64,23 +61,23 @@ + type
          seq A - model of Forward - Sequence + Sequence Operation's argument
          T Any - type Type to remove
          - + Expression Semantics
          @@ -99,21 +96,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>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/transformation/functions/remove_if.html b/doc/html/fusion/algorithms/transformation/functions/remove_if.html
          index d3d88833..d1c92cd2 100644
          --- a/doc/html/fusion/algorithms/transformation/functions/remove_if.html
          +++ b/doc/html/fusion/algorithms/transformation/functions/remove_if.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -44,12 +44,9 @@
               >
           typename result_of::remove_if<Sequence const, Pred>::type remove_if(Sequence const& seq);
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.59. Parameters

          +
          @@ -64,23 +61,23 @@ + model of unary MPL Lambda Expression
          seq A - model of Forward - Sequence + Sequence Operation's argument
          Pred A - model of unary MPL Lambda Expression Removal predicate
          - + Expression Semantics
          @@ -99,21 +96,21 @@ Pred evaluates to boost::mpl::true_. Equivalent to filter<boost::mpl::not_<Pred> >(seq).

          - + Complexity

          Constant. Returns a view which is lazily evaluated.

          - + Header
           #include <boost/fusion/algorithm/transformation/remove_if.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/transformation/functions/replace.html b/doc/html/fusion/algorithms/transformation/functions/replace.html
          index ba8451e0..5d950dca 100644
          --- a/doc/html/fusion/algorithms/transformation/functions/replace.html
          +++ b/doc/html/fusion/algorithms/transformation/functions/replace.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -45,12 +45,9 @@
           typename result_of::replace<Sequence const, T>::type replace(
               Sequence const& seq, T const& old_value, T const& new_value);
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.56. Parameters

          +
          @@ -65,34 +62,34 @@ + argument + type + type
          seq A - model of Forward - Sequence, e == old_value - is a valid expression, convertible to bool, - for each element e - in seq with type - convertible to T + Sequence, e == old_value + is a valid expression, convertible to bool, + for each element e + in seq with type + convertible to T Operation's - argument
          old_value Any - type Value to replace
          new_value Any - type Replacement value
          - + Expression Semantics
          @@ -111,21 +108,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>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/transformation/functions/replace_if.html b/doc/html/fusion/algorithms/transformation/functions/replace_if.html
          index a6f4b693..17fdf850 100644
          --- a/doc/html/fusion/algorithms/transformation/functions/replace_if.html
          +++ b/doc/html/fusion/algorithms/transformation/functions/replace_if.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -46,12 +46,9 @@
           typename result_of::replace_if<Sequence const, F, T>::type replace_if(
               Sequence const& seq, F f, T const& new_value);
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.57. Parameters

          +
          @@ -66,33 +63,32 @@ - + + type
          seq A - model of Forward - Sequence + Sequence Operation's argument
          f A - function object for which f(e) is a valid expression, convertible - to bool, for each - element e in seq + function object for which f(e) is a valid expression, convertible + to bool, for each element + e in seq Operation's - argumentOperation's argument
          new_value Any - type Replacement value
          - + Expression Semantics
          @@ -112,21 +108,21 @@ evaluates to true.

          - + Complexity

          Constant. Returns a view which is lazily evaluated.

          - + Header
           #include <boost/fusion/algorithm/transformation/replace_if.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/transformation/functions/reverse.html b/doc/html/fusion/algorithms/transformation/functions/reverse.html
          index 89d025a1..e626a741 100644
          --- a/doc/html/fusion/algorithms/transformation/functions/reverse.html
          +++ b/doc/html/fusion/algorithms/transformation/functions/reverse.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

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

          - + Synposis
          @@ -42,12 +42,9 @@
               >
           typename result_of::reverse<Sequence const>::type reverse(Sequence const& seq);
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.60. Parameters

          +
          @@ -61,16 +58,16 @@
          seq A - model of Bidirectional - Sequence + Sequence Operation's argument
          - + Expression Semantics
          @@ -88,21 +85,21 @@ in reverse order.

          - + Complexity

          Constant. Returns a view which is lazily evaluated.

          - + Header
           #include <boost/fusion/algorithm/transformation/reverse.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/transformation/functions/transform.html b/doc/html/fusion/algorithms/transformation/functions/transform.html
          index d9669718..d16be2fc 100644
          --- a/doc/html/fusion/algorithms/transformation/functions/transform.html
          +++ b/doc/html/fusion/algorithms/transformation/functions/transform.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

          @@ -39,7 +39,7 @@ to each element of seq.

          - + Unary version synopsis
          @@ -51,12 +51,9 @@ typename result_of::transform<Sequence const, F>::type transform( Sequence const& seq, F f);
          -
          -

          - - Parameters -

          - +
          +

          Table 1.54. Parameters

          +
          @@ -71,28 +68,28 @@ + function
          seq A - model of Forward - Sequence + Sequence Operation's argument
          f A - model of unary Polymorphic - Function Object where f(e) is a valid expression for each - element e of seq + Function Object where f(e) is a valid expression for each element + e of seq Transformation - function
          - + Expression Semantics
          @@ -110,7 +107,7 @@ within seq.

          - + Binary version synopsis
          @@ -123,12 +120,9 @@ typename result_of::transform<Sequence1 const, Sequence2 const, F>::type transform( Sequence1 const& seq1, Sequence2 const& seq2, F f);
          -
          -

          - - Parameters -

          - +
          +

          Table 1.55. Parameters

          +
          @@ -143,30 +137,30 @@ + Function Object where f(e1, e2) is a valid expression for each pair + of elements e1 and + e2 of seq1 and seq2 + respectively @@ -183,21 +177,21 @@ within seq1 and seq2 respectively.

          - + Complexity

          Constant. Returns a view which is lazily evaluated.

          - + Header
           #include <boost/fusion/algorithm/transformation/transform.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/transformation/functions/zip.html b/doc/html/fusion/algorithms/transformation/functions/zip.html
          index 995b94c1..fe9d27f5 100644
          --- a/doc/html/fusion/algorithms/transformation/functions/zip.html
          +++ b/doc/html/fusion/algorithms/transformation/functions/zip.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -47,12 +47,9 @@
           typename result_of::zip<Sequence1, Sequence2, ... SequenceN>::type 
           zip(Sequence1 const& seq1, Sequence2 const& seq2, ... SequenceN const& seqN);
           
          -
          -

          - - Parameters -

          -
          seq1 A - model of Forward - Sequence + Sequence Operation's argument
          seq2 A - model of Forward - Sequence + Sequence Operation's argument
          f A - model of binary Polymorphic - Function Object where f(e1, e2) is a valid expression for each - pair of elements e1 - and e2 of seq1 and seq2 - respectively Transformation function
          +
          +

          Table 1.67. Parameters

          +
          @@ -65,19 +62,18 @@ - + Sequence.
          -seq1 to - seqN +seq1 to seqN Each - sequence is a model of Forward - Sequence. Operation's argument
          - + Expression Semantics
          @@ -97,21 +93,21 @@ ('a', 'b', 'c') would return ((1, 'a'),(2, 'b'),(3, 'c'))

          - + Complexity

          Constant. Returns a view which is lazily evaluated.

          - + Header
           #include <boost/fusion/algorithm/transformation/zip.hpp>
           
          - + Example
          diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/clear.html b/doc/html/fusion/algorithms/transformation/metafunctions/clear.html
          index b16298fc..b0e7adf0 100644
          --- a/doc/html/fusion/algorithms/transformation/metafunctions/clear.html
          +++ b/doc/html/fusion/algorithms/transformation/metafunctions/clear.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

          @@ -34,7 +34,7 @@ type.

          - + Synopsis
          @@ -46,12 +46,9 @@
               typedef unspecified type;
           };
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.80. Parameters

          +
          @@ -65,13 +62,13 @@ + type
          Sequence Any - type Operation's argument
          - + Expression Semantics
          @@ -87,14 +84,14 @@ Semantics: Returns an empty sequence.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/erase.html b/doc/html/fusion/algorithms/transformation/metafunctions/erase.html
          index ed47034b..21f4d19d 100644
          --- a/doc/html/fusion/algorithms/transformation/metafunctions/erase.html
          +++ b/doc/html/fusion/algorithms/transformation/metafunctions/erase.html
          @@ -30,11 +30,11 @@
                       and range delimiting iterator types.
                     

          - + Description
          - + Synopsis
          @@ -47,12 +47,9 @@
               typedef unspecified type;
           };
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.81. Parameters

          +
          @@ -67,27 +64,27 @@ @@ -95,7 +92,7 @@
          Sequence A - model of Forward - Sequence + Sequence Operation's argument
          It1 A - model of Forward - Iterator + Iterator Operation's argument
          It2 A - model of Forward - Iterator + Iterator Operation's argument
          - + Expression Semantics
          @@ -125,14 +122,14 @@ and It2 removed.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html b/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html
          index d80246f4..967dbdf3 100644
          --- a/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html
          +++ b/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -47,12 +47,9 @@
               typedef unspecified type;
           };
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.82. Parameters

          +
          @@ -67,23 +64,23 @@ + type
          Sequence A - model of Associative - Sequence + Sequence Operation's argument
          Key Any - type Key type
          - + Expression Semantics
          @@ -101,14 +98,14 @@ except those with key Key.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/filter.html b/doc/html/fusion/algorithms/transformation/metafunctions/filter.html
          index 5207e822..a35df094 100644
          --- a/doc/html/fusion/algorithms/transformation/metafunctions/filter.html
          +++ b/doc/html/fusion/algorithms/transformation/metafunctions/filter.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -47,12 +47,9 @@
               typedef unspecified type;
           };
           
          -
          -

          - - Parameter -

          - +
          +

          Table 1.72. Parameter

          +
          @@ -67,23 +64,23 @@ + type
          Sequence A - model of Forward - Sequence + Sequence Operation's argument
          T Any - type Type to retain
          - + Expression Semantics
          @@ -102,14 +99,14 @@ to result_of::filter_if<Sequence, boost::is_same<mpl::_, T> >::type.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html
          index 2b81831a..14ed41df 100644
          --- a/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html
          +++ b/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

          @@ -34,7 +34,7 @@ and unary MPL Lambda Expression predicate type.

          - + Synopsis
          @@ -47,12 +47,9 @@
               typedef unspecified type;
           };
           
          -
          -

          - - Parameter -

          - +
          +

          Table 1.73. Parameter

          +
          @@ -67,23 +64,23 @@ + unary MPL Lambda Expression
          Sequence A - model of Forward - Sequence + Sequence Operation's argument
          Pred A - unary MPL Lambda Expression Type to retain
          - + Expression Semantics
          @@ -102,14 +99,14 @@ to boost::mpl::true_.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/insert.html b/doc/html/fusion/algorithms/transformation/metafunctions/insert.html
          index 408bab32..93332968 100644
          --- a/doc/html/fusion/algorithms/transformation/metafunctions/insert.html
          +++ b/doc/html/fusion/algorithms/transformation/metafunctions/insert.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -48,12 +48,9 @@
               typedef unspecified type;
           };
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.83. Parameters

          +
          @@ -68,32 +65,32 @@ + type
          Sequence A - model of Forward - Sequence + Sequence Operation's argument
          Position A - model of Forward - Iterator + Iterator Operation's argument
          T Any - type Operation's argument
          - + Expression Semantics
          @@ -112,14 +109,14 @@ in Sequence.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html b/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html
          index 85e236b6..4f22957d 100644
          --- a/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html
          +++ b/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -48,12 +48,9 @@
               typedef unspecified type;
           };
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.84. Parameters

          +
          @@ -68,27 +65,27 @@ @@ -96,7 +93,7 @@
          Sequence A - model of Forward - Sequence + Sequence Operation's argument
          Position A - model of Forward - Iterator + Iterator Operation's argument
          Range A - model of Forward - Sequence + Sequence Operation's argument
          - + Expression Semantics
          @@ -115,14 +112,14 @@ into Sequence.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/join.html b/doc/html/fusion/algorithms/transformation/metafunctions/join.html
          index 2c65e3d5..93aafbbf 100644
          --- a/doc/html/fusion/algorithms/transformation/metafunctions/join.html
          +++ b/doc/html/fusion/algorithms/transformation/metafunctions/join.html
          @@ -26,14 +26,14 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -47,7 +47,7 @@
           };
           
          - + Expression Semantics
          @@ -66,14 +66,14 @@ The order of the elements in the 2 sequences is preserved.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html b/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html
          index eaaf66d3..694e30d2 100644
          --- a/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html
          +++ b/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

          @@ -34,7 +34,7 @@ type.

          - + Synopsis
          @@ -46,12 +46,9 @@
               typedef unspecified type;
           };
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.85. Parameters

          +
          @@ -65,16 +62,16 @@
          Sequence A - model of Forward - Sequence + Sequence Operation's argument
          - + Expression Semantics
          @@ -92,14 +89,14 @@ except the last element.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html b/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html
          index 125498df..ccd579a6 100644
          --- a/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html
          +++ b/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

          @@ -34,7 +34,7 @@ type.

          - + Synopsis
          @@ -46,12 +46,9 @@
               typedef unspecified type;
           };
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.86. Parameters

          +
          @@ -65,16 +62,16 @@
          Sequence A - model of Forward - Sequence + Sequence Operation's argument
          - + Expression Semantics
          @@ -92,14 +89,14 @@ except the first element.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html b/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html
          index 0b4fd1c2..1ee62780 100644
          --- a/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html
          +++ b/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -47,12 +47,9 @@
               typedef unspecified type;
           };
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.87. Parameters

          +
          @@ -67,23 +64,23 @@ + type
          Sequence A - model of Forward - Sequence + Sequence Operation's argument
          T Any - type Operation's argument
          - + Expression Semantics
          @@ -102,14 +99,14 @@ added to the end.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html b/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html
          index d64c2e38..59866717 100644
          --- a/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html
          +++ b/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -47,12 +47,9 @@
               typedef unspecified type;
           };
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.88. Parameters

          +
          @@ -67,23 +64,23 @@ + type
          Sequence A - model of Forward - Sequence + Sequence Operation's argument
          T Any - type Operation's argument
          - + Expression Semantics
          @@ -102,14 +99,14 @@ added to the beginning.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/remove.html b/doc/html/fusion/algorithms/transformation/metafunctions/remove.html
          index c0d45701..c1991050 100644
          --- a/doc/html/fusion/algorithms/transformation/metafunctions/remove.html
          +++ b/doc/html/fusion/algorithms/transformation/metafunctions/remove.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -47,12 +47,9 @@
               typedef unspecified type;
           };
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.77. Parameters

          +
          @@ -67,23 +64,23 @@ + type
          Sequence A - model of Forward - Sequence + Sequence Operation's argument
          T Any - type Remove elements of this type
          - + Expression Semantics
          @@ -102,14 +99,14 @@ to result_of::replace_if<Sequence, boost::is_same<mpl::_, T> >::type.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html
          index 83cdd1bc..49e8d017 100644
          --- a/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html
          +++ b/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

          @@ -34,7 +34,7 @@ and unary MPL Lambda Expression predicate types.

          - + Synopsis
          @@ -47,12 +47,9 @@
               typedef unspecified type;
           };
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.78. Parameters

          +
          @@ -67,25 +64,25 @@ + model of unary MPL Lambda Expression
          Sequence A - model of Forward - Sequence + Sequence Operation's argument
          Pred A - model of unary MPL Lambda Expression Remove elements - which evaluate to boost::mpl::true_ + which evaluate to boost::mpl::true_
          - + Expression Semantics
          @@ -104,14 +101,14 @@ to boost::mpl::false_.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/replace.html b/doc/html/fusion/algorithms/transformation/metafunctions/replace.html
          index 114f5080..7fb71c43 100644
          --- a/doc/html/fusion/algorithms/transformation/metafunctions/replace.html
          +++ b/doc/html/fusion/algorithms/transformation/metafunctions/replace.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -47,12 +47,9 @@
               typedef unspecified type;
           };
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.75. Parameters

          +
          @@ -67,23 +64,23 @@ + type
          Sequence A - model of Forward - Sequence + Sequence Operation's argument
          T Any - type The type of the search and replacement objects
          - + Expression Semantics
          @@ -100,14 +97,14 @@ replace.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html
          index cb599ff9..a560eb78 100644
          --- a/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html
          +++ b/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -49,12 +49,9 @@
               typedef unspecified type;
           };
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.76. Parameters

          +
          @@ -69,32 +66,32 @@ + type
          Sequence A - model of Forward - Sequence + Sequence Operation's argument
          F A - model of unary Polymorphic - Function Object + Function Object Replacement predicate
          T Any - type The type of the replacement object
          - + Expression Semantics
          @@ -111,14 +108,14 @@ replace_if.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html b/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html
          index 49cfedbe..ec6c3a0c 100644
          --- a/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html
          +++ b/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

          @@ -34,7 +34,7 @@ type.

          - + Synopsis
          @@ -46,12 +46,9 @@
               typedef unspecified type;
           };
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.79. Parameters

          +
          @@ -65,16 +62,16 @@
          Sequence A - model of Bidirectional - Sequence + Sequence Operation's argument
          - + Expression Semantics
          @@ -91,14 +88,14 @@ elements in the reverse order to Sequence.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/transform.html b/doc/html/fusion/algorithms/transformation/metafunctions/transform.html
          index 5b231920..422f821c 100644
          --- a/doc/html/fusion/algorithms/transformation/metafunctions/transform.html
          +++ b/doc/html/fusion/algorithms/transformation/metafunctions/transform.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

          @@ -36,7 +36,7 @@ Function Object types.

          - + Synopsis
          @@ -49,12 +49,9 @@
               typedef unspecified type;
           };
           
          -
          -

          - - Parameters -

          - +
          +

          Table 1.74. Parameters

          +
          @@ -69,17 +66,17 @@ + Sequence  @@ -87,7 +84,7 @@
          Sequence A - model of Forward - Sequence  Operation's argument
          F A - model of unary Polymorphic - Function Object + Function Object Transformation function object
          - + Expression Semantics
          @@ -104,14 +101,14 @@ F::apply<E>::type for each element type E in Sequence.

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/zip.html b/doc/html/fusion/algorithms/transformation/metafunctions/zip.html
          index cb357f5b..cd4daa0c 100644
          --- a/doc/html/fusion/algorithms/transformation/metafunctions/zip.html
          +++ b/doc/html/fusion/algorithms/transformation/metafunctions/zip.html
          @@ -26,7 +26,7 @@
           
           
          - + Description

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

          - + Synopsis
          @@ -50,7 +50,7 @@
           };
           
          - + Expression Semantics
          @@ -69,14 +69,14 @@ return ((1, 'a'),(2, 'b'),(3, 'c'))

          - + Complexity

          Constant.

          - + Header
          diff --git a/doc/html/fusion/extension.html b/doc/html/fusion/extension.html
          index 66c923d4..56380a30 100644
          --- a/doc/html/fusion/extension.html
          +++ b/doc/html/fusion/extension.html
          @@ -48,7 +48,7 @@
                 

        - + Our example

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

        - + Enabling Tag Dispatching

        @@ -90,9 +90,9 @@ a new tag type for the mechanism to use. For example:

        -namespace boost { namespace fusion {
        +namespace example {
             struct example_sequence_tag; // Only definition needed
        -}}
        +}
         

        Next we need to enable the traits::tag_of @@ -103,26 +103,25 @@

         #include <boost/fusion/support/tag_of_fwd.hpp>
         
        -namespace boost { namespace fusion { namespace traits {
        -    
        +namespace boost { namespace fusion { namespace traits {        
             template<>
             struct tag_of<example_struct>
             {
        -        typedef example_sequence_tag type;
        +        typedef example::example_sequence_tag type;
             };
         }}}
         

        traits::tag_of also has a second template argument, that can be used in conjuction with boost::enable_if - to provide tag support for whole clases of types. This feature is not necessary + to provide tag support for groups of related types. This feature is not necessary for our sequence, but for an example see the code in:

         #include <boost/fusion/sequence/adapted/mpl/tag_of.hpp>
         

        - + Designing a suitable iterator

        @@ -139,12 +138,12 @@
         template<typename Struct, int Pos>
         struct example_struct_iterator
        -    : iterator_base<example_struct_iterator<Struct, Pos> >
        +    : boost::fusion::iterator_base<example_struct_iterator<Struct, Pos> >
         {
             BOOST_STATIC_ASSERT(Pos >=0 && Pos < 3);
             typedef Struct struct_type;
        -    typedef mpl::int_<Pos> index;
        -    typedef random_access_traversal_tag category;
        +    typedef boost::mpl::int_<Pos> index;
        +    typedef boost::fusion::random_access_traversal_tag category;
         
             example_struct_iterator(Struct& str)
                 : struct_(str) {}
        @@ -178,28 +177,14 @@
         

        We also need to enable tag dispatching for our iterator type, with another specialization - of traits::tag_of: + of traits::tag_of.

        -
        -namespace boost { namespace fusion {
        -    struct example_struct_iterator_tag;
        -
        -    namespace traits
        -    {
        -        template<typename Struct, int Pos>
        -        struct tag_of<boost::fusion::example_struct_iterator<Struct, Pos> >
        -        {
        -            typedef example_struct_iterator_tag type;
        -        };
        -    }
        -}}
        -

        In isolation, the iterator implementation is pretty dry. Things should become clearer as we add features to our implementation.

        - + A first couple of instructive features

        @@ -210,19 +195,19 @@

         template<>
        -struct value_of_impl<example_struct_iterator_tag>
        +struct value_of_impl<example::example_struct_iterator_tag>
         {
             template<typename Iterator>
             struct apply;
         
             template<typename Struct>
        -    struct apply<example_struct_iterator<Struct, 0> >
        +    struct apply<example::example_struct_iterator<Struct, 0> >
             {
                 typedef std::string type;
             };
         
             template<typename Struct>
        -    struct apply<example_struct_iterator<Struct, 1> >
        +    struct apply<example::example_struct_iterator<Struct, 1> >
             {
                 typedef int type;
             };
        @@ -240,12 +225,9 @@
         
         template <typename Iterator>
         struct value_of
        -{
        -    typedef typename
        -        extension::value_of_impl<typename Iterator::fusion_tag>::
        -            template apply<Iterator>::type
        -    type;
        -};
        +    : extension::value_of_impl<typename detail::tag_of<Iterator>::type>::
        +        template apply<Iterator>
        +{};
         

        So value_of @@ -259,37 +241,38 @@

         template<>
        -struct deref_impl<example_struct_iterator_tag>
        +struct deref_impl<example::example_struct_iterator_tag>
         {
             template<typename Iterator>
             struct apply;
         
             template<typename Struct>
        -    struct apply<example_struct_iterator<Struct, 0> >
        +    struct apply<example::example_struct_iterator<Struct, 0> >
             {
                 typedef typename mpl::if_<
                     is_const<Struct>, std::string const&, std::string&>::type type;
         
                 static type
        -        call(example_struct_iterator<Struct, 0> const& it)
        +        call(example::example_struct_iterator<Struct, 0> const& it)
                 {
                     return it.struct_.name;
                 }
             };
         
             template<typename Struct>
        -    struct apply<example_struct_iterator<Struct, 1> >
        +    struct apply<example::example_struct_iterator<Struct, 1> >
             {
                 typedef typename mpl::if_<
                     is_const<Struct>, int const&, int&>::type type;
         
                 static type
        -        call(example_struct_iterator<Struct, 1> const& it)
        +        call(example::example_struct_iterator<Struct, 1> const& it)
                 {
        -            return it.struct_.age;
        -        }
        +                return it.struct_.age;
        +            }
        +        };
             };
        -};
        +}
         

        The use of deref_impl is very @@ -303,22 +286,17 @@ { template <typename Iterator> struct deref - { - typedef typename - deref_impl<typename Iterator::fusion_tag>:: - template apply<Iterator>::type - type; - }; + : extension::deref_impl<typename detail::tag_of<Iterator>::type>:: + template apply<Iterator> + {}; } template <typename Iterator> -typename result_of::deref<Iterator>::type +typename result_of::deref<Iterator>::type deref(Iterator const& i) { - typename result_of::deref<Iterator>::type result = - extension::deref_impl<typename Iterator::fusion_tag>:: - template apply<Iterator>::call(i); - return result; + typedef result_of::deref<Iterator> deref_meta; + return deref_meta::call(i); }

        @@ -349,7 +327,7 @@

      - + Implementing the remaining iterator functionality

      @@ -360,19 +338,19 @@

       template<>
      -struct next_impl<example_struct_iterator_tag>
      +struct next_impl<example::example_struct_iterator_tag>
       {
           template<typename Iterator>
           struct apply
           {
               typedef typename Iterator::struct_type struct_type;
               typedef typename Iterator::index index;
      -        typedef example_struct_iterator<struct_type, index::value + 1> type;
      +        typedef example::example_struct_iterator<struct_type, index::value + 1> type;
       
               static type
               call(Iterator const& i)
               {
      -            return type(i.struct_);
      +             return type(i.struct_);
               }
           };
       };
      @@ -404,7 +382,7 @@
             are provided in the example code.
           

      - + Implementing the intrinsic functions of the sequence

      @@ -416,7 +394,7 @@

       template<>
      -struct is_sequence_impl<example_sequence_tag>
      +struct is_sequence_impl<example::example_sequence_tag>
       {
           template<typename T>
           struct apply : mpl::true_ {};
      @@ -435,12 +413,12 @@
           

       template<>
      -struct begin_impl<example_sequence_tag>
      +struct begin_impl<example::example_sequence_tag>
       {
           template<typename Sequence>
           struct apply
           {
      -        typedef example_struct_iterator<Sequence, 0> type;
      +        typedef example::example_struct_iterator<Sequence, 0> type;
       
               static type
               call(Sequence& seq)
      @@ -463,7 +441,7 @@
             value_at_impl and at_impl.
           

      - + Enabling our type as an associative container

      @@ -483,7 +461,7 @@

       template<>
      -struct at_key_impl<example_sequence_tag>
      +struct at_key_impl<example::example_sequence_tag>
       {
           template<typename Sequence, typename Key>
           struct apply;
      @@ -529,7 +507,7 @@
             of is_associative_impl.
           

      - + Summary

      diff --git a/doc/html/fusion/iterators.html b/doc/html/fusion/iterators.html index 0a800d42..b08a8243 100644 --- a/doc/html/fusion/iterators.html +++ b/doc/html/fusion/iterators.html @@ -40,7 +40,7 @@ Sequence.

      - + Header

      diff --git a/doc/html/fusion/iterators/concepts/bidirectional_iterator.html b/doc/html/fusion/iterators/concepts/bidirectional_iterator.html
      index d83fd5e0..7e34fa35 100644
      --- a/doc/html/fusion/iterators/concepts/bidirectional_iterator.html
      +++ b/doc/html/fusion/iterators/concepts/bidirectional_iterator.html
      @@ -31,7 +31,7 @@
               Iterator">Bidirectional
               Iterator
- + Description

@@ -61,7 +61,7 @@

- + Refinement of
@@ -70,7 +70,7 @@ Iterator">Forward Iterator

- + Expression requirements
@@ -79,11 +79,7 @@ Iterator">Forward Iterator, the following expressions must be valid:

-
-

- -

- +
@@ -125,18 +121,13 @@ -
Constant
-
+
- + Meta Expressions
-
-

- -

- +
@@ -150,10 +141,9 @@ -
Amortized constant time
-
+
- + Expression Semantics
@@ -163,11 +153,7 @@ Iterator">Forward Iterator

-
-

- -

- +
@@ -182,10 +168,9 @@ iterator to the element preceding i -
-
+
- + Invariants

@@ -202,7 +187,7 @@

- + Models
    diff --git a/doc/html/fusion/iterators/concepts/forward_iterator.html b/doc/html/fusion/iterators/concepts/forward_iterator.html index 0961bbac..7215a3ce 100644 --- a/doc/html/fusion/iterators/concepts/forward_iterator.html +++ b/doc/html/fusion/iterators/concepts/forward_iterator.html @@ -30,7 +30,7 @@ Iterator">Forward Iterator
- + Description

@@ -63,7 +63,7 @@

- + Expression requirements
@@ -71,11 +71,7 @@ A type models Forward Iterator if, in addition to being CopyConstructable, the following expressions are valid:

-
-

- -

- +
@@ -134,18 +130,13 @@ -
Constant
-
+
- + Meta Expressions
-
-

- -

- +
@@ -188,18 +179,13 @@ time -
-
+
- + Expression Semantics
-
-

- -

- +
@@ -257,10 +243,9 @@ -
-
+
- + Invariants

@@ -283,7 +268,7 @@

- + Models
    diff --git a/doc/html/fusion/iterators/concepts/random_access_iterator.html b/doc/html/fusion/iterators/concepts/random_access_iterator.html index 0d7d04cc..616ff4d8 100644 --- a/doc/html/fusion/iterators/concepts/random_access_iterator.html +++ b/doc/html/fusion/iterators/concepts/random_access_iterator.html @@ -30,7 +30,7 @@ Access Iterator">Random Access Iterator
- + Description

@@ -63,7 +63,7 @@

- + Refinement of
@@ -73,7 +73,7 @@ Iterator

- + Expression requirements
@@ -82,11 +82,7 @@ Iterator">Bidirectional Iterator, the following expressions must be valid:

-
-

- -

- +
@@ -128,18 +124,13 @@ -
Constant
-
+
- + Meta Expressions
-
-

- -

- +
@@ -165,10 +156,9 @@ time -
-
+
- + Models
    diff --git a/doc/html/fusion/iterators/functions/advance.html b/doc/html/fusion/iterators/functions/advance.html index 2eb1ddd1..232ddf37 100644 --- a/doc/html/fusion/iterators/functions/advance.html +++ b/doc/html/fusion/iterators/functions/advance.html @@ -26,14 +26,14 @@
    - + Description

    Moves an iterator by a specified distance.

    - + Synopsis
    @@ -43,12 +43,9 @@
         >
     typename result_of::advance<I, M>::type advance(I const& i); 
     
    -
    -

    - - Parameters -

    - +
    +

    Table 1.6. Parameters

    +
    @@ -63,23 +60,23 @@ + MPL Integral Constant
    i Model - of Forward - Iterator + Iterator Iterator to move relative to
    N An - MPL Integral Constant Number of positions to move
    - + Expression Semantics
    @@ -100,14 +97,14 @@ may be negative.

    - + Header
     #include <boost/fusion/iterator/advance.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/functions/advance_c.html b/doc/html/fusion/iterators/functions/advance_c.html
    index 78b086bf..a67ee308 100644
    --- a/doc/html/fusion/iterators/functions/advance_c.html
    +++ b/doc/html/fusion/iterators/functions/advance_c.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Moves an iterator by a specified distance.

    - + Synopsis
    @@ -43,12 +43,9 @@
         >
     typename result_of::advance_c<I, N>::type advance_c(I const& i); 
     
    -
    -

    - - Parameters -

    - +
    +

    Table 1.7. Parameters

    +
    @@ -63,23 +60,23 @@ + constant
    i Model - of Forward - Iterator + Iterator Iterator to move relative to
    N Integer - constant Number of positions to move
    - + Expression Semantics
    @@ -100,14 +97,14 @@ may be negative.

    - + Header
     #include <boost/fusion/iterator/advance.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/functions/deref.html b/doc/html/fusion/iterators/functions/deref.html
    index b562fd59..0f6753f9 100644
    --- a/doc/html/fusion/iterators/functions/deref.html
    +++ b/doc/html/fusion/iterators/functions/deref.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Deferences an iterator.

    - + Synopsis
    @@ -42,12 +42,9 @@
         >
     typename result_of::deref<I>::type deref(I const& i);
     
    -
    -

    - - Parameters -

    - +
    +

    Table 1.2. Parameters

    +
    @@ -61,16 +58,16 @@
    i Model - of Forward - Iterator + Iterator Operation's argument
    - + Expression Semantics
    @@ -85,14 +82,14 @@ i.

    - + Header
     #include <boost/fusion/iterator/deref.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/functions/distance.html b/doc/html/fusion/iterators/functions/distance.html
    index 16e837c2..b8312888 100644
    --- a/doc/html/fusion/iterators/functions/distance.html
    +++ b/doc/html/fusion/iterators/functions/distance.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the distance between 2 iterators.

    - + Synopsis
    @@ -43,12 +43,9 @@
         >
     typename result_of::distance<I, J>::type distance(I const& i, J const& j);
     
    -
    -

    - - Parameters -

    - +
    +

    Table 1.5. Parameters

    +
    @@ -64,15 +61,15 @@ i, j - + Iterator">Forward + Iterator into the same sequence +
    Models of Forward Iterator - into the same sequenceThe start and end points of - the distance to be measuredThe start and + end points of the distance to be measured
    - + Expression Semantics
    @@ -87,14 +84,14 @@ iterators i and j.

    - + Header
     #include <boost/fusion/iterator/distance.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/functions/next.html b/doc/html/fusion/iterators/functions/next.html
    index 50483c48..4dd7c1e7 100644
    --- a/doc/html/fusion/iterators/functions/next.html
    +++ b/doc/html/fusion/iterators/functions/next.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Moves an iterator 1 position forwards.

    - + Synopsis
    @@ -42,12 +42,9 @@
         >
     typename result_of::next<I>::type next(I const& i);
     
    -
    -

    - - Parameters -

    - +
    +

    Table 1.3. Parameters

    +
    @@ -61,16 +58,16 @@
    i Model - of Forward - Iterator + Iterator Operation's argument
    - + Expression Semantics
    @@ -86,14 +83,14 @@ next element after i.

    - + Header
     #include <boost/fusion/iterator/next.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/functions/prior.html b/doc/html/fusion/iterators/functions/prior.html
    index 3ee54891..682185bf 100644
    --- a/doc/html/fusion/iterators/functions/prior.html
    +++ b/doc/html/fusion/iterators/functions/prior.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Moves an iterator 1 position backwards.

    - + Synopsis
    @@ -42,12 +42,9 @@
         >
     typename result_of::prior<I>::type prior(I const& i);
     
    -
    -

    - - Parameters -

    - +
    +

    Table 1.4. Parameters

    +
    @@ -61,16 +58,16 @@
    i Model - of Bidirectional - Iterator + Iterator Operation's argument
    - + Expression Semantics
    @@ -86,14 +83,14 @@ element prior to i.

    - + Header
     #include <boost/fusion/iterator/prior.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/advance.html b/doc/html/fusion/iterators/metafunctions/advance.html
    index 3463371a..5f708683 100644
    --- a/doc/html/fusion/iterators/metafunctions/advance.html
    +++ b/doc/html/fusion/iterators/metafunctions/advance.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Moves an iterator a specified distance.

    - + Synopsis
    @@ -46,12 +46,9 @@
         typedef unspecified type;
     };
     
    -
    -

    - - Parameters -

    - +
    +

    Table 1.17. Parameters

    +
    @@ -66,23 +63,23 @@ + of MPL Integral Constant
    I Model - of Forward - Iterator + Iterator Iterator to move relative to
    M Model - of MPL Integral Constant Number of positions to move
    - + Expression Semantics
    @@ -102,14 +99,14 @@ may be negative.

    - + Header
     #include <boost/fusion/iterator/advance.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/advance_c.html b/doc/html/fusion/iterators/metafunctions/advance_c.html
    index e4e5f249..008e3877 100644
    --- a/doc/html/fusion/iterators/metafunctions/advance_c.html
    +++ b/doc/html/fusion/iterators/metafunctions/advance_c.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Moves an iterator by a specified distance.

    - + Synopsis
    @@ -46,12 +46,9 @@
         typedef unspecified type;
     };
     
    -
    -

    - - Parameters -

    - +
    +

    Table 1.18. Parameters

    +
    @@ -66,23 +63,23 @@ + constant
    I Model - of Forward - Iterator + Iterator Iterator to move relative to
    N Integer - constant Number of positions to move
    - + Expression Semantics
    @@ -102,14 +99,14 @@ may be negative. Equivalent to result_of::advance<I, boost::mpl::int_<N> >::type.

    - + Header
     #include <boost/fusion/iterator/advance.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/deref.html b/doc/html/fusion/iterators/metafunctions/deref.html
    index 26e06c80..52581f3a 100644
    --- a/doc/html/fusion/iterators/metafunctions/deref.html
    +++ b/doc/html/fusion/iterators/metafunctions/deref.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

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

    - + Synposis
    @@ -45,12 +45,9 @@
         typedef unspecified type;
     };
     
    -
    -

    - - Parameters -

    - +
    +

    Table 1.12. Parameters

    +
    @@ -64,16 +61,16 @@
    I Model - of Forward - Iterator + Iterator Operation's argument
    - + Expression Semantics
    @@ -88,14 +85,14 @@ an iterator of type I.

    - + Header
     #include <boost/fusion/iterator/deref.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/distance.html b/doc/html/fusion/iterators/metafunctions/distance.html
    index 4e052567..6b1a3bef 100644
    --- a/doc/html/fusion/iterators/metafunctions/distance.html
    +++ b/doc/html/fusion/iterators/metafunctions/distance.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the distance between two iterators.

    - + Synopsis
    @@ -46,12 +46,9 @@
         typedef unspecified type;
     };
     
    -
    -

    - - Parameters -

    - +
    +

    Table 1.16. Parameters

    +
    @@ -67,15 +64,15 @@ I, J - + Iterator">Forward + Iterator into the same sequence +
    Models of Forward Iterator - into the same sequenceThe start and end points of - the distance to be measuredThe start and + end points of the distance to be measured
    - + Expression Semantics
    @@ -91,14 +88,14 @@ J.

    - + Header
     #include <boost/fusion/iterator/distance.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/equal_to.html b/doc/html/fusion/iterators/metafunctions/equal_to.html
    index 4967ce6e..9a22ba53 100644
    --- a/doc/html/fusion/iterators/metafunctions/equal_to.html
    +++ b/doc/html/fusion/iterators/metafunctions/equal_to.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

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

    - + Synopsis
    @@ -47,12 +47,9 @@
         typedef unspecified type;
     };
     
    -
    -

    - - Parameters -

    - +
    +

    Table 1.15. Parameters

    +
    @@ -69,12 +66,12 @@ + arguments
    Any fusion iterators Operation's - arguments
    - + Expression Semantics
    @@ -90,14 +87,14 @@ Returns boost::mpl::false_ otherwise.

    - + Header
     #include <boost/fusion/iterator/equal_to.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/next.html b/doc/html/fusion/iterators/metafunctions/next.html
    index 92a47b77..454172dc 100644
    --- a/doc/html/fusion/iterators/metafunctions/next.html
    +++ b/doc/html/fusion/iterators/metafunctions/next.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the type of the next iterator in a sequence.

    - + Synposis
    @@ -45,12 +45,9 @@
         typedef unspecified type;
     };
     
    -
    -

    - - Parameters -

    - +
    +

    Table 1.13. Parameters

    +
    @@ -64,16 +61,16 @@
    I Model - of Forward - Iterator + Iterator Operation's argument
    - + Expression Semantics
    @@ -89,14 +86,14 @@ next element in the sequence after I.

    - + Header
     #include <boost/fusion/iterator/next.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/prior.html b/doc/html/fusion/iterators/metafunctions/prior.html
    index 6b75ffd2..626f2d9d 100644
    --- a/doc/html/fusion/iterators/metafunctions/prior.html
    +++ b/doc/html/fusion/iterators/metafunctions/prior.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the type of the previous iterator in a sequence.

    - + Synopsis
    @@ -45,12 +45,9 @@
         typedef unspecified type;
     };
     
    -
    -

    - - Parameters -

    - +
    +

    Table 1.14. Parameters

    +
    @@ -64,16 +61,16 @@
    I Model - of Bidirectional - Iterator + Iterator Operation's argument
    - + Expression Semantics
    @@ -89,14 +86,14 @@ previous element in the sequence before I.

    - + Header
     #include <boost/fusion/iterator/prior.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/value_of.html b/doc/html/fusion/iterators/metafunctions/value_of.html
    index 5087b29d..e924babc 100644
    --- a/doc/html/fusion/iterators/metafunctions/value_of.html
    +++ b/doc/html/fusion/iterators/metafunctions/value_of.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the type stored at the position of an iterator.

    - + Synopsis
    @@ -45,12 +45,9 @@
         typedef unspecified type;
     };
     
    -
    -

    - - Parameters -

    - +
    +

    Table 1.11. Parameters

    +
    @@ -64,16 +61,16 @@
    I Model - of Forward - Iterator + Iterator Operation's argument
    - + Expression Semantics
    @@ -88,14 +85,14 @@ a sequence at iterator position I.

    - + Header
     #include <boost/fusion/iterator/value_of.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/operators/operator_equality.html b/doc/html/fusion/iterators/operators/operator_equality.html
    index c8e53336..27880c5d 100644
    --- a/doc/html/fusion/iterators/operators/operator_equality.html
    +++ b/doc/html/fusion/iterators/operators/operator_equality.html
    @@ -31,14 +31,14 @@
             =="> Operator
             ==
- + Description

Compares 2 iterators for equality.

- + Synopsis
@@ -48,12 +48,9 @@
     >
 unspecified operator==(I const& i, J const& i);
 
-
-

- - Parameters -

- +
+

Table 1.9. Parameters

+
@@ -70,12 +67,12 @@ + arguments
Any fusion iterators Operation's - arguments
- + Expression Semantics
@@ -91,7 +88,7 @@ and j respectively.

- + Header
diff --git a/doc/html/fusion/iterators/operators/operator_inequality.html b/doc/html/fusion/iterators/operators/operator_inequality.html
index 798f8867..ea4d017a 100644
--- a/doc/html/fusion/iterators/operators/operator_inequality.html
+++ b/doc/html/fusion/iterators/operators/operator_inequality.html
@@ -30,14 +30,14 @@
         !="> Operator
         !=
 
- + Description

Compares 2 iterators for inequality.

- + Synopsis
@@ -47,12 +47,9 @@
     >
 unspecified operator==(I const& i, J const& i);
 
-
-

- - Parameters -

- +
+

Table 1.10. Parameters

+
@@ -69,12 +66,12 @@ + arguments
Any fusion iterators Operation's - arguments
- + Expression Semantics
@@ -87,7 +84,7 @@ and j respectively.

- + Header
diff --git a/doc/html/fusion/iterators/operators/operator_unary_star.html b/doc/html/fusion/iterators/operators/operator_unary_star.html
index 2af2374d..e22cc90a 100644
--- a/doc/html/fusion/iterators/operators/operator_unary_star.html
+++ b/doc/html/fusion/iterators/operators/operator_unary_star.html
@@ -30,14 +30,14 @@
         *"> Operator
         *
 
- + Description

Dereferences an iterator.

- + Synopsis
@@ -46,12 +46,9 @@
     >
 typename result_of::deref<I>::type operator*(unspecified<I> const& i);
 
-
-

- - Parameters -

- +
+

Table 1.8. Parameters

+
@@ -65,16 +62,16 @@
i Model - of Forward - Iterator + Iterator Operation's argument
- + Expression Semantics
@@ -89,14 +86,14 @@ Semantics: Equivalent to deref(i).

- + Header
 #include <boost/fusion/iterator/deref.hpp>
 
- + Example
diff --git a/doc/html/fusion/notes.html b/doc/html/fusion/notes.html
index 853e1247..25e5b526 100644
--- a/doc/html/fusion/notes.html
+++ b/doc/html/fusion/notes.html
@@ -26,7 +26,7 @@
 
 

- + Recursive Inlined Functions

@@ -39,7 +39,7 @@ compiler limit of course). Compile time complexity remains linear.

- + Overloaded Functions

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

- + Tag Dispatching

@@ -101,7 +101,7 @@

- + Extensibility

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

- + Element Conversion

@@ -158,7 +158,7 @@

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

@@ -191,7 +191,7 @@
 list<void (*)(int)>
 

- + boost::ref

@@ -234,7 +234,7 @@



-

[14] +

[14] 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 diff --git a/doc/html/fusion/organization.html b/doc/html/fusion/organization.html index 7b908b88..62b319c7 100644 --- a/doc/html/fusion/organization.html +++ b/doc/html/fusion/organization.html @@ -34,7 +34,7 @@ The library is organized in three layers:

- + Layers

@@ -50,7 +50,7 @@ against.

- + Directory

    @@ -159,7 +159,7 @@

- + Example

@@ -175,12 +175,12 @@

The first includes all sequences. The second includes all of sequence containers. The third includes only list  - [3] + [3] .



-

[3] +

[3] 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 e57a4931..a3beb7bf 100644 --- a/doc/html/fusion/preface.html +++ b/doc/html/fusion/preface.html @@ -32,7 +32,7 @@ --Niklaus Wirth

- + Description

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

- + Motivation

@@ -76,19 +76,16 @@ an instant AHA! moment.

- + How to use this manual

Some icons are used to mark certain topics indicative of their relevance. These icons precede some text to indicate:

-
-

- - Icons -

- +
+

Table 1.1. Icons

+
@@ -104,14 +101,14 @@ + is auxiliary but will give the reader a deeper insight into a specific + topic. May be skipped. + is of utmost importance. @@ -122,7 +119,7 @@ + and helpful piece of information.
note Note Information provided - is auxiliary but will give the reader a deeper insight into a specific - topic. May be skipped.
alert Alert Information provided - is of utmost importance.
cautiontip Tip A potentially useful - and helpful piece of information.
@@ -133,7 +130,7 @@ Tools.

- + Support

diff --git a/doc/html/fusion/quick_start.html b/doc/html/fusion/quick_start.html index ce6bd018..ab2bf3cb 100644 --- a/doc/html/fusion/quick_start.html +++ b/doc/html/fusion/quick_start.html @@ -33,7 +33,7 @@

For starters, we shall include all of Fusion's _sequence_s - [1] + [1] :

@@ -41,7 +41,7 @@
 

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

@@ -59,7 +59,7 @@
       Let's see some examples.
     

- + Print the vector as XML

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

- + Print only pointers

@@ -150,7 +150,7 @@ Easy, right?

- + Associative tuples

@@ -225,7 +225,7 @@ a dog or a whole alternate_universe.

- + Tip of the Iceberg

@@ -236,12 +236,12 @@



-

[1] +

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

-

[2] +

[2] 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. diff --git a/doc/html/fusion/sequences.html b/doc/html/fusion/sequences.html index d7406992..d68ba50f 100644 --- a/doc/html/fusion/sequences.html +++ b/doc/html/fusion/sequences.html @@ -46,7 +46,7 @@ type that can be used to iterate through the Sequence's elements.

- + Header

diff --git a/doc/html/fusion/sequences/adapted.html b/doc/html/fusion/sequences/adapted.html
index 9e35ce4d..51d83fc9 100644
--- a/doc/html/fusion/sequences/adapted.html
+++ b/doc/html/fusion/sequences/adapted.html
@@ -38,11 +38,11 @@
         mechanism. If you wish to use these sequences with fusion, simply include
         the necessary files and they will be regarded as first-class, fully conforming
         fusion sequences
-        [4]
+        [4]
         .
       

- + Header

@@ -50,7 +50,7 @@
 


-

[4] +

[4] Fusion sequences may also be adapted as fully conforming MPL sequences (see Intrinsics). That way, we can have 2-way adaptation to and from MPL diff --git a/doc/html/fusion/sequences/adapted/boost__array.html b/doc/html/fusion/sequences/adapted/boost__array.html index d71c3e28..21b9f1fe 100644 --- a/doc/html/fusion/sequences/adapted/boost__array.html +++ b/doc/html/fusion/sequences/adapted/boost__array.html @@ -33,21 +33,21 @@ Access Sequence.

- + Header
 #include <boost/fusion/sequence/adapted/array.hpp>
 
- + Model of
- + Example
@@ -60,7 +60,7 @@
 std::cout << at_c<2>(arr) << std::endl;
 
- + See also

diff --git a/doc/html/fusion/sequences/adapted/mpl_sequence.html b/doc/html/fusion/sequences/adapted/mpl_sequence.html index 168cb677..1e05d99e 100644 --- a/doc/html/fusion/sequences/adapted/mpl_sequence.html +++ b/doc/html/fusion/sequences/adapted/mpl_sequence.html @@ -31,14 +31,14 @@ sequences fully conforming fusion sequences.

- + Header
 #include <boost/fusion/sequence/adapted/mpl.hpp>
 
- + Model of
    @@ -62,7 +62,7 @@
- + Example
@@ -76,7 +76,7 @@
 std::cout << at_c<1>(v) << std::endl;
 
- + See also

diff --git a/doc/html/fusion/sequences/adapted/std__pair.html b/doc/html/fusion/sequences/adapted/std__pair.html index d37ca264..44bb6080 100644 --- a/doc/html/fusion/sequences/adapted/std__pair.html +++ b/doc/html/fusion/sequences/adapted/std__pair.html @@ -33,21 +33,21 @@ Access Sequence.

- + Header
 #include <boost/fusion/sequence/adapted/std_pair.hpp>
 
- + Model of
- + Example
@@ -57,7 +57,7 @@
 std::cout << p << std::endl;
 
- + See also

diff --git a/doc/html/fusion/sequences/concepts.html b/doc/html/fusion/sequences/concepts.html index 4ede7685..fbc3c562 100644 --- a/doc/html/fusion/sequences/concepts.html +++ b/doc/html/fusion/sequences/concepts.html @@ -40,7 +40,7 @@ Fusion Sequences are organized into a hierarchy of concepts.

- + Traversal

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

- + Associativity

diff --git a/doc/html/fusion/sequences/concepts/associative_sequence.html b/doc/html/fusion/sequences/concepts/associative_sequence.html index 7955d937..3f4046d1 100644 --- a/doc/html/fusion/sequences/concepts/associative_sequence.html +++ b/doc/html/fusion/sequences/concepts/associative_sequence.html @@ -30,7 +30,7 @@ Sequence">Associative Sequence

- + Description

@@ -71,18 +71,14 @@

- + Valid Expressions

For any Associative Sequence the following expressions must be valid:

-
-

- -

- +
@@ -123,18 +119,13 @@ -
Constant
-
+
- + Result Type Expressions
-
-

- -

- +
@@ -160,8 +151,7 @@ time -
-
+

note result_of::at_key<S, K> returns the actual type returned by at_key<K>(s). In @@ -171,15 +161,11 @@ be a reference to begin with. For this purpose, you can use result_of::value_at_key<S, N>.

- + Expression Semantics
-
-

- -

- +
@@ -205,10 +191,9 @@ see at. -
-
+
- + Models
    diff --git a/doc/html/fusion/sequences/concepts/bidirectional_sequence.html b/doc/html/fusion/sequences/concepts/bidirectional_sequence.html index 504eae8d..f218d6c5 100644 --- a/doc/html/fusion/sequences/concepts/bidirectional_sequence.html +++ b/doc/html/fusion/sequences/concepts/bidirectional_sequence.html @@ -31,7 +31,7 @@ Sequence">Bidirectional Sequence
- + Description

@@ -42,7 +42,7 @@ Iterator.

- + Refinement of
@@ -72,7 +72,7 @@
- + Valid Expressions
@@ -81,11 +81,7 @@ Sequence">Forward Sequence, for any Bidirectional Sequence the following must be met:

-
-

- -

- +
@@ -135,18 +131,13 @@ -
Constant
-
+
- + Result Type Expressions
-
-

- -

- +
@@ -172,10 +163,9 @@ time -
-
+
- + Expression Semantics
@@ -185,11 +175,7 @@ Sequence">Forward Sequence.

-
-

- -

- +
@@ -203,10 +189,9 @@ -
The last element in the sequence; see back.
-
+
- + Models
    diff --git a/doc/html/fusion/sequences/concepts/forward_sequence.html b/doc/html/fusion/sequences/concepts/forward_sequence.html index 222a658e..a9313590 100644 --- a/doc/html/fusion/sequences/concepts/forward_sequence.html +++ b/doc/html/fusion/sequences/concepts/forward_sequence.html @@ -30,7 +30,7 @@ Sequence">Forward Sequence
- + Description

@@ -62,18 +62,14 @@

- + Valid Expressions

For any Forward Sequence the following expressions must be valid:

-
-

- -

- +
@@ -135,18 +131,13 @@ -
Constant
-
+
- + Result Type Expressions
-
-

- -

- +
@@ -180,18 +171,13 @@ time -
-
+
- + Expression Semantics
-
-

- -

- +
@@ -229,10 +215,9 @@ first element in the sequence; see front. -
-
+
- + Invariants

@@ -258,7 +243,7 @@

- + Models
    diff --git a/doc/html/fusion/sequences/concepts/random_access_sequence.html b/doc/html/fusion/sequences/concepts/random_access_sequence.html index e1bc08a1..06c4ae91 100644 --- a/doc/html/fusion/sequences/concepts/random_access_sequence.html +++ b/doc/html/fusion/sequences/concepts/random_access_sequence.html @@ -31,7 +31,7 @@ Access Sequence">Random Access Sequence
- + Description

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

- + Refinement of
@@ -78,7 +78,7 @@
- + Valid Expressions
@@ -87,11 +87,7 @@ Sequence">Bidirectional Sequence, for any Random Access Sequence the following must be met:

-
-

- -

- +
@@ -141,18 +137,13 @@ -
Constant
-
+
- + Result Type Expressions
-
-

- -

- +
@@ -183,8 +174,7 @@ time -
-
+

note result_of::at<S, N> returns the actual type returned by at<N>(s). In @@ -194,7 +184,7 @@ be a reference to begin with. For this purpose, you can use result_of::value_at<S, N>.

- + Expression Semantics
@@ -204,11 +194,7 @@ Sequence">Bidirectional Sequence.

-
-

- -

- +
@@ -222,10 +208,9 @@ -
The Nth element from the beginning of the sequence; see at.
-
+
- + Models
    diff --git a/doc/html/fusion/sequences/containers.html b/doc/html/fusion/sequences/containers.html index b75185ae..ce25c1f9 100644 --- a/doc/html/fusion/sequences/containers.html +++ b/doc/html/fusion/sequences/containers.html @@ -39,7 +39,7 @@ These containers are more or less counterparts of those in STL.

    - + Header

    diff --git a/doc/html/fusion/sequences/containers/cons.html b/doc/html/fusion/sequences/containers/cons.html
    index 805c3796..81f1955b 100644
    --- a/doc/html/fusion/sequences/containers/cons.html
    +++ b/doc/html/fusion/sequences/containers/cons.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -41,14 +41,14 @@ Inlined Functions).

    - + Header
     #include <boost/fusion/sequence/container/list/cons.hpp>
     
    - + Synopsis
    @@ -56,15 +56,11 @@
     struct cons;
     
    - + Template parameters
    -
    -

    - -

    - +
    @@ -89,10 +85,9 @@ -
    nil
    -
    +
- + Model of
  • - + Expression Semantics
    @@ -144,11 +139,7 @@ Sequence">Forward Sequence.

    -
    -

    - -

    - +
    @@ -200,8 +191,7 @@ Nth element from the beginning of the sequence; see at. -
    -
    +

note at<N>(l) is provided for convenience and compatibility with the original Boost.Tuple @@ -215,7 +205,7 @@ Inlined Functions).

- + Example
diff --git a/doc/html/fusion/sequences/containers/list.html b/doc/html/fusion/sequences/containers/list.html
index a837fa52..f279bbc7 100644
--- a/doc/html/fusion/sequences/containers/list.html
+++ b/doc/html/fusion/sequences/containers/list.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Header
@@ -46,7 +46,7 @@
 #include <boost/fusion/sequence/container/list/list_forward.hpp>
 
- + Synopsis
@@ -77,15 +77,11 @@
 #define FUSION_MAX_LIST_SIZE 20
 
- + Template parameters
-
-

- -

- +
@@ -103,10 +99,9 @@ -
Element types unspecified-type
-
+
- + Model of
  • - + Expression Semantics
    @@ -149,11 +144,7 @@ Sequence">Forward Sequence.

    -
    -

    - -

    - +
    @@ -193,8 +184,7 @@ Nth element from the beginning of the sequence; see at. -
    -
    +

note at<n>(l) is provided for convenience and compatibility with the original Boost.Tuple @@ -207,7 +197,7 @@ Inlined Functions).

- + Example
diff --git a/doc/html/fusion/sequences/containers/map.html b/doc/html/fusion/sequences/containers/map.html
index 83a228d1..523f7a9b 100644
--- a/doc/html/fusion/sequences/containers/map.html
+++ b/doc/html/fusion/sequences/containers/map.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -41,14 +41,14 @@ Functions).

- + Header
 #include <boost/fusion/sequence/container/map.hpp>
 
- + Synopsis
@@ -79,15 +79,11 @@
 #define FUSION_MAX_MAP_SIZE 20
 
- + Template parameters
-
-

- -

- +
@@ -105,10 +101,9 @@ -
Element types unspecified-type
-
+
- + Model of
    @@ -142,7 +137,7 @@
- + Expression Semantics
@@ -154,11 +149,7 @@ Sequence">Associative Sequence.

-
-

- -

- +
@@ -193,10 +184,9 @@ Sequence s. -
-
+
- + Example
diff --git a/doc/html/fusion/sequences/containers/set.html b/doc/html/fusion/sequences/containers/set.html
index adc5887e..ca56e8d7 100644
--- a/doc/html/fusion/sequences/containers/set.html
+++ b/doc/html/fusion/sequences/containers/set.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Header
 #include <boost/fusion/sequence/container/set.hpp>
 
- + Synopsis
@@ -77,15 +77,11 @@
 #define FUSION_MAX_SET_SIZE 20
 
- + Template parameters
-
-

- -

- +
@@ -103,10 +99,9 @@ -
Element types unspecified-type
-
+
- + Model of
    @@ -140,7 +135,7 @@
- + Expression Semantics
@@ -152,11 +147,7 @@ Sequence">Associative Sequence.

-
-

- -

- +
@@ -191,10 +182,9 @@ Sequence fs. -
-
+
- + Example
diff --git a/doc/html/fusion/sequences/containers/vector.html b/doc/html/fusion/sequences/containers/vector.html
index 446057ff..39975251 100644
--- a/doc/html/fusion/sequences/containers/vector.html
+++ b/doc/html/fusion/sequences/containers/vector.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

@@ -115,15 +115,11 @@ #define FUSION_MAX_VECTOR_SIZE 20

- + Template parameters
-
-

- -

- +
@@ -141,10 +137,9 @@ -
Element types unspecified
-
+
- + Model of
  • - + Expression Semantics
    @@ -184,11 +179,7 @@ Access Sequence">Random Access Sequence.

    -
    -

    - -

    - +
    @@ -223,10 +214,9 @@ Sequence, s. -
    -
    +
- + Example
diff --git a/doc/html/fusion/sequences/conversion.html b/doc/html/fusion/sequences/conversion.html
index 9aac0694..f5a61804 100644
--- a/doc/html/fusion/sequences/conversion.html
+++ b/doc/html/fusion/sequences/conversion.html
@@ -34,7 +34,7 @@
         types using one of these conversion functions.
       

- + Header

diff --git a/doc/html/fusion/sequences/conversion/functions/as_list.html b/doc/html/fusion/sequences/conversion/functions/as_list.html
index 48db8834..b76caabd 100644
--- a/doc/html/fusion/sequences/conversion/functions/as_list.html
+++ b/doc/html/fusion/sequences/conversion/functions/as_list.html
@@ -26,14 +26,14 @@
 
 
- + Description

Convert a fusion sequence to a list.

- + Synopsis
@@ -46,14 +46,10 @@
 as_list(Sequence const& seq);
 
- + Parameters
-
-

- -

- +
@@ -70,10 +66,9 @@ instance of Sequence -
The sequence to convert.
-
+
- + Expression Semantics
@@ -88,14 +83,14 @@ seq, to a list.

- + Header
 #include <boost/fusion/sequence/conversion/as_list.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/conversion/functions/as_map.html b/doc/html/fusion/sequences/conversion/functions/as_map.html
index f6b3147b..4eadddaa 100644
--- a/doc/html/fusion/sequences/conversion/functions/as_map.html
+++ b/doc/html/fusion/sequences/conversion/functions/as_map.html
@@ -26,14 +26,14 @@
 
 
- + Description

Convert a fusion sequence to a map.

- + Synopsis
@@ -46,14 +46,10 @@
 as_map(Sequence const& seq);
 
- + Parameters
-
-

- -

- +
@@ -70,10 +66,9 @@ instance of Sequence -
The sequence to convert.
-
+
- + Expression Semantics
@@ -93,14 +88,14 @@ There may be no duplicate fusion::pair key types.

- + Header
 #include <boost/fusion/sequence/conversion/as_map.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/conversion/functions/as_set.html b/doc/html/fusion/sequences/conversion/functions/as_set.html
index 4311f591..0d0774f0 100644
--- a/doc/html/fusion/sequences/conversion/functions/as_set.html
+++ b/doc/html/fusion/sequences/conversion/functions/as_set.html
@@ -26,14 +26,14 @@
 
 
- + Description

Convert a fusion sequence to a set.

- + Synopsis
@@ -46,14 +46,10 @@
 as_set(Sequence const& seq);
 
- + Parameters
-
-

- -

- +
@@ -70,10 +66,9 @@ instance of Sequence -
The sequence to convert.
-
+
- + Expression Semantics
@@ -92,14 +87,14 @@ key types.

- + Header
 #include <boost/fusion/sequence/conversion/as_set.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/conversion/functions/as_vector.html b/doc/html/fusion/sequences/conversion/functions/as_vector.html
index 9af845f9..64377329 100644
--- a/doc/html/fusion/sequences/conversion/functions/as_vector.html
+++ b/doc/html/fusion/sequences/conversion/functions/as_vector.html
@@ -26,14 +26,14 @@
 
 
- + Description

Convert a fusion sequence to a vector.

- + Synopsis
@@ -46,14 +46,10 @@
 as_vector(Sequence const& seq);
 
- + Parameters
-
-

- -

- +
@@ -70,10 +66,9 @@ instance of Sequence -
The sequence to convert.
-
+
- + Expression Semantics
@@ -88,14 +83,14 @@ seq, to a vector.

- + Header
 #include <boost/fusion/sequence/conversion/as_vector.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_list.html b/doc/html/fusion/sequences/conversion/metafunctions/as_list.html
index 507e3c08..7cb96a1c 100644
--- a/doc/html/fusion/sequences/conversion/metafunctions/as_list.html
+++ b/doc/html/fusion/sequences/conversion/metafunctions/as_list.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of as_list.

- + Synopsis
@@ -41,14 +41,10 @@
 struct as_list;
 
- + Parameters
-
-

- -

- +
@@ -67,10 +63,9 @@ -
The sequence type to convert.
-
+
- + Expression Semantics
@@ -86,14 +81,14 @@ Sequence, to a list.

- + Header
 #include <boost/fusion/sequence/conversion/as_list.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_map.html b/doc/html/fusion/sequences/conversion/metafunctions/as_map.html
index ba6ba5a4..fee697ca 100644
--- a/doc/html/fusion/sequences/conversion/metafunctions/as_map.html
+++ b/doc/html/fusion/sequences/conversion/metafunctions/as_map.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of as_map.

- + Synopsis
@@ -41,14 +41,10 @@
 struct as_map;
 
- + Parameters
-
-

- -

- +
@@ -67,10 +63,9 @@ -
The sequence to convert.
-
+
- + Expression Semantics
@@ -91,14 +86,14 @@ There may be no duplicate fusion::pair key types.

- + Header
 #include <boost/fusion/sequence/conversion/as_map.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_set.html b/doc/html/fusion/sequences/conversion/metafunctions/as_set.html
index 5fbe7d46..842dc5d7 100644
--- a/doc/html/fusion/sequences/conversion/metafunctions/as_set.html
+++ b/doc/html/fusion/sequences/conversion/metafunctions/as_set.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of as_set.

- + Synopsis
@@ -41,14 +41,10 @@
 struct as_set;
 
- + Parameters
-
-

- -

- +
@@ -67,10 +63,9 @@ -
The sequence to convert.
-
+
- + Expression Semantics
@@ -90,14 +85,14 @@ key types.

- + Header
 #include <boost/fusion/sequence/conversion/as_set.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html b/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html
index 77d09be1..862aa661 100644
--- a/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html
+++ b/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of as_vector.

- + Synopsis
@@ -41,14 +41,10 @@
 struct as_vector;
 
- + Parameters
-
-

- -

- +
@@ -67,10 +63,9 @@ -
The sequence to convert.
-
+
- + Expression Semantics
@@ -86,14 +81,14 @@ Sequence, to a vector.

- + Header
 #include <boost/fusion/sequence/conversion/as_vector.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/generation.html b/doc/html/fusion/sequences/generation.html
index 9cf8243f..ea2b4a3e 100644
--- a/doc/html/fusion/sequences/generation.html
+++ b/doc/html/fusion/sequences/generation.html
@@ -33,7 +33,7 @@
         These are the functions that you can use to generate various forms of Containers from elemental values.
       

- + Header

diff --git a/doc/html/fusion/sequences/generation/functions/list_tie.html b/doc/html/fusion/sequences/generation/functions/list_tie.html
index 647ff225..e5f9e6ef 100644
--- a/doc/html/fusion/sequences/generation/functions/list_tie.html
+++ b/doc/html/fusion/sequences/generation/functions/list_tie.html
@@ -26,14 +26,14 @@
 
 
- + Description

Constructs a tie using a list sequence.

- + Synopsis
@@ -53,14 +53,10 @@
 #define FUSION_MAX_LIST_SIZE 20
 
- + Parameters
-
-

- -

- +
@@ -80,10 +76,9 @@ to list_tie -
-
+
- + Expression Semantics
@@ -98,14 +93,14 @@ Semantics: Create a list of references from x0, x1,... xN.

- + Header
 #include <boost/fusion/sequence/generation/list_tie.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/generation/functions/make_cons.html b/doc/html/fusion/sequences/generation/functions/make_cons.html
index 5bbfb611..aaf4bc28 100644
--- a/doc/html/fusion/sequences/generation/functions/make_cons.html
+++ b/doc/html/fusion/sequences/generation/functions/make_cons.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -35,7 +35,7 @@ (tail).

- + Synopsis
@@ -48,14 +48,10 @@
 make_cons(Car const& car, Cdr const& cdr);
 
- + Parameters
-
-

- -

- +
@@ -84,10 +80,9 @@ list's tail (optional) -
-
+
- + Expression Semantics
@@ -103,21 +98,21 @@ (tail).

- + Header
 #include <boost/fusion/sequence/generation/make_cons.hpp>
 
- + Example
 make_cons('x', make_cons(123))
 
- + See also
diff --git a/doc/html/fusion/sequences/generation/functions/make_list.html b/doc/html/fusion/sequences/generation/functions/make_list.html index cbd81bd5..39cbf3f2 100644 --- a/doc/html/fusion/sequences/generation/functions/make_list.html +++ b/doc/html/fusion/sequences/generation/functions/make_list.html @@ -26,14 +26,14 @@
- + Description

Create a list from one or more values.

- + Synopsis
@@ -53,14 +53,10 @@
 #define FUSION_MAX_LIST_SIZE 20
 
- + Parameters
-
-

- -

- +
@@ -80,10 +76,9 @@ to make_list -
-
+
- + Expression Semantics
@@ -97,21 +92,21 @@ Semantics: Create a list from x0, x1,... xN.

- + Header
 #include <boost/fusion/sequence/generation/make_list.hpp>
 
- + Example
 make_list(123, "hello", 12.5)
 
- + See also
diff --git a/doc/html/fusion/sequences/generation/functions/make_map.html b/doc/html/fusion/sequences/generation/functions/make_map.html index 15e7ac13..df0f2848 100644 --- a/doc/html/fusion/sequences/generation/functions/make_map.html +++ b/doc/html/fusion/sequences/generation/functions/make_map.html @@ -26,7 +26,7 @@
- + Description

@@ -34,7 +34,7 @@ pairs.

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

The variadic function accepts 0 to FUSION_MAX_VECTOR_SIZE - [10] + [10] elements, where FUSION_MAX_VECTOR_SIZE is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE @@ -57,14 +57,10 @@ #define FUSION_MAX_VECTOR_SIZE 20

- + Parameters
-
-

- -

- +
@@ -93,10 +89,9 @@ -
-
+
- + Expression Semantics
@@ -115,14 +110,14 @@ key types.

- + Header
 #include <boost/fusion/sequence/generation/make_map.hpp>
 
- + Example
@@ -131,7 +126,7 @@
   , make_pair<double>("Men"))
 
- + See also
@@ -141,7 +136,7 @@



-

[10] +

[10] map is implemented in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

diff --git a/doc/html/fusion/sequences/generation/functions/make_set.html b/doc/html/fusion/sequences/generation/functions/make_set.html index bfc32596..9b0255c2 100644 --- a/doc/html/fusion/sequences/generation/functions/make_set.html +++ b/doc/html/fusion/sequences/generation/functions/make_set.html @@ -26,14 +26,14 @@
- + Description

Create a set from one or more values.

- + Synopsis
@@ -44,7 +44,7 @@
 

The variadic function accepts 0 to FUSION_MAX_VECTOR_SIZE - [9] + [9] elements, where FUSION_MAX_VECTOR_SIZE is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE @@ -54,14 +54,10 @@ #define FUSION_MAX_VECTOR_SIZE 20

- + Parameters
-
-

- -

- +
@@ -81,10 +77,9 @@ to make_set -
-
+
- + Expression Semantics
@@ -102,21 +97,21 @@ key types.

- + Header
 #include <boost/fusion/sequence/generation/make_set.hpp>
 
- + Example
 make_set(123, "hello", 12.5)
 
- + See also
@@ -125,7 +120,7 @@



-

[9] +

[9] set is implemented in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

diff --git a/doc/html/fusion/sequences/generation/functions/make_vector.html b/doc/html/fusion/sequences/generation/functions/make_vector.html index 72a6a10f..2b551916 100644 --- a/doc/html/fusion/sequences/generation/functions/make_vector.html +++ b/doc/html/fusion/sequences/generation/functions/make_vector.html @@ -26,14 +26,14 @@
- + Description

Create a vector from one or more values.

- + Synopsis
@@ -53,14 +53,10 @@
 #define FUSION_MAX_VECTOR_SIZE 20
 
- + Parameters
-
-

- -

- +
@@ -80,10 +76,9 @@ to make_vector -
-
+
- + Expression Semantics
@@ -97,21 +92,21 @@ Semantics: Create a vector from x0, x1,... xN.

- + Header
 #include <boost/fusion/sequence/generation/make_vector.hpp>
 
- + Example
 make_vector(123, "hello", 12.5)
 
- + See also
diff --git a/doc/html/fusion/sequences/generation/functions/tiers.html b/doc/html/fusion/sequences/generation/functions/tiers.html index fa837f74..58dc4912 100644 --- a/doc/html/fusion/sequences/generation/functions/tiers.html +++ b/doc/html/fusion/sequences/generation/functions/tiers.html @@ -48,7 +48,7 @@ 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)) - [11] + [11] .

@@ -66,7 +66,7 @@ when calling functions which return sequences.

- + Ignore

@@ -81,7 +81,7 @@



-

[11] +

[11] see Boost.Ref for details about ref

diff --git a/doc/html/fusion/sequences/generation/functions/vector_tie.html b/doc/html/fusion/sequences/generation/functions/vector_tie.html index fef73f54..40b0451c 100644 --- a/doc/html/fusion/sequences/generation/functions/vector_tie.html +++ b/doc/html/fusion/sequences/generation/functions/vector_tie.html @@ -26,14 +26,14 @@
- + Description

Constructs a tie using a vector sequence.

- + Synopsis
@@ -53,14 +53,10 @@
 #define FUSION_MAX_VECTOR_SIZE 20
 
- + Parameters
-
-

- -

- +
@@ -80,10 +76,9 @@ to vector_tie -
-
+
- + Expression Semantics
@@ -98,14 +93,14 @@ Semantics: Create a vector of references from x0, x1,... xN.

- + Header
 #include <boost/fusion/sequence/generation/vector_tie.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/generation/metafunctions/list_tie.html b/doc/html/fusion/sequences/generation/metafunctions/list_tie.html
index 25c2f064..2c57e18f 100644
--- a/doc/html/fusion/sequences/generation/metafunctions/list_tie.html
+++ b/doc/html/fusion/sequences/generation/metafunctions/list_tie.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of list_tie.

- + Synopsis
@@ -52,14 +52,10 @@
 #define FUSION_MAX_LIST_SIZE 20
 
- + Parameters
-
-

- -

- +
@@ -77,10 +73,9 @@ arguments to list_tie -
-
+
- + Expression Semantics
@@ -95,14 +90,14 @@ Semantics: Create a list of references from T0, T1,... TN.

- + Header
 #include <boost/fusion/sequence/generation/list_tie.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_cons.html b/doc/html/fusion/sequences/generation/metafunctions/make_cons.html
index 2cb9ab53..e26f9654 100644
--- a/doc/html/fusion/sequences/generation/metafunctions/make_cons.html
+++ b/doc/html/fusion/sequences/generation/metafunctions/make_cons.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of make_cons.

- + Synopsis
@@ -41,14 +41,10 @@
 struct make_cons;
 
- + Parameters
-
-

- -

- +
@@ -75,10 +71,9 @@ list's tail type (optional) -
-
+
- + Expression Semantics
@@ -96,14 +91,14 @@ (tail).

- + Header
 #include <boost/fusion/sequence/generation/make_cons.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_list.html b/doc/html/fusion/sequences/generation/metafunctions/make_list.html
index 6f9123a9..fd2f06a1 100644
--- a/doc/html/fusion/sequences/generation/metafunctions/make_list.html
+++ b/doc/html/fusion/sequences/generation/metafunctions/make_list.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of make_list.

- + Synopsis
@@ -52,14 +52,10 @@
 #define FUSION_MAX_LIST_SIZE 20
 
- + Parameters
-
-

- -

- +
@@ -77,10 +73,9 @@ arguments to make_list -
-
+
- + Expression Semantics
@@ -96,14 +91,14 @@ Semantics: Create a list from T0, T1,... TN.

- + Header
 #include <boost/fusion/sequence/generation/make_list.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_map.html b/doc/html/fusion/sequences/generation/metafunctions/make_map.html
index a6d53d3f..dd5fb6e3 100644
--- a/doc/html/fusion/sequences/generation/metafunctions/make_map.html
+++ b/doc/html/fusion/sequences/generation/metafunctions/make_map.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of make_map.

- + Synopsis
@@ -45,7 +45,7 @@
 

The variadic function accepts 0 to FUSION_MAX_VECTOR_SIZE - [13] + [13] elements, where FUSION_MAX_VECTOR_SIZE is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE @@ -55,14 +55,10 @@ #define FUSION_MAX_VECTOR_SIZE 20

- + Parameters
-
-

- -

- +
@@ -89,10 +85,9 @@ -
-
+
- + Expression Semantics
@@ -112,21 +107,21 @@ key types.

- + Header
 #include <boost/fusion/sequence/generation/make_map.hpp>
 
- + Example
 result_of::make_map<int, double, char, double>::type
 
- + See also
@@ -135,7 +130,7 @@



-

[13] +

[13] map is implemented in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_set.html b/doc/html/fusion/sequences/generation/metafunctions/make_set.html index 9b6ae69c..5a85f85b 100644 --- a/doc/html/fusion/sequences/generation/metafunctions/make_set.html +++ b/doc/html/fusion/sequences/generation/metafunctions/make_set.html @@ -26,14 +26,14 @@
- + Description

Returns the result type of make_set.

- + Synopsis
@@ -43,7 +43,7 @@
 

The variadic function accepts 0 to FUSION_MAX_VECTOR_SIZE - [12] + [12] elements, where FUSION_MAX_VECTOR_SIZE is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE @@ -53,14 +53,10 @@ #define FUSION_MAX_VECTOR_SIZE 20

- + Parameters
-
-

- -

- +
@@ -78,10 +74,9 @@ arguments to make_set -
-
+
- + Expression Semantics
@@ -101,14 +96,14 @@ key types.

- + Header
 #include <boost/fusion/sequence/generation/make_set.hpp>
 
- + Example
@@ -116,7 +111,7 @@
 


-

[12] +

[12] set is implemented in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_vector.html b/doc/html/fusion/sequences/generation/metafunctions/make_vector.html index dafc02ae..1d59488c 100644 --- a/doc/html/fusion/sequences/generation/metafunctions/make_vector.html +++ b/doc/html/fusion/sequences/generation/metafunctions/make_vector.html @@ -26,14 +26,14 @@
- + Description

Returns the result type of make_vector.

- + Synopsis
@@ -52,14 +52,10 @@
 #define FUSION_MAX_VECTOR_SIZE 20
 
- + Parameters
-
-

- -

- +
@@ -77,10 +73,9 @@ arguments to make_vector -
-
+
- + Expression Semantics
@@ -96,14 +91,14 @@ Semantics: Create a vector from T0, T1,... TN.

- + Header
 #include <boost/fusion/sequence/generation/make_list.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html b/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html
index aeb425f9..d04d3f46 100644
--- a/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html
+++ b/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of vector_tie.

- + Synopsis
@@ -52,14 +52,10 @@
 #define FUSION_MAX_VECTOR_SIZE 20
 
- + Parameters
-
-

- -

- +
@@ -77,10 +73,9 @@ arguments to vector_tie -
-
+
- + Expression Semantics
@@ -95,14 +90,14 @@ Semantics: Create a vector of references from T0, T1,... TN.

- + Header
 #include <boost/fusion/sequence/generation/vector_tie.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics.html b/doc/html/fusion/sequences/intrinsics.html
index ce24a750..85c7d5ed 100644
--- a/doc/html/fusion/sequences/intrinsics.html
+++ b/doc/html/fusion/sequences/intrinsics.html
@@ -36,11 +36,11 @@
         Intrinsic functions, unlike Algorithms,
         are not generic across the full Sequence
         repertoire. They need to be implemented for each Fusion Sequence
-        [5]
+        [5]
         .
       

- + Header

@@ -48,7 +48,7 @@
 


-

[5] +

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

diff --git a/doc/html/fusion/sequences/intrinsics/functions/at.html b/doc/html/fusion/sequences/intrinsics/functions/at.html index 5de7d6b8..b87d6fd9 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/at.html +++ b/doc/html/fusion/sequences/intrinsics/functions/at.html @@ -26,14 +26,14 @@
- + Description

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

- + Synopsis
@@ -46,14 +46,10 @@
 at(Sequence const& seq);
 
- + Parameters
-
-

- -

- +
@@ -83,10 +79,9 @@ the sequence. -
-
+
- + Expression Semantics
@@ -112,14 +107,14 @@ deref(advance<N>(begin(s)))
- + Header
 #include <boost/fusion/sequence/intrinsic/at.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/at_c.html b/doc/html/fusion/sequences/intrinsics/functions/at_c.html
index 692d171f..cb6c9807 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/at_c.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/at_c.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

- + Synopsis
@@ -46,14 +46,10 @@
 at_c(Sequence const& seq);
 
- + Parameters
-
-

- -

- +
@@ -82,10 +78,9 @@ the sequence. -
-
+
- + Expression Semantics
@@ -111,14 +106,14 @@ deref(advance<N>(begin(s)))
- + Header
 #include <boost/fusion/sequence/intrinsic/at_c.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/at_key.html b/doc/html/fusion/sequences/intrinsics/functions/at_key.html
index dd71c515..5871bc15 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/at_key.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/at_key.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the element associated with a Key from the sequence.

- + Synopsis
@@ -46,14 +46,10 @@
 at_key(Sequence const& seq);
 
- + Parameters
-
-

- -

- +
@@ -81,10 +77,9 @@ -
The queried key.
-
+
- + Expression Semantics
@@ -107,14 +102,14 @@ with Key.

- + Header
 #include <boost/fusion/sequence/intrinsic/at_key.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/back.html b/doc/html/fusion/sequences/intrinsics/functions/back.html
index e7a5c361..f42ba3d5 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/back.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/back.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the last element in the sequence.

- + Synopsis
@@ -46,14 +46,10 @@
 back(Sequence const& seq);
 
- + Parameters
-
-

- -

- +
@@ -73,10 +69,9 @@ -
The sequence we wish to investigate.
-
+
- + Expression Semantics
@@ -99,14 +94,14 @@ in the sequence.

- + Header
 #include <boost/fusion/sequence/intrinsic/back.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/begin.html b/doc/html/fusion/sequences/intrinsics/functions/begin.html
index a710e1a8..c9f09600 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/begin.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/begin.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

- + Synopsis
@@ -46,14 +46,10 @@
 begin(Sequence const& seq);
 
- + Parameters
-
-

- -

- +
@@ -74,10 +70,9 @@ -
The sequence we wish to get an iterator from.
-
+
- + Expression Semantics
@@ -107,14 +102,14 @@ to the first element in the sequence.

- + Header
 #include <boost/fusion/sequence/intrinsic/begin.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/empty.html b/doc/html/fusion/sequences/intrinsics/functions/empty.html
index e41d03e4..013d13eb 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/empty.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/empty.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Synopsis
@@ -44,14 +44,10 @@
 empty(Sequence const& seq);
 
- + Parameters
-
-

- -

- +
@@ -71,10 +67,9 @@ -
The sequence we wish to investigate.
-
+
- + Expression Semantics
@@ -89,14 +84,14 @@ to false.

- + Header
 #include <boost/fusion/sequence/intrinsic/empty.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/end.html b/doc/html/fusion/sequences/intrinsics/functions/end.html
index 278345fc..ec3b65cd 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/end.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/end.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

- + Synopsis
@@ -46,14 +46,10 @@
 end(Sequence const& seq);
 
- + Parameters
-
-

- -

- +
@@ -74,10 +70,9 @@ -
The sequence we wish to get an iterator from.
-
+
- + Expression Semantics
@@ -107,14 +102,14 @@ to one element past the end of the sequence.

- + Header
 #include <boost/fusion/sequence/intrinsic/end.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/front.html b/doc/html/fusion/sequences/intrinsics/functions/front.html
index 91454f78..56c6e66f 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/front.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/front.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the first element in the sequence.

- + Synopsis
@@ -46,14 +46,10 @@
 front(Sequence const& seq);
 
- + Parameters
-
-

- -

- +
@@ -73,10 +69,9 @@ -
The sequence we wish to investigate.
-
+
- + Expression Semantics
@@ -99,14 +94,14 @@ in the sequence.

- + Header
 #include <boost/fusion/sequence/intrinsic/front.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/has_key.html b/doc/html/fusion/sequences/intrinsics/functions/has_key.html
index 10bb16e3..df6aef1f 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/has_key.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/has_key.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Synopsis
@@ -45,14 +45,10 @@
 has_key(Sequence const& seq);
 
- + Parameters
-
-

- -

- +
@@ -80,10 +76,9 @@ -
The queried key.
-
+
- + Expression Semantics
@@ -98,14 +93,14 @@ associated with Key, else, evaluates to false.

- + Header
 #include <boost/fusion/sequence/intrinsic/has_key.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/size.html b/doc/html/fusion/sequences/intrinsics/functions/size.html
index 34add122..5fbe1350 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/size.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/size.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Synopsis
@@ -43,14 +43,10 @@
 size(Sequence const& seq);
 
- + Parameters
-
-

- -

- +
@@ -70,10 +66,9 @@ -
The sequence we wish to investigate.
-
+
- + Expression Semantics
@@ -88,14 +83,14 @@ in the sequence.

- + Header
 #include <boost/fusion/sequence/intrinsic/size.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/at.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at.html
index 72e7cb24..92f96b02 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/at.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/at.html
@@ -26,16 +26,16 @@
 
 
- + Description

Returns the result type of at - [6] + [6] .

- + Synopsis
@@ -47,12 +47,9 @@
     typedef unspecified type;
 };
 
-
-

- - Parameters -

- +
+

Table 1.25. Parameters

+
@@ -67,23 +64,23 @@ + MPL Integral Constant
Seq A - model of Forward - Sequence + Sequence Argument sequence
N An - MPL Integral Constant Index of element
- + Expression Semantics
@@ -98,14 +95,14 @@ using at to access the Nth element of Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/at.hpp>
 
- + Example
@@ -114,7 +111,7 @@
 


-

[6] +

[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 diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html index a894bafc..ff7fe1d3 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html @@ -26,16 +26,16 @@

- + Description

Returns the result type of at_c - [7] + [7] .

- + Synopsis
@@ -47,12 +47,9 @@
     typedef unspecified type;
 };
 
-
-

- - Parameters -

- +
+

Table 1.26. Parameters

+
@@ -67,23 +64,23 @@ + integer index
Seq A - model of Forward - Sequence + Sequence Argument sequence
M Positive - integer index Index of element
- + Expression Semantics
@@ -98,14 +95,14 @@ using at_c to access the Mth element of Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/at.hpp>
 
- + Example
@@ -114,7 +111,7 @@
 


-

[7] +

[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 diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html index c0aea804..31d04ae3 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html @@ -26,16 +26,16 @@

- + Description

Returns the result type of at_key - [8] + [8] .

- + Synopsis
@@ -47,12 +47,9 @@
     typedef unspecified type;
 };
 
-
-

- - Parameters -

- +
+

Table 1.30. Parameters

+
@@ -67,23 +64,23 @@ + type
Seq A - model of Forward - Sequence + Sequence Argument sequence
Key Any - type Key type
- + Expression Semantics
@@ -100,14 +97,14 @@ Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/at_key.hpp>
 
- + Example
@@ -116,7 +113,7 @@
 


-

[8] +

[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 diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/back.html b/doc/html/fusion/sequences/intrinsics/metafunctions/back.html index 837a3525..7606e773 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/back.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/back.html @@ -26,14 +26,14 @@

- + Description

Returns the result type of back.

- + Synopsis
@@ -43,12 +43,9 @@
     typedef unspecified type;
 };
 
-
-

- - Parameters -

- +
+

Table 1.23. Parameters

+
@@ -62,16 +59,16 @@
Seq A - model of Forward - Sequence + Sequence Argument sequence
- + Expression Semantics
@@ -86,14 +83,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>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html b/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html
index d8b31663..008734ed 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of begin.

- + Synopsis
@@ -43,12 +43,9 @@
     typedef unspecified type;
 };
 
-
-

- - Parameters -

- +
+

Table 1.19. Parameters

+
@@ -62,16 +59,16 @@
Seq A - model of Forward - Sequence + Sequence Argument sequence
- + Expression Semantics
@@ -87,14 +84,14 @@ to the first element of Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/begin.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html b/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html
index 4657bb80..1ef6f32a 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of empty.

- + Synopsis
@@ -43,12 +43,9 @@
     typedef unspecified type;
 };
 
-
-

- - Parameters -

- +
+

Table 1.21. Parameters

+
@@ -62,16 +59,16 @@
Seq A - model of Forward - Sequence + Sequence Argument sequence
- + Expression Semantics
@@ -87,14 +84,14 @@ mpl::false_ otherwise.

- + Header
 #include <boost/fusion/sequence/intrinsic/empty.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/end.html b/doc/html/fusion/sequences/intrinsics/metafunctions/end.html
index cb39f4cc..8e7fb614 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/end.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/end.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of end.

- + Synopsis
@@ -43,12 +43,9 @@
     typedef unspecified type;
 };
 
-
-

- - Parameters -

- +
+

Table 1.20. Parameters

+
@@ -62,16 +59,16 @@
Seq A - model of Forward - Sequence + Sequence Argument sequence
- + Expression Semantics
@@ -87,14 +84,14 @@ one past the end of Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/end.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/front.html b/doc/html/fusion/sequences/intrinsics/metafunctions/front.html
index ed5816c6..79872a6e 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/front.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/front.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of front.

- + Synopsis
@@ -43,12 +43,9 @@
     typedef unspecified type;
 };
 
-
-

- - Parameters -

- +
+

Table 1.22. Parameters

+
@@ -62,16 +59,16 @@
Seq A - model of Forward - Sequence + Sequence Argument sequence
- + Expression Semantics
@@ -87,14 +84,14 @@ Equivalent to result_of::deref<result_of::begin<Seq>::type>::type.

- + Header
 #include <boost/fusion/sequence/intrinsic/front.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html
index af7564fe..107945c4 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of has_key.

- + Synopsis
@@ -45,12 +45,9 @@
     typedef unspecified type;
 };
 
-
-

- - Parameters -

- +
+

Table 1.29. Parameters

+
@@ -65,23 +62,23 @@ + type
Seq A - model of Forward - Sequence + Sequence Argument sequence
Key Any - type Key type
- + Expression Semantics
@@ -98,14 +95,14 @@ mpl::false_ otherwise.

- + Header
 #include <boost/fusion/sequence/intrinsic/has_key.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/size.html b/doc/html/fusion/sequences/intrinsics/metafunctions/size.html
index b43f94b5..aa4ce8c0 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/size.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/size.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of size.

- + Synopsis
@@ -43,12 +43,9 @@
     typedef unspecified type;
 };
 
-
-

- - Parameters -

- +
+

Table 1.24. Parameters

+
@@ -62,16 +59,16 @@
Seq A - model of Forward - Sequence + Sequence Argument sequence
- + Expression Semantics
@@ -86,14 +83,14 @@ in Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/size.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html
index 8b1ee812..ae292918 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the actual type at a given index from the Sequence.

- + Synopsis
@@ -45,12 +45,9 @@
     typedef unspecified type;
 };
 
-
-

- - Parameters -

- +
+

Table 1.27. Parameters

+
@@ -65,23 +62,23 @@ + MPL Integral Constant
Seq A - model of Forward - Sequence + Sequence Argument sequence
N An - MPL Integral Constant Index of element
- + Expression Semantics
@@ -96,14 +93,14 @@ the Nth element of Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/value_at.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html
index b7de2c44..896c7a26 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the actual type at a given index from the Sequence.

- + Synopsis
@@ -45,12 +45,9 @@
     typedef unspecified type;
 };
 
-
-

- - Parameters -

- +
+

Table 1.28. Parameters

+
@@ -65,23 +62,23 @@ + integer index
Seq A - model of Forward - Sequence + Sequence Argument sequence
M Positive - integer index Index of element
- + Expression Semantics
@@ -96,14 +93,14 @@ the Mth element of Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/value_at.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html
index 33bbc417..1b04db1a 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the actual element type associated with a Key from the Sequence.

- + Synopsis
@@ -45,12 +45,9 @@
     typedef unspecified type;
 };
 
-
-

- - Parameters -

- +
+

Table 1.31. Parameters

+
@@ -65,23 +62,23 @@ + type
Seq A - model of Forward - Sequence + Sequence Argument sequence
Key Any - type Key type
- + Expression Semantics
@@ -97,14 +94,14 @@ in Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/value_at_key.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators/comparison.html b/doc/html/fusion/sequences/operators/comparison.html
index 494d17fe..bf7a25dc 100644
--- a/doc/html/fusion/sequences/operators/comparison.html
+++ b/doc/html/fusion/sequences/operators/comparison.html
@@ -48,7 +48,7 @@
           only until the result is clear.
         

- + Header
diff --git a/doc/html/fusion/sequences/operators/comparison/equal.html b/doc/html/fusion/sequences/operators/comparison/equal.html
index 11bbbe70..1cecff00 100644
--- a/doc/html/fusion/sequences/operators/comparison/equal.html
+++ b/doc/html/fusion/sequences/operators/comparison/equal.html
@@ -27,14 +27,14 @@
 
 
- + Description

Compare two sequences for equality.

- + Synopsis
@@ -43,14 +43,10 @@
 operator==(Seq1 const& a, Seq2 const& b);
 
- + Parameters
-
-

- -

- +
@@ -69,10 +65,9 @@ -
_sequence_s to compare
-
+
- + Expression Semantics
@@ -108,14 +103,14 @@ true.

- + Header
 #include <boost/fusion/sequence/comparison/equal_to.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators/comparison/greater_than.html b/doc/html/fusion/sequences/operators/comparison/greater_than.html
index 8d7b3028..f02d0e12 100644
--- a/doc/html/fusion/sequences/operators/comparison/greater_than.html
+++ b/doc/html/fusion/sequences/operators/comparison/greater_than.html
@@ -34,7 +34,7 @@
             Lexicographically compare two sequences.
           

- + Synopsis
@@ -43,14 +43,10 @@
 operator>(Seq1 const& a, Seq2 const& b);
 
- + Parameters
-
-

- -

- +
@@ -69,10 +65,9 @@ -
_sequence_s to compare
-
+
- + Expression Semantics
@@ -100,14 +95,14 @@ Semantics: Returns b < a.

- + Header
 #include <boost/fusion/sequence/comparison/less_equal.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html b/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html
index 47124b60..d6ce001f 100644
--- a/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html
+++ b/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html
@@ -33,7 +33,7 @@
             Lexicographically compare two sequences.
           

- + Synopsis
@@ -42,14 +42,10 @@
 operator>=(Seq1 const& a, Seq2 const& b);
 
- + Parameters
-
-

- -

- +
@@ -68,10 +64,9 @@ -
_sequence_s to compare
-
+
- + Expression Semantics
@@ -99,14 +94,14 @@ Semantics: Returns !(a < b).

- + Header
 #include <boost/fusion/sequence/comparison/greater_equal.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators/comparison/less_than.html b/doc/html/fusion/sequences/operators/comparison/less_than.html
index afd7b8e7..ec50a2b3 100644
--- a/doc/html/fusion/sequences/operators/comparison/less_than.html
+++ b/doc/html/fusion/sequences/operators/comparison/less_than.html
@@ -34,7 +34,7 @@
             Lexicographically compare two sequences.
           

- + Synopsis
@@ -43,14 +43,10 @@
 operator<(Seq1 const& a, Seq2 const& b);
 
- + Parameters
-
-

- -

- +
@@ -69,10 +65,9 @@ -
_sequence_s to compare
-
+
- + Expression Semantics
@@ -102,14 +97,14 @@ and b.

- + Header
 #include <boost/fusion/sequence/comparison/less.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators/comparison/less_than_equal.html b/doc/html/fusion/sequences/operators/comparison/less_than_equal.html
index efe2936e..6f451a27 100644
--- a/doc/html/fusion/sequences/operators/comparison/less_than_equal.html
+++ b/doc/html/fusion/sequences/operators/comparison/less_than_equal.html
@@ -34,7 +34,7 @@
             Lexicographically compare two sequences.
           

- + Synopsis
@@ -43,14 +43,10 @@
 operator<=(Seq1 const& a, Seq2 const& b);
 
- + Parameters
-
-

- -

- +
@@ -69,10 +65,9 @@ -
_sequence_s to compare
-
+
- + Expression Semantics
@@ -100,14 +95,14 @@ Semantics: Returns !(b < a).

- + Header
 #include <boost/fusion/sequence/comparison/less_equal.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators/comparison/not_equal.html b/doc/html/fusion/sequences/operators/comparison/not_equal.html
index 282f03d6..2d806eb3 100644
--- a/doc/html/fusion/sequences/operators/comparison/not_equal.html
+++ b/doc/html/fusion/sequences/operators/comparison/not_equal.html
@@ -33,7 +33,7 @@
             Compare two sequences for inequality.
           

- + Synopsis
@@ -42,14 +42,10 @@
 operator!=(Seq1 const& a, Seq2 const& b);
 
- + Parameters
-
-

- -

- +
@@ -68,10 +64,9 @@ -
_sequence_s to compare
-
+
- + Expression Semantics
@@ -102,14 +97,14 @@ Returns !(a == b).

- + Header
 #include <boost/fusion/sequence/comparison/not_equal_to.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators/i_o.html b/doc/html/fusion/sequences/operators/i_o.html
index 676d0929..504ae2ac 100644
--- a/doc/html/fusion/sequences/operators/i_o.html
+++ b/doc/html/fusion/sequences/operators/i_o.html
@@ -115,7 +115,7 @@
           representation may not be unambiguously parseable.
         

- + Header
diff --git a/doc/html/fusion/sequences/operators/i_o/in.html b/doc/html/fusion/sequences/operators/i_o/in.html
index 4601fad8..24b1d5de 100644
--- a/doc/html/fusion/sequences/operators/i_o/in.html
+++ b/doc/html/fusion/sequences/operators/i_o/in.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ stream.

- + Synopsis
@@ -43,14 +43,10 @@
 operator>>(IStream& is, Sequence& seq);
 
- + Parameters
-
-

- -

- +
@@ -75,10 +71,9 @@ sequence to read. -
-
+
- + Expression Semantics
@@ -93,14 +88,14 @@ call is >> e.

- + Header
 #include <boost/fusion/sequence/io/in.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators/i_o/out.html b/doc/html/fusion/sequences/operators/i_o/out.html
index 85ca5c06..b6ee3e05 100644
--- a/doc/html/fusion/sequences/operators/i_o/out.html
+++ b/doc/html/fusion/sequences/operators/i_o/out.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ stream.

- + Synopsis
@@ -43,14 +43,10 @@
 operator<<(OStream& os, Sequence& seq);
 
- + Parameters
-
-

- -

- +
@@ -75,10 +71,9 @@ sequence to write. -
-
+
- + Expression Semantics
@@ -93,14 +88,14 @@ call os << e.

- + Header
 #include <boost/fusion/sequence/io/out.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/views.html b/doc/html/fusion/sequences/views.html
index 900928c8..4977c23d 100644
--- a/doc/html/fusion/sequences/views.html
+++ b/doc/html/fusion/sequences/views.html
@@ -44,7 +44,7 @@
         very cheap to copy and be passed around by value.
       

- + Header

diff --git a/doc/html/fusion/sequences/views/filter_view.html b/doc/html/fusion/sequences/views/filter_view.html
index 70d6f616..922e6573 100644
--- a/doc/html/fusion/sequences/views/filter_view.html
+++ b/doc/html/fusion/sequences/views/filter_view.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -37,14 +37,14 @@ only those elements for which its predicate evaluates to mpl::true_.

- + Header
 #include <boost/fusion/sequence/view/filter_view.hpp>
 
- + Synopsis
@@ -52,15 +52,11 @@
 struct filter_view;
 
- + Template parameters
-
-

- -

- +
@@ -89,10 +85,9 @@ -
 
-
+
- + Model of
  • - + Expression Semantics
    @@ -128,11 +123,7 @@ Sequence">Forward Sequence.

    -
    -

    - -

    - +
    @@ -162,10 +153,9 @@ f2. -
    -
    +
- + Example
diff --git a/doc/html/fusion/sequences/views/iterator_range.html b/doc/html/fusion/sequences/views/iterator_range.html
index f8c6df80..8c04570a 100644
--- a/doc/html/fusion/sequences/views/iterator_range.html
+++ b/doc/html/fusion/sequences/views/iterator_range.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,14 +34,14 @@ a sub-range of its underlying sequence delimited by a pair of iterators.

- + Header
 #include <boost/fusion/sequence/view/iterator_range.hpp>
 
- + Synopsis
@@ -49,15 +49,11 @@
 struct iterator_range;
 
- + Template parameters
-
-

- -

- +
@@ -84,10 +80,9 @@ -
 
-
+
- + Model of
  • - + Expression Semantics
    @@ -125,11 +120,7 @@ Sequence">Forward Sequence.

    -
    -

    - -

    - +
    @@ -162,10 +153,9 @@ ir2. -
    -
    +
- + Example
diff --git a/doc/html/fusion/sequences/views/joint_view.html b/doc/html/fusion/sequences/views/joint_view.html
index bd9fab34..c6a06f5a 100644
--- a/doc/html/fusion/sequences/views/joint_view.html
+++ b/doc/html/fusion/sequences/views/joint_view.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,14 +34,14 @@ which is a concatenation of two sequences.

- + Header
 #include <boost/fusion/sequence/view/joint_view.hpp>
 
- + Synopsis
@@ -49,15 +49,11 @@
 struct joint_view;
 
- + Template parameters
-
-

- -

- +
@@ -88,10 +84,9 @@ -
 
-
+
- + Model of
  • - + Expression Semantics
    @@ -129,11 +124,7 @@ Sequence">Forward Sequence.

    -
    -

    - -

    - +
    @@ -163,10 +154,9 @@ joint_view, jv, from another joint_view, jv2. -
    -
    +
- + Example
diff --git a/doc/html/fusion/sequences/views/reverse_view.html b/doc/html/fusion/sequences/views/reverse_view.html
index 29126354..2a5a3c36 100644
--- a/doc/html/fusion/sequences/views/reverse_view.html
+++ b/doc/html/fusion/sequences/views/reverse_view.html
@@ -31,14 +31,14 @@
           and the last element will be its first.
         

- + Header
 #include <boost/fusion/sequence/view/reverse_view.hpp>
 
- + Synopsis
@@ -46,15 +46,11 @@
 struct reverse_view;
 
- + Template parameters
-
-

- -

- +
@@ -74,10 +70,9 @@ -
 
-
+
- + Model of
  • - + Expression Semantics
    @@ -112,11 +107,7 @@ Sequence">Bidirectional Sequence.

    -
    -

    - -

    - +
    @@ -145,10 +136,9 @@ reverse_view, rv, from another reverse_view, rv2. -
    -
    +
- + Example
diff --git a/doc/html/fusion/sequences/views/single_view.html b/doc/html/fusion/sequences/views/single_view.html
index 032eb741..5949b995 100644
--- a/doc/html/fusion/sequences/views/single_view.html
+++ b/doc/html/fusion/sequences/views/single_view.html
@@ -30,14 +30,14 @@
           a value as a single element sequence.
         

- + Header
 #include <boost/fusion/sequence/view/single_view.hpp>
 
- + Synopsis
@@ -45,15 +45,11 @@
 struct single_view;
 
- + Template parameters
-
-

- -

- +
@@ -70,10 +66,9 @@ type -
 
-
+
- + Model of
  • - + Expression Semantics
    @@ -107,11 +102,7 @@ Sequence">Forward Sequence.

    -
    -

    - -

    - +
    @@ -141,10 +132,9 @@ s2. -
    -
    +
- + Example
diff --git a/doc/html/fusion/sequences/views/transform_view.html b/doc/html/fusion/sequences/views/transform_view.html
index 15954ab5..b7438070 100644
--- a/doc/html/fusion/sequences/views/transform_view.html
+++ b/doc/html/fusion/sequences/views/transform_view.html
@@ -34,14 +34,14 @@
           Traversal Concept) of its underlying sequence.
         

- + Header
 #include <boost/fusion/sequence/view/transform_view.hpp>
 
- + Synopsis

@@ -59,15 +59,11 @@ struct transform_view;

- + Template parameters
-
-

- -

- +
@@ -116,10 +112,9 @@ -
 
-
+
- + Model of
  • @@ -174,7 +169,7 @@
- + Expression Semantics
@@ -190,11 +185,7 @@ Sequence Traversal Concept) of its underlying sequence.

-
-

- -

- +
@@ -239,10 +230,9 @@ tv2. -
-
+
- + Example
diff --git a/doc/html/fusion/sequences/views/zip_view.html b/doc/html/fusion/sequences/views/zip_view.html
index 6c6c99af..74b2473d 100644
--- a/doc/html/fusion/sequences/views/zip_view.html
+++ b/doc/html/fusion/sequences/views/zip_view.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -37,14 +37,14 @@ of references to the component _sequence_s.

- + Header
 #include <boost/fusion/sequence/view/zip_view.hpp>
 
- + Synopsis
@@ -52,15 +52,11 @@
 struct zip_view;
 
- + Template parameters
-
-

- -

- +
@@ -79,10 +75,9 @@ Sequence of references to other Fusion _sequence_s -
 
-
+
- + Model of
  • - + Expression Semantics
    @@ -116,11 +111,7 @@ Sequence">Forward Sequence.

    -
    -

    - -

    - +
    @@ -149,10 +140,9 @@ to a zip_view, zv, from another zip_view, zv2. -
    -
    +
- + Example
diff --git a/doc/html/fusion/support/category_of.html b/doc/html/fusion/support/category_of.html
index c9e03fff..cc9f28c0 100644
--- a/doc/html/fusion/support/category_of.html
+++ b/doc/html/fusion/support/category_of.html
@@ -26,7 +26,7 @@
 
 

- + Description

@@ -36,7 +36,7 @@ Sequence Concepts).

- + Synopsis

@@ -50,14 +50,10 @@
 }
 

- + Parameters

-
-

- -

- +
@@ -74,10 +70,9 @@ type -
The type to query.
-
+

- + Expression Semantics

@@ -143,14 +138,14 @@ of a particular Sequence or Iterator.

- + Header

 #include <boost/fusion/support/category_of.hpp>
 

- + Example

diff --git a/doc/html/fusion/support/is_sequence.html b/doc/html/fusion/support/is_sequence.html
index 275e137d..31f4c04b 100644
--- a/doc/html/fusion/support/is_sequence.html
+++ b/doc/html/fusion/support/is_sequence.html
@@ -26,7 +26,7 @@
 
 

- + Description

@@ -37,7 +37,7 @@ conforming sequences.

- + Synopsis

@@ -51,14 +51,10 @@
 }
 

- + Parameters

-
-

- -

- +
@@ -75,10 +71,9 @@ type -
The type to query.
-
+

- + Expression Semantics

@@ -95,14 +90,14 @@ otherwise.

- + Header

 #include <boost/fusion/support/is_sequence.hpp>
 

- + Example

diff --git a/doc/html/fusion/support/is_view.html b/doc/html/fusion/support/is_view.html
index db32826a..921a5116 100644
--- a/doc/html/fusion/support/is_view.html
+++ b/doc/html/fusion/support/is_view.html
@@ -26,7 +26,7 @@
 
 

- + Description

@@ -40,7 +40,7 @@ specialized to accomodate clients providing Fusion conforming views.

- + Synopsis

@@ -54,14 +54,10 @@
 }
 

- + Parameters

-
-

- -

- +
@@ -78,10 +74,9 @@ type -
The type to query.
-
+

- + Expression Semantics

@@ -97,14 +92,14 @@
         otherwise.
       

- + Header

 #include <boost/fusion/support/is_view.hpp>
 

- + Example

diff --git a/doc/html/fusion/support/pair.html b/doc/html/fusion/support/pair.html
index 1eefef72..c591cd2b 100644
--- a/doc/html/fusion/support/pair.html
+++ b/doc/html/fusion/support/pair.html
@@ -26,7 +26,7 @@
 
 

- + Description

@@ -37,22 +37,34 @@ for example.

- + Synopsis

 template <typename First, typename Second>
 struct pair;
+
+namespace result_of
+{
+    template <typename First, typename Second>
+    struct first;
+
+    template <typename First, typename Second>
+    struct second;
+
+    template <typename First, typename Second>
+    struct make_pair;
+}
+
+template <typename First, typename Second>
+typename result_of::make_pair<First,Second>::type
+make_pair(Second const &);
 

- + Template parameters

-
-

- -

- +
@@ -72,8 +84,7 @@ -
The second type. This contains data.
-
+

Notation

@@ -106,14 +117,10 @@

- + Expression Semantics

-
-

- -

- +
@@ -126,12 +133,16 @@ + of the first template parameter, F, + equivalent to result_of::first<P>::type. + + of the second template parameter, S, + equivalent to result_of::second<P>::type. + @@ -180,17 +191,16 @@ for inequality. -
P::first_type The type - of the first template parameter, F.
P::second_type The type - of the second template parameter, S.
P()
-
+

- + Header

 #include <boost/fusion/support/pair.hpp>
 

- + Example

diff --git a/doc/html/fusion/support/tag_of.html b/doc/html/fusion/support/tag_of.html
index dcaa8373..156959d6 100644
--- a/doc/html/fusion/support/tag_of.html
+++ b/doc/html/fusion/support/tag_of.html
@@ -26,7 +26,7 @@
 
 

- + Description

@@ -43,7 +43,7 @@ conforming sequences.

- + Synopsis

@@ -60,11 +60,7 @@
         namespace traits { template<typename Sequence> struct tag_of { typedef
         unspecified type; }; } [heading Parameters]
       

-
-

- -

- +
@@ -81,10 +77,9 @@ type -
The type to query.
-
+

- + Expression Semantics

@@ -98,14 +93,14 @@
         with T.
       

- + Header

 #include <boost/fusion/support/tag_of.hpp>
 

- + Example

diff --git a/doc/html/fusion/tuples/class_template_tuple.html b/doc/html/fusion/tuples/class_template_tuple.html
index dc3d76d0..1f634499 100644
--- a/doc/html/fusion/tuples/class_template_tuple.html
+++ b/doc/html/fusion/tuples/class_template_tuple.html
@@ -48,7 +48,7 @@
         in future releases of fusion.
       

- + Synopsis

@@ -60,7 +60,7 @@
 class tuple;
 

- + Header

diff --git a/doc/html/fusion/tuples/class_template_tuple/construction.html b/doc/html/fusion/tuples/class_template_tuple/construction.html
index 69662472..d6c19d2d 100644
--- a/doc/html/fusion/tuples/class_template_tuple/construction.html
+++ b/doc/html/fusion/tuples/class_template_tuple/construction.html
@@ -27,7 +27,7 @@
 
 
- + Description

@@ -38,7 +38,7 @@ in this section.

- + Specification
diff --git a/doc/html/fusion/tuples/class_template_tuple/element_access.html b/doc/html/fusion/tuples/class_template_tuple/element_access.html index 69629e4c..abd7911a 100644 --- a/doc/html/fusion/tuples/class_template_tuple/element_access.html +++ b/doc/html/fusion/tuples/class_template_tuple/element_access.html @@ -31,7 +31,7 @@ access">Element access
- + Description

@@ -40,7 +40,7 @@ function to provide access to it's elements by zero based numeric index.

- + Specification
diff --git a/doc/html/fusion/tuples/class_template_tuple/relational_operators.html b/doc/html/fusion/tuples/class_template_tuple/relational_operators.html
index 0670b59d..fc34d00f 100644
--- a/doc/html/fusion/tuples/class_template_tuple/relational_operators.html
+++ b/doc/html/fusion/tuples/class_template_tuple/relational_operators.html
@@ -30,7 +30,7 @@
         operators">Relational
         operators
 
- + Description

@@ -38,7 +38,7 @@ Tuple provides the standard boolean relational operators.

- + Specification
diff --git a/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html b/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html index aa5200f5..220e5ad4 100644 --- a/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html +++ b/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html @@ -30,7 +30,7 @@ creation functions">Tuple creation functions
- + Description

@@ -40,7 +40,7 @@ functions are described in this section.

- + Specification
diff --git a/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html b/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html
index 1b03723d..28e0292e 100644
--- a/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html
+++ b/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html
@@ -31,7 +31,7 @@
         helper classes">Tuple
         helper classes
 
- + Description

@@ -40,7 +40,7 @@ tuple size, and the element types.

- + Specification
diff --git a/doc/html/fusion/tuples/pairs.html b/doc/html/fusion/tuples/pairs.html
index 7301c186..678eda1f 100644
--- a/doc/html/fusion/tuples/pairs.html
+++ b/doc/html/fusion/tuples/pairs.html
@@ -27,7 +27,7 @@
 
 

- + Description

@@ -36,7 +36,7 @@ as if it were a 2 element tuple.

- + Specification

diff --git a/doc/html/index.html b/doc/html/index.html
index a4e5c54c..76954209 100644
--- a/doc/html/index.html
+++ b/doc/html/index.html
@@ -30,7 +30,7 @@
 
 
-

+

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

@@ -57,7 +57,7 @@
- +

Last revised: September 21, 2006 at 12:40:29 GMT

Last revised: October 30, 2006 at 01:07:37 GMT


From 24542021630b97d768a93ab6a02d4a47858c7836 Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Wed, 1 Nov 2006 08:01:01 +0000 Subject: [PATCH 040/234] added value_at_impl for transform view [SVN r35804] --- .../transform_view/detail/value_at_impl.hpp | 54 +++++++++++++++++++ .../view/transform_view/transform_view.hpp | 1 + 2 files changed, 55 insertions(+) create mode 100644 include/boost/fusion/sequence/view/transform_view/detail/value_at_impl.hpp diff --git a/include/boost/fusion/sequence/view/transform_view/detail/value_at_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/value_at_impl.hpp new file mode 100644 index 00000000..b0e682f9 --- /dev/null +++ b/include/boost/fusion/sequence/view/transform_view/detail/value_at_impl.hpp @@ -0,0 +1,54 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_VALUE_AT_IMPL_20061101_0745) +#define BOOST_FUSION_VALUE_AT_IMPL_20061101_0745 + +#include +#include +#include + +namespace boost { namespace fusion { + struct transform_view_tag; + struct transform_view2_tag; + + namespace extension + { + template + struct value_at_impl; + + template<> + struct value_at_impl + { + template + struct apply + { + typedef typename Seq::transform_type F; + typedef detail::apply_transform_result transform_type; + typedef typename boost::fusion::result_of::at::type value_type; + typedef typename mpl::apply::type type; + }; + }; + + template<> + struct value_at_impl + { + template + struct apply + { + typedef typename Seq::transform_type F; + typedef detail::apply_transform_result transform_type; + typedef typename boost::fusion::result_of::at::type value1_type; + typedef typename boost::fusion::result_of::at::type value2_type; + typedef typename mpl::apply::type type; + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/view/transform_view/transform_view.hpp b/include/boost/fusion/sequence/view/transform_view/transform_view.hpp index a506c9f9..7a62ffe0 100644 --- a/include/boost/fusion/sequence/view/transform_view/transform_view.hpp +++ b/include/boost/fusion/sequence/view/transform_view/transform_view.hpp @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include From d2d2d0aa3e6c7dfa0435e97e23839c98eab13270 Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Wed, 1 Nov 2006 08:03:15 +0000 Subject: [PATCH 041/234] added transform view test covering value_at [SVN r35805] --- test/sequence/transform_view.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/test/sequence/transform_view.cpp b/test/sequence/transform_view.cpp index b6e4ec4e..d89b439a 100644 --- a/test/sequence/transform_view.cpp +++ b/test/sequence/transform_view.cpp @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -21,6 +22,8 @@ #include #include +#include +#include struct square { @@ -84,6 +87,7 @@ main() BOOST_TEST((*boost::fusion::advance_c<3>(boost::fusion::begin(xform)) == 64)); BOOST_TEST((boost::fusion::at_c<2>(xform) == 49)); + BOOST_MPL_ASSERT((boost::is_same::type, int>)); } { @@ -98,6 +102,7 @@ main() std::cout << xform << std::endl; BOOST_TEST((xform == make_vector(15, 17, 19, 21))); BOOST_TEST((boost::fusion::at_c<2>(xform) == 19)); + BOOST_MPL_ASSERT((boost::is_same::type, int>)); } return boost::report_errors(); From 4b061d27167d7253376fbb2da7629e1154a02141 Mon Sep 17 00:00:00 2001 From: Beman Dawes Date: Tue, 7 Nov 2006 19:11:57 +0000 Subject: [PATCH 042/234] Add copyright, license [SVN r35905] --- index.html | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/index.html b/index.html index b6ce29ba..1eb81150 100644 --- a/index.html +++ b/index.html @@ -5,6 +5,11 @@ Automatic redirection failed, click this - link + link  
+

© Copyright Beman Dawes, 2001

+

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

- + \ No newline at end of file From c621277c0736700e42f380fa82e7992018e500cb Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Thu, 9 Nov 2006 01:48:46 +0000 Subject: [PATCH 043/234] usability tweaks: functions that return iterators return them as *const* to allow chaining when the recipient function expects a reference (e.g. foo(Iter&) ) [SVN r35940] --- include/boost/fusion/algorithm/query/find.hpp | 4 ++-- include/boost/fusion/algorithm/query/find_if.hpp | 2 +- include/boost/fusion/iterator/advance.hpp | 4 ++-- include/boost/fusion/iterator/next.hpp | 2 +- include/boost/fusion/iterator/prior.hpp | 2 +- include/boost/fusion/sequence/intrinsic/begin.hpp | 4 ++-- include/boost/fusion/sequence/intrinsic/end.hpp | 4 ++-- 7 files changed, 11 insertions(+), 11 deletions(-) diff --git a/include/boost/fusion/algorithm/query/find.hpp b/include/boost/fusion/algorithm/query/find.hpp index fcc74341..a21c32b5 100644 --- a/include/boost/fusion/algorithm/query/find.hpp +++ b/include/boost/fusion/algorithm/query/find.hpp @@ -56,7 +56,7 @@ namespace boost { namespace fusion lazy_disable_if< is_const , result_of::find - >::type + >::type const find(Sequence& seq) { typedef typename result_of::find::filter filter; @@ -64,7 +64,7 @@ namespace boost { namespace fusion } template - inline typename result_of::find::type + inline typename result_of::find::type const find(Sequence const& seq) { typedef typename result_of::find::filter filter; diff --git a/include/boost/fusion/algorithm/query/find_if.hpp b/include/boost/fusion/algorithm/query/find_if.hpp index 05da4bfb..8c8f6d6b 100644 --- a/include/boost/fusion/algorithm/query/find_if.hpp +++ b/include/boost/fusion/algorithm/query/find_if.hpp @@ -51,7 +51,7 @@ namespace boost { namespace fusion } template - inline typename result_of::find_if::type + inline typename result_of::find_if::type const find_if(Sequence const& seq) { typedef diff --git a/include/boost/fusion/iterator/advance.hpp b/include/boost/fusion/iterator/advance.hpp index 918a37fa..a8e3e934 100644 --- a/include/boost/fusion/iterator/advance.hpp +++ b/include/boost/fusion/iterator/advance.hpp @@ -75,14 +75,14 @@ namespace boost { namespace fusion } template - inline typename result_of::advance_c::type + inline typename result_of::advance_c::type const advance_c(Iterator const& i) { return result_of::advance_c::call(i); } template - inline typename result_of::advance::type + inline typename result_of::advance::type const advance(Iterator const& i) { return result_of::advance::call(i); diff --git a/include/boost/fusion/iterator/next.hpp b/include/boost/fusion/iterator/next.hpp index fa69ae66..b5892d8c 100644 --- a/include/boost/fusion/iterator/next.hpp +++ b/include/boost/fusion/iterator/next.hpp @@ -54,7 +54,7 @@ namespace boost { namespace fusion } template - typename result_of::next::type + typename result_of::next::type const next(Iterator const& i) { return result_of::next::call(i); diff --git a/include/boost/fusion/iterator/prior.hpp b/include/boost/fusion/iterator/prior.hpp index b9528150..bc9aa825 100644 --- a/include/boost/fusion/iterator/prior.hpp +++ b/include/boost/fusion/iterator/prior.hpp @@ -54,7 +54,7 @@ namespace boost { namespace fusion } template - typename result_of::prior::type + typename result_of::prior::type const prior(Iterator const& i) { return result_of::prior::call(i); diff --git a/include/boost/fusion/sequence/intrinsic/begin.hpp b/include/boost/fusion/sequence/intrinsic/begin.hpp index 2c60008d..eb342866 100644 --- a/include/boost/fusion/sequence/intrinsic/begin.hpp +++ b/include/boost/fusion/sequence/intrinsic/begin.hpp @@ -58,14 +58,14 @@ namespace boost { namespace fusion } template - inline typename result_of::begin::type + inline typename result_of::begin::type const begin(Sequence& seq) { return result_of::begin::call(seq); } template - inline typename result_of::begin::type + inline typename result_of::begin::type const begin(Sequence const& seq) { return result_of::begin::call(seq); diff --git a/include/boost/fusion/sequence/intrinsic/end.hpp b/include/boost/fusion/sequence/intrinsic/end.hpp index 0194e53e..6d655550 100644 --- a/include/boost/fusion/sequence/intrinsic/end.hpp +++ b/include/boost/fusion/sequence/intrinsic/end.hpp @@ -58,14 +58,14 @@ namespace boost { namespace fusion } template - inline typename result_of::end::type + inline typename result_of::end::type const end(Sequence& seq) { return result_of::end::call(seq); } template - inline typename result_of::end::type + inline typename result_of::end::type const end(Sequence const& seq) { return result_of::end::call(seq); From 0faf16666f94e0604665fcf46805accd7187b64a Mon Sep 17 00:00:00 2001 From: Eric Niebler Date: Thu, 9 Nov 2006 06:36:04 +0000 Subject: [PATCH 044/234] segmented_size, for calculating the size of any segmented data structure [SVN r35945] --- .../fusion/sequence/intrinsic/ext_/size_s.hpp | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100755 include/boost/fusion/sequence/intrinsic/ext_/size_s.hpp diff --git a/include/boost/fusion/sequence/intrinsic/ext_/size_s.hpp b/include/boost/fusion/sequence/intrinsic/ext_/size_s.hpp new file mode 100755 index 00000000..4fbb58d1 --- /dev/null +++ b/include/boost/fusion/sequence/intrinsic/ext_/size_s.hpp @@ -0,0 +1,55 @@ +/*============================================================================= + Copyright (c) 2006 Eric Niebler + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_SIZE_S_08112006_1141) +#define FUSION_SIZE_S_08112006_1141 + +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + /////////////////////////////////////////////////////////////////////////// + // calculates the size of any segmented data structure. + template::value> + struct segmented_size; + + namespace detail + { + struct size_plus + { + template + struct result + : mpl::plus< + segmented_size::type> + , State + > + {}; + }; + } + + /////////////////////////////////////////////////////////////////////////// + template + struct segmented_size + : result_of::fold< + typename result_of::segments::type + , mpl::size_t<0> + , detail::size_plus + >::type + {}; + + template + struct segmented_size + : result_of::size + {}; +}} + +#endif From 2a652e5424b61762a271bb53e96e5ecbe09261c1 Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Sun, 12 Nov 2006 23:07:18 +0000 Subject: [PATCH 045/234] variant as a fusion sequence [SVN r36014] --- include/boost/fusion/sequence/adapted.hpp | 1 + .../boost/fusion/sequence/adapted/variant.hpp | 18 ++++ .../adapted/variant/detail/begin_impl.hpp | 46 +++++++++ .../adapted/variant/detail/end_impl.hpp | 46 +++++++++ .../adapted/variant/detail/size_impl.hpp | 33 +++++++ .../sequence/adapted/variant/tag_of.hpp | 29 ++++++ .../adapted/variant/variant_iterator.hpp | 94 +++++++++++++++++++ 7 files changed, 267 insertions(+) create mode 100644 include/boost/fusion/sequence/adapted/variant.hpp create mode 100644 include/boost/fusion/sequence/adapted/variant/detail/begin_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/variant/detail/end_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/variant/detail/size_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/variant/tag_of.hpp create mode 100644 include/boost/fusion/sequence/adapted/variant/variant_iterator.hpp diff --git a/include/boost/fusion/sequence/adapted.hpp b/include/boost/fusion/sequence/adapted.hpp index b9f6ca3c..80b05e21 100644 --- a/include/boost/fusion/sequence/adapted.hpp +++ b/include/boost/fusion/sequence/adapted.hpp @@ -13,5 +13,6 @@ #include #include #include +#include #endif diff --git a/include/boost/fusion/sequence/adapted/variant.hpp b/include/boost/fusion/sequence/adapted/variant.hpp new file mode 100644 index 00000000..ce2f2ebb --- /dev/null +++ b/include/boost/fusion/sequence/adapted/variant.hpp @@ -0,0 +1,18 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_VARIANT_12112006_1614) +#define BOOST_FUSION_VARIANT_12112006_1614 + +#include +#include +#include +#include +#include + +#endif diff --git a/include/boost/fusion/sequence/adapted/variant/detail/begin_impl.hpp b/include/boost/fusion/sequence/adapted/variant/detail/begin_impl.hpp new file mode 100644 index 00000000..fdf53755 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/variant/detail/begin_impl.hpp @@ -0,0 +1,46 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_VARIANT_BEGIN_IMPL_12112006_2137) +#define BOOST_FUSION_VARIANT_BEGIN_IMPL_12112006_2137 + +#include + +namespace boost { namespace fusion { + + struct variant_tag; + + template + struct variant_iterator; + + namespace extension + { + template + struct begin_impl; + + template <> + struct begin_impl + { + template + struct apply + { + typedef variant_iterator< + Seq, + typename mpl::begin::type> type; + + static type + call(Seq& v) + { + return type(v); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/variant/detail/end_impl.hpp b/include/boost/fusion/sequence/adapted/variant/detail/end_impl.hpp new file mode 100644 index 00000000..0414e7a9 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/variant/detail/end_impl.hpp @@ -0,0 +1,46 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_VARIANT_END_IMPL_12112006_2137) +#define BOOST_FUSION_VARIANT_END_IMPL_12112006_2137 + +#include + +namespace boost { namespace fusion { + + struct variant_tag; + + template + struct variant_iterator; + + namespace extension + { + template + struct end_impl; + + template <> + struct end_impl + { + template + struct apply + { + typedef variant_iterator< + Seq, + typename mpl::end::type> type; + + static type + call(Seq& v) + { + return type(v); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/variant/detail/size_impl.hpp b/include/boost/fusion/sequence/adapted/variant/detail/size_impl.hpp new file mode 100644 index 00000000..eb05f812 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/variant/detail/size_impl.hpp @@ -0,0 +1,33 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_VARIANT_SIZE_IMPL_12112006_2115) +#define BOOST_FUSION_VARIANT_SIZE_IMPL_12112006_2115 + +#include + +namespace boost { namespace fusion { + + struct variant_tag; + + namespace extension + { + template + struct size_impl; + + template<> + struct size_impl + { + template + struct apply : mpl::size + {}; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/variant/tag_of.hpp b/include/boost/fusion/sequence/adapted/variant/tag_of.hpp new file mode 100644 index 00000000..cd9dc2fc --- /dev/null +++ b/include/boost/fusion/sequence/adapted/variant/tag_of.hpp @@ -0,0 +1,29 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_VARIANT_TAG_OF_12112006_1704) +#define BOOST_FUSION_VARIANT_TAG_OF_12112006_1704 + +#include +#include + +namespace boost { namespace fusion +{ + struct variant_tag; + + namespace traits + { + template + struct tag_of > + { + typedef variant_tag type; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/variant/variant_iterator.hpp b/include/boost/fusion/sequence/adapted/variant/variant_iterator.hpp new file mode 100644 index 00000000..edf3c096 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/variant/variant_iterator.hpp @@ -0,0 +1,94 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_VARIANT_ITERATOR_12112006_1617) +#define BOOST_FUSION_VARIANT_ITERATOR_12112006_1617 + +#include + +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion { + + struct forward_traversal_tag; + + template + struct variant_iterator + : iterator_facade, forward_traversal_tag> + { + typedef Variant variant_type; + typedef Iterator iterator; + + variant_iterator(Variant& var) + : var_(var) {} + Variant& var_; + + template + struct next + { + typedef variant_iterator< + typename Iterator::variant_type, + typename mpl::next::type> type; + + static type + call(Iterator const& i) + { + return type(i.var_); + } + }; + + template + struct distance + : mpl::distance< + typename I1::iterator, + typename I2::iterator> + { + typedef typename mpl::distance< + typename I1::iterator, + typename I2::iterator>::type type; + + static type call(I1 const& i1, I2 const& i2) + { + return type(); + } + }; + + template + struct value_of + : mpl::deref + {}; + + template + struct deref + { + typedef typename mpl::eval_if< + is_const, + typename add_const::type>, + typename mpl::deref + >::type + type; + + static type + call(Iterator const & it) + { + typedef typename mpl::deref::type type; + type* result = get(&it.var_); + return result ? *result : type(); + } + }; + }; + +}} + +#endif From 6860872d7b8e4528dd75d3e1354c4f37dc4482dd Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Sun, 12 Nov 2006 23:08:59 +0000 Subject: [PATCH 046/234] adding tests for variant as adapted sequence [SVN r36015] --- test/Jamfile.v2 | 1 + test/sequence/variant.cpp | 46 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 test/sequence/variant.cpp diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 03acc124..496697f9 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -69,6 +69,7 @@ import testing ; [ run sequence/single_view.cpp : : : : ] [ run sequence/std_pair.cpp : : : : ] [ run sequence/array.cpp : : : : ] + [ run sequence/variant.cpp : : : : ] [ run sequence/tuple_comparison.cpp : : : : ] [ run sequence/tuple_construction.cpp : : : : ] [ run sequence/tuple_copy.cpp : : : : ] diff --git a/test/sequence/variant.cpp b/test/sequence/variant.cpp new file mode 100644 index 00000000..bb29e4d6 --- /dev/null +++ b/test/sequence/variant.cpp @@ -0,0 +1,46 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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 + +#include + +#include + +int main() +{ + namespace fusion = boost::fusion; + typedef boost::variant var_type; + var_type var = "hello"; + BOOST_TEST(fusion::size(var) == 2); + BOOST_TEST(fusion::distance(fusion::begin(var), fusion::end(var)) == 2); + BOOST_TEST(*fusion::next(fusion::begin(var)) == "hello"); + BOOST_TEST(fusion::next(fusion::next(fusion::begin(var))) == fusion::end(var)); + BOOST_MPL_ASSERT((boost::is_same< + fusion::result_of::value_of::type>::type, + double>)); + BOOST_MPL_ASSERT((boost::is_same< + fusion::result_of::value_of::type>::type>::type, + std::string>)); + return boost::report_errors(); +} From c0c9bbc700efe20ef934f63da4d6b19c4d82c3f4 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Mon, 13 Nov 2006 01:16:28 +0000 Subject: [PATCH 047/234] minor tweaks [SVN r36016] --- include/boost/fusion/iterator/iterator_facade.hpp | 15 +++++++++++++++ .../sequence/adapted/variant/variant_iterator.hpp | 10 ++++++++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/include/boost/fusion/iterator/iterator_facade.hpp b/include/boost/fusion/iterator/iterator_facade.hpp index a7250427..dd02e31c 100644 --- a/include/boost/fusion/iterator/iterator_facade.hpp +++ b/include/boost/fusion/iterator/iterator_facade.hpp @@ -9,7 +9,9 @@ #define FUSION_ITERATOR_FACADE_09252006_1011 #include +#include #include +#include namespace boost { namespace fusion { @@ -22,6 +24,7 @@ namespace boost { namespace fusion typedef Derived derived_type; typedef Category category; + // default implementation template struct equal_to // default implementation : is_same< @@ -29,6 +32,18 @@ namespace boost { namespace fusion , typename I2::derived_type > {}; + + // default implementation + template + struct advance : + mpl::if_c< + (N::value > 0) + , advance_detail::forward + , advance_detail::backward + >::type + { + BOOST_MPL_ASSERT_NOT((traits::is_random_access)); + }; }; }} diff --git a/include/boost/fusion/sequence/adapted/variant/variant_iterator.hpp b/include/boost/fusion/sequence/adapted/variant/variant_iterator.hpp index edf3c096..e3817d32 100644 --- a/include/boost/fusion/sequence/adapted/variant/variant_iterator.hpp +++ b/include/boost/fusion/sequence/adapted/variant/variant_iterator.hpp @@ -77,14 +77,20 @@ namespace boost { namespace fusion { typename add_const::type>, typename mpl::deref >::type + value_type; + + typedef typename + add_reference::type type; static type call(Iterator const & it) { typedef typename mpl::deref::type type; - type* result = get(&it.var_); - return result ? *result : type(); + if (type* result = get(&it.var_)) + return *result; + it.var_ = type(); // prime the variant + return *boost::get(&it.var_); // no-throw! } }; }; From 165910e4a377e93c3c0f2ae486e19fa041590a1f Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Mon, 13 Nov 2006 01:32:27 +0000 Subject: [PATCH 048/234] minor tweaks for intel [SVN r36017] --- .../sequence/adapted/variant/variant_iterator.hpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/include/boost/fusion/sequence/adapted/variant/variant_iterator.hpp b/include/boost/fusion/sequence/adapted/variant/variant_iterator.hpp index e3817d32..3be08e93 100644 --- a/include/boost/fusion/sequence/adapted/variant/variant_iterator.hpp +++ b/include/boost/fusion/sequence/adapted/variant/variant_iterator.hpp @@ -23,12 +23,12 @@ namespace boost { namespace fusion { struct forward_traversal_tag; - template + template struct variant_iterator - : iterator_facade, forward_traversal_tag> + : iterator_facade, forward_traversal_tag> { typedef Variant variant_type; - typedef Iterator iterator; + typedef MPLIterator iterator; variant_iterator(Variant& var) : var_(var) {} @@ -72,10 +72,11 @@ namespace boost { namespace fusion { template struct deref { - typedef typename mpl::eval_if< - is_const, - typename add_const::type>, - typename mpl::deref + typedef typename + mpl::eval_if< + is_const + , add_const::type> + , mpl::deref >::type value_type; From e3f20b522431483dd57d8fbc44fd4b8e0ce08e2f Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Mon, 13 Nov 2006 08:12:20 +0000 Subject: [PATCH 049/234] added missing traits support [SVN r36018] --- .../variant/detail/category_of_impl.hpp | 34 +++++++++++++++++++ .../variant/detail/is_sequence_impl.hpp | 32 +++++++++++++++++ .../adapted/variant/detail/is_view_impl.hpp | 32 +++++++++++++++++ 3 files changed, 98 insertions(+) create mode 100644 include/boost/fusion/sequence/adapted/variant/detail/category_of_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/variant/detail/is_sequence_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/variant/detail/is_view_impl.hpp diff --git a/include/boost/fusion/sequence/adapted/variant/detail/category_of_impl.hpp b/include/boost/fusion/sequence/adapted/variant/detail/category_of_impl.hpp new file mode 100644 index 00000000..44db65fd --- /dev/null +++ b/include/boost/fusion/sequence/adapted/variant/detail/category_of_impl.hpp @@ -0,0 +1,34 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_VARIANT_CATEGORY_OF_IMPL_13112006_0802) +#define BOOST_FUSION_VARIANT_CATEGORY_OF_IMPL_13112006_0802 + +namespace boost { namespace fusion { + + struct variant_tag; + struct forward_traversal_tag; + + namespace extension + { + template + struct category_of_impl; + + template<> + struct category_of_impl + { + template + struct apply + { + typedef forward_traversal_tag type; + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/variant/detail/is_sequence_impl.hpp b/include/boost/fusion/sequence/adapted/variant/detail/is_sequence_impl.hpp new file mode 100644 index 00000000..373ddd4a --- /dev/null +++ b/include/boost/fusion/sequence/adapted/variant/detail/is_sequence_impl.hpp @@ -0,0 +1,32 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_VARIANT_IS_SEQUENCE_IMPL_13112006_0748) +#define BOOST_FUSION_VARIANT_IS_SEQUENCE_IMPL_13112006_0748 + +#include + +namespace boost { namespace fusion { + + struct variant_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/sequence/adapted/variant/detail/is_view_impl.hpp b/include/boost/fusion/sequence/adapted/variant/detail/is_view_impl.hpp new file mode 100644 index 00000000..f17666da --- /dev/null +++ b/include/boost/fusion/sequence/adapted/variant/detail/is_view_impl.hpp @@ -0,0 +1,32 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_VARIANT_IS_VIEW_IMPL_13112006_0749) +#define BOOST_FUSION_VARIANT_IS_VIEW_IMPL_13112006_0749 + +#include + +namespace boost { namespace fusion { + + struct variant_tag; + + namespace extension + { + template + struct is_view_impl; + + template<> + struct is_view_impl + { + template + struct apply : mpl::false_ {}; + }; + } +}} + +#endif From fe9949a59cc5fc019c643c4e32a59a09371ef817 Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Mon, 13 Nov 2006 08:13:12 +0000 Subject: [PATCH 050/234] added variant traits tests [SVN r36019] --- test/sequence/variant.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/test/sequence/variant.cpp b/test/sequence/variant.cpp index bb29e4d6..45c08557 100644 --- a/test/sequence/variant.cpp +++ b/test/sequence/variant.cpp @@ -9,6 +9,10 @@ #include +#include +#include +#include + #include #include #include @@ -32,6 +36,13 @@ int main() namespace fusion = boost::fusion; typedef boost::variant var_type; var_type var = "hello"; + + BOOST_MPL_ASSERT((fusion::traits::is_sequence)); + BOOST_MPL_ASSERT_NOT((fusion::traits::is_view)); + BOOST_MPL_ASSERT((boost::is_same< + fusion::traits::category_of::type, + fusion::forward_traversal_tag>)); + BOOST_TEST(fusion::size(var) == 2); BOOST_TEST(fusion::distance(fusion::begin(var), fusion::end(var)) == 2); BOOST_TEST(*fusion::next(fusion::begin(var)) == "hello"); From f742cee848884399f5f8c6ffed2eab42e43168d2 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Mon, 13 Nov 2006 09:28:04 +0000 Subject: [PATCH 051/234] minor tweak [SVN r36020] --- include/boost/fusion/iterator/iterator_facade.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/include/boost/fusion/iterator/iterator_facade.hpp b/include/boost/fusion/iterator/iterator_facade.hpp index dd02e31c..af5c7719 100644 --- a/include/boost/fusion/iterator/iterator_facade.hpp +++ b/include/boost/fusion/iterator/iterator_facade.hpp @@ -10,6 +10,7 @@ #include #include +#include #include #include From 37baabd5d5b6a5cad1aa078b4b4ae1a6aa4b6531 Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Thu, 16 Nov 2006 22:08:50 +0000 Subject: [PATCH 052/234] variant missing include fixes [SVN r36062] --- include/boost/fusion/sequence/adapted/variant.hpp | 3 +++ .../boost/fusion/sequence/adapted/variant/variant_iterator.hpp | 1 + 2 files changed, 4 insertions(+) diff --git a/include/boost/fusion/sequence/adapted/variant.hpp b/include/boost/fusion/sequence/adapted/variant.hpp index ce2f2ebb..53be7781 100644 --- a/include/boost/fusion/sequence/adapted/variant.hpp +++ b/include/boost/fusion/sequence/adapted/variant.hpp @@ -10,6 +10,9 @@ #define BOOST_FUSION_VARIANT_12112006_1614 #include +#include +#include +#include #include #include #include diff --git a/include/boost/fusion/sequence/adapted/variant/variant_iterator.hpp b/include/boost/fusion/sequence/adapted/variant/variant_iterator.hpp index 3be08e93..06500409 100644 --- a/include/boost/fusion/sequence/adapted/variant/variant_iterator.hpp +++ b/include/boost/fusion/sequence/adapted/variant/variant_iterator.hpp @@ -18,6 +18,7 @@ #include #include #include +#include namespace boost { namespace fusion { From 5386f5dd3e298ad072225acf62d512d37316035a Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Thu, 16 Nov 2006 22:09:39 +0000 Subject: [PATCH 053/234] corrected iterator comparison defect [SVN r36063] --- include/boost/fusion/algorithm/iteration/accumulate.hpp | 5 +++-- include/boost/fusion/algorithm/iteration/fold.hpp | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/include/boost/fusion/algorithm/iteration/accumulate.hpp b/include/boost/fusion/algorithm/iteration/accumulate.hpp index 2b5cb12d..7b848e26 100644 --- a/include/boost/fusion/algorithm/iteration/accumulate.hpp +++ b/include/boost/fusion/algorithm/iteration/accumulate.hpp @@ -9,6 +9,7 @@ #define FUSION_ACCUMULATE_09172005_1032 #include +#include #include namespace boost { namespace fusion @@ -40,7 +41,7 @@ namespace boost { namespace fusion , fusion::end(seq) , state , f - , is_same< + , result_of::equal_to< typename result_of::begin::type , typename result_of::end::type>() ); @@ -55,7 +56,7 @@ namespace boost { namespace fusion , fusion::end(seq) , state , f - , is_same< + , result_of::equal_to< typename result_of::begin::type , typename result_of::end::type>() ); diff --git a/include/boost/fusion/algorithm/iteration/fold.hpp b/include/boost/fusion/algorithm/iteration/fold.hpp index 2189203b..279daa1c 100644 --- a/include/boost/fusion/algorithm/iteration/fold.hpp +++ b/include/boost/fusion/algorithm/iteration/fold.hpp @@ -10,6 +10,7 @@ #include #include +#include #include namespace boost { namespace fusion @@ -41,7 +42,7 @@ namespace boost { namespace fusion , fusion::end(seq) , state , f - , is_same< + , result_of::equal_to< typename result_of::begin::type , typename result_of::end::type>() ); @@ -56,7 +57,7 @@ namespace boost { namespace fusion , fusion::end(seq) , state , f - , is_same< + , result_of::equal_to< typename result_of::begin::type , typename result_of::end::type>() ); From 4a0304a6999c101ee53d363dc205bd4a6e925174 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Sun, 19 Nov 2006 05:15:31 +0000 Subject: [PATCH 054/234] sequence performance tests [SVN r36086] --- example/performance/Jamfile.v2 | 3 + example/performance/measure.hpp | 81 +++++++++ example/performance/sequence_efficiency.cpp | 179 ++++++++++++++++++++ example/performance/timings.txt | 49 ++++++ 4 files changed, 312 insertions(+) create mode 100644 example/performance/measure.hpp create mode 100644 example/performance/sequence_efficiency.cpp create mode 100644 example/performance/timings.txt diff --git a/example/performance/Jamfile.v2 b/example/performance/Jamfile.v2 index ec8e7b29..53d5ec5f 100644 --- a/example/performance/Jamfile.v2 +++ b/example/performance/Jamfile.v2 @@ -13,3 +13,6 @@ exe accumulate : accumulate.cpp ; exe inner_product : inner_product.cpp ; exe inner_product2 : inner_product2.cpp ; + +exe sequence_efficiency : sequence_efficiency.cpp ; + diff --git a/example/performance/measure.hpp b/example/performance/measure.hpp new file mode 100644 index 00000000..9749d1e2 --- /dev/null +++ b/example/performance/measure.hpp @@ -0,0 +1,81 @@ +// Copyright David Abrahams, Matthias Troyer, Michael Gauckler +// 2005. Distributed under the 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 + +namespace test +{ + // This value is required to ensure that a smart compiler's dead + // code elimination doesn't optimize away anything we're testing. + // We'll use it to compute the return code of the executable to make + // sure it's needed. + int live_code; + + // Call objects of the given Accumulator type repeatedly with x as + // an argument. + template + void hammer(Arg const& x, long const repeats) + { + // Strategy: because the sum in an accumulator after each call + // depends on the previous value of the sum, the CPU's pipeline + // might be stalled while waiting for the previous addition to + // complete. Therefore, we allocate an array of accumulators, + // and update them in sequence, so that there's no dependency + // between adjacent addition operations. + // + // Additionally, if there were only one accumulator, the + // compiler or CPU might decide to update the value in a + // register rather that writing it back to memory. we want each + // operation to at least update the L1 cache. *** Note: This + // concern is specific to the particular application at which + // we're targeting the test. *** + + // This has to be at least as large as the number of + // simultaneous accumulations that can be executing in the + // compiler pipeline. A safe number here is larger than the + // machine's maximum pipeline depth. If you want to test the L2 + // or L3 cache, or main memory, you can increase the size of + // this array. 1024 is an upper limit on the pipeline depth of + // current vector machines. + const std::size_t number_of_accumulators = 1024; + live_code = 0; // reset to zero + + Accumulator a[number_of_accumulators]; + + for (long iteration = 0; iteration < repeats; ++iteration) + { + for (Accumulator* ap = a; ap < a + number_of_accumulators; ++ap) + { + (*ap)(x); + } + } + + // Accumulate all the partial sums to avoid dead code + // elimination. + for (Accumulator* ap = a; ap < a + number_of_accumulators; ++ap) + { + live_code += ap->sum; + } + } + + // Measure the time required to hammer accumulators of the given + // type with the argument x. + template + double measure(T const& x, long const repeats) + { + // Hammer accumulators a couple of times to ensure the + // instruction cache is full of our test code, and that we don't + // measure the cost of a page fault for accessing the data page + // containing the memory where the accumulators will be + // allocated + hammer(x, repeats); + hammer(x, repeats); + + // Now start a timer + boost::timer time; + hammer(x, repeats); // This time, we'll measure + return time.elapsed() / repeats; // return the time of one iteration + } +} diff --git a/example/performance/sequence_efficiency.cpp b/example/performance/sequence_efficiency.cpp new file mode 100644 index 00000000..e9515838 --- /dev/null +++ b/example/performance/sequence_efficiency.cpp @@ -0,0 +1,179 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 "measure.hpp" + +#define FUSION_MAX_LIST_SIZE 30 +#define FUSION_MAX_VECTOR_SIZE 30 + +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#ifdef _MSC_VER +// inline aggressively +# pragma inline_recursion(on) // turn on inline recursion +# pragma inline_depth(255) // max inline depth +#endif + +namespace +{ + struct poly_add + { + template + struct result + { + typedef Lhs type; + }; + + template + Lhs operator()(const Lhs& lhs, const Rhs& rhs) const + { + return lhs + rhs; + } + }; + + // Our Accumulator function + template + struct accumulator + { + accumulator() + : sum() + {} + + template + void operator()(Sequence const& seq) + { + this->sum += boost::fusion::accumulate(seq, 0, poly_add()); + } + + T sum; + }; +} + +int main() +{ + using namespace test; + using namespace boost::fusion; + + vector< + int, int, int + > + vsmall(BOOST_PP_ENUM_PARAMS(3,)); + + list< + int, int, int + > + lsmall(BOOST_PP_ENUM_PARAMS(3,)); + + vector< + int, int, int, int, int, int, int, int, int, int + > + vmid(BOOST_PP_ENUM_PARAMS(10,)); + + list< + int, int, int, int, int, int, int, int, int, int + > + lmid(BOOST_PP_ENUM_PARAMS(10,)); + + vector< + int, int, int, int, int, int, int, int, int, int + , int, int, int, int, int, int, int, int, int, int + , int, int, int, int, int, int, int, int, int, int + > + vbig(BOOST_PP_ENUM_PARAMS(30,)); + + list< + int, int, int, int, int, int, int, int, int, int + , int, int, int, int, int, int, int, int, int, int + , int, int, int, int, int, int, int, int, int, int + > + lbig(BOOST_PP_ENUM_PARAMS(30,)); + + // first decide how many repetitions to measure + long repeats = 100; + double measured = 0; + while (measured < 1.0 && repeats <= 10000000) + { + repeats *= 10; + + boost::timer time; + + hammer >(vsmall, repeats); + hammer >(lsmall, repeats); + hammer >(vmid, repeats); + hammer >(lmid, repeats); + hammer >(vbig, repeats); + hammer >(lbig, repeats); + + measured = time.elapsed(); + } + + measure >(vsmall, 1); + std::cout + << "small vector accumulated result: " + << live_code << std::endl; + measure >(lsmall, 1); + std::cout + << "small list accumulated result: " + << live_code << std::endl; + measure >(vmid, 1); + std::cout + << "medium vector accumulated result: " + << live_code << std::endl; + measure >(lmid, 1); + std::cout + << "medium list accumulated result: " + << live_code << std::endl; + measure >(vbig, 1); + std::cout + << "big vector accumulated result: " + << live_code << std::endl; + measure >(lbig, 1); + std::cout + << "big list accumulated result: " + << live_code << std::endl; + + std::cout.setf(std::ios::scientific); + + std::cout + << "small vector time: " + << measure >(vsmall, repeats) + << std::endl; + std::cout + << "small list time: " + << measure >(lsmall, repeats) + << std::endl; + std::cout + << "medium vector time: " + << measure >(vmid, repeats) + << std::endl; + std::cout + << "medium list time: " + << measure >(lmid, repeats) + << std::endl; + std::cout + << "big vector time: " + << measure >(vbig, repeats) + << std::endl; + std::cout + << "big list time: " + << measure >(lbig, repeats) + << std::endl; + + // This is ultimately responsible for preventing all the test code + // from being optimized away. Change this to return 0 and you + // unplug the whole test's life support system. + return live_code != 0; +} diff --git a/example/performance/timings.txt b/example/performance/timings.txt new file mode 100644 index 00000000..af383d87 --- /dev/null +++ b/example/performance/timings.txt @@ -0,0 +1,49 @@ +Timing result for sequence_efficiency.cpp comparing the speed of various +fusion sequences. The test involves accumulating the elements of the +sequence which is primed to have values 0..N (N=size of sequence). Small, +medium and big sequences are tested where: + + small = 3 elements + medium = 10 elements + big = 30 elements + +Tester: Joel de Guzman. WinXP, P4-3.0GHZ, 2GB RAM + +VC7.1 (flags = /MD /O2 /EHsc /GS) + + small vector time: 1.880000e-006 + small list time: 2.040000e-006 + medium vector time: 2.030000e-006 + medium list time: 3.590000e-006 + big vector time: 1.880000e-006 + big list time: 9.070000e-006 + +VC8.0 (flags = /MD /O2 /EHsc /GS) + + small vector time: 1.880000e-006 + small list time: 2.030000e-006 + medium vector time: 2.030000e-006 + medium list time: 3.750000e-006 + big vector time: 1.880000e-006 + big list time: 9.380000e-006 + +G++ 3.4 (flags = -ftemplate-depth-128 -funroll-loops -O3 -finline-functions -Wno-inline -Wall) + + small vector time: 2.500000e-05 + small list time: 2.500000e-05 + medium vector time: 7.970000e-05 + medium list time: 7.970000e-05 + big vector time: 2.516000e-04 + big list time: 2.485000e-04 + +Intel 9.1 (flags = /MD /O2 /EHsc /GS) + + small vector time: 1.141000e-006 + small list time: 1.156000e-006 + medium vector time: 1.156000e-006 + medium list time: 1.156000e-006 + big vector time: 1.171000e-006 + big list time: 1.156000e-006 + + + From 70eb7e588d0c3da9f9306ab8f3e6923fac8253a3 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Sun, 19 Nov 2006 14:17:29 +0000 Subject: [PATCH 055/234] updates + zip tests [SVN r36087] --- example/performance/sequence_efficiency.cpp | 124 +++++++--------- example/performance/timings.txt | 36 ++--- example/performance/zip_efficiency.cpp | 156 ++++++++++++++++++++ 3 files changed, 228 insertions(+), 88 deletions(-) create mode 100644 example/performance/zip_efficiency.cpp diff --git a/example/performance/sequence_efficiency.cpp b/example/performance/sequence_efficiency.cpp index e9515838..368a045a 100644 --- a/example/performance/sequence_efficiency.cpp +++ b/example/performance/sequence_efficiency.cpp @@ -14,12 +14,11 @@ #include #include -#include -#include -#include +#include +#include +#include + #include -#include -#include #ifdef _MSC_VER // inline aggressively @@ -60,120 +59,105 @@ namespace T sum; }; + + template + void check(T const& seq, char const* info) + { + test::measure >(seq, 1); + std::cout << info << test::live_code << std::endl; + } + + template + void measure(T const& seq, char const* info, long const repeats) + { + std::cout + << info + << test::measure >(seq, repeats) + << std::endl; + } } +// We'll initialize the sequences from numeric strings that +// pass through boost::lexical_cast to make sure that the +// compiler is not optimizing by replacing the computation +// with constant results computed at compile time. +#define INIT(z, n, text) boost::lexical_cast(BOOST_PP_STRINGIZE(n)) + int main() { - using namespace test; using namespace boost::fusion; + std::cout.setf(std::ios::scientific); + vector< int, int, int > - vsmall(BOOST_PP_ENUM_PARAMS(3,)); + vsmall(BOOST_PP_ENUM(3, INIT, _)); list< int, int, int > - lsmall(BOOST_PP_ENUM_PARAMS(3,)); + lsmall(BOOST_PP_ENUM(3, INIT, _)); vector< int, int, int, int, int, int, int, int, int, int > - vmid(BOOST_PP_ENUM_PARAMS(10,)); + vmedium(BOOST_PP_ENUM(10, INIT, _)); list< int, int, int, int, int, int, int, int, int, int > - lmid(BOOST_PP_ENUM_PARAMS(10,)); + lmedium(BOOST_PP_ENUM(10, INIT, _)); vector< int, int, int, int, int, int, int, int, int, int , int, int, int, int, int, int, int, int, int, int , int, int, int, int, int, int, int, int, int, int > - vbig(BOOST_PP_ENUM_PARAMS(30,)); + vbig(BOOST_PP_ENUM(30, INIT, _)); list< int, int, int, int, int, int, int, int, int, int , int, int, int, int, int, int, int, int, int, int , int, int, int, int, int, int, int, int, int, int > - lbig(BOOST_PP_ENUM_PARAMS(30,)); + lbig(BOOST_PP_ENUM(30, INIT, _)); // first decide how many repetitions to measure long repeats = 100; double measured = 0; - while (measured < 1.0 && repeats <= 10000000) + while (measured < 2.0 && repeats <= 10000000) { repeats *= 10; boost::timer time; - hammer >(vsmall, repeats); - hammer >(lsmall, repeats); - hammer >(vmid, repeats); - hammer >(lmid, repeats); - hammer >(vbig, repeats); - hammer >(lbig, repeats); + test::hammer >(vsmall, repeats); + test::hammer >(lsmall, repeats); + test::hammer >(vmedium, repeats); + test::hammer >(lmedium, repeats); + test::hammer >(vbig, repeats); + test::hammer >(lbig, repeats); measured = time.elapsed(); } - measure >(vsmall, 1); - std::cout - << "small vector accumulated result: " - << live_code << std::endl; - measure >(lsmall, 1); - std::cout - << "small list accumulated result: " - << live_code << std::endl; - measure >(vmid, 1); - std::cout - << "medium vector accumulated result: " - << live_code << std::endl; - measure >(lmid, 1); - std::cout - << "medium list accumulated result: " - << live_code << std::endl; - measure >(vbig, 1); - std::cout - << "big vector accumulated result: " - << live_code << std::endl; - measure >(lbig, 1); - std::cout - << "big list accumulated result: " - << live_code << std::endl; + check(vsmall, "small vector accumulated result: "); + check(lsmall, "small list accumulated result: "); + check(vmedium, "medium vector accumulated result: "); + check(lmedium, "medium list accumulated result: "); + check(vbig, "big vector accumulated result: "); + check(lbig, "big list accumulated result: "); - std::cout.setf(std::ios::scientific); - - std::cout - << "small vector time: " - << measure >(vsmall, repeats) - << std::endl; - std::cout - << "small list time: " - << measure >(lsmall, repeats) - << std::endl; - std::cout - << "medium vector time: " - << measure >(vmid, repeats) - << std::endl; - std::cout - << "medium list time: " - << measure >(lmid, repeats) - << std::endl; - std::cout - << "big vector time: " - << measure >(vbig, repeats) - << std::endl; - std::cout - << "big list time: " - << measure >(lbig, repeats) - << std::endl; + measure(vsmall, "small vector time: ", repeats); + measure(lsmall, "small list time: ", repeats); + measure(vmedium, "medium vector time: ", repeats); + measure(lmedium, "medium list time: ", repeats); + measure(vbig, "big vector time: ", repeats); + measure(lbig, "big list time: ", repeats); // This is ultimately responsible for preventing all the test code // from being optimized away. Change this to return 0 and you // unplug the whole test's life support system. - return live_code != 0; + return test::live_code != 0; } diff --git a/example/performance/timings.txt b/example/performance/timings.txt index af383d87..0ab51e55 100644 --- a/example/performance/timings.txt +++ b/example/performance/timings.txt @@ -11,21 +11,21 @@ Tester: Joel de Guzman. WinXP, P4-3.0GHZ, 2GB RAM VC7.1 (flags = /MD /O2 /EHsc /GS) - small vector time: 1.880000e-006 - small list time: 2.040000e-006 - medium vector time: 2.030000e-006 - medium list time: 3.590000e-006 - big vector time: 1.880000e-006 - big list time: 9.070000e-006 + small vector time: 1.870000e-006 + small list time: 1.870000e-006 + medium vector time: 1.880000e-006 + medium list time: 3.600000e-006 + big vector time: 2.030000e-006 + big list time: 8.910000e-006 VC8.0 (flags = /MD /O2 /EHsc /GS) - small vector time: 1.880000e-006 - small list time: 2.030000e-006 - medium vector time: 2.030000e-006 - medium list time: 3.750000e-006 - big vector time: 1.880000e-006 - big list time: 9.380000e-006 + small vector time: 2.500000e-05 + small list time: 2.500000e-05 + medium vector time: 7.810000e-05 + medium list time: 7.810000e-05 + big vector time: 2.469000e-04 + big list time: 2.453000e-04 G++ 3.4 (flags = -ftemplate-depth-128 -funroll-loops -O3 -finline-functions -Wno-inline -Wall) @@ -38,12 +38,12 @@ G++ 3.4 (flags = -ftemplate-depth-128 -funroll-loops -O3 -finline-functions -Wn Intel 9.1 (flags = /MD /O2 /EHsc /GS) - small vector time: 1.141000e-006 - small list time: 1.156000e-006 - medium vector time: 1.156000e-006 - medium list time: 1.156000e-006 - big vector time: 1.171000e-006 - big list time: 1.156000e-006 + small vector time: 1.125000e-006 + small list time: 1.125000e-006 + medium vector time: 1.125000e-006 + medium list time: 1.141000e-006 + big vector time: 1.140000e-006 + big list time: 1.141000e-006 diff --git a/example/performance/zip_efficiency.cpp b/example/performance/zip_efficiency.cpp new file mode 100644 index 00000000..8cea77cf --- /dev/null +++ b/example/performance/zip_efficiency.cpp @@ -0,0 +1,156 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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 "measure.hpp" + +//~ #define FUSION_MAX_VECTOR_SIZE 30 + +#include +#include +#include +#include +#include +#include +#include + +#ifdef _MSC_VER +// inline aggressively +# pragma inline_recursion(on) // turn on inline recursion +# pragma inline_depth(255) // max inline depth +#endif + +namespace +{ + struct zip_add + { + template + struct result + { + typedef typename + boost::remove_reference< + typename boost::fusion::result_of::value_at_c::type + >::type + type; + }; + + template + typename result::type + operator()(const Lhs& lhs, const Rhs& rhs) const + { + return boost::fusion::at_c<0>(lhs) + boost::fusion::at_c<1>(lhs) + rhs; + } + }; + + // Our Accumulator function + template + struct zip_accumulator + { + zip_accumulator() + : sum() + {} + + template + void operator()(Sequence const& seq) + { + this->sum += boost::fusion::accumulate(seq, 0, zip_add()); + } + + T sum; + }; + + template + void check(T const& seq, char const* info) + { + test::measure >(seq, 1); + std::cout << info << test::live_code << std::endl; + } + + template + void measure(T const& seq, char const* info, long const repeats) + { + std::cout + << info + << test::measure >(seq, repeats) + << std::endl; + } +} + +int main() +{ + using namespace boost::fusion; + + std::cout.setf(std::ios::scientific); + + vector< + int, int, int + > + vsmall_1(BOOST_PP_ENUM_PARAMS(3,)); + + vector< + int, int, int + > + vsmall_2(BOOST_PP_ENUM_PARAMS(3,)); + + vector< + int, int, int, int, int, int, int, int, int, int + > + vmedium_1(BOOST_PP_ENUM_PARAMS(10,)); + + vector< + int, int, int, int, int, int, int, int, int, int + > + vmedium_2(BOOST_PP_ENUM_PARAMS(10,)); + + //~ vector< + //~ int, int, int, int, int, int, int, int, int, int + //~ , int, int, int, int, int, int, int, int, int, int + //~ , int, int, int, int, int, int, int, int, int, int + //~ > + //~ vbig_1(BOOST_PP_ENUM_PARAMS(30,)); + + //~ vector< + //~ int, int, int, int, int, int, int, int, int, int + //~ , int, int, int, int, int, int, int, int, int, int + //~ , int, int, int, int, int, int, int, int, int, int + //~ > + //~ vbig_2(BOOST_PP_ENUM_PARAMS(30,)); + + // first decide how many repetitions to measure + long repeats = 100; + double measured = 0; + while (measured < 2.0 && repeats <= 10000000) + { + repeats *= 10; + + boost::timer time; + + test::hammer >(zip(vsmall_1, vsmall_2), repeats); + test::hammer >(zip(vmedium_1, vmedium_2), repeats); + //~ test::hammer >(zip(vbig_1, vbig_2), repeats); + + measured = time.elapsed(); + } + + check(zip(vsmall_1, vsmall_2), + "small zip accumulated result: "); + check(zip(vmedium_1, vmedium_2), + "medium zip accumulated result: "); + //~ check(zip(vbig_1, vbig_2), + //~ "big zip accumulated result: "); + + measure(zip(vsmall_1, vsmall_2), + "small zip time: ", repeats); + measure(zip(vmedium_1, vmedium_2), + "medium zip time: ", repeats); + //~ measure(zip(vbig_1, vbig_2), + //~ "big zip time: ", repeats); + + // This is ultimately responsible for preventing all the test code + // from being optimized away. Change this to return 0 and you + // unplug the whole test's life support system. + return test::live_code != 0; +} From 15ff870381fedb2b82721d2e64b638a44b2896a6 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Sun, 19 Nov 2006 16:06:02 +0000 Subject: [PATCH 056/234] added code to peek into assembler [SVN r36088] --- example/performance/sequence_efficiency.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/example/performance/sequence_efficiency.cpp b/example/performance/sequence_efficiency.cpp index 368a045a..35cc0111 100644 --- a/example/performance/sequence_efficiency.cpp +++ b/example/performance/sequence_efficiency.cpp @@ -75,6 +75,12 @@ namespace << test::measure >(seq, repeats) << std::endl; } + + template + void test_assembler(T const& seq) + { + test::live_code = boost::fusion::accumulate(seq, 0, poly_add()); + } } // We'll initialize the sequences from numeric strings that @@ -155,6 +161,9 @@ int main() measure(lmedium, "medium list time: ", repeats); measure(vbig, "big vector time: ", repeats); measure(lbig, "big list time: ", repeats); + + // Let's see how this looks in assembler + test_assembler(vmedium); // This is ultimately responsible for preventing all the test code // from being optimized away. Change this to return 0 and you From 141dac45fef5c5863ca691214be3d54df4748c9c Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Mon, 20 Nov 2006 06:18:12 +0000 Subject: [PATCH 057/234] no more #include [SVN r36102] --- .../fusion/sequence/adapted/variant/variant_iterator.hpp | 8 ++++---- include/boost/fusion/sequence/io/detail/in.hpp | 2 +- include/boost/fusion/sequence/io/detail/manip.hpp | 1 - include/boost/fusion/sequence/io/detail/out.hpp | 2 +- include/boost/fusion/sequence/io/in.hpp | 2 +- include/boost/fusion/sequence/io/out.hpp | 2 +- 6 files changed, 8 insertions(+), 9 deletions(-) diff --git a/include/boost/fusion/sequence/adapted/variant/variant_iterator.hpp b/include/boost/fusion/sequence/adapted/variant/variant_iterator.hpp index 06500409..188166b2 100644 --- a/include/boost/fusion/sequence/adapted/variant/variant_iterator.hpp +++ b/include/boost/fusion/sequence/adapted/variant/variant_iterator.hpp @@ -19,9 +19,10 @@ #include #include #include +#include -namespace boost { namespace fusion { - +namespace boost { namespace fusion +{ struct forward_traversal_tag; template @@ -89,14 +90,13 @@ namespace boost { namespace fusion { call(Iterator const & it) { typedef typename mpl::deref::type type; - if (type* result = get(&it.var_)) + if (type* result = boost::get(&it.var_)) return *result; it.var_ = type(); // prime the variant return *boost::get(&it.var_); // no-throw! } }; }; - }} #endif diff --git a/include/boost/fusion/sequence/io/detail/in.hpp b/include/boost/fusion/sequence/io/detail/in.hpp index 7054bfe3..3bf67dcb 100644 --- a/include/boost/fusion/sequence/io/detail/in.hpp +++ b/include/boost/fusion/sequence/io/detail/in.hpp @@ -10,7 +10,7 @@ #if !defined(FUSION_IN_05052005_0121) #define FUSION_IN_05052005_0121 -#include +#include #include #include diff --git a/include/boost/fusion/sequence/io/detail/manip.hpp b/include/boost/fusion/sequence/io/detail/manip.hpp index c5776199..e951e35c 100644 --- a/include/boost/fusion/sequence/io/detail/manip.hpp +++ b/include/boost/fusion/sequence/io/detail/manip.hpp @@ -11,7 +11,6 @@ #define FUSION_MANIP_05052005_1200 #include -#include #include #include #include diff --git a/include/boost/fusion/sequence/io/detail/out.hpp b/include/boost/fusion/sequence/io/detail/out.hpp index e00ed17b..1865c5d3 100644 --- a/include/boost/fusion/sequence/io/detail/out.hpp +++ b/include/boost/fusion/sequence/io/detail/out.hpp @@ -10,7 +10,7 @@ #if !defined(FUSION_OUT_05052005_0121) #define FUSION_OUT_05052005_0121 -#include +#include #include #include diff --git a/include/boost/fusion/sequence/io/in.hpp b/include/boost/fusion/sequence/io/in.hpp index f77e14e8..c3e5a1c5 100644 --- a/include/boost/fusion/sequence/io/in.hpp +++ b/include/boost/fusion/sequence/io/in.hpp @@ -10,7 +10,7 @@ #if !defined(BOOST_IN_05042005_0120) #define BOOST_IN_05042005_0120 -#include +#include #include #include #include diff --git a/include/boost/fusion/sequence/io/out.hpp b/include/boost/fusion/sequence/io/out.hpp index d5b6fcc8..00491b8b 100644 --- a/include/boost/fusion/sequence/io/out.hpp +++ b/include/boost/fusion/sequence/io/out.hpp @@ -10,7 +10,7 @@ #if !defined(BOOST_OUT_05042005_0120) #define BOOST_OUT_05042005_0120 -#include +#include #include #include #include From 1b7f4a1a478112d2d172b9da0d57dd20666dfbdc Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Mon, 20 Nov 2006 23:17:25 +0000 Subject: [PATCH 058/234] Documentation fix + stuff [SVN r36122] --- doc/changelog.qbk | 5 +++ doc/html/fusion/algorithms.html | 6 ++-- .../concepts/polymorphic_function_object.html | 6 ++-- doc/html/fusion/algorithms/iteration.html | 2 +- .../iteration/functions/accumulate.html | 14 ++++----- .../algorithms/iteration/functions/fold.html | 14 ++++----- .../iteration/functions/for_each.html | 14 ++++----- .../iteration/metafunctions/accumulate.html | 12 +++---- .../iteration/metafunctions/fold.html | 12 +++---- .../iteration/metafunctions/for_each.html | 12 +++---- doc/html/fusion/algorithms/query.html | 2 +- .../algorithms/query/functions/all.html | 14 ++++----- .../algorithms/query/functions/any.html | 14 ++++----- .../algorithms/query/functions/count.html | 14 ++++----- .../algorithms/query/functions/count_if.html | 14 ++++----- .../algorithms/query/functions/find.html | 14 ++++----- .../algorithms/query/functions/find_if.html | 14 ++++----- .../algorithms/query/functions/none.html | 14 ++++----- .../algorithms/query/metafunctions/all.html | 12 +++---- .../algorithms/query/metafunctions/any.html | 12 +++---- .../algorithms/query/metafunctions/count.html | 12 +++---- .../query/metafunctions/count_if.html | 12 +++---- .../algorithms/query/metafunctions/find.html | 12 +++---- .../query/metafunctions/find_if.html | 12 +++---- .../algorithms/query/metafunctions/none.html | 12 +++---- .../fusion/algorithms/transformation.html | 2 +- .../transformation/functions/clear.html | 14 ++++----- .../transformation/functions/erase.html | 14 ++++----- .../transformation/functions/erase_key.html | 14 ++++----- .../transformation/functions/filter.html | 14 ++++----- .../transformation/functions/filter_if.html | 14 ++++----- .../transformation/functions/insert.html | 14 ++++----- .../functions/insert_range.html | 14 ++++----- .../transformation/functions/join.html | 14 ++++----- .../transformation/functions/pop_back.html | 14 ++++----- .../transformation/functions/pop_front.html | 14 ++++----- .../transformation/functions/push_back.html | 14 ++++----- .../transformation/functions/push_front.html | 14 ++++----- .../transformation/functions/remove.html | 14 ++++----- .../transformation/functions/remove_if.html | 14 ++++----- .../transformation/functions/replace.html | 14 ++++----- .../transformation/functions/replace_if.html | 14 ++++----- .../transformation/functions/reverse.html | 14 ++++----- .../transformation/functions/transform.html | 18 +++++------ .../transformation/functions/zip.html | 14 ++++----- .../transformation/metafunctions/clear.html | 12 +++---- .../transformation/metafunctions/erase.html | 12 +++---- .../metafunctions/erase_key.html | 12 +++---- .../transformation/metafunctions/filter.html | 12 +++---- .../metafunctions/filter_if.html | 12 +++---- .../transformation/metafunctions/insert.html | 12 +++---- .../metafunctions/insert_range.html | 12 +++---- .../transformation/metafunctions/join.html | 10 +++--- .../metafunctions/pop_back.html | 12 +++---- .../metafunctions/pop_front.html | 12 +++---- .../metafunctions/push_back.html | 12 +++---- .../metafunctions/push_front.html | 12 +++---- .../transformation/metafunctions/remove.html | 12 +++---- .../metafunctions/remove_if.html | 12 +++---- .../transformation/metafunctions/replace.html | 12 +++---- .../metafunctions/replace_if.html | 12 +++---- .../transformation/metafunctions/reverse.html | 12 +++---- .../metafunctions/transform.html | 12 +++---- .../transformation/metafunctions/zip.html | 10 +++--- doc/html/fusion/change_log.html | 10 ++++++ doc/html/fusion/extension.html | 16 +++++----- doc/html/fusion/iterators.html | 2 +- .../concepts/bidirectional_iterator.html | 14 ++++----- .../iterators/concepts/forward_iterator.html | 12 +++---- .../concepts/random_access_iterator.html | 10 +++--- .../fusion/iterators/functions/advance.html | 12 +++---- .../fusion/iterators/functions/advance_c.html | 12 +++---- .../fusion/iterators/functions/deref.html | 12 +++---- .../fusion/iterators/functions/distance.html | 12 +++---- doc/html/fusion/iterators/functions/next.html | 12 +++---- .../fusion/iterators/functions/prior.html | 12 +++---- .../iterators/metafunctions/advance.html | 12 +++---- .../iterators/metafunctions/advance_c.html | 12 +++---- .../fusion/iterators/metafunctions/deref.html | 12 +++---- .../iterators/metafunctions/distance.html | 12 +++---- .../iterators/metafunctions/equal_to.html | 12 +++---- .../fusion/iterators/metafunctions/next.html | 12 +++---- .../fusion/iterators/metafunctions/prior.html | 12 +++---- .../iterators/metafunctions/value_of.html | 12 +++---- .../operators/operator_equality.html | 10 +++--- .../operators/operator_inequality.html | 10 +++--- .../operators/operator_unary_star.html | 12 +++---- doc/html/fusion/notes.html | 16 +++++----- doc/html/fusion/organization.html | 10 +++--- doc/html/fusion/preface.html | 10 +++--- doc/html/fusion/quick_start.html | 16 +++++----- doc/html/fusion/sequences.html | 2 +- doc/html/fusion/sequences/adapted.html | 6 ++-- .../sequences/adapted/boost__array.html | 8 ++--- .../sequences/adapted/mpl_sequence.html | 8 ++--- .../fusion/sequences/adapted/std__pair.html | 8 ++--- doc/html/fusion/sequences/concepts.html | 4 +-- .../concepts/associative_sequence.html | 10 +++--- .../concepts/bidirectional_sequence.html | 12 +++---- .../sequences/concepts/forward_sequence.html | 12 +++---- .../concepts/random_access_sequence.html | 12 +++---- doc/html/fusion/sequences/containers.html | 2 +- .../fusion/sequences/containers/cons.html | 14 ++++----- .../fusion/sequences/containers/list.html | 14 ++++----- doc/html/fusion/sequences/containers/map.html | 14 ++++----- doc/html/fusion/sequences/containers/set.html | 14 ++++----- .../fusion/sequences/containers/vector.html | 14 ++++----- doc/html/fusion/sequences/conversion.html | 2 +- .../conversion/functions/as_list.html | 12 +++---- .../conversion/functions/as_map.html | 12 +++---- .../conversion/functions/as_set.html | 12 +++---- .../conversion/functions/as_vector.html | 12 +++---- .../conversion/metafunctions/as_list.html | 12 +++---- .../conversion/metafunctions/as_map.html | 12 +++---- .../conversion/metafunctions/as_set.html | 12 +++---- .../conversion/metafunctions/as_vector.html | 12 +++---- doc/html/fusion/sequences/generation.html | 2 +- .../generation/functions/list_tie.html | 12 +++---- .../generation/functions/make_cons.html | 14 ++++----- .../generation/functions/make_list.html | 14 ++++----- .../generation/functions/make_map.html | 18 +++++------ .../generation/functions/make_set.html | 18 +++++------ .../generation/functions/make_vector.html | 14 ++++----- .../sequences/generation/functions/tiers.html | 6 ++-- .../generation/functions/vector_tie.html | 12 +++---- .../generation/metafunctions/list_tie.html | 12 +++---- .../generation/metafunctions/make_cons.html | 12 +++---- .../generation/metafunctions/make_list.html | 12 +++---- .../generation/metafunctions/make_map.html | 18 +++++------ .../generation/metafunctions/make_set.html | 16 +++++----- .../generation/metafunctions/make_vector.html | 12 +++---- .../generation/metafunctions/vector_tie.html | 12 +++---- doc/html/fusion/sequences/intrinsics.html | 6 ++-- .../sequences/intrinsics/functions/at.html | 12 +++---- .../sequences/intrinsics/functions/at_c.html | 12 +++---- .../intrinsics/functions/at_key.html | 12 +++---- .../sequences/intrinsics/functions/back.html | 12 +++---- .../sequences/intrinsics/functions/begin.html | 12 +++---- .../sequences/intrinsics/functions/empty.html | 12 +++---- .../sequences/intrinsics/functions/end.html | 12 +++---- .../sequences/intrinsics/functions/front.html | 12 +++---- .../intrinsics/functions/has_key.html | 12 +++---- .../sequences/intrinsics/functions/size.html | 12 +++---- .../intrinsics/metafunctions/at.html | 16 +++++----- .../intrinsics/metafunctions/at_c.html | 16 +++++----- .../intrinsics/metafunctions/at_key.html | 16 +++++----- .../intrinsics/metafunctions/back.html | 12 +++---- .../intrinsics/metafunctions/begin.html | 12 +++---- .../intrinsics/metafunctions/empty.html | 12 +++---- .../intrinsics/metafunctions/end.html | 12 +++---- .../intrinsics/metafunctions/front.html | 12 +++---- .../intrinsics/metafunctions/has_key.html | 12 +++---- .../intrinsics/metafunctions/size.html | 12 +++---- .../intrinsics/metafunctions/value_at.html | 12 +++---- .../intrinsics/metafunctions/value_at_c.html | 12 +++---- .../metafunctions/value_at_key.html | 12 +++---- .../sequences/operators/comparison.html | 2 +- .../sequences/operators/comparison/equal.html | 12 +++---- .../operators/comparison/greater_than.html | 10 +++--- .../comparison/greater_than_equal.html | 10 +++--- .../operators/comparison/less_than.html | 10 +++--- .../operators/comparison/less_than_equal.html | 10 +++--- .../operators/comparison/not_equal.html | 10 +++--- doc/html/fusion/sequences/operators/i_o.html | 2 +- .../fusion/sequences/operators/i_o/in.html | 12 +++---- .../fusion/sequences/operators/i_o/out.html | 12 +++---- doc/html/fusion/sequences/views.html | 2 +- .../fusion/sequences/views/filter_view.html | 14 ++++----- .../sequences/views/iterator_range.html | 14 ++++----- .../fusion/sequences/views/joint_view.html | 14 ++++----- .../fusion/sequences/views/reverse_view.html | 12 +++---- .../fusion/sequences/views/single_view.html | 12 +++---- .../sequences/views/transform_view.html | 12 +++---- doc/html/fusion/sequences/views/zip_view.html | 14 ++++----- doc/html/fusion/support/category_of.html | 12 +++---- doc/html/fusion/support/is_sequence.html | 12 +++---- doc/html/fusion/support/is_view.html | 12 +++---- doc/html/fusion/support/pair.html | 12 +++---- doc/html/fusion/support/tag_of.html | 31 +++++++++---------- .../fusion/tuples/class_template_tuple.html | 4 +-- .../class_template_tuple/construction.html | 4 +-- .../class_template_tuple/element_access.html | 4 +-- .../relational_operators.html | 4 +-- .../tuple_creation_functions.html | 4 +-- .../tuple_helper_classes.html | 4 +-- doc/html/fusion/tuples/pairs.html | 4 +-- doc/html/index.html | 4 +-- doc/support.qbk | 19 ++++++------ 188 files changed, 1085 insertions(+), 1072 deletions(-) diff --git a/doc/changelog.qbk b/doc/changelog.qbk index aa030033..9add2b34 100644 --- a/doc/changelog.qbk +++ b/doc/changelog.qbk @@ -1,3 +1,8 @@ [section Change log] + This section summarizes significant changes to the Fusion library. + +* Sep 27, 2006: Added `boost::tuple` support. +* Nov 17, 2006: Added `boost::variant` support. + [endsect] \ No newline at end of file diff --git a/doc/html/fusion/algorithms.html b/doc/html/fusion/algorithms.html index 533de96c..02678133 100644 --- a/doc/html/fusion/algorithms.html +++ b/doc/html/fusion/algorithms.html @@ -33,7 +33,7 @@
Transformation

- + Lazy Evaluation

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

- + Sequence Extension

@@ -79,7 +79,7 @@ functions to convert back to the original sequence type.

- + Header

diff --git a/doc/html/fusion/algorithms/concepts/polymorphic_function_object.html b/doc/html/fusion/algorithms/concepts/polymorphic_function_object.html
index b4034a5d..0afc0693 100644
--- a/doc/html/fusion/algorithms/concepts/polymorphic_function_object.html
+++ b/doc/html/fusion/algorithms/concepts/polymorphic_function_object.html
@@ -29,7 +29,7 @@
         Function Object">Polymorphic
         Function Object
 
- + Description

@@ -61,7 +61,7 @@

- + Refinement of
@@ -69,7 +69,7 @@ MPL Metafunction Class

- + Expression requirements
diff --git a/doc/html/fusion/algorithms/iteration.html b/doc/html/fusion/algorithms/iteration.html index 98766d3f..27065719 100644 --- a/doc/html/fusion/algorithms/iteration.html +++ b/doc/html/fusion/algorithms/iteration.html @@ -35,7 +35,7 @@ a sequence repeatedly applying an operation to its elements.

- + Header

diff --git a/doc/html/fusion/algorithms/iteration/functions/accumulate.html b/doc/html/fusion/algorithms/iteration/functions/accumulate.html
index b7f9bdfa..5d73da29 100644
--- a/doc/html/fusion/algorithms/iteration/functions/accumulate.html
+++ b/doc/html/fusion/algorithms/iteration/functions/accumulate.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -37,7 +37,7 @@ fold.

- + Synopsis
@@ -50,7 +50,7 @@
     Sequence& seq, State const& initial_state, F const& f);
 
-

Table 1.33. Parameters

+

Table 1.33. Parameters

@@ -93,7 +93,7 @@
- + Expression Semantics
@@ -108,21 +108,21 @@ where e1 ...eN are the elements of seq.

- + Complexity

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

- + Header
 #include <boost/fusion/algorithm/iteration/accumulate.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/iteration/functions/fold.html b/doc/html/fusion/algorithms/iteration/functions/fold.html
index 864db0d6..232d24e7 100644
--- a/doc/html/fusion/algorithms/iteration/functions/fold.html
+++ b/doc/html/fusion/algorithms/iteration/functions/fold.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -36,7 +36,7 @@ to each element of a sequence and the previous state.

- + Synopsis
@@ -49,7 +49,7 @@
     Sequence& seq, State const& initial_state, F const& f);
 
-

Table 1.32. Parameters

+

Table 1.32. Parameters

@@ -91,7 +91,7 @@
- + Expression Semantics
@@ -106,21 +106,21 @@ where e1 ...eN are the elements of seq.

- + Complexity

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

- + Header
 #include <boost/fusion/algorithm/iteration/fold.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/iteration/functions/for_each.html b/doc/html/fusion/algorithms/iteration/functions/for_each.html
index c25aa70a..d1f4f9e5 100644
--- a/doc/html/fusion/algorithms/iteration/functions/for_each.html
+++ b/doc/html/fusion/algorithms/iteration/functions/for_each.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

- + Synopsis
@@ -45,7 +45,7 @@
     Sequence& seq, F const& f);
 
-

Table 1.34. Parameters

+

Table 1.34. Parameters

@@ -78,7 +78,7 @@
- + Expression Semantics
@@ -93,21 +93,21 @@ in seq.

- + Complexity

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

- + Header
 #include <boost/fusion/algorithm/iteration/for_each.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html b/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html
index 07db6a46..77bded2e 100644
--- a/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html
+++ b/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of accumulate.

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

Table 1.36. Parameters

+

Table 1.36. Parameters

@@ -91,7 +91,7 @@
- + Expression Semantics
@@ -111,14 +111,14 @@ Function Object of type F.

- + Complexity

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

- + Header
diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/fold.html b/doc/html/fusion/algorithms/iteration/metafunctions/fold.html
index 64a6c6cd..6c733a63 100644
--- a/doc/html/fusion/algorithms/iteration/metafunctions/fold.html
+++ b/doc/html/fusion/algorithms/iteration/metafunctions/fold.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of fold.

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

Table 1.35. Parameters

+

Table 1.35. Parameters

@@ -91,7 +91,7 @@
- + Expression Semantics
@@ -111,14 +111,14 @@ Function Object of type F.

- + Complexity

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

- + Header
diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html b/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html
index b48e3184..e10784e0 100644
--- a/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html
+++ b/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html
@@ -30,11 +30,11 @@
             return type of for_each is always void.
           

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

Table 1.37. Parameters

+

Table 1.37. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -98,14 +98,14 @@ return type is always void.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/query.html b/doc/html/fusion/algorithms/query.html
index 6f3a2880..1df0002c 100644
--- a/doc/html/fusion/algorithms/query.html
+++ b/doc/html/fusion/algorithms/query.html
@@ -33,7 +33,7 @@
         The query algorithms provide support for searching and analyzing sequences.
       

- + Header

diff --git a/doc/html/fusion/algorithms/query/functions/all.html b/doc/html/fusion/algorithms/query/functions/all.html
index dc3349a4..6b433016 100644
--- a/doc/html/fusion/algorithms/query/functions/all.html
+++ b/doc/html/fusion/algorithms/query/functions/all.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.39. Parameters

+

Table 1.39. Parameters

@@ -84,7 +84,7 @@
- + Expression Semantics
@@ -101,21 +101,21 @@ element e in seq.

- + Complexity

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

- + Header
 #include <boost/fusion/algorithm/query/all.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/query/functions/any.html b/doc/html/fusion/algorithms/query/functions/any.html
index b9634c87..0b3d2651 100644
--- a/doc/html/fusion/algorithms/query/functions/any.html
+++ b/doc/html/fusion/algorithms/query/functions/any.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.38. Parameters

+

Table 1.38. Parameters

@@ -84,7 +84,7 @@
- + Expression semantics
@@ -101,21 +101,21 @@ element e in seq.

- + Complexity

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

- + Header
 #include <boost/fusion/algorithm/query/any.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/query/functions/count.html b/doc/html/fusion/algorithms/query/functions/count.html
index e049fa21..4d16da53 100644
--- a/doc/html/fusion/algorithms/query/functions/count.html
+++ b/doc/html/fusion/algorithms/query/functions/count.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

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

Table 1.43. Parameters

+

Table 1.43. Parameters

@@ -81,7 +81,7 @@
- + Expression Semantics
@@ -97,21 +97,21 @@ t in seq.

- + Complexity

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

- + Header
 #include <boost/fusion/algorithm/query/count.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/query/functions/count_if.html b/doc/html/fusion/algorithms/query/functions/count_if.html
index db43103e..b0c83b1c 100644
--- a/doc/html/fusion/algorithms/query/functions/count_if.html
+++ b/doc/html/fusion/algorithms/query/functions/count_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.44. Parameters

+

Table 1.44. Parameters

@@ -81,7 +81,7 @@
- + Expression Semantics
@@ -96,21 +96,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/query/functions/find.html b/doc/html/fusion/algorithms/query/functions/find.html
index d1e3edc3..3cf2fd3d 100644
--- a/doc/html/fusion/algorithms/query/functions/find.html
+++ b/doc/html/fusion/algorithms/query/functions/find.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

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

Table 1.41. Parameters

+

Table 1.41. Parameters

@@ -82,7 +82,7 @@
- + Expression Semantics
@@ -100,21 +100,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/query/functions/find_if.html b/doc/html/fusion/algorithms/query/functions/find_if.html
index dc662903..9fcd9f5f 100644
--- a/doc/html/fusion/algorithms/query/functions/find_if.html
+++ b/doc/html/fusion/algorithms/query/functions/find_if.html
@@ -30,11 +30,11 @@
             MPL Lambda Expression evaluates to boost::mpl::true_.
           

- + Description
- + Synopsis
@@ -51,7 +51,7 @@
 unspecified find_if(Sequence& seq);
 
-

Table 1.42. Parameters

+

Table 1.42. Parameters

@@ -83,7 +83,7 @@
- + Expression Semantics
@@ -102,21 +102,21 @@ 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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/query/functions/none.html b/doc/html/fusion/algorithms/query/functions/none.html
index 14a3db19..1ec01c4f 100644
--- a/doc/html/fusion/algorithms/query/functions/none.html
+++ b/doc/html/fusion/algorithms/query/functions/none.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.40. Parameters

+

Table 1.40. Parameters

@@ -84,7 +84,7 @@
- + Expression Semantics
@@ -101,21 +101,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/query/metafunctions/all.html b/doc/html/fusion/algorithms/query/metafunctions/all.html
index ec66bd45..cc97ad80 100644
--- a/doc/html/fusion/algorithms/query/metafunctions/all.html
+++ b/doc/html/fusion/algorithms/query/metafunctions/all.html
@@ -26,14 +26,14 @@
 
 
- + Description

A metafunction returning the result type of all.

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

Table 1.46. Parameters

+

Table 1.46. Parameters

@@ -82,7 +82,7 @@
- + Expression Semantics
@@ -102,14 +102,14 @@ The return type is always bool.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/query/metafunctions/any.html b/doc/html/fusion/algorithms/query/metafunctions/any.html
index 03d1d144..c576105e 100644
--- a/doc/html/fusion/algorithms/query/metafunctions/any.html
+++ b/doc/html/fusion/algorithms/query/metafunctions/any.html
@@ -26,14 +26,14 @@
 
 
- + Description

A metafunction returning the result type of any.

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

Table 1.45. Parameters

+

Table 1.45. Parameters

@@ -82,7 +82,7 @@
- + Expression Semantics
@@ -102,14 +102,14 @@ The return type is always bool.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/query/metafunctions/count.html b/doc/html/fusion/algorithms/query/metafunctions/count.html
index c3ef2654..be0994ef 100644
--- a/doc/html/fusion/algorithms/query/metafunctions/count.html
+++ b/doc/html/fusion/algorithms/query/metafunctions/count.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.50. Parameters

+

Table 1.50. Parameters

@@ -81,7 +81,7 @@
- + Expression Semantics
@@ -97,14 +97,14 @@ int.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/query/metafunctions/count_if.html b/doc/html/fusion/algorithms/query/metafunctions/count_if.html
index f97f55f5..c95d4c07 100644
--- a/doc/html/fusion/algorithms/query/metafunctions/count_if.html
+++ b/doc/html/fusion/algorithms/query/metafunctions/count_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.51. Parameters

+

Table 1.51. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -96,14 +96,14 @@ always int.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/query/metafunctions/find.html b/doc/html/fusion/algorithms/query/metafunctions/find.html
index 697666fe..389730c1 100644
--- a/doc/html/fusion/algorithms/query/metafunctions/find.html
+++ b/doc/html/fusion/algorithms/query/metafunctions/find.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.48. Parameters

+

Table 1.48. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -97,14 +97,14 @@ in Sequence, or result_of::end<Sequence>::type if there is no such element.

- + Complexity

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

- + Header
diff --git a/doc/html/fusion/algorithms/query/metafunctions/find_if.html b/doc/html/fusion/algorithms/query/metafunctions/find_if.html
index e678e5a2..01708c3e 100644
--- a/doc/html/fusion/algorithms/query/metafunctions/find_if.html
+++ b/doc/html/fusion/algorithms/query/metafunctions/find_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.49. Parameters

+

Table 1.49. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -98,14 +98,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
diff --git a/doc/html/fusion/algorithms/query/metafunctions/none.html b/doc/html/fusion/algorithms/query/metafunctions/none.html
index 525ccc39..2c07b571 100644
--- a/doc/html/fusion/algorithms/query/metafunctions/none.html
+++ b/doc/html/fusion/algorithms/query/metafunctions/none.html
@@ -26,14 +26,14 @@
 
 
- + Description

A metafunction returning the result type of none.

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

Table 1.47. Parameters

+

Table 1.47. Parameters

@@ -82,7 +82,7 @@
- + Expression Semantics
@@ -102,14 +102,14 @@ The return type is always bool.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation.html b/doc/html/fusion/algorithms/transformation.html
index 7d0a1219..a6dc5c71 100644
--- a/doc/html/fusion/algorithms/transformation.html
+++ b/doc/html/fusion/algorithms/transformation.html
@@ -46,7 +46,7 @@
         

- + Header

diff --git a/doc/html/fusion/algorithms/transformation/functions/clear.html b/doc/html/fusion/algorithms/transformation/functions/clear.html
index 1eb35893..2c921d8f 100644
--- a/doc/html/fusion/algorithms/transformation/functions/clear.html
+++ b/doc/html/fusion/algorithms/transformation/functions/clear.html
@@ -26,14 +26,14 @@
 
 
- + Description

clear returns an empty sequence.

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

Table 1.61. Parameters

+

Table 1.61. Parameters

@@ -67,7 +67,7 @@
- + Expression Semantics
@@ -84,21 +84,21 @@ with no elements.

- + Complexity

Constant.

- + Header
 #include <boost/fusion/algorithm/transformation/clear.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/erase.html b/doc/html/fusion/algorithms/transformation/functions/erase.html
index 1016a97e..100046fa 100644
--- a/doc/html/fusion/algorithms/transformation/functions/erase.html
+++ b/doc/html/fusion/algorithms/transformation/functions/erase.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.62. Parameters

+

Table 1.62. Parameters

@@ -101,7 +101,7 @@
- + Expression Semantics
@@ -132,21 +132,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/erase_key.html b/doc/html/fusion/algorithms/transformation/functions/erase_key.html
index b1f8a57a..a3357d59 100644
--- a/doc/html/fusion/algorithms/transformation/functions/erase_key.html
+++ b/doc/html/fusion/algorithms/transformation/functions/erase_key.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -39,7 +39,7 @@ with a given key.

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

Table 1.63. Parameters

+

Table 1.63. Parameters

@@ -82,7 +82,7 @@
- + Expression Semantics
@@ -100,21 +100,21 @@ except those with key Key.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/erase_key.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/filter.html b/doc/html/fusion/algorithms/transformation/functions/filter.html
index 201b9707..25d2999d 100644
--- a/doc/html/fusion/algorithms/transformation/functions/filter.html
+++ b/doc/html/fusion/algorithms/transformation/functions/filter.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.52. Parameters

+

Table 1.52. Parameters

@@ -77,7 +77,7 @@
- + Expression Semantics
@@ -96,21 +96,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/filter_if.html b/doc/html/fusion/algorithms/transformation/functions/filter_if.html
index d9407e68..2e6cfa6f 100644
--- a/doc/html/fusion/algorithms/transformation/functions/filter_if.html
+++ b/doc/html/fusion/algorithms/transformation/functions/filter_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.53. Parameters

+

Table 1.53. Parameters

@@ -79,7 +79,7 @@
- + Expression Semantics
@@ -99,21 +99,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/insert.html b/doc/html/fusion/algorithms/transformation/functions/insert.html
index 5faf5c17..01e27160 100644
--- a/doc/html/fusion/algorithms/transformation/functions/insert.html
+++ b/doc/html/fusion/algorithms/transformation/functions/insert.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Synposis
@@ -46,7 +46,7 @@
 unspecified insert(Sequence const& seq, Pos const& pos, T const& t);
 
-

Table 1.64. Parameters

+

Table 1.64. Parameters

@@ -87,7 +87,7 @@
- + Expression Semantics
@@ -107,21 +107,21 @@ pos.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/insert.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/insert_range.html b/doc/html/fusion/algorithms/transformation/functions/insert_range.html
index 6d3d7982..89cd125e 100644
--- a/doc/html/fusion/algorithms/transformation/functions/insert_range.html
+++ b/doc/html/fusion/algorithms/transformation/functions/insert_range.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ iterator.

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

Table 1.65. Parameters

+

Table 1.65. Parameters

@@ -91,7 +91,7 @@
- + Expression Semantics
@@ -111,21 +111,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/join.html b/doc/html/fusion/algorithms/transformation/functions/join.html
index c2d3062d..241ef678 100644
--- a/doc/html/fusion/algorithms/transformation/functions/join.html
+++ b/doc/html/fusion/algorithms/transformation/functions/join.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.66. Parameters

+

Table 1.66. Parameters

@@ -79,7 +79,7 @@
- + Expression Semantics
@@ -98,21 +98,21 @@ The order of th elements is preserved.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/join.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/pop_back.html b/doc/html/fusion/algorithms/transformation/functions/pop_back.html
index e8b1a026..6bb20aca 100644
--- a/doc/html/fusion/algorithms/transformation/functions/pop_back.html
+++ b/doc/html/fusion/algorithms/transformation/functions/pop_back.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

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

Table 1.68. Parameters

+

Table 1.68. Parameters

@@ -67,7 +67,7 @@
- + Expression Semantics
@@ -86,21 +86,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/pop_front.html b/doc/html/fusion/algorithms/transformation/functions/pop_front.html
index 96bb3e14..67c4d598 100644
--- a/doc/html/fusion/algorithms/transformation/functions/pop_front.html
+++ b/doc/html/fusion/algorithms/transformation/functions/pop_front.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

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

Table 1.69. Parameters

+

Table 1.69. Parameters

@@ -67,7 +67,7 @@
- + Expression Semantics
@@ -86,21 +86,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/push_back.html b/doc/html/fusion/algorithms/transformation/functions/push_back.html
index 7a0b631c..c4d401ce 100644
--- a/doc/html/fusion/algorithms/transformation/functions/push_back.html
+++ b/doc/html/fusion/algorithms/transformation/functions/push_back.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

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

Table 1.70. Parameters

+

Table 1.70. Parameters

@@ -77,7 +77,7 @@
- + Expression Semantics
@@ -96,21 +96,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/push_front.html b/doc/html/fusion/algorithms/transformation/functions/push_front.html
index eaa4eeaa..f18d6c3c 100644
--- a/doc/html/fusion/algorithms/transformation/functions/push_front.html
+++ b/doc/html/fusion/algorithms/transformation/functions/push_front.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

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

Table 1.71. Parameters

+

Table 1.71. Parameters

@@ -77,7 +77,7 @@
- + Expression Semantics
@@ -97,21 +97,21 @@ seq.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/push_front.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/remove.html b/doc/html/fusion/algorithms/transformation/functions/remove.html
index d775ac0e..e078fb58 100644
--- a/doc/html/fusion/algorithms/transformation/functions/remove.html
+++ b/doc/html/fusion/algorithms/transformation/functions/remove.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.58. Parameters

+

Table 1.58. Parameters

@@ -77,7 +77,7 @@
- + Expression Semantics
@@ -96,21 +96,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/remove_if.html b/doc/html/fusion/algorithms/transformation/functions/remove_if.html
index d1c92cd2..bc429741 100644
--- a/doc/html/fusion/algorithms/transformation/functions/remove_if.html
+++ b/doc/html/fusion/algorithms/transformation/functions/remove_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.59. Parameters

+

Table 1.59. Parameters

@@ -77,7 +77,7 @@
- + Expression Semantics
@@ -96,21 +96,21 @@ Pred evaluates to boost::mpl::true_. Equivalent to filter<boost::mpl::not_<Pred> >(seq).

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/remove_if.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/replace.html b/doc/html/fusion/algorithms/transformation/functions/replace.html
index 5d950dca..332098ad 100644
--- a/doc/html/fusion/algorithms/transformation/functions/replace.html
+++ b/doc/html/fusion/algorithms/transformation/functions/replace.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.56. Parameters

+

Table 1.56. Parameters

@@ -89,7 +89,7 @@
- + Expression Semantics
@@ -108,21 +108,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/replace_if.html b/doc/html/fusion/algorithms/transformation/functions/replace_if.html
index 17fdf850..d8a360a7 100644
--- a/doc/html/fusion/algorithms/transformation/functions/replace_if.html
+++ b/doc/html/fusion/algorithms/transformation/functions/replace_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.57. Parameters

+

Table 1.57. Parameters

@@ -88,7 +88,7 @@
- + Expression Semantics
@@ -108,21 +108,21 @@ evaluates to true.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/replace_if.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/reverse.html b/doc/html/fusion/algorithms/transformation/functions/reverse.html
index e626a741..b1e553a7 100644
--- a/doc/html/fusion/algorithms/transformation/functions/reverse.html
+++ b/doc/html/fusion/algorithms/transformation/functions/reverse.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

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

Table 1.60. Parameters

+

Table 1.60. Parameters

@@ -67,7 +67,7 @@
- + Expression Semantics
@@ -85,21 +85,21 @@ in reverse order.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/reverse.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/transform.html b/doc/html/fusion/algorithms/transformation/functions/transform.html
index d16be2fc..13551a00 100644
--- a/doc/html/fusion/algorithms/transformation/functions/transform.html
+++ b/doc/html/fusion/algorithms/transformation/functions/transform.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -39,7 +39,7 @@ to each element of seq.

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

Table 1.54. Parameters

+

Table 1.54. Parameters

@@ -89,7 +89,7 @@
- + Expression Semantics
@@ -107,7 +107,7 @@ within seq.

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

Table 1.55. Parameters

+

Table 1.55. Parameters

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

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/transform.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/zip.html b/doc/html/fusion/algorithms/transformation/functions/zip.html
index fe9d27f5..8a7d1d9c 100644
--- a/doc/html/fusion/algorithms/transformation/functions/zip.html
+++ b/doc/html/fusion/algorithms/transformation/functions/zip.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.67. Parameters

+

Table 1.67. Parameters

@@ -73,7 +73,7 @@
- + Expression Semantics
@@ -93,21 +93,21 @@ ('a', 'b', 'c') would return ((1, 'a'),(2, 'b'),(3, 'c'))

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/zip.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/clear.html b/doc/html/fusion/algorithms/transformation/metafunctions/clear.html
index b0e7adf0..a34b7a24 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/clear.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/clear.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ type.

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

Table 1.80. Parameters

+

Table 1.80. Parameters

@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -84,14 +84,14 @@ Semantics: Returns an empty sequence.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/erase.html b/doc/html/fusion/algorithms/transformation/metafunctions/erase.html
index 21f4d19d..7e658f71 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/erase.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/erase.html
@@ -30,11 +30,11 @@
             and range delimiting iterator types.
           

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

Table 1.81. Parameters

+

Table 1.81. Parameters

@@ -92,7 +92,7 @@
- + Expression Semantics
@@ -122,14 +122,14 @@ and It2 removed.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html b/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html
index 967dbdf3..50412b72 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.82. Parameters

+

Table 1.82. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -98,14 +98,14 @@ except those with key Key.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/filter.html b/doc/html/fusion/algorithms/transformation/metafunctions/filter.html
index a35df094..31fecf30 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/filter.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/filter.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.72. Parameter

+

Table 1.72. Parameter

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -99,14 +99,14 @@ to result_of::filter_if<Sequence, boost::is_same<mpl::_, T> >::type.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html
index 14ed41df..a9cbcf1b 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ and unary MPL Lambda Expression predicate type.

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

Table 1.73. Parameter

+

Table 1.73. Parameter

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -99,14 +99,14 @@ to boost::mpl::true_.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/insert.html b/doc/html/fusion/algorithms/transformation/metafunctions/insert.html
index 93332968..91aabb36 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/insert.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/insert.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.83. Parameters

+

Table 1.83. Parameters

@@ -90,7 +90,7 @@
- + Expression Semantics
@@ -109,14 +109,14 @@ in Sequence.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html b/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html
index 4f22957d..bdfa4391 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.84. Parameters

+

Table 1.84. Parameters

@@ -93,7 +93,7 @@
- + Expression Semantics
@@ -112,14 +112,14 @@ into Sequence.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/join.html b/doc/html/fusion/algorithms/transformation/metafunctions/join.html
index 93aafbbf..6585a9c6 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/join.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/join.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

- + Synopsis
@@ -47,7 +47,7 @@
 };
 
- + Expression Semantics
@@ -66,14 +66,14 @@ The order of the elements in the 2 sequences is preserved.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html b/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html
index 694e30d2..9f0a017c 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ type.

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

Table 1.85. Parameters

+

Table 1.85. Parameters

@@ -71,7 +71,7 @@
- + Expression Semantics
@@ -89,14 +89,14 @@ except the last element.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html b/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html
index ccd579a6..2e5be632 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ type.

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

Table 1.86. Parameters

+

Table 1.86. Parameters

@@ -71,7 +71,7 @@
- + Expression Semantics
@@ -89,14 +89,14 @@ except the first element.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html b/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html
index 1ee62780..cb6198ae 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.87. Parameters

+

Table 1.87. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -99,14 +99,14 @@ added to the end.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html b/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html
index 59866717..1d8094a2 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.88. Parameters

+

Table 1.88. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -99,14 +99,14 @@ added to the beginning.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/remove.html b/doc/html/fusion/algorithms/transformation/metafunctions/remove.html
index c1991050..e01b1e98 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/remove.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/remove.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.77. Parameters

+

Table 1.77. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -99,14 +99,14 @@ to result_of::replace_if<Sequence, boost::is_same<mpl::_, T> >::type.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html
index 49e8d017..ff5e1a3e 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ and unary MPL Lambda Expression predicate types.

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

Table 1.78. Parameters

+

Table 1.78. Parameters

@@ -82,7 +82,7 @@
- + Expression Semantics
@@ -101,14 +101,14 @@ to boost::mpl::false_.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/replace.html b/doc/html/fusion/algorithms/transformation/metafunctions/replace.html
index 7fb71c43..a844c62d 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/replace.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/replace.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.75. Parameters

+

Table 1.75. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -97,14 +97,14 @@ replace.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html
index a560eb78..59401b0a 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Synopsis
@@ -50,7 +50,7 @@
 };
 
-

Table 1.76. Parameters

+

Table 1.76. Parameters

@@ -91,7 +91,7 @@
- + Expression Semantics
@@ -108,14 +108,14 @@ replace_if.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html b/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html
index ec6c3a0c..55f08032 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ type.

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

Table 1.79. Parameters

+

Table 1.79. Parameters

@@ -71,7 +71,7 @@
- + Expression Semantics
@@ -88,14 +88,14 @@ elements in the reverse order to Sequence.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/transform.html b/doc/html/fusion/algorithms/transformation/metafunctions/transform.html
index 422f821c..ef21b594 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/transform.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/transform.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -36,7 +36,7 @@ Function Object types.

- + Synopsis
@@ -50,7 +50,7 @@
 };
 
-

Table 1.74. Parameters

+

Table 1.74. Parameters

@@ -84,7 +84,7 @@
- + Expression Semantics
@@ -101,14 +101,14 @@ F::apply<E>::type for each element type E in Sequence.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/zip.html b/doc/html/fusion/algorithms/transformation/metafunctions/zip.html
index cd4daa0c..f55cedec 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/zip.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/zip.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Synopsis
@@ -50,7 +50,7 @@
 };
 
- + Expression Semantics
@@ -69,14 +69,14 @@ return ((1, 'a'),(2, 'b'),(3, 'c'))

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/change_log.html b/doc/html/fusion/change_log.html
index 71050df0..8da6cb1f 100644
--- a/doc/html/fusion/change_log.html
+++ b/doc/html/fusion/change_log.html
@@ -28,6 +28,16 @@
 

This section summarizes significant changes to the Fusion library.

+
    +
  • + Sep 27, 2006: Added boost::tuple + support. +
  • +
  • + Nov 17, 2006: Added boost::variant + support. +
  • +
diff --git a/doc/html/fusion/extension.html b/doc/html/fusion/extension.html index 56380a30..b796842e 100644 --- a/doc/html/fusion/extension.html +++ b/doc/html/fusion/extension.html @@ -48,7 +48,7 @@

- + Our example

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

- + Enabling Tag Dispatching

@@ -121,7 +121,7 @@ #include <boost/fusion/sequence/adapted/mpl/tag_of.hpp>

- + Designing a suitable iterator

@@ -184,7 +184,7 @@ clearer as we add features to our implementation.

- + A first couple of instructive features

@@ -327,7 +327,7 @@

- + Implementing the remaining iterator functionality

@@ -382,7 +382,7 @@ are provided in the example code.

- + Implementing the intrinsic functions of the sequence

@@ -441,7 +441,7 @@ value_at_impl and at_impl.

- + Enabling our type as an associative container

@@ -507,7 +507,7 @@ of is_associative_impl.

- + Summary

diff --git a/doc/html/fusion/iterators.html b/doc/html/fusion/iterators.html index b08a8243..4b960e0b 100644 --- a/doc/html/fusion/iterators.html +++ b/doc/html/fusion/iterators.html @@ -40,7 +40,7 @@ Sequence.

- + Header

diff --git a/doc/html/fusion/iterators/concepts/bidirectional_iterator.html b/doc/html/fusion/iterators/concepts/bidirectional_iterator.html
index 7e34fa35..65feb9ea 100644
--- a/doc/html/fusion/iterators/concepts/bidirectional_iterator.html
+++ b/doc/html/fusion/iterators/concepts/bidirectional_iterator.html
@@ -31,7 +31,7 @@
         Iterator">Bidirectional
         Iterator
 
- + Description

@@ -61,7 +61,7 @@

- + Refinement of
@@ -70,7 +70,7 @@ Iterator">Forward Iterator

- + Expression requirements
@@ -123,7 +123,7 @@
- + Meta Expressions
@@ -143,7 +143,7 @@
- + Expression Semantics
@@ -170,7 +170,7 @@
- + Invariants

@@ -187,7 +187,7 @@

- + Models
    diff --git a/doc/html/fusion/iterators/concepts/forward_iterator.html b/doc/html/fusion/iterators/concepts/forward_iterator.html index 7215a3ce..1a717d76 100644 --- a/doc/html/fusion/iterators/concepts/forward_iterator.html +++ b/doc/html/fusion/iterators/concepts/forward_iterator.html @@ -30,7 +30,7 @@ Iterator">Forward Iterator
- + Description

@@ -63,7 +63,7 @@

- + Expression requirements
@@ -132,7 +132,7 @@
- + Meta Expressions
@@ -181,7 +181,7 @@
- + Expression Semantics
@@ -245,7 +245,7 @@
- + Invariants

@@ -268,7 +268,7 @@

- + Models
    diff --git a/doc/html/fusion/iterators/concepts/random_access_iterator.html b/doc/html/fusion/iterators/concepts/random_access_iterator.html index 616ff4d8..59448640 100644 --- a/doc/html/fusion/iterators/concepts/random_access_iterator.html +++ b/doc/html/fusion/iterators/concepts/random_access_iterator.html @@ -30,7 +30,7 @@ Access Iterator">Random Access Iterator
- + Description

@@ -63,7 +63,7 @@

- + Refinement of
@@ -73,7 +73,7 @@ Iterator

- + Expression requirements
@@ -126,7 +126,7 @@
- + Meta Expressions
@@ -158,7 +158,7 @@
- + Models
    diff --git a/doc/html/fusion/iterators/functions/advance.html b/doc/html/fusion/iterators/functions/advance.html index 232ddf37..6dadbf56 100644 --- a/doc/html/fusion/iterators/functions/advance.html +++ b/doc/html/fusion/iterators/functions/advance.html @@ -26,14 +26,14 @@
    - + Description

    Moves an iterator by a specified distance.

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

    Table 1.6. Parameters

    +

    Table 1.6. Parameters

    @@ -76,7 +76,7 @@
    - + Expression Semantics
    @@ -97,14 +97,14 @@ may be negative.

    - + Header
     #include <boost/fusion/iterator/advance.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/functions/advance_c.html b/doc/html/fusion/iterators/functions/advance_c.html
    index a67ee308..bfddfb14 100644
    --- a/doc/html/fusion/iterators/functions/advance_c.html
    +++ b/doc/html/fusion/iterators/functions/advance_c.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Moves an iterator by a specified distance.

    - + Synopsis
    @@ -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

    @@ -76,7 +76,7 @@
    - + Expression Semantics
    @@ -97,14 +97,14 @@ may be negative.

    - + Header
     #include <boost/fusion/iterator/advance.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/functions/deref.html b/doc/html/fusion/iterators/functions/deref.html
    index 0f6753f9..dfd632ca 100644
    --- a/doc/html/fusion/iterators/functions/deref.html
    +++ b/doc/html/fusion/iterators/functions/deref.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Deferences an iterator.

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

    Table 1.2. Parameters

    +

    Table 1.2. Parameters

    @@ -67,7 +67,7 @@
    - + Expression Semantics
    @@ -82,14 +82,14 @@ i.

    - + Header
     #include <boost/fusion/iterator/deref.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/functions/distance.html b/doc/html/fusion/iterators/functions/distance.html
    index b8312888..33a6e95a 100644
    --- a/doc/html/fusion/iterators/functions/distance.html
    +++ b/doc/html/fusion/iterators/functions/distance.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the distance between 2 iterators.

    - + Synopsis
    @@ -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

    @@ -69,7 +69,7 @@
    - + Expression Semantics
    @@ -84,14 +84,14 @@ iterators i and j.

    - + Header
     #include <boost/fusion/iterator/distance.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/functions/next.html b/doc/html/fusion/iterators/functions/next.html
    index 4dd7c1e7..4faa1642 100644
    --- a/doc/html/fusion/iterators/functions/next.html
    +++ b/doc/html/fusion/iterators/functions/next.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Moves an iterator 1 position forwards.

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

    Table 1.3. Parameters

    +

    Table 1.3. Parameters

    @@ -67,7 +67,7 @@
    - + Expression Semantics
    @@ -83,14 +83,14 @@ next element after i.

    - + Header
     #include <boost/fusion/iterator/next.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/functions/prior.html b/doc/html/fusion/iterators/functions/prior.html
    index 682185bf..5f0b373f 100644
    --- a/doc/html/fusion/iterators/functions/prior.html
    +++ b/doc/html/fusion/iterators/functions/prior.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Moves an iterator 1 position backwards.

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

    Table 1.4. Parameters

    +

    Table 1.4. Parameters

    @@ -67,7 +67,7 @@
    - + Expression Semantics
    @@ -83,14 +83,14 @@ element prior to i.

    - + Header
     #include <boost/fusion/iterator/prior.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/advance.html b/doc/html/fusion/iterators/metafunctions/advance.html
    index 5f708683..e02f7269 100644
    --- a/doc/html/fusion/iterators/metafunctions/advance.html
    +++ b/doc/html/fusion/iterators/metafunctions/advance.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Moves an iterator a specified distance.

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

    Table 1.17. Parameters

    +

    Table 1.17. Parameters

    @@ -79,7 +79,7 @@
    - + Expression Semantics
    @@ -99,14 +99,14 @@ may be negative.

    - + Header
     #include <boost/fusion/iterator/advance.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/advance_c.html b/doc/html/fusion/iterators/metafunctions/advance_c.html
    index 008e3877..cf21ed8e 100644
    --- a/doc/html/fusion/iterators/metafunctions/advance_c.html
    +++ b/doc/html/fusion/iterators/metafunctions/advance_c.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Moves an iterator by a specified distance.

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

    Table 1.18. Parameters

    +

    Table 1.18. Parameters

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

    - + Header
     #include <boost/fusion/iterator/advance.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/deref.html b/doc/html/fusion/iterators/metafunctions/deref.html
    index 52581f3a..33d28489 100644
    --- a/doc/html/fusion/iterators/metafunctions/deref.html
    +++ b/doc/html/fusion/iterators/metafunctions/deref.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

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

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

    Table 1.12. Parameters

    +

    Table 1.12. Parameters

    @@ -70,7 +70,7 @@
    - + Expression Semantics
    @@ -85,14 +85,14 @@ an iterator of type I.

    - + Header
     #include <boost/fusion/iterator/deref.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/distance.html b/doc/html/fusion/iterators/metafunctions/distance.html
    index 6b1a3bef..71e74e78 100644
    --- a/doc/html/fusion/iterators/metafunctions/distance.html
    +++ b/doc/html/fusion/iterators/metafunctions/distance.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the distance between two iterators.

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

    Table 1.16. Parameters

    +

    Table 1.16. Parameters

    @@ -72,7 +72,7 @@
    - + Expression Semantics
    @@ -88,14 +88,14 @@ J.

    - + Header
     #include <boost/fusion/iterator/distance.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/equal_to.html b/doc/html/fusion/iterators/metafunctions/equal_to.html
    index 9a22ba53..e68b3e02 100644
    --- a/doc/html/fusion/iterators/metafunctions/equal_to.html
    +++ b/doc/html/fusion/iterators/metafunctions/equal_to.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

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

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

    Table 1.15. Parameters

    +

    Table 1.15. Parameters

    @@ -71,7 +71,7 @@
    - + Expression Semantics
    @@ -87,14 +87,14 @@ Returns boost::mpl::false_ otherwise.

    - + Header
     #include <boost/fusion/iterator/equal_to.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/next.html b/doc/html/fusion/iterators/metafunctions/next.html
    index 454172dc..21601c70 100644
    --- a/doc/html/fusion/iterators/metafunctions/next.html
    +++ b/doc/html/fusion/iterators/metafunctions/next.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the type of the next iterator in a sequence.

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

    Table 1.13. Parameters

    +

    Table 1.13. Parameters

    @@ -70,7 +70,7 @@
    - + Expression Semantics
    @@ -86,14 +86,14 @@ next element in the sequence after I.

    - + Header
     #include <boost/fusion/iterator/next.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/prior.html b/doc/html/fusion/iterators/metafunctions/prior.html
    index 626f2d9d..1e15ffd9 100644
    --- a/doc/html/fusion/iterators/metafunctions/prior.html
    +++ b/doc/html/fusion/iterators/metafunctions/prior.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the type of the previous iterator in a sequence.

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

    Table 1.14. Parameters

    +

    Table 1.14. Parameters

    @@ -70,7 +70,7 @@
    - + Expression Semantics
    @@ -86,14 +86,14 @@ previous element in the sequence before I.

    - + Header
     #include <boost/fusion/iterator/prior.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/value_of.html b/doc/html/fusion/iterators/metafunctions/value_of.html
    index e924babc..f10329c5 100644
    --- a/doc/html/fusion/iterators/metafunctions/value_of.html
    +++ b/doc/html/fusion/iterators/metafunctions/value_of.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the type stored at the position of an iterator.

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

    Table 1.11. Parameters

    +

    Table 1.11. Parameters

    @@ -70,7 +70,7 @@
    - + Expression Semantics
    @@ -85,14 +85,14 @@ a sequence at iterator position I.

    - + Header
     #include <boost/fusion/iterator/value_of.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/operators/operator_equality.html b/doc/html/fusion/iterators/operators/operator_equality.html
    index 27880c5d..c484246c 100644
    --- a/doc/html/fusion/iterators/operators/operator_equality.html
    +++ b/doc/html/fusion/iterators/operators/operator_equality.html
    @@ -31,14 +31,14 @@
             =="> Operator
             ==
- + Description

Compares 2 iterators for equality.

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

Table 1.9. Parameters

+

Table 1.9. Parameters

@@ -72,7 +72,7 @@
- + Expression Semantics
@@ -88,7 +88,7 @@ and j respectively.

- + Header
diff --git a/doc/html/fusion/iterators/operators/operator_inequality.html b/doc/html/fusion/iterators/operators/operator_inequality.html
index ea4d017a..100779e7 100644
--- a/doc/html/fusion/iterators/operators/operator_inequality.html
+++ b/doc/html/fusion/iterators/operators/operator_inequality.html
@@ -30,14 +30,14 @@
         !="> Operator
         !=
 
- + Description

Compares 2 iterators for inequality.

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

Table 1.10. Parameters

+

Table 1.10. Parameters

@@ -71,7 +71,7 @@
- + Expression Semantics
@@ -84,7 +84,7 @@ and j respectively.

- + Header
diff --git a/doc/html/fusion/iterators/operators/operator_unary_star.html b/doc/html/fusion/iterators/operators/operator_unary_star.html
index e22cc90a..a4408cad 100644
--- a/doc/html/fusion/iterators/operators/operator_unary_star.html
+++ b/doc/html/fusion/iterators/operators/operator_unary_star.html
@@ -30,14 +30,14 @@
         *"> Operator
         *
 
- + Description

Dereferences an iterator.

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

Table 1.8. Parameters

+

Table 1.8. Parameters

@@ -71,7 +71,7 @@
- + Expression Semantics
@@ -86,14 +86,14 @@ Semantics: Equivalent to deref(i).

- + Header
 #include <boost/fusion/iterator/deref.hpp>
 
- + Example
diff --git a/doc/html/fusion/notes.html b/doc/html/fusion/notes.html
index 25e5b526..804c52ab 100644
--- a/doc/html/fusion/notes.html
+++ b/doc/html/fusion/notes.html
@@ -26,7 +26,7 @@
 
 

- + Recursive Inlined Functions

@@ -39,7 +39,7 @@ compiler limit of course). Compile time complexity remains linear.

- + Overloaded Functions

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

- + Tag Dispatching

@@ -101,7 +101,7 @@

- + Extensibility

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

- + Element Conversion

@@ -158,7 +158,7 @@

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

@@ -191,7 +191,7 @@
 list<void (*)(int)>
 

- + boost::ref

@@ -234,7 +234,7 @@



-

[14] +

[14] 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 diff --git a/doc/html/fusion/organization.html b/doc/html/fusion/organization.html index 62b319c7..a011c3fc 100644 --- a/doc/html/fusion/organization.html +++ b/doc/html/fusion/organization.html @@ -34,7 +34,7 @@ The library is organized in three layers:

- + Layers

@@ -50,7 +50,7 @@ against.

- + Directory

    @@ -159,7 +159,7 @@

- + Example

@@ -175,12 +175,12 @@

The first includes all sequences. The second includes all of sequence containers. The third includes only list  - [3] + [3] .



-

[3] +

[3] 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 a3beb7bf..d96178b6 100644 --- a/doc/html/fusion/preface.html +++ b/doc/html/fusion/preface.html @@ -32,7 +32,7 @@ --Niklaus Wirth

- + Description

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

- + Motivation

@@ -76,7 +76,7 @@ an instant AHA! moment.

- + How to use this manual

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

-

Table 1.1. Icons

+

Table 1.1. Icons

@@ -130,7 +130,7 @@ Tools.

- + Support

diff --git a/doc/html/fusion/quick_start.html b/doc/html/fusion/quick_start.html index ab2bf3cb..9b2484fc 100644 --- a/doc/html/fusion/quick_start.html +++ b/doc/html/fusion/quick_start.html @@ -33,7 +33,7 @@

For starters, we shall include all of Fusion's _sequence_s - [1] + [1] :

@@ -41,7 +41,7 @@
 

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

@@ -59,7 +59,7 @@
       Let's see some examples.
     

- + Print the vector as XML

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

- + Print only pointers

@@ -150,7 +150,7 @@ Easy, right?

- + Associative tuples

@@ -225,7 +225,7 @@ a dog or a whole alternate_universe.

- + Tip of the Iceberg

@@ -236,12 +236,12 @@



-

[1] +

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

-

[2] +

[2] 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. diff --git a/doc/html/fusion/sequences.html b/doc/html/fusion/sequences.html index d68ba50f..0a83149e 100644 --- a/doc/html/fusion/sequences.html +++ b/doc/html/fusion/sequences.html @@ -46,7 +46,7 @@ type that can be used to iterate through the Sequence's elements.

- + Header

diff --git a/doc/html/fusion/sequences/adapted.html b/doc/html/fusion/sequences/adapted.html
index 51d83fc9..1f708bcf 100644
--- a/doc/html/fusion/sequences/adapted.html
+++ b/doc/html/fusion/sequences/adapted.html
@@ -38,11 +38,11 @@
         mechanism. If you wish to use these sequences with fusion, simply include
         the necessary files and they will be regarded as first-class, fully conforming
         fusion sequences
-        [4]
+        [4]
         .
       

- + Header

@@ -50,7 +50,7 @@
 


-

[4] +

[4] Fusion sequences may also be adapted as fully conforming MPL sequences (see Intrinsics). That way, we can have 2-way adaptation to and from MPL diff --git a/doc/html/fusion/sequences/adapted/boost__array.html b/doc/html/fusion/sequences/adapted/boost__array.html index 21b9f1fe..954bc133 100644 --- a/doc/html/fusion/sequences/adapted/boost__array.html +++ b/doc/html/fusion/sequences/adapted/boost__array.html @@ -33,21 +33,21 @@ Access Sequence.

- + Header
 #include <boost/fusion/sequence/adapted/array.hpp>
 
- + Model of
- + Example
@@ -60,7 +60,7 @@
 std::cout << at_c<2>(arr) << std::endl;
 
- + See also

diff --git a/doc/html/fusion/sequences/adapted/mpl_sequence.html b/doc/html/fusion/sequences/adapted/mpl_sequence.html index 1e05d99e..83c0bcb4 100644 --- a/doc/html/fusion/sequences/adapted/mpl_sequence.html +++ b/doc/html/fusion/sequences/adapted/mpl_sequence.html @@ -31,14 +31,14 @@ sequences fully conforming fusion sequences.

- + Header
 #include <boost/fusion/sequence/adapted/mpl.hpp>
 
- + Model of
    @@ -62,7 +62,7 @@
- + Example
@@ -76,7 +76,7 @@
 std::cout << at_c<1>(v) << std::endl;
 
- + See also

diff --git a/doc/html/fusion/sequences/adapted/std__pair.html b/doc/html/fusion/sequences/adapted/std__pair.html index 44bb6080..33c67185 100644 --- a/doc/html/fusion/sequences/adapted/std__pair.html +++ b/doc/html/fusion/sequences/adapted/std__pair.html @@ -33,21 +33,21 @@ Access Sequence.

- + Header
 #include <boost/fusion/sequence/adapted/std_pair.hpp>
 
- + Model of
- + Example
@@ -57,7 +57,7 @@
 std::cout << p << std::endl;
 
- + See also

diff --git a/doc/html/fusion/sequences/concepts.html b/doc/html/fusion/sequences/concepts.html index fbc3c562..75590407 100644 --- a/doc/html/fusion/sequences/concepts.html +++ b/doc/html/fusion/sequences/concepts.html @@ -40,7 +40,7 @@ Fusion Sequences are organized into a hierarchy of concepts.

- + Traversal

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

- + Associativity

diff --git a/doc/html/fusion/sequences/concepts/associative_sequence.html b/doc/html/fusion/sequences/concepts/associative_sequence.html index 3f4046d1..87eef640 100644 --- a/doc/html/fusion/sequences/concepts/associative_sequence.html +++ b/doc/html/fusion/sequences/concepts/associative_sequence.html @@ -30,7 +30,7 @@ Sequence">Associative Sequence

- + Description

@@ -71,7 +71,7 @@

- + Valid Expressions
@@ -121,7 +121,7 @@
- + Result Type Expressions
@@ -161,7 +161,7 @@ be a reference to begin with. For this purpose, you can use result_of::value_at_key<S, N>.

- + Expression Semantics
@@ -193,7 +193,7 @@
- + Models
    diff --git a/doc/html/fusion/sequences/concepts/bidirectional_sequence.html b/doc/html/fusion/sequences/concepts/bidirectional_sequence.html index f218d6c5..e6bb111e 100644 --- a/doc/html/fusion/sequences/concepts/bidirectional_sequence.html +++ b/doc/html/fusion/sequences/concepts/bidirectional_sequence.html @@ -31,7 +31,7 @@ Sequence">Bidirectional Sequence
- + Description

@@ -42,7 +42,7 @@ Iterator.

- + Refinement of
@@ -72,7 +72,7 @@
- + Valid Expressions
@@ -133,7 +133,7 @@
- + Result Type Expressions
@@ -165,7 +165,7 @@
- + Expression Semantics
@@ -191,7 +191,7 @@
- + Models
    diff --git a/doc/html/fusion/sequences/concepts/forward_sequence.html b/doc/html/fusion/sequences/concepts/forward_sequence.html index a9313590..8476e9af 100644 --- a/doc/html/fusion/sequences/concepts/forward_sequence.html +++ b/doc/html/fusion/sequences/concepts/forward_sequence.html @@ -30,7 +30,7 @@ Sequence">Forward Sequence
- + Description

@@ -62,7 +62,7 @@

- + Valid Expressions
@@ -133,7 +133,7 @@
- + Result Type Expressions
@@ -173,7 +173,7 @@
- + Expression Semantics
@@ -217,7 +217,7 @@
- + Invariants

@@ -243,7 +243,7 @@

- + Models
    diff --git a/doc/html/fusion/sequences/concepts/random_access_sequence.html b/doc/html/fusion/sequences/concepts/random_access_sequence.html index 06c4ae91..6d445045 100644 --- a/doc/html/fusion/sequences/concepts/random_access_sequence.html +++ b/doc/html/fusion/sequences/concepts/random_access_sequence.html @@ -31,7 +31,7 @@ Access Sequence">Random Access Sequence
- + Description

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

- + Refinement of
@@ -78,7 +78,7 @@
- + Valid Expressions
@@ -139,7 +139,7 @@
- + Result Type Expressions
@@ -184,7 +184,7 @@ be a reference to begin with. For this purpose, you can use result_of::value_at<S, N>.

- + Expression Semantics
@@ -210,7 +210,7 @@
- + Models
    diff --git a/doc/html/fusion/sequences/containers.html b/doc/html/fusion/sequences/containers.html index ce25c1f9..1350b21d 100644 --- a/doc/html/fusion/sequences/containers.html +++ b/doc/html/fusion/sequences/containers.html @@ -39,7 +39,7 @@ These containers are more or less counterparts of those in STL.

    - + Header

    diff --git a/doc/html/fusion/sequences/containers/cons.html b/doc/html/fusion/sequences/containers/cons.html
    index 81f1955b..b6a184ab 100644
    --- a/doc/html/fusion/sequences/containers/cons.html
    +++ b/doc/html/fusion/sequences/containers/cons.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -41,14 +41,14 @@ Inlined Functions).

    - + Header
     #include <boost/fusion/sequence/container/list/cons.hpp>
     
    - + Synopsis
    @@ -56,7 +56,7 @@
     struct cons;
     
    - + Template parameters
    @@ -87,7 +87,7 @@
- + Model of
  • - + Expression Semantics
    @@ -205,7 +205,7 @@ Inlined Functions).

    - + Example
    diff --git a/doc/html/fusion/sequences/containers/list.html b/doc/html/fusion/sequences/containers/list.html
    index f279bbc7..03ec8c8e 100644
    --- a/doc/html/fusion/sequences/containers/list.html
    +++ b/doc/html/fusion/sequences/containers/list.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

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

    - + Header
    @@ -46,7 +46,7 @@
     #include <boost/fusion/sequence/container/list/list_forward.hpp>
     
    - + Synopsis
    @@ -77,7 +77,7 @@
     #define FUSION_MAX_LIST_SIZE 20
     
    - + Template parameters
    @@ -101,7 +101,7 @@
- + Model of
  • - + Expression Semantics
    @@ -197,7 +197,7 @@ Inlined Functions).

    - + Example
    diff --git a/doc/html/fusion/sequences/containers/map.html b/doc/html/fusion/sequences/containers/map.html
    index 523f7a9b..c2b89b00 100644
    --- a/doc/html/fusion/sequences/containers/map.html
    +++ b/doc/html/fusion/sequences/containers/map.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -41,14 +41,14 @@ Functions).

    - + Header
     #include <boost/fusion/sequence/container/map.hpp>
     
    - + Synopsis
    @@ -79,7 +79,7 @@
     #define FUSION_MAX_MAP_SIZE 20
     
    - + Template parameters
    @@ -103,7 +103,7 @@
- + Model of
    @@ -137,7 +137,7 @@
- + Expression Semantics
@@ -186,7 +186,7 @@
- + Example
diff --git a/doc/html/fusion/sequences/containers/set.html b/doc/html/fusion/sequences/containers/set.html
index ca56e8d7..66d14d15 100644
--- a/doc/html/fusion/sequences/containers/set.html
+++ b/doc/html/fusion/sequences/containers/set.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Header
 #include <boost/fusion/sequence/container/set.hpp>
 
- + Synopsis
@@ -77,7 +77,7 @@
 #define FUSION_MAX_SET_SIZE 20
 
- + Template parameters
@@ -101,7 +101,7 @@
- + Model of
    @@ -135,7 +135,7 @@
- + Expression Semantics
@@ -184,7 +184,7 @@
- + Example
diff --git a/doc/html/fusion/sequences/containers/vector.html b/doc/html/fusion/sequences/containers/vector.html
index 39975251..3f7c078c 100644
--- a/doc/html/fusion/sequences/containers/vector.html
+++ b/doc/html/fusion/sequences/containers/vector.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

@@ -115,7 +115,7 @@ #define FUSION_MAX_VECTOR_SIZE 20

- + Template parameters
@@ -139,7 +139,7 @@
- + Model of
- + Example
diff --git a/doc/html/fusion/sequences/conversion.html b/doc/html/fusion/sequences/conversion.html
index f5a61804..2eb4159e 100644
--- a/doc/html/fusion/sequences/conversion.html
+++ b/doc/html/fusion/sequences/conversion.html
@@ -34,7 +34,7 @@
         types using one of these conversion functions.
       

- + Header

diff --git a/doc/html/fusion/sequences/conversion/functions/as_list.html b/doc/html/fusion/sequences/conversion/functions/as_list.html
index b76caabd..d8f52649 100644
--- a/doc/html/fusion/sequences/conversion/functions/as_list.html
+++ b/doc/html/fusion/sequences/conversion/functions/as_list.html
@@ -26,14 +26,14 @@
 
 
- + Description

Convert a fusion sequence to a list.

- + Synopsis
@@ -46,7 +46,7 @@
 as_list(Sequence const& seq);
 
- + Parameters
@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -83,14 +83,14 @@ seq, to a list.

- + Header
 #include <boost/fusion/sequence/conversion/as_list.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/conversion/functions/as_map.html b/doc/html/fusion/sequences/conversion/functions/as_map.html
index 4eadddaa..113bee07 100644
--- a/doc/html/fusion/sequences/conversion/functions/as_map.html
+++ b/doc/html/fusion/sequences/conversion/functions/as_map.html
@@ -26,14 +26,14 @@
 
 
- + Description

Convert a fusion sequence to a map.

- + Synopsis
@@ -46,7 +46,7 @@
 as_map(Sequence const& seq);
 
- + Parameters
@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -88,14 +88,14 @@ There may be no duplicate fusion::pair key types.

- + Header
 #include <boost/fusion/sequence/conversion/as_map.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/conversion/functions/as_set.html b/doc/html/fusion/sequences/conversion/functions/as_set.html
index 0d0774f0..d1fdcc77 100644
--- a/doc/html/fusion/sequences/conversion/functions/as_set.html
+++ b/doc/html/fusion/sequences/conversion/functions/as_set.html
@@ -26,14 +26,14 @@
 
 
- + Description

Convert a fusion sequence to a set.

- + Synopsis
@@ -46,7 +46,7 @@
 as_set(Sequence const& seq);
 
- + Parameters
@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -87,14 +87,14 @@ key types.

- + Header
 #include <boost/fusion/sequence/conversion/as_set.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/conversion/functions/as_vector.html b/doc/html/fusion/sequences/conversion/functions/as_vector.html
index 64377329..b7dfd932 100644
--- a/doc/html/fusion/sequences/conversion/functions/as_vector.html
+++ b/doc/html/fusion/sequences/conversion/functions/as_vector.html
@@ -26,14 +26,14 @@
 
 
- + Description

Convert a fusion sequence to a vector.

- + Synopsis
@@ -46,7 +46,7 @@
 as_vector(Sequence const& seq);
 
- + Parameters
@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -83,14 +83,14 @@ seq, to a vector.

- + Header
 #include <boost/fusion/sequence/conversion/as_vector.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_list.html b/doc/html/fusion/sequences/conversion/metafunctions/as_list.html
index 7cb96a1c..c95f5904 100644
--- a/doc/html/fusion/sequences/conversion/metafunctions/as_list.html
+++ b/doc/html/fusion/sequences/conversion/metafunctions/as_list.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of as_list.

- + Synopsis
@@ -41,7 +41,7 @@
 struct as_list;
 
- + Parameters
@@ -65,7 +65,7 @@
- + Expression Semantics
@@ -81,14 +81,14 @@ Sequence, to a list.

- + Header
 #include <boost/fusion/sequence/conversion/as_list.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_map.html b/doc/html/fusion/sequences/conversion/metafunctions/as_map.html
index fee697ca..738bac8c 100644
--- a/doc/html/fusion/sequences/conversion/metafunctions/as_map.html
+++ b/doc/html/fusion/sequences/conversion/metafunctions/as_map.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of as_map.

- + Synopsis
@@ -41,7 +41,7 @@
 struct as_map;
 
- + Parameters
@@ -65,7 +65,7 @@
- + Expression Semantics
@@ -86,14 +86,14 @@ There may be no duplicate fusion::pair key types.

- + Header
 #include <boost/fusion/sequence/conversion/as_map.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_set.html b/doc/html/fusion/sequences/conversion/metafunctions/as_set.html
index 842dc5d7..c21a9ccc 100644
--- a/doc/html/fusion/sequences/conversion/metafunctions/as_set.html
+++ b/doc/html/fusion/sequences/conversion/metafunctions/as_set.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of as_set.

- + Synopsis
@@ -41,7 +41,7 @@
 struct as_set;
 
- + Parameters
@@ -65,7 +65,7 @@
- + Expression Semantics
@@ -85,14 +85,14 @@ key types.

- + Header
 #include <boost/fusion/sequence/conversion/as_set.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html b/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html
index 862aa661..3ac48006 100644
--- a/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html
+++ b/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of as_vector.

- + Synopsis
@@ -41,7 +41,7 @@
 struct as_vector;
 
- + Parameters
@@ -65,7 +65,7 @@
- + Expression Semantics
@@ -81,14 +81,14 @@ Sequence, to a vector.

- + Header
 #include <boost/fusion/sequence/conversion/as_vector.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/generation.html b/doc/html/fusion/sequences/generation.html
index ea2b4a3e..a2319229 100644
--- a/doc/html/fusion/sequences/generation.html
+++ b/doc/html/fusion/sequences/generation.html
@@ -33,7 +33,7 @@
         These are the functions that you can use to generate various forms of Containers from elemental values.
       

- + Header

diff --git a/doc/html/fusion/sequences/generation/functions/list_tie.html b/doc/html/fusion/sequences/generation/functions/list_tie.html
index e5f9e6ef..ad3e85a7 100644
--- a/doc/html/fusion/sequences/generation/functions/list_tie.html
+++ b/doc/html/fusion/sequences/generation/functions/list_tie.html
@@ -26,14 +26,14 @@
 
 
- + Description

Constructs a tie using a list sequence.

- + Synopsis
@@ -53,7 +53,7 @@
 #define FUSION_MAX_LIST_SIZE 20
 
- + Parameters
@@ -78,7 +78,7 @@
- + Expression Semantics
@@ -93,14 +93,14 @@ Semantics: Create a list of references from x0, x1,... xN.

- + Header
 #include <boost/fusion/sequence/generation/list_tie.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/generation/functions/make_cons.html b/doc/html/fusion/sequences/generation/functions/make_cons.html
index aaf4bc28..542abaeb 100644
--- a/doc/html/fusion/sequences/generation/functions/make_cons.html
+++ b/doc/html/fusion/sequences/generation/functions/make_cons.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -35,7 +35,7 @@ (tail).

- + Synopsis
@@ -48,7 +48,7 @@
 make_cons(Car const& car, Cdr const& cdr);
 
- + Parameters
@@ -82,7 +82,7 @@
- + Expression Semantics
@@ -98,21 +98,21 @@ (tail).

- + Header
 #include <boost/fusion/sequence/generation/make_cons.hpp>
 
- + Example
 make_cons('x', make_cons(123))
 
- + See also
diff --git a/doc/html/fusion/sequences/generation/functions/make_list.html b/doc/html/fusion/sequences/generation/functions/make_list.html index 39cbf3f2..697ddf6a 100644 --- a/doc/html/fusion/sequences/generation/functions/make_list.html +++ b/doc/html/fusion/sequences/generation/functions/make_list.html @@ -26,14 +26,14 @@
- + Description

Create a list from one or more values.

- + Synopsis
@@ -53,7 +53,7 @@
 #define FUSION_MAX_LIST_SIZE 20
 
- + Parameters
@@ -78,7 +78,7 @@
- + Expression Semantics
@@ -92,21 +92,21 @@ Semantics: Create a list from x0, x1,... xN.

- + Header
 #include <boost/fusion/sequence/generation/make_list.hpp>
 
- + Example
 make_list(123, "hello", 12.5)
 
- + See also
diff --git a/doc/html/fusion/sequences/generation/functions/make_map.html b/doc/html/fusion/sequences/generation/functions/make_map.html index df0f2848..91d06d38 100644 --- a/doc/html/fusion/sequences/generation/functions/make_map.html +++ b/doc/html/fusion/sequences/generation/functions/make_map.html @@ -26,7 +26,7 @@
- + Description

@@ -34,7 +34,7 @@ pairs.

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

The variadic function accepts 0 to FUSION_MAX_VECTOR_SIZE - [10] + [10] elements, where FUSION_MAX_VECTOR_SIZE is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE @@ -57,7 +57,7 @@ #define FUSION_MAX_VECTOR_SIZE 20

- + Parameters
@@ -91,7 +91,7 @@
- + Expression Semantics
@@ -110,14 +110,14 @@ key types.

- + Header
 #include <boost/fusion/sequence/generation/make_map.hpp>
 
- + Example
@@ -126,7 +126,7 @@
   , make_pair<double>("Men"))
 
- + See also
@@ -136,7 +136,7 @@



-

[10] +

[10] map is implemented in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

diff --git a/doc/html/fusion/sequences/generation/functions/make_set.html b/doc/html/fusion/sequences/generation/functions/make_set.html index 9b0255c2..03a48f45 100644 --- a/doc/html/fusion/sequences/generation/functions/make_set.html +++ b/doc/html/fusion/sequences/generation/functions/make_set.html @@ -26,14 +26,14 @@
- + Description

Create a set from one or more values.

- + Synopsis
@@ -44,7 +44,7 @@
 

The variadic function accepts 0 to FUSION_MAX_VECTOR_SIZE - [9] + [9] elements, where FUSION_MAX_VECTOR_SIZE is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE @@ -54,7 +54,7 @@ #define FUSION_MAX_VECTOR_SIZE 20

- + Parameters
@@ -79,7 +79,7 @@
- + Expression Semantics
@@ -97,21 +97,21 @@ key types.

- + Header
 #include <boost/fusion/sequence/generation/make_set.hpp>
 
- + Example
 make_set(123, "hello", 12.5)
 
- + See also
@@ -120,7 +120,7 @@



-

[9] +

[9] set is implemented in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

diff --git a/doc/html/fusion/sequences/generation/functions/make_vector.html b/doc/html/fusion/sequences/generation/functions/make_vector.html index 2b551916..d0f59988 100644 --- a/doc/html/fusion/sequences/generation/functions/make_vector.html +++ b/doc/html/fusion/sequences/generation/functions/make_vector.html @@ -26,14 +26,14 @@
- + Description

Create a vector from one or more values.

- + Synopsis
@@ -53,7 +53,7 @@
 #define FUSION_MAX_VECTOR_SIZE 20
 
- + Parameters
@@ -78,7 +78,7 @@
- + Expression Semantics
@@ -92,21 +92,21 @@ Semantics: Create a vector from x0, x1,... xN.

- + Header
 #include <boost/fusion/sequence/generation/make_vector.hpp>
 
- + Example
 make_vector(123, "hello", 12.5)
 
- + See also
diff --git a/doc/html/fusion/sequences/generation/functions/tiers.html b/doc/html/fusion/sequences/generation/functions/tiers.html index 58dc4912..03cfb732 100644 --- a/doc/html/fusion/sequences/generation/functions/tiers.html +++ b/doc/html/fusion/sequences/generation/functions/tiers.html @@ -48,7 +48,7 @@ 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)) - [11] + [11] .

@@ -66,7 +66,7 @@ when calling functions which return sequences.

- + Ignore

@@ -81,7 +81,7 @@



-

[11] +

[11] see Boost.Ref for details about ref

diff --git a/doc/html/fusion/sequences/generation/functions/vector_tie.html b/doc/html/fusion/sequences/generation/functions/vector_tie.html index 40b0451c..2f325a01 100644 --- a/doc/html/fusion/sequences/generation/functions/vector_tie.html +++ b/doc/html/fusion/sequences/generation/functions/vector_tie.html @@ -26,14 +26,14 @@
- + Description

Constructs a tie using a vector sequence.

- + Synopsis
@@ -53,7 +53,7 @@
 #define FUSION_MAX_VECTOR_SIZE 20
 
- + Parameters
@@ -78,7 +78,7 @@
- + Expression Semantics
@@ -93,14 +93,14 @@ Semantics: Create a vector of references from x0, x1,... xN.

- + Header
 #include <boost/fusion/sequence/generation/vector_tie.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/generation/metafunctions/list_tie.html b/doc/html/fusion/sequences/generation/metafunctions/list_tie.html
index 2c57e18f..734abe82 100644
--- a/doc/html/fusion/sequences/generation/metafunctions/list_tie.html
+++ b/doc/html/fusion/sequences/generation/metafunctions/list_tie.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of list_tie.

- + Synopsis
@@ -52,7 +52,7 @@
 #define FUSION_MAX_LIST_SIZE 20
 
- + Parameters
@@ -75,7 +75,7 @@
- + Expression Semantics
@@ -90,14 +90,14 @@ Semantics: Create a list of references from T0, T1,... TN.

- + Header
 #include <boost/fusion/sequence/generation/list_tie.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_cons.html b/doc/html/fusion/sequences/generation/metafunctions/make_cons.html
index e26f9654..b2d791a6 100644
--- a/doc/html/fusion/sequences/generation/metafunctions/make_cons.html
+++ b/doc/html/fusion/sequences/generation/metafunctions/make_cons.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of make_cons.

- + Synopsis
@@ -41,7 +41,7 @@
 struct make_cons;
 
- + Parameters
@@ -73,7 +73,7 @@
- + Expression Semantics
@@ -91,14 +91,14 @@ (tail).

- + Header
 #include <boost/fusion/sequence/generation/make_cons.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_list.html b/doc/html/fusion/sequences/generation/metafunctions/make_list.html
index fd2f06a1..e9500622 100644
--- a/doc/html/fusion/sequences/generation/metafunctions/make_list.html
+++ b/doc/html/fusion/sequences/generation/metafunctions/make_list.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of make_list.

- + Synopsis
@@ -52,7 +52,7 @@
 #define FUSION_MAX_LIST_SIZE 20
 
- + Parameters
@@ -75,7 +75,7 @@
- + Expression Semantics
@@ -91,14 +91,14 @@ Semantics: Create a list from T0, T1,... TN.

- + Header
 #include <boost/fusion/sequence/generation/make_list.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_map.html b/doc/html/fusion/sequences/generation/metafunctions/make_map.html
index dd5fb6e3..cc53081e 100644
--- a/doc/html/fusion/sequences/generation/metafunctions/make_map.html
+++ b/doc/html/fusion/sequences/generation/metafunctions/make_map.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of make_map.

- + Synopsis
@@ -45,7 +45,7 @@
 

The variadic function accepts 0 to FUSION_MAX_VECTOR_SIZE - [13] + [13] elements, where FUSION_MAX_VECTOR_SIZE is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE @@ -55,7 +55,7 @@ #define FUSION_MAX_VECTOR_SIZE 20

- + Parameters
@@ -87,7 +87,7 @@
- + Expression Semantics
@@ -107,21 +107,21 @@ key types.

- + Header
 #include <boost/fusion/sequence/generation/make_map.hpp>
 
- + Example
 result_of::make_map<int, double, char, double>::type
 
- + See also
@@ -130,7 +130,7 @@



-

[13] +

[13] map is implemented in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_set.html b/doc/html/fusion/sequences/generation/metafunctions/make_set.html index 5a85f85b..47256e23 100644 --- a/doc/html/fusion/sequences/generation/metafunctions/make_set.html +++ b/doc/html/fusion/sequences/generation/metafunctions/make_set.html @@ -26,14 +26,14 @@
- + Description

Returns the result type of make_set.

- + Synopsis
@@ -43,7 +43,7 @@
 

The variadic function accepts 0 to FUSION_MAX_VECTOR_SIZE - [12] + [12] elements, where FUSION_MAX_VECTOR_SIZE is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE @@ -53,7 +53,7 @@ #define FUSION_MAX_VECTOR_SIZE 20

- + Parameters
@@ -76,7 +76,7 @@
- + Expression Semantics
@@ -96,14 +96,14 @@ key types.

- + Header
 #include <boost/fusion/sequence/generation/make_set.hpp>
 
- + Example
@@ -111,7 +111,7 @@
 


-

[12] +

[12] set is implemented in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_vector.html b/doc/html/fusion/sequences/generation/metafunctions/make_vector.html index 1d59488c..74aed676 100644 --- a/doc/html/fusion/sequences/generation/metafunctions/make_vector.html +++ b/doc/html/fusion/sequences/generation/metafunctions/make_vector.html @@ -26,14 +26,14 @@
- + Description

Returns the result type of make_vector.

- + Synopsis
@@ -52,7 +52,7 @@
 #define FUSION_MAX_VECTOR_SIZE 20
 
- + Parameters
@@ -75,7 +75,7 @@
- + Expression Semantics
@@ -91,14 +91,14 @@ Semantics: Create a vector from T0, T1,... TN.

- + Header
 #include <boost/fusion/sequence/generation/make_list.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html b/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html
index d04d3f46..be5b92b0 100644
--- a/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html
+++ b/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of vector_tie.

- + Synopsis
@@ -52,7 +52,7 @@
 #define FUSION_MAX_VECTOR_SIZE 20
 
- + Parameters
@@ -75,7 +75,7 @@
- + Expression Semantics
@@ -90,14 +90,14 @@ Semantics: Create a vector of references from T0, T1,... TN.

- + Header
 #include <boost/fusion/sequence/generation/vector_tie.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics.html b/doc/html/fusion/sequences/intrinsics.html
index 85c7d5ed..9efe2116 100644
--- a/doc/html/fusion/sequences/intrinsics.html
+++ b/doc/html/fusion/sequences/intrinsics.html
@@ -36,11 +36,11 @@
         Intrinsic functions, unlike Algorithms,
         are not generic across the full Sequence
         repertoire. They need to be implemented for each Fusion Sequence
-        [5]
+        [5]
         .
       

- + Header

@@ -48,7 +48,7 @@
 


-

[5] +

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

diff --git a/doc/html/fusion/sequences/intrinsics/functions/at.html b/doc/html/fusion/sequences/intrinsics/functions/at.html index b87d6fd9..7a15383c 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/at.html +++ b/doc/html/fusion/sequences/intrinsics/functions/at.html @@ -26,14 +26,14 @@
- + Description

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

- + Synopsis
@@ -46,7 +46,7 @@
 at(Sequence const& seq);
 
- + Parameters
@@ -81,7 +81,7 @@
- + Expression Semantics
@@ -107,14 +107,14 @@ deref(advance<N>(begin(s)))
- + Header
 #include <boost/fusion/sequence/intrinsic/at.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/at_c.html b/doc/html/fusion/sequences/intrinsics/functions/at_c.html
index cb6c9807..5bf22701 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/at_c.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/at_c.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

- + Synopsis
@@ -46,7 +46,7 @@
 at_c(Sequence const& seq);
 
- + Parameters
@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -106,14 +106,14 @@ deref(advance<N>(begin(s)))
- + Header
 #include <boost/fusion/sequence/intrinsic/at_c.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/at_key.html b/doc/html/fusion/sequences/intrinsics/functions/at_key.html
index 5871bc15..434e48da 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/at_key.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/at_key.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the element associated with a Key from the sequence.

- + Synopsis
@@ -46,7 +46,7 @@
 at_key(Sequence const& seq);
 
- + Parameters
@@ -79,7 +79,7 @@
- + Expression Semantics
@@ -102,14 +102,14 @@ with Key.

- + Header
 #include <boost/fusion/sequence/intrinsic/at_key.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/back.html b/doc/html/fusion/sequences/intrinsics/functions/back.html
index f42ba3d5..44ade5ae 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/back.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/back.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the last element in the sequence.

- + Synopsis
@@ -46,7 +46,7 @@
 back(Sequence const& seq);
 
- + Parameters
@@ -71,7 +71,7 @@
- + Expression Semantics
@@ -94,14 +94,14 @@ in the sequence.

- + Header
 #include <boost/fusion/sequence/intrinsic/back.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/begin.html b/doc/html/fusion/sequences/intrinsics/functions/begin.html
index c9f09600..86e65b6f 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/begin.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/begin.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

- + Synopsis
@@ -46,7 +46,7 @@
 begin(Sequence const& seq);
 
- + Parameters
@@ -72,7 +72,7 @@
- + Expression Semantics
@@ -102,14 +102,14 @@ to the first element in the sequence.

- + Header
 #include <boost/fusion/sequence/intrinsic/begin.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/empty.html b/doc/html/fusion/sequences/intrinsics/functions/empty.html
index 013d13eb..f9b2fce5 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/empty.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/empty.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Synopsis
@@ -44,7 +44,7 @@
 empty(Sequence const& seq);
 
- + Parameters
@@ -69,7 +69,7 @@
- + Expression Semantics
@@ -84,14 +84,14 @@ to false.

- + Header
 #include <boost/fusion/sequence/intrinsic/empty.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/end.html b/doc/html/fusion/sequences/intrinsics/functions/end.html
index ec3b65cd..df9254d1 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/end.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/end.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

- + Synopsis
@@ -46,7 +46,7 @@
 end(Sequence const& seq);
 
- + Parameters
@@ -72,7 +72,7 @@
- + Expression Semantics
@@ -102,14 +102,14 @@ to one element past the end of the sequence.

- + Header
 #include <boost/fusion/sequence/intrinsic/end.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/front.html b/doc/html/fusion/sequences/intrinsics/functions/front.html
index 56c6e66f..21e72b43 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/front.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/front.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the first element in the sequence.

- + Synopsis
@@ -46,7 +46,7 @@
 front(Sequence const& seq);
 
- + Parameters
@@ -71,7 +71,7 @@
- + Expression Semantics
@@ -94,14 +94,14 @@ in the sequence.

- + Header
 #include <boost/fusion/sequence/intrinsic/front.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/has_key.html b/doc/html/fusion/sequences/intrinsics/functions/has_key.html
index df6aef1f..8618049c 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/has_key.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/has_key.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Synopsis
@@ -45,7 +45,7 @@
 has_key(Sequence const& seq);
 
- + Parameters
@@ -78,7 +78,7 @@
- + Expression Semantics
@@ -93,14 +93,14 @@ associated with Key, else, evaluates to false.

- + Header
 #include <boost/fusion/sequence/intrinsic/has_key.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/size.html b/doc/html/fusion/sequences/intrinsics/functions/size.html
index 5fbe1350..78d859ba 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/size.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/size.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Synopsis
@@ -43,7 +43,7 @@
 size(Sequence const& seq);
 
- + Parameters
@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -83,14 +83,14 @@ in the sequence.

- + Header
 #include <boost/fusion/sequence/intrinsic/size.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/at.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at.html
index 92f96b02..8eb810e1 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/at.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/at.html
@@ -26,16 +26,16 @@
 
 
- + Description

Returns the result type of at - [6] + [6] .

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

Table 1.25. Parameters

+

Table 1.25. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -95,14 +95,14 @@ using at to access the Nth element of Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/at.hpp>
 
- + Example
@@ -111,7 +111,7 @@
 


-

[6] +

[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 diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html index ff7fe1d3..c3a83154 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html @@ -26,16 +26,16 @@

- + Description

Returns the result type of at_c - [7] + [7] .

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

Table 1.26. Parameters

+

Table 1.26. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -95,14 +95,14 @@ using at_c to access the Mth element of Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/at.hpp>
 
- + Example
@@ -111,7 +111,7 @@
 


-

[7] +

[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 diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html index 31d04ae3..ae6f1188 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html @@ -26,16 +26,16 @@

- + Description

Returns the result type of at_key - [8] + [8] .

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

Table 1.30. Parameters

+

Table 1.30. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -97,14 +97,14 @@ Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/at_key.hpp>
 
- + Example
@@ -113,7 +113,7 @@
 


-

[8] +

[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 diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/back.html b/doc/html/fusion/sequences/intrinsics/metafunctions/back.html index 7606e773..c6bfc356 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/back.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/back.html @@ -26,14 +26,14 @@

- + Description

Returns the result type of back.

- + Synopsis
@@ -44,7 +44,7 @@
 };
 
-

Table 1.23. Parameters

+

Table 1.23. Parameters

@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -83,14 +83,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>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html b/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html
index 008734ed..28f8e859 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of begin.

- + Synopsis
@@ -44,7 +44,7 @@
 };
 
-

Table 1.19. Parameters

+

Table 1.19. Parameters

@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -84,14 +84,14 @@ to the first element of Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/begin.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html b/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html
index 1ef6f32a..7a0153fb 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of empty.

- + Synopsis
@@ -44,7 +44,7 @@
 };
 
-

Table 1.21. Parameters

+

Table 1.21. Parameters

@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -84,14 +84,14 @@ mpl::false_ otherwise.

- + Header
 #include <boost/fusion/sequence/intrinsic/empty.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/end.html b/doc/html/fusion/sequences/intrinsics/metafunctions/end.html
index 8e7fb614..4d039532 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/end.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/end.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of end.

- + Synopsis
@@ -44,7 +44,7 @@
 };
 
-

Table 1.20. Parameters

+

Table 1.20. Parameters

@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -84,14 +84,14 @@ one past the end of Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/end.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/front.html b/doc/html/fusion/sequences/intrinsics/metafunctions/front.html
index 79872a6e..08dd077f 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/front.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/front.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of front.

- + Synopsis
@@ -44,7 +44,7 @@
 };
 
-

Table 1.22. Parameters

+

Table 1.22. Parameters

@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -84,14 +84,14 @@ Equivalent to result_of::deref<result_of::begin<Seq>::type>::type.

- + Header
 #include <boost/fusion/sequence/intrinsic/front.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html
index 107945c4..9787a40f 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of has_key.

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

Table 1.29. Parameters

+

Table 1.29. Parameters

@@ -78,7 +78,7 @@
- + Expression Semantics
@@ -95,14 +95,14 @@ mpl::false_ otherwise.

- + Header
 #include <boost/fusion/sequence/intrinsic/has_key.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/size.html b/doc/html/fusion/sequences/intrinsics/metafunctions/size.html
index aa4ce8c0..2afdf427 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/size.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/size.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of size.

- + Synopsis
@@ -44,7 +44,7 @@
 };
 
-

Table 1.24. Parameters

+

Table 1.24. Parameters

@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -83,14 +83,14 @@ in Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/size.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html
index ae292918..50b2b525 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the actual type at a given index from the Sequence.

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

Table 1.27. Parameters

+

Table 1.27. Parameters

@@ -78,7 +78,7 @@
- + Expression Semantics
@@ -93,14 +93,14 @@ the Nth element of Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/value_at.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html
index 896c7a26..dffab3f8 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the actual type at a given index from the Sequence.

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

Table 1.28. Parameters

+

Table 1.28. Parameters

@@ -78,7 +78,7 @@
- + Expression Semantics
@@ -93,14 +93,14 @@ the Mth element of Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/value_at.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html
index 1b04db1a..674ebc7a 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the actual element type associated with a Key from the Sequence.

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

Table 1.31. Parameters

+

Table 1.31. Parameters

@@ -78,7 +78,7 @@
- + Expression Semantics
@@ -94,14 +94,14 @@ in Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/value_at_key.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators/comparison.html b/doc/html/fusion/sequences/operators/comparison.html
index bf7a25dc..40e55894 100644
--- a/doc/html/fusion/sequences/operators/comparison.html
+++ b/doc/html/fusion/sequences/operators/comparison.html
@@ -48,7 +48,7 @@
           only until the result is clear.
         

- + Header
diff --git a/doc/html/fusion/sequences/operators/comparison/equal.html b/doc/html/fusion/sequences/operators/comparison/equal.html
index 1cecff00..fb59fc41 100644
--- a/doc/html/fusion/sequences/operators/comparison/equal.html
+++ b/doc/html/fusion/sequences/operators/comparison/equal.html
@@ -27,14 +27,14 @@
 
 
- + Description

Compare two sequences for equality.

- + Synopsis
@@ -43,7 +43,7 @@
 operator==(Seq1 const& a, Seq2 const& b);
 
- + Parameters
@@ -67,7 +67,7 @@
- + Expression Semantics
@@ -103,14 +103,14 @@ true.

- + Header
 #include <boost/fusion/sequence/comparison/equal_to.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators/comparison/greater_than.html b/doc/html/fusion/sequences/operators/comparison/greater_than.html
index f02d0e12..8f5d3805 100644
--- a/doc/html/fusion/sequences/operators/comparison/greater_than.html
+++ b/doc/html/fusion/sequences/operators/comparison/greater_than.html
@@ -34,7 +34,7 @@
             Lexicographically compare two sequences.
           

- + Synopsis
@@ -43,7 +43,7 @@
 operator>(Seq1 const& a, Seq2 const& b);
 
- + Parameters
@@ -67,7 +67,7 @@
- + Expression Semantics
@@ -95,14 +95,14 @@ Semantics: Returns b < a.

- + Header
 #include <boost/fusion/sequence/comparison/less_equal.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html b/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html
index d6ce001f..0ed555ed 100644
--- a/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html
+++ b/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html
@@ -33,7 +33,7 @@
             Lexicographically compare two sequences.
           

- + Synopsis
@@ -42,7 +42,7 @@
 operator>=(Seq1 const& a, Seq2 const& b);
 
- + Parameters
@@ -66,7 +66,7 @@
- + Expression Semantics
@@ -94,14 +94,14 @@ Semantics: Returns !(a < b).

- + Header
 #include <boost/fusion/sequence/comparison/greater_equal.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators/comparison/less_than.html b/doc/html/fusion/sequences/operators/comparison/less_than.html
index ec50a2b3..9694a731 100644
--- a/doc/html/fusion/sequences/operators/comparison/less_than.html
+++ b/doc/html/fusion/sequences/operators/comparison/less_than.html
@@ -34,7 +34,7 @@
             Lexicographically compare two sequences.
           

- + Synopsis
@@ -43,7 +43,7 @@
 operator<(Seq1 const& a, Seq2 const& b);
 
- + Parameters
@@ -67,7 +67,7 @@
- + Expression Semantics
@@ -97,14 +97,14 @@ and b.

- + Header
 #include <boost/fusion/sequence/comparison/less.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators/comparison/less_than_equal.html b/doc/html/fusion/sequences/operators/comparison/less_than_equal.html
index 6f451a27..6ddde327 100644
--- a/doc/html/fusion/sequences/operators/comparison/less_than_equal.html
+++ b/doc/html/fusion/sequences/operators/comparison/less_than_equal.html
@@ -34,7 +34,7 @@
             Lexicographically compare two sequences.
           

- + Synopsis
@@ -43,7 +43,7 @@
 operator<=(Seq1 const& a, Seq2 const& b);
 
- + Parameters
@@ -67,7 +67,7 @@
- + Expression Semantics
@@ -95,14 +95,14 @@ Semantics: Returns !(b < a).

- + Header
 #include <boost/fusion/sequence/comparison/less_equal.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators/comparison/not_equal.html b/doc/html/fusion/sequences/operators/comparison/not_equal.html
index 2d806eb3..8c5be8df 100644
--- a/doc/html/fusion/sequences/operators/comparison/not_equal.html
+++ b/doc/html/fusion/sequences/operators/comparison/not_equal.html
@@ -33,7 +33,7 @@
             Compare two sequences for inequality.
           

- + Synopsis
@@ -42,7 +42,7 @@
 operator!=(Seq1 const& a, Seq2 const& b);
 
- + Parameters
@@ -66,7 +66,7 @@
- + Expression Semantics
@@ -97,14 +97,14 @@ Returns !(a == b).

- + Header
 #include <boost/fusion/sequence/comparison/not_equal_to.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators/i_o.html b/doc/html/fusion/sequences/operators/i_o.html
index 504ae2ac..521bdfa2 100644
--- a/doc/html/fusion/sequences/operators/i_o.html
+++ b/doc/html/fusion/sequences/operators/i_o.html
@@ -115,7 +115,7 @@
           representation may not be unambiguously parseable.
         

- + Header
diff --git a/doc/html/fusion/sequences/operators/i_o/in.html b/doc/html/fusion/sequences/operators/i_o/in.html
index 24b1d5de..b4389522 100644
--- a/doc/html/fusion/sequences/operators/i_o/in.html
+++ b/doc/html/fusion/sequences/operators/i_o/in.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ stream.

- + Synopsis
@@ -43,7 +43,7 @@
 operator>>(IStream& is, Sequence& seq);
 
- + Parameters
@@ -73,7 +73,7 @@
- + Expression Semantics
@@ -88,14 +88,14 @@ call is >> e.

- + Header
 #include <boost/fusion/sequence/io/in.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators/i_o/out.html b/doc/html/fusion/sequences/operators/i_o/out.html
index b6ee3e05..d5ed19c8 100644
--- a/doc/html/fusion/sequences/operators/i_o/out.html
+++ b/doc/html/fusion/sequences/operators/i_o/out.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ stream.

- + Synopsis
@@ -43,7 +43,7 @@
 operator<<(OStream& os, Sequence& seq);
 
- + Parameters
@@ -73,7 +73,7 @@
- + Expression Semantics
@@ -88,14 +88,14 @@ call os << e.

- + Header
 #include <boost/fusion/sequence/io/out.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/views.html b/doc/html/fusion/sequences/views.html
index 4977c23d..981c0f30 100644
--- a/doc/html/fusion/sequences/views.html
+++ b/doc/html/fusion/sequences/views.html
@@ -44,7 +44,7 @@
         very cheap to copy and be passed around by value.
       

- + Header

diff --git a/doc/html/fusion/sequences/views/filter_view.html b/doc/html/fusion/sequences/views/filter_view.html
index 922e6573..f9151f74 100644
--- a/doc/html/fusion/sequences/views/filter_view.html
+++ b/doc/html/fusion/sequences/views/filter_view.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -37,14 +37,14 @@ only those elements for which its predicate evaluates to mpl::true_.

- + Header
 #include <boost/fusion/sequence/view/filter_view.hpp>
 
- + Synopsis
@@ -52,7 +52,7 @@
 struct filter_view;
 
- + Template parameters
@@ -87,7 +87,7 @@
- + Model of
- + Example
diff --git a/doc/html/fusion/sequences/views/iterator_range.html b/doc/html/fusion/sequences/views/iterator_range.html
index 8c04570a..52f0ba19 100644
--- a/doc/html/fusion/sequences/views/iterator_range.html
+++ b/doc/html/fusion/sequences/views/iterator_range.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,14 +34,14 @@ a sub-range of its underlying sequence delimited by a pair of iterators.

- + Header
 #include <boost/fusion/sequence/view/iterator_range.hpp>
 
- + Synopsis
@@ -49,7 +49,7 @@
 struct iterator_range;
 
- + Template parameters
@@ -82,7 +82,7 @@
- + Model of
- + Example
diff --git a/doc/html/fusion/sequences/views/joint_view.html b/doc/html/fusion/sequences/views/joint_view.html
index c6a06f5a..a6b7628b 100644
--- a/doc/html/fusion/sequences/views/joint_view.html
+++ b/doc/html/fusion/sequences/views/joint_view.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,14 +34,14 @@ which is a concatenation of two sequences.

- + Header
 #include <boost/fusion/sequence/view/joint_view.hpp>
 
- + Synopsis
@@ -49,7 +49,7 @@
 struct joint_view;
 
- + Template parameters
@@ -86,7 +86,7 @@
- + Model of
- + Example
diff --git a/doc/html/fusion/sequences/views/reverse_view.html b/doc/html/fusion/sequences/views/reverse_view.html
index 2a5a3c36..b46e00dc 100644
--- a/doc/html/fusion/sequences/views/reverse_view.html
+++ b/doc/html/fusion/sequences/views/reverse_view.html
@@ -31,14 +31,14 @@
           and the last element will be its first.
         

- + Header
 #include <boost/fusion/sequence/view/reverse_view.hpp>
 
- + Synopsis
@@ -46,7 +46,7 @@
 struct reverse_view;
 
- + Template parameters
@@ -72,7 +72,7 @@
- + Model of
- + Example
diff --git a/doc/html/fusion/sequences/views/single_view.html b/doc/html/fusion/sequences/views/single_view.html
index 5949b995..c958dd36 100644
--- a/doc/html/fusion/sequences/views/single_view.html
+++ b/doc/html/fusion/sequences/views/single_view.html
@@ -30,14 +30,14 @@
           a value as a single element sequence.
         

- + Header
 #include <boost/fusion/sequence/view/single_view.hpp>
 
- + Synopsis
@@ -45,7 +45,7 @@
 struct single_view;
 
- + Template parameters
@@ -68,7 +68,7 @@
- + Model of
- + Example
diff --git a/doc/html/fusion/sequences/views/transform_view.html b/doc/html/fusion/sequences/views/transform_view.html
index b7438070..d217a513 100644
--- a/doc/html/fusion/sequences/views/transform_view.html
+++ b/doc/html/fusion/sequences/views/transform_view.html
@@ -34,14 +34,14 @@
           Traversal Concept) of its underlying sequence.
         

- + Header
 #include <boost/fusion/sequence/view/transform_view.hpp>
 
- + Synopsis

@@ -59,7 +59,7 @@ struct transform_view;

- + Template parameters
@@ -114,7 +114,7 @@
- + Model of
  • @@ -169,7 +169,7 @@
- + Expression Semantics
@@ -232,7 +232,7 @@
- + Example
diff --git a/doc/html/fusion/sequences/views/zip_view.html b/doc/html/fusion/sequences/views/zip_view.html
index 74b2473d..a77f9c97 100644
--- a/doc/html/fusion/sequences/views/zip_view.html
+++ b/doc/html/fusion/sequences/views/zip_view.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -37,14 +37,14 @@ of references to the component _sequence_s.

- + Header
 #include <boost/fusion/sequence/view/zip_view.hpp>
 
- + Synopsis
@@ -52,7 +52,7 @@
 struct zip_view;
 
- + Template parameters
@@ -77,7 +77,7 @@
- + Model of
- + Example
diff --git a/doc/html/fusion/support/category_of.html b/doc/html/fusion/support/category_of.html
index cc9f28c0..5fd196e5 100644
--- a/doc/html/fusion/support/category_of.html
+++ b/doc/html/fusion/support/category_of.html
@@ -26,7 +26,7 @@
 
 

- + Description

@@ -36,7 +36,7 @@ Sequence Concepts).

- + Synopsis

@@ -50,7 +50,7 @@
 }
 

- + Parameters

@@ -72,7 +72,7 @@

- + Expression Semantics

@@ -138,14 +138,14 @@ of a particular Sequence or Iterator.

- + Header

 #include <boost/fusion/support/category_of.hpp>
 

- + Example

diff --git a/doc/html/fusion/support/is_sequence.html b/doc/html/fusion/support/is_sequence.html
index 31f4c04b..a78f927e 100644
--- a/doc/html/fusion/support/is_sequence.html
+++ b/doc/html/fusion/support/is_sequence.html
@@ -26,7 +26,7 @@
 
 

- + Description

@@ -37,7 +37,7 @@ conforming sequences.

- + Synopsis

@@ -51,7 +51,7 @@
 }
 

- + Parameters

@@ -73,7 +73,7 @@

- + Expression Semantics

@@ -90,14 +90,14 @@ otherwise.

- + Header

 #include <boost/fusion/support/is_sequence.hpp>
 

- + Example

diff --git a/doc/html/fusion/support/is_view.html b/doc/html/fusion/support/is_view.html
index 921a5116..c5cab447 100644
--- a/doc/html/fusion/support/is_view.html
+++ b/doc/html/fusion/support/is_view.html
@@ -26,7 +26,7 @@
 
 

- + Description

@@ -40,7 +40,7 @@ specialized to accomodate clients providing Fusion conforming views.

- + Synopsis

@@ -54,7 +54,7 @@
 }
 

- + Parameters

@@ -76,7 +76,7 @@

- + Expression Semantics

@@ -92,14 +92,14 @@
         otherwise.
       

- + Header

 #include <boost/fusion/support/is_view.hpp>
 

- + Example

diff --git a/doc/html/fusion/support/pair.html b/doc/html/fusion/support/pair.html
index c591cd2b..5baf2f76 100644
--- a/doc/html/fusion/support/pair.html
+++ b/doc/html/fusion/support/pair.html
@@ -26,7 +26,7 @@
 
 

- + Description

@@ -37,7 +37,7 @@ for example.

- + Synopsis

@@ -61,7 +61,7 @@
 make_pair(Second const &);
 

- + Template parameters

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

- + Expression Semantics

@@ -193,14 +193,14 @@

- + Header

 #include <boost/fusion/support/pair.hpp>
 

- + Example

diff --git a/doc/html/fusion/support/tag_of.html b/doc/html/fusion/support/tag_of.html
index 156959d6..c2fab867 100644
--- a/doc/html/fusion/support/tag_of.html
+++ b/doc/html/fusion/support/tag_of.html
@@ -26,24 +26,21 @@
 
 

- + Description

All conforming Fusion sequences and iterators have an associated tag type. The purpose of the tag is to enable tag dispatching from Intrinsic - functions to implementations appropriate for the type. The default implementation - of tag_of returns T::fusion_tag - for a given type T, if such - a member typedef exists. + functions to implementations appropriate for the type.

This metafunction may be specialized to accomodate clients providing Fusion conforming sequences.

- + Synopsis

@@ -56,10 +53,10 @@
     };
 }
 
-

- namespace traits { template<typename Sequence> struct tag_of { typedef - unspecified type; }; } [heading Parameters] -

+

+ + Parameters +

@@ -79,7 +76,7 @@

- + Expression Semantics

@@ -93,21 +90,21 @@
         with T.
       

- + Header

 #include <boost/fusion/support/tag_of.hpp>
 

- + Example

-typedef traits::is_sequence<list<> tag1;
-typedef traits::is_sequence<list<int> > tag2;
-typedef traits::is_sequence<vector<> > tag3;
-typedef traits::is_sequence<vector<int> > tag4;
+typedef traits::tag_of<list<> >::type tag1;
+typedef traits::tag_of<list<int> >::type tag2;
+typedef traits::tag_of<vector<> >::type tag3;
+typedef traits::tag_of<vector<int> >::type tag4;
 
 BOOST_MPL_ASSERT((boost::is_same<tag1, tag2>));
 BOOST_MPL_ASSERT((boost::is_same<tag3, tag4>));
diff --git a/doc/html/fusion/tuples/class_template_tuple.html b/doc/html/fusion/tuples/class_template_tuple.html
index 1f634499..36db5861 100644
--- a/doc/html/fusion/tuples/class_template_tuple.html
+++ b/doc/html/fusion/tuples/class_template_tuple.html
@@ -48,7 +48,7 @@
         in future releases of fusion.
       

- + Synopsis

@@ -60,7 +60,7 @@
 class tuple;
 

- + Header

diff --git a/doc/html/fusion/tuples/class_template_tuple/construction.html b/doc/html/fusion/tuples/class_template_tuple/construction.html
index d6c19d2d..c87738f4 100644
--- a/doc/html/fusion/tuples/class_template_tuple/construction.html
+++ b/doc/html/fusion/tuples/class_template_tuple/construction.html
@@ -27,7 +27,7 @@
 
 
- + Description

@@ -38,7 +38,7 @@ in this section.

- + Specification
diff --git a/doc/html/fusion/tuples/class_template_tuple/element_access.html b/doc/html/fusion/tuples/class_template_tuple/element_access.html index abd7911a..27844ef3 100644 --- a/doc/html/fusion/tuples/class_template_tuple/element_access.html +++ b/doc/html/fusion/tuples/class_template_tuple/element_access.html @@ -31,7 +31,7 @@ access">Element access
- + Description

@@ -40,7 +40,7 @@ function to provide access to it's elements by zero based numeric index.

- + Specification
diff --git a/doc/html/fusion/tuples/class_template_tuple/relational_operators.html b/doc/html/fusion/tuples/class_template_tuple/relational_operators.html
index fc34d00f..1791d31d 100644
--- a/doc/html/fusion/tuples/class_template_tuple/relational_operators.html
+++ b/doc/html/fusion/tuples/class_template_tuple/relational_operators.html
@@ -30,7 +30,7 @@
         operators">Relational
         operators
- + Description

@@ -38,7 +38,7 @@ Tuple provides the standard boolean relational operators.

- + Specification
diff --git a/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html b/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html index 220e5ad4..e4e2df4d 100644 --- a/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html +++ b/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html @@ -30,7 +30,7 @@ creation functions">Tuple creation functions
- + Description

@@ -40,7 +40,7 @@ functions are described in this section.

- + Specification
diff --git a/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html b/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html
index 28e0292e..d451ffad 100644
--- a/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html
+++ b/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html
@@ -31,7 +31,7 @@
         helper classes">Tuple
         helper classes
 
- + Description

@@ -40,7 +40,7 @@ tuple size, and the element types.

- + Specification
diff --git a/doc/html/fusion/tuples/pairs.html b/doc/html/fusion/tuples/pairs.html
index 678eda1f..ca2f0fba 100644
--- a/doc/html/fusion/tuples/pairs.html
+++ b/doc/html/fusion/tuples/pairs.html
@@ -27,7 +27,7 @@
 
 

- + Description

@@ -36,7 +36,7 @@ as if it were a 2 element tuple.

- + Specification

diff --git a/doc/html/index.html b/doc/html/index.html
index 76954209..f666cdc3 100644
--- a/doc/html/index.html
+++ b/doc/html/index.html
@@ -30,7 +30,7 @@
 
 
-

+

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

@@ -57,7 +57,7 @@
- +

Last revised: October 30, 2006 at 01:07:37 GMT

Last revised: November 20, 2006 at 23:10:22 GMT


diff --git a/doc/support.qbk b/doc/support.qbk index 9736a484..3cc78271 100644 --- a/doc/support.qbk +++ b/doc/support.qbk @@ -111,12 +111,12 @@ may be specialized to accomodate clients providing Fusion conforming views. [heading Description] -All conforming Fusion sequences and iterators have an associated tag type. -The purpose of the tag is to enable __tag_dispatching__ from __intrinsic__ -functions to implementations appropriate for the type. The default implementation -of `tag_of` returns `T::fusion_tag` for a given type `T`, if such a member typedef exists. +All conforming Fusion sequences and iterators have an associated tag type. The +purpose of the tag is to enable __tag_dispatching__ from __intrinsic__ +functions to implementations appropriate for the type. -This metafunction may be specialized to accomodate clients providing Fusion conforming sequences. +This metafunction may be specialized to accomodate clients providing Fusion +conforming sequences. [heading Synopsis] @@ -128,6 +128,7 @@ This metafunction may be specialized to accomodate clients providing Fusion conf typedef __unspecified__ type; }; } + [heading Parameters] [table @@ -149,10 +150,10 @@ This metafunction may be specialized to accomodate clients providing Fusion conf [heading Example] - typedef traits::is_sequence<__list__<> tag1; - typedef traits::is_sequence<__list__ > tag2; - typedef traits::is_sequence<__vector__<> > tag3; - typedef traits::is_sequence<__vector__ > tag4; + typedef traits::tag_of<__list__<> >::type tag1; + typedef traits::tag_of<__list__ >::type tag2; + typedef traits::tag_of<__vector__<> >::type tag3; + typedef traits::tag_of<__vector__ >::type tag4; BOOST_MPL_ASSERT((boost::is_same)); BOOST_MPL_ASSERT((boost::is_same)); From 4f1454225671f877fdfdf99b641e407929169095 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Tue, 21 Nov 2006 02:01:13 +0000 Subject: [PATCH 059/234] better operator handling [SVN r36126] --- .../comparison/detail/enable_comparison.hpp | 10 +++- .../fusion/sequence/comparison/equal_to.hpp | 30 ++++++---- .../fusion/sequence/comparison/greater.hpp | 27 ++++++--- .../sequence/comparison/greater_equal.hpp | 27 ++++++--- .../boost/fusion/sequence/comparison/less.hpp | 24 +++++--- .../fusion/sequence/comparison/less_equal.hpp | 55 ++++++++++++++++--- .../sequence/comparison/not_equal_to.hpp | 42 +++++++------- include/boost/fusion/sequence/io/in.hpp | 27 ++++++--- include/boost/fusion/sequence/io/out.hpp | 23 ++++++-- 9 files changed, 182 insertions(+), 83 deletions(-) diff --git a/include/boost/fusion/sequence/comparison/detail/enable_comparison.hpp b/include/boost/fusion/sequence/comparison/detail/enable_comparison.hpp index 29797ef3..aafe18d8 100644 --- a/include/boost/fusion/sequence/comparison/detail/enable_comparison.hpp +++ b/include/boost/fusion/sequence/comparison/detail/enable_comparison.hpp @@ -18,16 +18,20 @@ namespace boost { namespace fusion { namespace detail { + template + struct is_native_fusion_sequence : is_base_of {}; + template struct enable_equality - : mpl::or_, fusion::traits::is_sequence > + : mpl::or_, is_native_fusion_sequence > {}; template struct enable_comparison : mpl::and_< - mpl::or_, fusion::traits::is_sequence >, - mpl::equal_to, result_of::size > > + mpl::or_, is_native_fusion_sequence > + , mpl::equal_to, result_of::size > + > {}; }}} diff --git a/include/boost/fusion/sequence/comparison/equal_to.hpp b/include/boost/fusion/sequence/comparison/equal_to.hpp index ee04a24f..83d52dee 100644 --- a/include/boost/fusion/sequence/comparison/equal_to.hpp +++ b/include/boost/fusion/sequence/comparison/equal_to.hpp @@ -14,28 +14,34 @@ #include #include #include -#include namespace boost { namespace fusion { - namespace sequence_operators + template + inline bool + equal_to(Seq1 const& a, Seq2 const& b) + { + return result_of::size::value == result_of::size::value + && detail::sequence_equal_to< + Seq1 const, Seq2 const + , result_of::size::value == result_of::size::value>:: + call(fusion::begin(a), fusion::begin(b)); + } + + namespace operators { template - inline typename - enable_if< - detail::enable_equality - , bool + inline typename + enable_if< + detail::enable_equality + , bool >::type operator==(Seq1 const& a, Seq2 const& b) { - return result_of::size::value == result_of::size::value - && detail::sequence_equal_to< - Seq1 const, Seq2 const - , result_of::size::value == result_of::size::value>:: - call(fusion::begin(a), fusion::begin(b)); + return fusion::equal_to(a, b); } } - using sequence_operators::operator==; + using operators::operator==; }} #endif diff --git a/include/boost/fusion/sequence/comparison/greater.hpp b/include/boost/fusion/sequence/comparison/greater.hpp index becd6767..dd57ebef 100644 --- a/include/boost/fusion/sequence/comparison/greater.hpp +++ b/include/boost/fusion/sequence/comparison/greater.hpp @@ -12,6 +12,7 @@ #include #include #include +#include #if defined(FUSION_DIRECT_OPERATOR_USAGE) #include @@ -19,18 +20,11 @@ #include #endif -#include -#include - namespace boost { namespace fusion { template - inline typename - enable_if< - detail::enable_comparison - , bool - >::type - operator>(Seq1 const& a, Seq2 const& b) + inline bool + greater(Seq1 const& a, Seq2 const& b) { #if defined(FUSION_DIRECT_OPERATOR_USAGE) return detail::sequence_greater:: @@ -39,6 +33,21 @@ namespace boost { namespace fusion return (b < a); #endif } + + namespace operators + { + template + inline typename + enable_if< + detail::enable_comparison + , bool + >::type + operator>(Seq1 const& a, Seq2 const& b) + { + return fusion::greater(a, b); + } + } + using operators::operator>; }} #endif diff --git a/include/boost/fusion/sequence/comparison/greater_equal.hpp b/include/boost/fusion/sequence/comparison/greater_equal.hpp index f73ee64f..a0b9baef 100644 --- a/include/boost/fusion/sequence/comparison/greater_equal.hpp +++ b/include/boost/fusion/sequence/comparison/greater_equal.hpp @@ -12,6 +12,7 @@ #include #include #include +#include #if defined(FUSION_DIRECT_OPERATOR_USAGE) #include @@ -19,18 +20,11 @@ #include #endif -#include -#include - namespace boost { namespace fusion { template - inline typename - enable_if< - detail::enable_comparison - , bool - >::type - operator>=(Seq1 const& a, Seq2 const& b) + inline bool + greater_equal(Seq1 const& a, Seq2 const& b) { #if defined(FUSION_DIRECT_OPERATOR_USAGE) return detail::sequence_greater_equal:: @@ -39,6 +33,21 @@ namespace boost { namespace fusion return !(a < b); #endif } + + namespace operators + { + template + inline typename + enable_if< + detail::enable_comparison + , bool + >::type + operator>=(Seq1 const& a, Seq2 const& b) + { + return fusion::greater_equal(a, b); + } + } + using operators::operator>=; }} #endif diff --git a/include/boost/fusion/sequence/comparison/less.hpp b/include/boost/fusion/sequence/comparison/less.hpp index 96d13d41..b5abddeb 100644 --- a/include/boost/fusion/sequence/comparison/less.hpp +++ b/include/boost/fusion/sequence/comparison/less.hpp @@ -14,21 +14,31 @@ #include #include #include -#include namespace boost { namespace fusion { template - inline typename - enable_if< - detail::enable_comparison - , bool - >::type - operator<(Seq1 const& a, Seq2 const& b) + inline bool + less(Seq1 const& a, Seq2 const& b) { return detail::sequence_less:: call(fusion::begin(a), fusion::begin(b)); } + + namespace operators + { + template + inline typename + enable_if< + detail::enable_comparison + , bool + >::type + operator<(Seq1 const& a, Seq2 const& b) + { + return fusion::less(a, b); + } + } + using operators::operator<; }} #endif diff --git a/include/boost/fusion/sequence/comparison/less_equal.hpp b/include/boost/fusion/sequence/comparison/less_equal.hpp index d4b45b2d..71d25328 100644 --- a/include/boost/fusion/sequence/comparison/less_equal.hpp +++ b/include/boost/fusion/sequence/comparison/less_equal.hpp @@ -12,6 +12,7 @@ #include #include #include +#include #if defined(FUSION_DIRECT_OPERATOR_USAGE) #include @@ -19,18 +20,11 @@ #include #endif -#include -#include - namespace boost { namespace fusion { template - inline typename - enable_if< - detail::enable_comparison - , bool - >::type - operator<=(Seq1 const& a, Seq2 const& b) + inline bool + less_equal(Seq1 const& a, Seq2 const& b) { #if defined(FUSION_DIRECT_OPERATOR_USAGE) return detail::sequence_less_equal:: @@ -39,6 +33,49 @@ namespace boost { namespace fusion return !(b < a); #endif } + + namespace operators + { +#if defined(BOOST_MSVC) && (BOOST_MSVC <= 1400) +// Workaround for VC8.0 and VC7.1 + template + inline bool + operator<=(sequence_base const& a, sequence_base const& b) + { + return less_equal(a.derived(), b.derived()); + } + + template + inline typename disable_if, bool>::type + operator<=(sequence_base const& a, Seq2 const& b) + { + return less_equal(a.derived(), b); + } + + template + inline typename disable_if, bool>::type + operator<=(Seq1 const& a, sequence_base const& b) + { + return less_equal(a, b.derived()); + } + +#else +// Somehow VC8.0 and VC7.1 does not like this code +// but barfs somewhere else. + + template + inline typename + enable_if< + detail::enable_comparison + , bool + >::type + operator<=(Seq1 const& a, Seq2 const& b) + { + return fusion::less_equal(a, b); + } +#endif + } + using operators::operator<=; }} #endif diff --git a/include/boost/fusion/sequence/comparison/not_equal_to.hpp b/include/boost/fusion/sequence/comparison/not_equal_to.hpp index 1464d023..4fd87301 100644 --- a/include/boost/fusion/sequence/comparison/not_equal_to.hpp +++ b/include/boost/fusion/sequence/comparison/not_equal_to.hpp @@ -12,6 +12,7 @@ #include #include #include +#include #if defined(FUSION_DIRECT_OPERATOR_USAGE) #include @@ -19,34 +20,37 @@ #include #endif -#include -#include - namespace boost { namespace fusion { - namespace sequence_operators + template + inline bool + not_equal_to(Seq1 const& a, Seq2 const& b) + { +#if defined(FUSION_DIRECT_OPERATOR_USAGE) + return result_of::size::value != result_of::size::value + || detail::sequence_not_equal_to< + Seq1 const, Seq2 const + , result_of::size::value == result_of::size::value>:: + call(fusion::begin(a), fusion::begin(b)); +#else + return !(a == b); +#endif + } + + namespace operators { template - inline typename - enable_if< - detail::enable_equality - , bool + inline typename + enable_if< + detail::enable_equality + , bool >::type operator!=(Seq1 const& a, Seq2 const& b) { -#if defined(FUSION_DIRECT_OPERATOR_USAGE) - return result_of::size::value != result_of::size::value - || detail::sequence_not_equal_to< - Seq1 const, Seq2 const - , result_of::size::value == result_of::size::value>:: - call(fusion::begin(a), fusion::begin(b)); -#else - return !(a == b); -#endif + return fusion::not_equal_to(a, b); } } - - using sequence_operators::operator!=; + using operators::operator!=; }} #endif diff --git a/include/boost/fusion/sequence/io/in.hpp b/include/boost/fusion/sequence/io/in.hpp index c3e5a1c5..2a946e3d 100644 --- a/include/boost/fusion/sequence/io/in.hpp +++ b/include/boost/fusion/sequence/io/in.hpp @@ -12,23 +12,32 @@ #include #include -#include -#include -#include +#include namespace boost { namespace fusion { template - inline typename - enable_if< - fusion::traits::is_sequence - , std::istream& - >::type - operator>>(std::istream& is, Sequence& seq) + inline std::istream& + in(std::istream& is, Sequence& seq) { detail::read_sequence(is, seq); return is; } + + namespace operators + { + template + inline typename + enable_if< + fusion::traits::is_sequence + , std::istream& + >::type + operator>>(std::istream& is, Sequence& seq) + { + return fusion::in(is, seq); + } + } + using operators::operator>>; }} #endif diff --git a/include/boost/fusion/sequence/io/out.hpp b/include/boost/fusion/sequence/io/out.hpp index 00491b8b..2c8cea2d 100644 --- a/include/boost/fusion/sequence/io/out.hpp +++ b/include/boost/fusion/sequence/io/out.hpp @@ -19,16 +19,27 @@ namespace boost { namespace fusion { template - inline typename - enable_if< - fusion::traits::is_sequence - , std::ostream& - >::type - operator<<(std::ostream& os, Sequence const& seq) + inline std::ostream& + out(std::ostream& os, Sequence& seq) { detail::print_sequence(os, seq); return os; } + + namespace operators + { + template + inline typename + enable_if< + fusion::traits::is_sequence + , std::ostream& + >::type + operator<<(std::ostream& os, Sequence const& seq) + { + return fusion::out(os, seq); + } + } + using operators::operator<<; }} #endif From e5cf2988354d9d5b0c29ac8cd84057da0d8de56d Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Tue, 21 Nov 2006 22:49:05 +0000 Subject: [PATCH 060/234] variant and boost tuple adaptor docs [SVN r36140] --- doc/fusion.qbk | 2 ++ doc/sequences.qbk | 52 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) diff --git a/doc/fusion.qbk b/doc/fusion.qbk index 72b8d50a..2dbbffe9 100644 --- a/doc/fusion.qbk +++ b/doc/fusion.qbk @@ -32,6 +32,8 @@ [def __boost_any__ [@http://boost.org/doc/html/any.html Boost.Any]] [def __new_iterator_concepts__ [@http://boost.org/libs/iterator/doc/new-iter-concepts.html New Iterator Concepts]] [def __boost_array_library__ [@http://www.boost.org/doc/html/array.html Boost.Array Library]] +[def __boost_variant_library__ [@http://www.boost.org/doc/html/variant.html Boost.Variant Library]] +[def __boost_tuple_library__ [@http://www.boost.org/libs/tuple/doc/tuple_users_guide.html Boost.Tuple Library]] [def __boost_ref__ [@http://www.boost.org/doc/html/ref.html Boost.Ref]] [def __boost_ref_call__ [@http://www.boost.org/doc/html/ref.html `ref`]] [def __std_pair_doc__ [@http://www.sgi.com/tech/stl/pair.html `std::pair`]] diff --git a/doc/sequences.qbk b/doc/sequences.qbk index 627ed680..8c81289c 100644 --- a/doc/sequences.qbk +++ b/doc/sequences.qbk @@ -1326,6 +1326,58 @@ __boost_array_library__ [endsect] +[section boost::tuple] +This module provides adapters for `boost::tuple`. Including the module +header makes `boost::tuple` a fully conforming __forward_sequence__. + +[heading Header] + + #include + +[heading Model of] + +* __forward_sequence__ + +[heading Example] + + boost::tuple example_tuple(101, "hello"); + std::cout << *boost::fusion::begin(example_tuple) << '\n'; + std::cout << *boost::fusion::next(boost::fusion::begin(example_tuple)) << '\n'; + +[heading See also] + +__boost_tuple_library__ + +[endsect] + +[section boost::variant] +This module provides adapters for `boost::variant`. Including the module +header makes `boost::variant` a fully conforming __forward_sequence__. +The variant acts as a sequence of the types that can be contained in the variant. +Accessing types not currently stored int the variant will lead to the variant +being populated with a default constructed value of that type. + +[heading Header] + + #include + +[heading Model of] + +* __forward_sequence__ + +[heading Example] + + boost::variant example_variant = 101; + std::cout << example_variant << '\n'; + *boost::fusion::find(example_variant) = "hello"; + std::cout << example_variant << '\n'; + +[heading See also] + +__boost_variant_library__ + +[endsect] + [endsect] [section Intrinsics] From eba11fc2296cfe3ccde2f8b3154dde824063987f Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Sun, 26 Nov 2006 22:41:04 +0000 Subject: [PATCH 061/234] Updates for boost::tuple and boost::variant [SVN r36178] --- doc/html/fusion/algorithms.html | 6 +- .../concepts/polymorphic_function_object.html | 6 +- doc/html/fusion/algorithms/iteration.html | 2 +- .../iteration/functions/accumulate.html | 14 +-- .../algorithms/iteration/functions/fold.html | 14 +-- .../iteration/functions/for_each.html | 14 +-- .../iteration/metafunctions/accumulate.html | 12 +-- .../iteration/metafunctions/fold.html | 12 +-- .../iteration/metafunctions/for_each.html | 12 +-- doc/html/fusion/algorithms/query.html | 2 +- .../algorithms/query/functions/all.html | 14 +-- .../algorithms/query/functions/any.html | 14 +-- .../algorithms/query/functions/count.html | 14 +-- .../algorithms/query/functions/count_if.html | 14 +-- .../algorithms/query/functions/find.html | 14 +-- .../algorithms/query/functions/find_if.html | 14 +-- .../algorithms/query/functions/none.html | 14 +-- .../algorithms/query/metafunctions/all.html | 12 +-- .../algorithms/query/metafunctions/any.html | 12 +-- .../algorithms/query/metafunctions/count.html | 12 +-- .../query/metafunctions/count_if.html | 12 +-- .../algorithms/query/metafunctions/find.html | 12 +-- .../query/metafunctions/find_if.html | 12 +-- .../algorithms/query/metafunctions/none.html | 12 +-- .../fusion/algorithms/transformation.html | 2 +- .../transformation/functions/clear.html | 14 +-- .../transformation/functions/erase.html | 14 +-- .../transformation/functions/erase_key.html | 14 +-- .../transformation/functions/filter.html | 14 +-- .../transformation/functions/filter_if.html | 14 +-- .../transformation/functions/insert.html | 14 +-- .../functions/insert_range.html | 14 +-- .../transformation/functions/join.html | 14 +-- .../transformation/functions/pop_back.html | 14 +-- .../transformation/functions/pop_front.html | 14 +-- .../transformation/functions/push_back.html | 14 +-- .../transformation/functions/push_front.html | 14 +-- .../transformation/functions/remove.html | 14 +-- .../transformation/functions/remove_if.html | 14 +-- .../transformation/functions/replace.html | 14 +-- .../transformation/functions/replace_if.html | 14 +-- .../transformation/functions/reverse.html | 14 +-- .../transformation/functions/transform.html | 18 ++-- .../transformation/functions/zip.html | 14 +-- .../transformation/metafunctions/clear.html | 12 +-- .../transformation/metafunctions/erase.html | 12 +-- .../metafunctions/erase_key.html | 12 +-- .../transformation/metafunctions/filter.html | 12 +-- .../metafunctions/filter_if.html | 12 +-- .../transformation/metafunctions/insert.html | 12 +-- .../metafunctions/insert_range.html | 12 +-- .../transformation/metafunctions/join.html | 10 +- .../metafunctions/pop_back.html | 12 +-- .../metafunctions/pop_front.html | 12 +-- .../metafunctions/push_back.html | 12 +-- .../metafunctions/push_front.html | 12 +-- .../transformation/metafunctions/remove.html | 12 +-- .../metafunctions/remove_if.html | 12 +-- .../transformation/metafunctions/replace.html | 12 +-- .../metafunctions/replace_if.html | 12 +-- .../transformation/metafunctions/reverse.html | 12 +-- .../metafunctions/transform.html | 12 +-- .../transformation/metafunctions/zip.html | 10 +- doc/html/fusion/extension.html | 16 ++-- doc/html/fusion/notes.html | 16 ++-- doc/html/fusion/sequences/adapted.html | 2 + .../sequences/adapted/boost__array.html | 6 +- doc/html/fusion/sequences/conversion.html | 2 +- .../conversion/functions/as_list.html | 12 +-- .../conversion/functions/as_map.html | 12 +-- .../conversion/functions/as_set.html | 12 +-- .../conversion/functions/as_vector.html | 12 +-- .../conversion/metafunctions/as_list.html | 12 +-- .../conversion/metafunctions/as_map.html | 12 +-- .../conversion/metafunctions/as_set.html | 12 +-- .../conversion/metafunctions/as_vector.html | 12 +-- doc/html/fusion/sequences/generation.html | 2 +- .../generation/functions/list_tie.html | 12 +-- .../generation/functions/make_cons.html | 14 +-- .../generation/functions/make_list.html | 14 +-- .../generation/functions/make_map.html | 18 ++-- .../generation/functions/make_set.html | 18 ++-- .../generation/functions/make_vector.html | 14 +-- .../sequences/generation/functions/tiers.html | 6 +- .../generation/functions/vector_tie.html | 12 +-- .../generation/metafunctions/list_tie.html | 12 +-- .../generation/metafunctions/make_cons.html | 12 +-- .../generation/metafunctions/make_list.html | 12 +-- .../generation/metafunctions/make_map.html | 18 ++-- .../generation/metafunctions/make_set.html | 16 ++-- .../generation/metafunctions/make_vector.html | 12 +-- .../generation/metafunctions/vector_tie.html | 12 +-- doc/html/fusion/sequences/intrinsics.html | 12 +-- .../sequences/intrinsics/functions/at.html | 12 +-- .../sequences/intrinsics/functions/at_c.html | 12 +-- .../intrinsics/functions/at_key.html | 12 +-- .../sequences/intrinsics/functions/back.html | 12 +-- .../sequences/intrinsics/functions/begin.html | 12 +-- .../sequences/intrinsics/functions/empty.html | 12 +-- .../sequences/intrinsics/functions/end.html | 12 +-- .../sequences/intrinsics/functions/front.html | 12 +-- .../intrinsics/functions/has_key.html | 12 +-- .../sequences/intrinsics/functions/size.html | 12 +-- .../intrinsics/metafunctions/at.html | 16 ++-- .../intrinsics/metafunctions/at_c.html | 16 ++-- .../intrinsics/metafunctions/at_key.html | 16 ++-- .../intrinsics/metafunctions/back.html | 12 +-- .../intrinsics/metafunctions/begin.html | 12 +-- .../intrinsics/metafunctions/empty.html | 12 +-- .../intrinsics/metafunctions/end.html | 12 +-- .../intrinsics/metafunctions/front.html | 12 +-- .../intrinsics/metafunctions/has_key.html | 12 +-- .../intrinsics/metafunctions/size.html | 12 +-- .../intrinsics/metafunctions/value_at.html | 12 +-- .../intrinsics/metafunctions/value_at_c.html | 12 +-- .../metafunctions/value_at_key.html | 12 +-- .../sequences/operators/comparison.html | 2 +- .../sequences/operators/comparison/equal.html | 12 +-- .../operators/comparison/greater_than.html | 10 +- .../comparison/greater_than_equal.html | 10 +- .../operators/comparison/less_than.html | 10 +- .../operators/comparison/less_than_equal.html | 10 +- .../operators/comparison/not_equal.html | 10 +- doc/html/fusion/sequences/operators/i_o.html | 2 +- .../fusion/sequences/operators/i_o/in.html | 12 +-- .../fusion/sequences/operators/i_o/out.html | 12 +-- .../fusion/tuples/class_template_tuple.html | 4 +- .../class_template_tuple/construction.html | 4 +- .../class_template_tuple/element_access.html | 4 +- .../relational_operators.html | 4 +- .../tuple_creation_functions.html | 4 +- .../tuple_helper_classes.html | 4 +- doc/html/fusion/tuples/pairs.html | 4 +- doc/html/index.html | 2 +- example/performance/measure.hpp | 6 +- example/performance/sequence_efficiency.cpp | 93 +++++++++++++++++-- 136 files changed, 856 insertions(+), 777 deletions(-) diff --git a/doc/html/fusion/algorithms.html b/doc/html/fusion/algorithms.html index 02678133..0d735802 100644 --- a/doc/html/fusion/algorithms.html +++ b/doc/html/fusion/algorithms.html @@ -33,7 +33,7 @@
Transformation

- + Lazy Evaluation

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

- + Sequence Extension

@@ -79,7 +79,7 @@ functions to convert back to the original sequence type.

- + Header

diff --git a/doc/html/fusion/algorithms/concepts/polymorphic_function_object.html b/doc/html/fusion/algorithms/concepts/polymorphic_function_object.html
index 0afc0693..d3e927c3 100644
--- a/doc/html/fusion/algorithms/concepts/polymorphic_function_object.html
+++ b/doc/html/fusion/algorithms/concepts/polymorphic_function_object.html
@@ -29,7 +29,7 @@
         Function Object">Polymorphic
         Function Object
 
- + Description

@@ -61,7 +61,7 @@

- + Refinement of
@@ -69,7 +69,7 @@ MPL Metafunction Class

- + Expression requirements
diff --git a/doc/html/fusion/algorithms/iteration.html b/doc/html/fusion/algorithms/iteration.html index 27065719..080d3744 100644 --- a/doc/html/fusion/algorithms/iteration.html +++ b/doc/html/fusion/algorithms/iteration.html @@ -35,7 +35,7 @@ a sequence repeatedly applying an operation to its elements.

- + Header

diff --git a/doc/html/fusion/algorithms/iteration/functions/accumulate.html b/doc/html/fusion/algorithms/iteration/functions/accumulate.html
index 5d73da29..7dee9295 100644
--- a/doc/html/fusion/algorithms/iteration/functions/accumulate.html
+++ b/doc/html/fusion/algorithms/iteration/functions/accumulate.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -37,7 +37,7 @@ fold.

- + Synopsis
@@ -50,7 +50,7 @@
     Sequence& seq, State const& initial_state, F const& f);
 
-

Table 1.33. Parameters

+

Table 1.33. Parameters

@@ -93,7 +93,7 @@
- + Expression Semantics
@@ -108,21 +108,21 @@ where e1 ...eN are the elements of seq.

- + Complexity

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

- + Header
 #include <boost/fusion/algorithm/iteration/accumulate.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/iteration/functions/fold.html b/doc/html/fusion/algorithms/iteration/functions/fold.html
index 232d24e7..662e5e42 100644
--- a/doc/html/fusion/algorithms/iteration/functions/fold.html
+++ b/doc/html/fusion/algorithms/iteration/functions/fold.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -36,7 +36,7 @@ to each element of a sequence and the previous state.

- + Synopsis
@@ -49,7 +49,7 @@
     Sequence& seq, State const& initial_state, F const& f);
 
-

Table 1.32. Parameters

+

Table 1.32. Parameters

@@ -91,7 +91,7 @@
- + Expression Semantics
@@ -106,21 +106,21 @@ where e1 ...eN are the elements of seq.

- + Complexity

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

- + Header
 #include <boost/fusion/algorithm/iteration/fold.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/iteration/functions/for_each.html b/doc/html/fusion/algorithms/iteration/functions/for_each.html
index d1f4f9e5..a13bcd59 100644
--- a/doc/html/fusion/algorithms/iteration/functions/for_each.html
+++ b/doc/html/fusion/algorithms/iteration/functions/for_each.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

- + Synopsis
@@ -45,7 +45,7 @@
     Sequence& seq, F const& f);
 
-

Table 1.34. Parameters

+

Table 1.34. Parameters

@@ -78,7 +78,7 @@
- + Expression Semantics
@@ -93,21 +93,21 @@ in seq.

- + Complexity

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

- + Header
 #include <boost/fusion/algorithm/iteration/for_each.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html b/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html
index 77bded2e..7281aa24 100644
--- a/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html
+++ b/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of accumulate.

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

Table 1.36. Parameters

+

Table 1.36. Parameters

@@ -91,7 +91,7 @@
- + Expression Semantics
@@ -111,14 +111,14 @@ Function Object of type F.

- + Complexity

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

- + Header
diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/fold.html b/doc/html/fusion/algorithms/iteration/metafunctions/fold.html
index 6c733a63..a8fc3e94 100644
--- a/doc/html/fusion/algorithms/iteration/metafunctions/fold.html
+++ b/doc/html/fusion/algorithms/iteration/metafunctions/fold.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of fold.

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

Table 1.35. Parameters

+

Table 1.35. Parameters

@@ -91,7 +91,7 @@
- + Expression Semantics
@@ -111,14 +111,14 @@ Function Object of type F.

- + Complexity

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

- + Header
diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html b/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html
index e10784e0..d1fd7d41 100644
--- a/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html
+++ b/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html
@@ -30,11 +30,11 @@
             return type of for_each is always void.
           

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

Table 1.37. Parameters

+

Table 1.37. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -98,14 +98,14 @@ return type is always void.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/query.html b/doc/html/fusion/algorithms/query.html
index 1df0002c..71471093 100644
--- a/doc/html/fusion/algorithms/query.html
+++ b/doc/html/fusion/algorithms/query.html
@@ -33,7 +33,7 @@
         The query algorithms provide support for searching and analyzing sequences.
       

- + Header

diff --git a/doc/html/fusion/algorithms/query/functions/all.html b/doc/html/fusion/algorithms/query/functions/all.html
index 6b433016..33eaa71c 100644
--- a/doc/html/fusion/algorithms/query/functions/all.html
+++ b/doc/html/fusion/algorithms/query/functions/all.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.39. Parameters

+

Table 1.39. Parameters

@@ -84,7 +84,7 @@
- + Expression Semantics
@@ -101,21 +101,21 @@ element e in seq.

- + Complexity

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

- + Header
 #include <boost/fusion/algorithm/query/all.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/query/functions/any.html b/doc/html/fusion/algorithms/query/functions/any.html
index 0b3d2651..1b20505c 100644
--- a/doc/html/fusion/algorithms/query/functions/any.html
+++ b/doc/html/fusion/algorithms/query/functions/any.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.38. Parameters

+

Table 1.38. Parameters

@@ -84,7 +84,7 @@
- + Expression semantics
@@ -101,21 +101,21 @@ element e in seq.

- + Complexity

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

- + Header
 #include <boost/fusion/algorithm/query/any.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/query/functions/count.html b/doc/html/fusion/algorithms/query/functions/count.html
index 4d16da53..c6c4b18d 100644
--- a/doc/html/fusion/algorithms/query/functions/count.html
+++ b/doc/html/fusion/algorithms/query/functions/count.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

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

Table 1.43. Parameters

+

Table 1.43. Parameters

@@ -81,7 +81,7 @@
- + Expression Semantics
@@ -97,21 +97,21 @@ t in seq.

- + Complexity

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

- + Header
 #include <boost/fusion/algorithm/query/count.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/query/functions/count_if.html b/doc/html/fusion/algorithms/query/functions/count_if.html
index b0c83b1c..b9aedbc9 100644
--- a/doc/html/fusion/algorithms/query/functions/count_if.html
+++ b/doc/html/fusion/algorithms/query/functions/count_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.44. Parameters

+

Table 1.44. Parameters

@@ -81,7 +81,7 @@
- + Expression Semantics
@@ -96,21 +96,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/query/functions/find.html b/doc/html/fusion/algorithms/query/functions/find.html
index 3cf2fd3d..bff96f47 100644
--- a/doc/html/fusion/algorithms/query/functions/find.html
+++ b/doc/html/fusion/algorithms/query/functions/find.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

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

Table 1.41. Parameters

+

Table 1.41. Parameters

@@ -82,7 +82,7 @@
- + Expression Semantics
@@ -100,21 +100,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/query/functions/find_if.html b/doc/html/fusion/algorithms/query/functions/find_if.html
index 9fcd9f5f..86bfd6fa 100644
--- a/doc/html/fusion/algorithms/query/functions/find_if.html
+++ b/doc/html/fusion/algorithms/query/functions/find_if.html
@@ -30,11 +30,11 @@
             MPL Lambda Expression evaluates to boost::mpl::true_.
           

- + Description
- + Synopsis
@@ -51,7 +51,7 @@
 unspecified find_if(Sequence& seq);
 
-

Table 1.42. Parameters

+

Table 1.42. Parameters

@@ -83,7 +83,7 @@
- + Expression Semantics
@@ -102,21 +102,21 @@ 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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/query/functions/none.html b/doc/html/fusion/algorithms/query/functions/none.html
index 1ec01c4f..d024bb24 100644
--- a/doc/html/fusion/algorithms/query/functions/none.html
+++ b/doc/html/fusion/algorithms/query/functions/none.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.40. Parameters

+

Table 1.40. Parameters

@@ -84,7 +84,7 @@
- + Expression Semantics
@@ -101,21 +101,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/query/metafunctions/all.html b/doc/html/fusion/algorithms/query/metafunctions/all.html
index cc97ad80..03c3924d 100644
--- a/doc/html/fusion/algorithms/query/metafunctions/all.html
+++ b/doc/html/fusion/algorithms/query/metafunctions/all.html
@@ -26,14 +26,14 @@
 
 
- + Description

A metafunction returning the result type of all.

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

Table 1.46. Parameters

+

Table 1.46. Parameters

@@ -82,7 +82,7 @@
- + Expression Semantics
@@ -102,14 +102,14 @@ The return type is always bool.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/query/metafunctions/any.html b/doc/html/fusion/algorithms/query/metafunctions/any.html
index c576105e..bb63c8d8 100644
--- a/doc/html/fusion/algorithms/query/metafunctions/any.html
+++ b/doc/html/fusion/algorithms/query/metafunctions/any.html
@@ -26,14 +26,14 @@
 
 
- + Description

A metafunction returning the result type of any.

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

Table 1.45. Parameters

+

Table 1.45. Parameters

@@ -82,7 +82,7 @@
- + Expression Semantics
@@ -102,14 +102,14 @@ The return type is always bool.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/query/metafunctions/count.html b/doc/html/fusion/algorithms/query/metafunctions/count.html
index be0994ef..2c634d8f 100644
--- a/doc/html/fusion/algorithms/query/metafunctions/count.html
+++ b/doc/html/fusion/algorithms/query/metafunctions/count.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.50. Parameters

+

Table 1.50. Parameters

@@ -81,7 +81,7 @@
- + Expression Semantics
@@ -97,14 +97,14 @@ int.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/query/metafunctions/count_if.html b/doc/html/fusion/algorithms/query/metafunctions/count_if.html
index c95d4c07..74b2dcea 100644
--- a/doc/html/fusion/algorithms/query/metafunctions/count_if.html
+++ b/doc/html/fusion/algorithms/query/metafunctions/count_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.51. Parameters

+

Table 1.51. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -96,14 +96,14 @@ always int.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/query/metafunctions/find.html b/doc/html/fusion/algorithms/query/metafunctions/find.html
index 389730c1..4c9c9540 100644
--- a/doc/html/fusion/algorithms/query/metafunctions/find.html
+++ b/doc/html/fusion/algorithms/query/metafunctions/find.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.48. Parameters

+

Table 1.48. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -97,14 +97,14 @@ in Sequence, or result_of::end<Sequence>::type if there is no such element.

- + Complexity

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

- + Header
diff --git a/doc/html/fusion/algorithms/query/metafunctions/find_if.html b/doc/html/fusion/algorithms/query/metafunctions/find_if.html
index 01708c3e..74bb66f4 100644
--- a/doc/html/fusion/algorithms/query/metafunctions/find_if.html
+++ b/doc/html/fusion/algorithms/query/metafunctions/find_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.49. Parameters

+

Table 1.49. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -98,14 +98,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
diff --git a/doc/html/fusion/algorithms/query/metafunctions/none.html b/doc/html/fusion/algorithms/query/metafunctions/none.html
index 2c07b571..bbfafc20 100644
--- a/doc/html/fusion/algorithms/query/metafunctions/none.html
+++ b/doc/html/fusion/algorithms/query/metafunctions/none.html
@@ -26,14 +26,14 @@
 
 
- + Description

A metafunction returning the result type of none.

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

Table 1.47. Parameters

+

Table 1.47. Parameters

@@ -82,7 +82,7 @@
- + Expression Semantics
@@ -102,14 +102,14 @@ The return type is always bool.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation.html b/doc/html/fusion/algorithms/transformation.html
index a6dc5c71..c4fc7772 100644
--- a/doc/html/fusion/algorithms/transformation.html
+++ b/doc/html/fusion/algorithms/transformation.html
@@ -46,7 +46,7 @@
         

- + Header

diff --git a/doc/html/fusion/algorithms/transformation/functions/clear.html b/doc/html/fusion/algorithms/transformation/functions/clear.html
index 2c921d8f..28ad27dd 100644
--- a/doc/html/fusion/algorithms/transformation/functions/clear.html
+++ b/doc/html/fusion/algorithms/transformation/functions/clear.html
@@ -26,14 +26,14 @@
 
 
- + Description

clear returns an empty sequence.

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

Table 1.61. Parameters

+

Table 1.61. Parameters

@@ -67,7 +67,7 @@
- + Expression Semantics
@@ -84,21 +84,21 @@ with no elements.

- + Complexity

Constant.

- + Header
 #include <boost/fusion/algorithm/transformation/clear.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/erase.html b/doc/html/fusion/algorithms/transformation/functions/erase.html
index 100046fa..238c1525 100644
--- a/doc/html/fusion/algorithms/transformation/functions/erase.html
+++ b/doc/html/fusion/algorithms/transformation/functions/erase.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.62. Parameters

+

Table 1.62. Parameters

@@ -101,7 +101,7 @@
- + Expression Semantics
@@ -132,21 +132,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/erase_key.html b/doc/html/fusion/algorithms/transformation/functions/erase_key.html
index a3357d59..cec8a28e 100644
--- a/doc/html/fusion/algorithms/transformation/functions/erase_key.html
+++ b/doc/html/fusion/algorithms/transformation/functions/erase_key.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -39,7 +39,7 @@ with a given key.

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

Table 1.63. Parameters

+

Table 1.63. Parameters

@@ -82,7 +82,7 @@
- + Expression Semantics
@@ -100,21 +100,21 @@ except those with key Key.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/erase_key.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/filter.html b/doc/html/fusion/algorithms/transformation/functions/filter.html
index 25d2999d..5c420f32 100644
--- a/doc/html/fusion/algorithms/transformation/functions/filter.html
+++ b/doc/html/fusion/algorithms/transformation/functions/filter.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.52. Parameters

+

Table 1.52. Parameters

@@ -77,7 +77,7 @@
- + Expression Semantics
@@ -96,21 +96,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/filter_if.html b/doc/html/fusion/algorithms/transformation/functions/filter_if.html
index 2e6cfa6f..8b8da67c 100644
--- a/doc/html/fusion/algorithms/transformation/functions/filter_if.html
+++ b/doc/html/fusion/algorithms/transformation/functions/filter_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.53. Parameters

+

Table 1.53. Parameters

@@ -79,7 +79,7 @@
- + Expression Semantics
@@ -99,21 +99,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/insert.html b/doc/html/fusion/algorithms/transformation/functions/insert.html
index 01e27160..bb62b8c1 100644
--- a/doc/html/fusion/algorithms/transformation/functions/insert.html
+++ b/doc/html/fusion/algorithms/transformation/functions/insert.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Synposis
@@ -46,7 +46,7 @@
 unspecified insert(Sequence const& seq, Pos const& pos, T const& t);
 
-

Table 1.64. Parameters

+

Table 1.64. Parameters

@@ -87,7 +87,7 @@
- + Expression Semantics
@@ -107,21 +107,21 @@ pos.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/insert.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/insert_range.html b/doc/html/fusion/algorithms/transformation/functions/insert_range.html
index 89cd125e..51789af7 100644
--- a/doc/html/fusion/algorithms/transformation/functions/insert_range.html
+++ b/doc/html/fusion/algorithms/transformation/functions/insert_range.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ iterator.

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

Table 1.65. Parameters

+

Table 1.65. Parameters

@@ -91,7 +91,7 @@
- + Expression Semantics
@@ -111,21 +111,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/join.html b/doc/html/fusion/algorithms/transformation/functions/join.html
index 241ef678..ebc93987 100644
--- a/doc/html/fusion/algorithms/transformation/functions/join.html
+++ b/doc/html/fusion/algorithms/transformation/functions/join.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.66. Parameters

+

Table 1.66. Parameters

@@ -79,7 +79,7 @@
- + Expression Semantics
@@ -98,21 +98,21 @@ The order of th elements is preserved.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/join.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/pop_back.html b/doc/html/fusion/algorithms/transformation/functions/pop_back.html
index 6bb20aca..04f582dd 100644
--- a/doc/html/fusion/algorithms/transformation/functions/pop_back.html
+++ b/doc/html/fusion/algorithms/transformation/functions/pop_back.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

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

Table 1.68. Parameters

+

Table 1.68. Parameters

@@ -67,7 +67,7 @@
- + Expression Semantics
@@ -86,21 +86,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/pop_front.html b/doc/html/fusion/algorithms/transformation/functions/pop_front.html
index 67c4d598..a5813caf 100644
--- a/doc/html/fusion/algorithms/transformation/functions/pop_front.html
+++ b/doc/html/fusion/algorithms/transformation/functions/pop_front.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

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

Table 1.69. Parameters

+

Table 1.69. Parameters

@@ -67,7 +67,7 @@
- + Expression Semantics
@@ -86,21 +86,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/push_back.html b/doc/html/fusion/algorithms/transformation/functions/push_back.html
index c4d401ce..c83bd30e 100644
--- a/doc/html/fusion/algorithms/transformation/functions/push_back.html
+++ b/doc/html/fusion/algorithms/transformation/functions/push_back.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

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

Table 1.70. Parameters

+

Table 1.70. Parameters

@@ -77,7 +77,7 @@
- + Expression Semantics
@@ -96,21 +96,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/push_front.html b/doc/html/fusion/algorithms/transformation/functions/push_front.html
index f18d6c3c..a57a3599 100644
--- a/doc/html/fusion/algorithms/transformation/functions/push_front.html
+++ b/doc/html/fusion/algorithms/transformation/functions/push_front.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

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

Table 1.71. Parameters

+

Table 1.71. Parameters

@@ -77,7 +77,7 @@
- + Expression Semantics
@@ -97,21 +97,21 @@ seq.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/push_front.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/remove.html b/doc/html/fusion/algorithms/transformation/functions/remove.html
index e078fb58..f668b3f5 100644
--- a/doc/html/fusion/algorithms/transformation/functions/remove.html
+++ b/doc/html/fusion/algorithms/transformation/functions/remove.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.58. Parameters

+

Table 1.58. Parameters

@@ -77,7 +77,7 @@
- + Expression Semantics
@@ -96,21 +96,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/remove_if.html b/doc/html/fusion/algorithms/transformation/functions/remove_if.html
index bc429741..0375b58a 100644
--- a/doc/html/fusion/algorithms/transformation/functions/remove_if.html
+++ b/doc/html/fusion/algorithms/transformation/functions/remove_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.59. Parameters

+

Table 1.59. Parameters

@@ -77,7 +77,7 @@
- + Expression Semantics
@@ -96,21 +96,21 @@ Pred evaluates to boost::mpl::true_. Equivalent to filter<boost::mpl::not_<Pred> >(seq).

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/remove_if.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/replace.html b/doc/html/fusion/algorithms/transformation/functions/replace.html
index 332098ad..24aeee6f 100644
--- a/doc/html/fusion/algorithms/transformation/functions/replace.html
+++ b/doc/html/fusion/algorithms/transformation/functions/replace.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.56. Parameters

+

Table 1.56. Parameters

@@ -89,7 +89,7 @@
- + Expression Semantics
@@ -108,21 +108,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/replace_if.html b/doc/html/fusion/algorithms/transformation/functions/replace_if.html
index d8a360a7..2a52f9b2 100644
--- a/doc/html/fusion/algorithms/transformation/functions/replace_if.html
+++ b/doc/html/fusion/algorithms/transformation/functions/replace_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.57. Parameters

+

Table 1.57. Parameters

@@ -88,7 +88,7 @@
- + Expression Semantics
@@ -108,21 +108,21 @@ evaluates to true.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/replace_if.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/reverse.html b/doc/html/fusion/algorithms/transformation/functions/reverse.html
index b1e553a7..f285c9e6 100644
--- a/doc/html/fusion/algorithms/transformation/functions/reverse.html
+++ b/doc/html/fusion/algorithms/transformation/functions/reverse.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

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

Table 1.60. Parameters

+

Table 1.60. Parameters

@@ -67,7 +67,7 @@
- + Expression Semantics
@@ -85,21 +85,21 @@ in reverse order.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/reverse.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/transform.html b/doc/html/fusion/algorithms/transformation/functions/transform.html
index 13551a00..83910ee4 100644
--- a/doc/html/fusion/algorithms/transformation/functions/transform.html
+++ b/doc/html/fusion/algorithms/transformation/functions/transform.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -39,7 +39,7 @@ to each element of seq.

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

Table 1.54. Parameters

+

Table 1.54. Parameters

@@ -89,7 +89,7 @@
- + Expression Semantics
@@ -107,7 +107,7 @@ within seq.

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

Table 1.55. Parameters

+

Table 1.55. Parameters

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

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/transform.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/zip.html b/doc/html/fusion/algorithms/transformation/functions/zip.html
index 8a7d1d9c..0f373853 100644
--- a/doc/html/fusion/algorithms/transformation/functions/zip.html
+++ b/doc/html/fusion/algorithms/transformation/functions/zip.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.67. Parameters

+

Table 1.67. Parameters

@@ -73,7 +73,7 @@
- + Expression Semantics
@@ -93,21 +93,21 @@ ('a', 'b', 'c') would return ((1, 'a'),(2, 'b'),(3, 'c'))

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/zip.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/clear.html b/doc/html/fusion/algorithms/transformation/metafunctions/clear.html
index a34b7a24..a7dbb2f7 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/clear.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/clear.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ type.

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

Table 1.80. Parameters

+

Table 1.80. Parameters

@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -84,14 +84,14 @@ Semantics: Returns an empty sequence.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/erase.html b/doc/html/fusion/algorithms/transformation/metafunctions/erase.html
index 7e658f71..3cb8bf74 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/erase.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/erase.html
@@ -30,11 +30,11 @@
             and range delimiting iterator types.
           

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

Table 1.81. Parameters

+

Table 1.81. Parameters

@@ -92,7 +92,7 @@
- + Expression Semantics
@@ -122,14 +122,14 @@ and It2 removed.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html b/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html
index 50412b72..f98e44c1 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.82. Parameters

+

Table 1.82. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -98,14 +98,14 @@ except those with key Key.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/filter.html b/doc/html/fusion/algorithms/transformation/metafunctions/filter.html
index 31fecf30..f4436b50 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/filter.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/filter.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.72. Parameter

+

Table 1.72. Parameter

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -99,14 +99,14 @@ to result_of::filter_if<Sequence, boost::is_same<mpl::_, T> >::type.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html
index a9cbcf1b..dc1d5710 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ and unary MPL Lambda Expression predicate type.

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

Table 1.73. Parameter

+

Table 1.73. Parameter

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -99,14 +99,14 @@ to boost::mpl::true_.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/insert.html b/doc/html/fusion/algorithms/transformation/metafunctions/insert.html
index 91aabb36..e76f9f34 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/insert.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/insert.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.83. Parameters

+

Table 1.83. Parameters

@@ -90,7 +90,7 @@
- + Expression Semantics
@@ -109,14 +109,14 @@ in Sequence.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html b/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html
index bdfa4391..b10a611e 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.84. Parameters

+

Table 1.84. Parameters

@@ -93,7 +93,7 @@
- + Expression Semantics
@@ -112,14 +112,14 @@ into Sequence.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/join.html b/doc/html/fusion/algorithms/transformation/metafunctions/join.html
index 6585a9c6..ff9bc0d0 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/join.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/join.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

- + Synopsis
@@ -47,7 +47,7 @@
 };
 
- + Expression Semantics
@@ -66,14 +66,14 @@ The order of the elements in the 2 sequences is preserved.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html b/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html
index 9f0a017c..1c1bdec3 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ type.

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

Table 1.85. Parameters

+

Table 1.85. Parameters

@@ -71,7 +71,7 @@
- + Expression Semantics
@@ -89,14 +89,14 @@ except the last element.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html b/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html
index 2e5be632..a9e9a286 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ type.

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

Table 1.86. Parameters

+

Table 1.86. Parameters

@@ -71,7 +71,7 @@
- + Expression Semantics
@@ -89,14 +89,14 @@ except the first element.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html b/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html
index cb6198ae..07d78c47 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.87. Parameters

+

Table 1.87. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -99,14 +99,14 @@ added to the end.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html b/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html
index 1d8094a2..a3a44042 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.88. Parameters

+

Table 1.88. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -99,14 +99,14 @@ added to the beginning.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/remove.html b/doc/html/fusion/algorithms/transformation/metafunctions/remove.html
index e01b1e98..b220b665 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/remove.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/remove.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.77. Parameters

+

Table 1.77. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -99,14 +99,14 @@ to result_of::replace_if<Sequence, boost::is_same<mpl::_, T> >::type.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html
index ff5e1a3e..ffa8cf98 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ and unary MPL Lambda Expression predicate types.

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

Table 1.78. Parameters

+

Table 1.78. Parameters

@@ -82,7 +82,7 @@
- + Expression Semantics
@@ -101,14 +101,14 @@ to boost::mpl::false_.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/replace.html b/doc/html/fusion/algorithms/transformation/metafunctions/replace.html
index a844c62d..b4e07b3f 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/replace.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/replace.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.75. Parameters

+

Table 1.75. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -97,14 +97,14 @@ replace.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html
index 59401b0a..4dfddbc7 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Synopsis
@@ -50,7 +50,7 @@
 };
 
-

Table 1.76. Parameters

+

Table 1.76. Parameters

@@ -91,7 +91,7 @@
- + Expression Semantics
@@ -108,14 +108,14 @@ replace_if.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html b/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html
index 55f08032..3b8a759b 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ type.

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

Table 1.79. Parameters

+

Table 1.79. Parameters

@@ -71,7 +71,7 @@
- + Expression Semantics
@@ -88,14 +88,14 @@ elements in the reverse order to Sequence.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/transform.html b/doc/html/fusion/algorithms/transformation/metafunctions/transform.html
index ef21b594..2e4907b6 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/transform.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/transform.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -36,7 +36,7 @@ Function Object types.

- + Synopsis
@@ -50,7 +50,7 @@
 };
 
-

Table 1.74. Parameters

+

Table 1.74. Parameters

@@ -84,7 +84,7 @@
- + Expression Semantics
@@ -101,14 +101,14 @@ F::apply<E>::type for each element type E in Sequence.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/zip.html b/doc/html/fusion/algorithms/transformation/metafunctions/zip.html
index f55cedec..69415c0a 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/zip.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/zip.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Synopsis
@@ -50,7 +50,7 @@
 };
 
- + Expression Semantics
@@ -69,14 +69,14 @@ return ((1, 'a'),(2, 'b'),(3, 'c'))

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/extension.html b/doc/html/fusion/extension.html
index b796842e..39fd4553 100644
--- a/doc/html/fusion/extension.html
+++ b/doc/html/fusion/extension.html
@@ -48,7 +48,7 @@
       
 
 

- + Our example

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

- + Enabling Tag Dispatching

@@ -121,7 +121,7 @@ #include <boost/fusion/sequence/adapted/mpl/tag_of.hpp>

- + Designing a suitable iterator

@@ -184,7 +184,7 @@ clearer as we add features to our implementation.

- + A first couple of instructive features

@@ -327,7 +327,7 @@

- + Implementing the remaining iterator functionality

@@ -382,7 +382,7 @@ are provided in the example code.

- + Implementing the intrinsic functions of the sequence

@@ -441,7 +441,7 @@ value_at_impl and at_impl.

- + Enabling our type as an associative container

@@ -507,7 +507,7 @@ of is_associative_impl.

- + Summary

diff --git a/doc/html/fusion/notes.html b/doc/html/fusion/notes.html index 804c52ab..1dd43233 100644 --- a/doc/html/fusion/notes.html +++ b/doc/html/fusion/notes.html @@ -26,7 +26,7 @@

- + Recursive Inlined Functions

@@ -39,7 +39,7 @@ compiler limit of course). Compile time complexity remains linear.

- + Overloaded Functions

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

- + Tag Dispatching

@@ -101,7 +101,7 @@

- + Extensibility

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

- + Element Conversion

@@ -158,7 +158,7 @@

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

@@ -191,7 +191,7 @@
 list<void (*)(int)>
 

- + boost::ref

@@ -234,7 +234,7 @@



-

[14] +

[14] 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 diff --git a/doc/html/fusion/sequences/adapted.html b/doc/html/fusion/sequences/adapted.html index 1f708bcf..c0396b69 100644 --- a/doc/html/fusion/sequences/adapted.html +++ b/doc/html/fusion/sequences/adapted.html @@ -29,6 +29,8 @@

std::pair
mpl sequence
boost::array
+
boost::tuple
+
boost::variant

Fusion provides a couple of adapters for other sequences such as std::pair, diff --git a/doc/html/fusion/sequences/adapted/boost__array.html b/doc/html/fusion/sequences/adapted/boost__array.html index 954bc133..b3949d49 100644 --- a/doc/html/fusion/sequences/adapted/boost__array.html +++ b/doc/html/fusion/sequences/adapted/boost__array.html @@ -7,7 +7,7 @@ - + @@ -20,7 +20,7 @@


-PrevUpHomeNext +PrevUpHomeNext

@@ -73,7 +73,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/fusion/sequences/conversion.html b/doc/html/fusion/sequences/conversion.html index 2eb4159e..d4b50b10 100644 --- a/doc/html/fusion/sequences/conversion.html +++ b/doc/html/fusion/sequences/conversion.html @@ -34,7 +34,7 @@ types using one of these conversion functions.

- + Header

diff --git a/doc/html/fusion/sequences/conversion/functions/as_list.html b/doc/html/fusion/sequences/conversion/functions/as_list.html
index d8f52649..d621e09f 100644
--- a/doc/html/fusion/sequences/conversion/functions/as_list.html
+++ b/doc/html/fusion/sequences/conversion/functions/as_list.html
@@ -26,14 +26,14 @@
 
 
- + Description

Convert a fusion sequence to a list.

- + Synopsis
@@ -46,7 +46,7 @@
 as_list(Sequence const& seq);
 
- + Parameters
@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -83,14 +83,14 @@ seq, to a list.

- + Header
 #include <boost/fusion/sequence/conversion/as_list.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/conversion/functions/as_map.html b/doc/html/fusion/sequences/conversion/functions/as_map.html
index 113bee07..df2cf6da 100644
--- a/doc/html/fusion/sequences/conversion/functions/as_map.html
+++ b/doc/html/fusion/sequences/conversion/functions/as_map.html
@@ -26,14 +26,14 @@
 
 
- + Description

Convert a fusion sequence to a map.

- + Synopsis
@@ -46,7 +46,7 @@
 as_map(Sequence const& seq);
 
- + Parameters
@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -88,14 +88,14 @@ There may be no duplicate fusion::pair key types.

- + Header
 #include <boost/fusion/sequence/conversion/as_map.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/conversion/functions/as_set.html b/doc/html/fusion/sequences/conversion/functions/as_set.html
index d1fdcc77..71035a5a 100644
--- a/doc/html/fusion/sequences/conversion/functions/as_set.html
+++ b/doc/html/fusion/sequences/conversion/functions/as_set.html
@@ -26,14 +26,14 @@
 
 
- + Description

Convert a fusion sequence to a set.

- + Synopsis
@@ -46,7 +46,7 @@
 as_set(Sequence const& seq);
 
- + Parameters
@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -87,14 +87,14 @@ key types.

- + Header
 #include <boost/fusion/sequence/conversion/as_set.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/conversion/functions/as_vector.html b/doc/html/fusion/sequences/conversion/functions/as_vector.html
index b7dfd932..0086205f 100644
--- a/doc/html/fusion/sequences/conversion/functions/as_vector.html
+++ b/doc/html/fusion/sequences/conversion/functions/as_vector.html
@@ -26,14 +26,14 @@
 
 
- + Description

Convert a fusion sequence to a vector.

- + Synopsis
@@ -46,7 +46,7 @@
 as_vector(Sequence const& seq);
 
- + Parameters
@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -83,14 +83,14 @@ seq, to a vector.

- + Header
 #include <boost/fusion/sequence/conversion/as_vector.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_list.html b/doc/html/fusion/sequences/conversion/metafunctions/as_list.html
index c95f5904..2a0705d6 100644
--- a/doc/html/fusion/sequences/conversion/metafunctions/as_list.html
+++ b/doc/html/fusion/sequences/conversion/metafunctions/as_list.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of as_list.

- + Synopsis
@@ -41,7 +41,7 @@
 struct as_list;
 
- + Parameters
@@ -65,7 +65,7 @@
- + Expression Semantics
@@ -81,14 +81,14 @@ Sequence, to a list.

- + Header
 #include <boost/fusion/sequence/conversion/as_list.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_map.html b/doc/html/fusion/sequences/conversion/metafunctions/as_map.html
index 738bac8c..d003a331 100644
--- a/doc/html/fusion/sequences/conversion/metafunctions/as_map.html
+++ b/doc/html/fusion/sequences/conversion/metafunctions/as_map.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of as_map.

- + Synopsis
@@ -41,7 +41,7 @@
 struct as_map;
 
- + Parameters
@@ -65,7 +65,7 @@
- + Expression Semantics
@@ -86,14 +86,14 @@ There may be no duplicate fusion::pair key types.

- + Header
 #include <boost/fusion/sequence/conversion/as_map.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_set.html b/doc/html/fusion/sequences/conversion/metafunctions/as_set.html
index c21a9ccc..d6404857 100644
--- a/doc/html/fusion/sequences/conversion/metafunctions/as_set.html
+++ b/doc/html/fusion/sequences/conversion/metafunctions/as_set.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of as_set.

- + Synopsis
@@ -41,7 +41,7 @@
 struct as_set;
 
- + Parameters
@@ -65,7 +65,7 @@
- + Expression Semantics
@@ -85,14 +85,14 @@ key types.

- + Header
 #include <boost/fusion/sequence/conversion/as_set.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html b/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html
index 3ac48006..6986569a 100644
--- a/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html
+++ b/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of as_vector.

- + Synopsis
@@ -41,7 +41,7 @@
 struct as_vector;
 
- + Parameters
@@ -65,7 +65,7 @@
- + Expression Semantics
@@ -81,14 +81,14 @@ Sequence, to a vector.

- + Header
 #include <boost/fusion/sequence/conversion/as_vector.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/generation.html b/doc/html/fusion/sequences/generation.html
index a2319229..50802198 100644
--- a/doc/html/fusion/sequences/generation.html
+++ b/doc/html/fusion/sequences/generation.html
@@ -33,7 +33,7 @@
         These are the functions that you can use to generate various forms of Containers from elemental values.
       

- + Header

diff --git a/doc/html/fusion/sequences/generation/functions/list_tie.html b/doc/html/fusion/sequences/generation/functions/list_tie.html
index ad3e85a7..2bca6053 100644
--- a/doc/html/fusion/sequences/generation/functions/list_tie.html
+++ b/doc/html/fusion/sequences/generation/functions/list_tie.html
@@ -26,14 +26,14 @@
 
 
- + Description

Constructs a tie using a list sequence.

- + Synopsis
@@ -53,7 +53,7 @@
 #define FUSION_MAX_LIST_SIZE 20
 
- + Parameters
@@ -78,7 +78,7 @@
- + Expression Semantics
@@ -93,14 +93,14 @@ Semantics: Create a list of references from x0, x1,... xN.

- + Header
 #include <boost/fusion/sequence/generation/list_tie.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/generation/functions/make_cons.html b/doc/html/fusion/sequences/generation/functions/make_cons.html
index 542abaeb..8edc62d3 100644
--- a/doc/html/fusion/sequences/generation/functions/make_cons.html
+++ b/doc/html/fusion/sequences/generation/functions/make_cons.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -35,7 +35,7 @@ (tail).

- + Synopsis
@@ -48,7 +48,7 @@
 make_cons(Car const& car, Cdr const& cdr);
 
- + Parameters
@@ -82,7 +82,7 @@
- + Expression Semantics
@@ -98,21 +98,21 @@ (tail).

- + Header
 #include <boost/fusion/sequence/generation/make_cons.hpp>
 
- + Example
 make_cons('x', make_cons(123))
 
- + See also
diff --git a/doc/html/fusion/sequences/generation/functions/make_list.html b/doc/html/fusion/sequences/generation/functions/make_list.html index 697ddf6a..4b2cf54c 100644 --- a/doc/html/fusion/sequences/generation/functions/make_list.html +++ b/doc/html/fusion/sequences/generation/functions/make_list.html @@ -26,14 +26,14 @@
- + Description

Create a list from one or more values.

- + Synopsis
@@ -53,7 +53,7 @@
 #define FUSION_MAX_LIST_SIZE 20
 
- + Parameters
@@ -78,7 +78,7 @@
- + Expression Semantics
@@ -92,21 +92,21 @@ Semantics: Create a list from x0, x1,... xN.

- + Header
 #include <boost/fusion/sequence/generation/make_list.hpp>
 
- + Example
 make_list(123, "hello", 12.5)
 
- + See also
diff --git a/doc/html/fusion/sequences/generation/functions/make_map.html b/doc/html/fusion/sequences/generation/functions/make_map.html index 91d06d38..737de935 100644 --- a/doc/html/fusion/sequences/generation/functions/make_map.html +++ b/doc/html/fusion/sequences/generation/functions/make_map.html @@ -26,7 +26,7 @@
- + Description

@@ -34,7 +34,7 @@ pairs.

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

The variadic function accepts 0 to FUSION_MAX_VECTOR_SIZE - [10] + [10] elements, where FUSION_MAX_VECTOR_SIZE is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE @@ -57,7 +57,7 @@ #define FUSION_MAX_VECTOR_SIZE 20

- + Parameters
@@ -91,7 +91,7 @@
- + Expression Semantics
@@ -110,14 +110,14 @@ key types.

- + Header
 #include <boost/fusion/sequence/generation/make_map.hpp>
 
- + Example
@@ -126,7 +126,7 @@
   , make_pair<double>("Men"))
 
- + See also
@@ -136,7 +136,7 @@



-

[10] +

[10] map is implemented in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

diff --git a/doc/html/fusion/sequences/generation/functions/make_set.html b/doc/html/fusion/sequences/generation/functions/make_set.html index 03a48f45..4e56b27b 100644 --- a/doc/html/fusion/sequences/generation/functions/make_set.html +++ b/doc/html/fusion/sequences/generation/functions/make_set.html @@ -26,14 +26,14 @@
- + Description

Create a set from one or more values.

- + Synopsis
@@ -44,7 +44,7 @@
 

The variadic function accepts 0 to FUSION_MAX_VECTOR_SIZE - [9] + [9] elements, where FUSION_MAX_VECTOR_SIZE is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE @@ -54,7 +54,7 @@ #define FUSION_MAX_VECTOR_SIZE 20

- + Parameters
@@ -79,7 +79,7 @@
- + Expression Semantics
@@ -97,21 +97,21 @@ key types.

- + Header
 #include <boost/fusion/sequence/generation/make_set.hpp>
 
- + Example
 make_set(123, "hello", 12.5)
 
- + See also
@@ -120,7 +120,7 @@



-

[9] +

[9] set is implemented in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

diff --git a/doc/html/fusion/sequences/generation/functions/make_vector.html b/doc/html/fusion/sequences/generation/functions/make_vector.html index d0f59988..8bb6d26a 100644 --- a/doc/html/fusion/sequences/generation/functions/make_vector.html +++ b/doc/html/fusion/sequences/generation/functions/make_vector.html @@ -26,14 +26,14 @@
- + Description

Create a vector from one or more values.

- + Synopsis
@@ -53,7 +53,7 @@
 #define FUSION_MAX_VECTOR_SIZE 20
 
- + Parameters
@@ -78,7 +78,7 @@
- + Expression Semantics
@@ -92,21 +92,21 @@ Semantics: Create a vector from x0, x1,... xN.

- + Header
 #include <boost/fusion/sequence/generation/make_vector.hpp>
 
- + Example
 make_vector(123, "hello", 12.5)
 
- + See also
diff --git a/doc/html/fusion/sequences/generation/functions/tiers.html b/doc/html/fusion/sequences/generation/functions/tiers.html index 03cfb732..a697731b 100644 --- a/doc/html/fusion/sequences/generation/functions/tiers.html +++ b/doc/html/fusion/sequences/generation/functions/tiers.html @@ -48,7 +48,7 @@ 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)) - [11] + [11] .

@@ -66,7 +66,7 @@ when calling functions which return sequences.

- + Ignore

@@ -81,7 +81,7 @@



-

[11] +

[11] see Boost.Ref for details about ref

diff --git a/doc/html/fusion/sequences/generation/functions/vector_tie.html b/doc/html/fusion/sequences/generation/functions/vector_tie.html index 2f325a01..43b257eb 100644 --- a/doc/html/fusion/sequences/generation/functions/vector_tie.html +++ b/doc/html/fusion/sequences/generation/functions/vector_tie.html @@ -26,14 +26,14 @@
- + Description

Constructs a tie using a vector sequence.

- + Synopsis
@@ -53,7 +53,7 @@
 #define FUSION_MAX_VECTOR_SIZE 20
 
- + Parameters
@@ -78,7 +78,7 @@
- + Expression Semantics
@@ -93,14 +93,14 @@ Semantics: Create a vector of references from x0, x1,... xN.

- + Header
 #include <boost/fusion/sequence/generation/vector_tie.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/generation/metafunctions/list_tie.html b/doc/html/fusion/sequences/generation/metafunctions/list_tie.html
index 734abe82..bc416d46 100644
--- a/doc/html/fusion/sequences/generation/metafunctions/list_tie.html
+++ b/doc/html/fusion/sequences/generation/metafunctions/list_tie.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of list_tie.

- + Synopsis
@@ -52,7 +52,7 @@
 #define FUSION_MAX_LIST_SIZE 20
 
- + Parameters
@@ -75,7 +75,7 @@
- + Expression Semantics
@@ -90,14 +90,14 @@ Semantics: Create a list of references from T0, T1,... TN.

- + Header
 #include <boost/fusion/sequence/generation/list_tie.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_cons.html b/doc/html/fusion/sequences/generation/metafunctions/make_cons.html
index b2d791a6..59a1f54f 100644
--- a/doc/html/fusion/sequences/generation/metafunctions/make_cons.html
+++ b/doc/html/fusion/sequences/generation/metafunctions/make_cons.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of make_cons.

- + Synopsis
@@ -41,7 +41,7 @@
 struct make_cons;
 
- + Parameters
@@ -73,7 +73,7 @@
- + Expression Semantics
@@ -91,14 +91,14 @@ (tail).

- + Header
 #include <boost/fusion/sequence/generation/make_cons.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_list.html b/doc/html/fusion/sequences/generation/metafunctions/make_list.html
index e9500622..0c74f039 100644
--- a/doc/html/fusion/sequences/generation/metafunctions/make_list.html
+++ b/doc/html/fusion/sequences/generation/metafunctions/make_list.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of make_list.

- + Synopsis
@@ -52,7 +52,7 @@
 #define FUSION_MAX_LIST_SIZE 20
 
- + Parameters
@@ -75,7 +75,7 @@
- + Expression Semantics
@@ -91,14 +91,14 @@ Semantics: Create a list from T0, T1,... TN.

- + Header
 #include <boost/fusion/sequence/generation/make_list.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_map.html b/doc/html/fusion/sequences/generation/metafunctions/make_map.html
index cc53081e..722dab78 100644
--- a/doc/html/fusion/sequences/generation/metafunctions/make_map.html
+++ b/doc/html/fusion/sequences/generation/metafunctions/make_map.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of make_map.

- + Synopsis
@@ -45,7 +45,7 @@
 

The variadic function accepts 0 to FUSION_MAX_VECTOR_SIZE - [13] + [13] elements, where FUSION_MAX_VECTOR_SIZE is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE @@ -55,7 +55,7 @@ #define FUSION_MAX_VECTOR_SIZE 20

- + Parameters
@@ -87,7 +87,7 @@
- + Expression Semantics
@@ -107,21 +107,21 @@ key types.

- + Header
 #include <boost/fusion/sequence/generation/make_map.hpp>
 
- + Example
 result_of::make_map<int, double, char, double>::type
 
- + See also
@@ -130,7 +130,7 @@



-

[13] +

[13] map is implemented in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_set.html b/doc/html/fusion/sequences/generation/metafunctions/make_set.html index 47256e23..cfb780e0 100644 --- a/doc/html/fusion/sequences/generation/metafunctions/make_set.html +++ b/doc/html/fusion/sequences/generation/metafunctions/make_set.html @@ -26,14 +26,14 @@
- + Description

Returns the result type of make_set.

- + Synopsis
@@ -43,7 +43,7 @@
 

The variadic function accepts 0 to FUSION_MAX_VECTOR_SIZE - [12] + [12] elements, where FUSION_MAX_VECTOR_SIZE is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE @@ -53,7 +53,7 @@ #define FUSION_MAX_VECTOR_SIZE 20

- + Parameters
@@ -76,7 +76,7 @@
- + Expression Semantics
@@ -96,14 +96,14 @@ key types.

- + Header
 #include <boost/fusion/sequence/generation/make_set.hpp>
 
- + Example
@@ -111,7 +111,7 @@
 


-

[12] +

[12] set is implemented in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_vector.html b/doc/html/fusion/sequences/generation/metafunctions/make_vector.html index 74aed676..0164126c 100644 --- a/doc/html/fusion/sequences/generation/metafunctions/make_vector.html +++ b/doc/html/fusion/sequences/generation/metafunctions/make_vector.html @@ -26,14 +26,14 @@
- + Description

Returns the result type of make_vector.

- + Synopsis
@@ -52,7 +52,7 @@
 #define FUSION_MAX_VECTOR_SIZE 20
 
- + Parameters
@@ -75,7 +75,7 @@
- + Expression Semantics
@@ -91,14 +91,14 @@ Semantics: Create a vector from T0, T1,... TN.

- + Header
 #include <boost/fusion/sequence/generation/make_list.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html b/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html
index be5b92b0..29bdda74 100644
--- a/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html
+++ b/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of vector_tie.

- + Synopsis
@@ -52,7 +52,7 @@
 #define FUSION_MAX_VECTOR_SIZE 20
 
- + Parameters
@@ -75,7 +75,7 @@
- + Expression Semantics
@@ -90,14 +90,14 @@ Semantics: Create a vector of references from T0, T1,... TN.

- + Header
 #include <boost/fusion/sequence/generation/vector_tie.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics.html b/doc/html/fusion/sequences/intrinsics.html
index 9efe2116..b4a9ecd5 100644
--- a/doc/html/fusion/sequences/intrinsics.html
+++ b/doc/html/fusion/sequences/intrinsics.html
@@ -6,7 +6,7 @@
 
 
 
-
+
 
 
 
@@ -20,7 +20,7 @@
 
 
-PrevUpHomeNext +PrevUpHomeNext

@@ -36,11 +36,11 @@ Intrinsic functions, unlike Algorithms, are not generic across the full Sequence repertoire. They need to be implemented for each Fusion Sequence - [5] + [5] .

- + Header

@@ -48,7 +48,7 @@
 


-

[5] +

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

@@ -60,7 +60,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/fusion/sequences/intrinsics/functions/at.html b/doc/html/fusion/sequences/intrinsics/functions/at.html index 7a15383c..7a05ec4e 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/at.html +++ b/doc/html/fusion/sequences/intrinsics/functions/at.html @@ -26,14 +26,14 @@
- + Description

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

- + Synopsis
@@ -46,7 +46,7 @@
 at(Sequence const& seq);
 
- + Parameters
@@ -81,7 +81,7 @@
- + Expression Semantics
@@ -107,14 +107,14 @@ deref(advance<N>(begin(s)))
- + Header
 #include <boost/fusion/sequence/intrinsic/at.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/at_c.html b/doc/html/fusion/sequences/intrinsics/functions/at_c.html
index 5bf22701..292901ea 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/at_c.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/at_c.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

- + Synopsis
@@ -46,7 +46,7 @@
 at_c(Sequence const& seq);
 
- + Parameters
@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -106,14 +106,14 @@ deref(advance<N>(begin(s)))
- + Header
 #include <boost/fusion/sequence/intrinsic/at_c.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/at_key.html b/doc/html/fusion/sequences/intrinsics/functions/at_key.html
index 434e48da..5ccd45e8 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/at_key.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/at_key.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the element associated with a Key from the sequence.

- + Synopsis
@@ -46,7 +46,7 @@
 at_key(Sequence const& seq);
 
- + Parameters
@@ -79,7 +79,7 @@
- + Expression Semantics
@@ -102,14 +102,14 @@ with Key.

- + Header
 #include <boost/fusion/sequence/intrinsic/at_key.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/back.html b/doc/html/fusion/sequences/intrinsics/functions/back.html
index 44ade5ae..f96f9717 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/back.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/back.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the last element in the sequence.

- + Synopsis
@@ -46,7 +46,7 @@
 back(Sequence const& seq);
 
- + Parameters
@@ -71,7 +71,7 @@
- + Expression Semantics
@@ -94,14 +94,14 @@ in the sequence.

- + Header
 #include <boost/fusion/sequence/intrinsic/back.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/begin.html b/doc/html/fusion/sequences/intrinsics/functions/begin.html
index 86e65b6f..2bb20519 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/begin.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/begin.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

- + Synopsis
@@ -46,7 +46,7 @@
 begin(Sequence const& seq);
 
- + Parameters
@@ -72,7 +72,7 @@
- + Expression Semantics
@@ -102,14 +102,14 @@ to the first element in the sequence.

- + Header
 #include <boost/fusion/sequence/intrinsic/begin.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/empty.html b/doc/html/fusion/sequences/intrinsics/functions/empty.html
index f9b2fce5..b629e544 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/empty.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/empty.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Synopsis
@@ -44,7 +44,7 @@
 empty(Sequence const& seq);
 
- + Parameters
@@ -69,7 +69,7 @@
- + Expression Semantics
@@ -84,14 +84,14 @@ to false.

- + Header
 #include <boost/fusion/sequence/intrinsic/empty.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/end.html b/doc/html/fusion/sequences/intrinsics/functions/end.html
index df9254d1..d710a8fa 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/end.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/end.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

- + Synopsis
@@ -46,7 +46,7 @@
 end(Sequence const& seq);
 
- + Parameters
@@ -72,7 +72,7 @@
- + Expression Semantics
@@ -102,14 +102,14 @@ to one element past the end of the sequence.

- + Header
 #include <boost/fusion/sequence/intrinsic/end.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/front.html b/doc/html/fusion/sequences/intrinsics/functions/front.html
index 21e72b43..fe90a3c2 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/front.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/front.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the first element in the sequence.

- + Synopsis
@@ -46,7 +46,7 @@
 front(Sequence const& seq);
 
- + Parameters
@@ -71,7 +71,7 @@
- + Expression Semantics
@@ -94,14 +94,14 @@ in the sequence.

- + Header
 #include <boost/fusion/sequence/intrinsic/front.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/has_key.html b/doc/html/fusion/sequences/intrinsics/functions/has_key.html
index 8618049c..ef9e6e5d 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/has_key.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/has_key.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Synopsis
@@ -45,7 +45,7 @@
 has_key(Sequence const& seq);
 
- + Parameters
@@ -78,7 +78,7 @@
- + Expression Semantics
@@ -93,14 +93,14 @@ associated with Key, else, evaluates to false.

- + Header
 #include <boost/fusion/sequence/intrinsic/has_key.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/size.html b/doc/html/fusion/sequences/intrinsics/functions/size.html
index 78d859ba..0d3aa3cd 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/size.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/size.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Synopsis
@@ -43,7 +43,7 @@
 size(Sequence const& seq);
 
- + Parameters
@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -83,14 +83,14 @@ in the sequence.

- + Header
 #include <boost/fusion/sequence/intrinsic/size.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/at.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at.html
index 8eb810e1..e9e81e62 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/at.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/at.html
@@ -26,16 +26,16 @@
 
 
- + Description

Returns the result type of at - [6] + [6] .

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

Table 1.25. Parameters

+

Table 1.25. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -95,14 +95,14 @@ using at to access the Nth element of Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/at.hpp>
 
- + Example
@@ -111,7 +111,7 @@
 


-

[6] +

[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 diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html index c3a83154..06ea8688 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html @@ -26,16 +26,16 @@

- + Description

Returns the result type of at_c - [7] + [7] .

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

Table 1.26. Parameters

+

Table 1.26. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -95,14 +95,14 @@ using at_c to access the Mth element of Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/at.hpp>
 
- + Example
@@ -111,7 +111,7 @@
 


-

[7] +

[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 diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html index ae6f1188..d1362302 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html @@ -26,16 +26,16 @@

- + Description

Returns the result type of at_key - [8] + [8] .

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

Table 1.30. Parameters

+

Table 1.30. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -97,14 +97,14 @@ Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/at_key.hpp>
 
- + Example
@@ -113,7 +113,7 @@
 


-

[8] +

[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 diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/back.html b/doc/html/fusion/sequences/intrinsics/metafunctions/back.html index c6bfc356..d25e9514 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/back.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/back.html @@ -26,14 +26,14 @@

- + Description

Returns the result type of back.

- + Synopsis
@@ -44,7 +44,7 @@
 };
 
-

Table 1.23. Parameters

+

Table 1.23. Parameters

@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -83,14 +83,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>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html b/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html
index 28f8e859..81d449c6 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of begin.

- + Synopsis
@@ -44,7 +44,7 @@
 };
 
-

Table 1.19. Parameters

+

Table 1.19. Parameters

@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -84,14 +84,14 @@ to the first element of Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/begin.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html b/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html
index 7a0153fb..723595f2 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of empty.

- + Synopsis
@@ -44,7 +44,7 @@
 };
 
-

Table 1.21. Parameters

+

Table 1.21. Parameters

@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -84,14 +84,14 @@ mpl::false_ otherwise.

- + Header
 #include <boost/fusion/sequence/intrinsic/empty.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/end.html b/doc/html/fusion/sequences/intrinsics/metafunctions/end.html
index 4d039532..57812d7e 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/end.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/end.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of end.

- + Synopsis
@@ -44,7 +44,7 @@
 };
 
-

Table 1.20. Parameters

+

Table 1.20. Parameters

@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -84,14 +84,14 @@ one past the end of Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/end.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/front.html b/doc/html/fusion/sequences/intrinsics/metafunctions/front.html
index 08dd077f..30d55a72 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/front.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/front.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of front.

- + Synopsis
@@ -44,7 +44,7 @@
 };
 
-

Table 1.22. Parameters

+

Table 1.22. Parameters

@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -84,14 +84,14 @@ Equivalent to result_of::deref<result_of::begin<Seq>::type>::type.

- + Header
 #include <boost/fusion/sequence/intrinsic/front.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html
index 9787a40f..454f6550 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of has_key.

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

Table 1.29. Parameters

+

Table 1.29. Parameters

@@ -78,7 +78,7 @@
- + Expression Semantics
@@ -95,14 +95,14 @@ mpl::false_ otherwise.

- + Header
 #include <boost/fusion/sequence/intrinsic/has_key.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/size.html b/doc/html/fusion/sequences/intrinsics/metafunctions/size.html
index 2afdf427..0da16a6e 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/size.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/size.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of size.

- + Synopsis
@@ -44,7 +44,7 @@
 };
 
-

Table 1.24. Parameters

+

Table 1.24. Parameters

@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -83,14 +83,14 @@ in Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/size.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html
index 50b2b525..cb0b07c3 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the actual type at a given index from the Sequence.

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

Table 1.27. Parameters

+

Table 1.27. Parameters

@@ -78,7 +78,7 @@
- + Expression Semantics
@@ -93,14 +93,14 @@ the Nth element of Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/value_at.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html
index dffab3f8..55bc3c41 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the actual type at a given index from the Sequence.

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

Table 1.28. Parameters

+

Table 1.28. Parameters

@@ -78,7 +78,7 @@
- + Expression Semantics
@@ -93,14 +93,14 @@ the Mth element of Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/value_at.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html
index 674ebc7a..8a0c9c61 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the actual element type associated with a Key from the Sequence.

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

Table 1.31. Parameters

+

Table 1.31. Parameters

@@ -78,7 +78,7 @@
- + Expression Semantics
@@ -94,14 +94,14 @@ in Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/value_at_key.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators/comparison.html b/doc/html/fusion/sequences/operators/comparison.html
index 40e55894..c28055ae 100644
--- a/doc/html/fusion/sequences/operators/comparison.html
+++ b/doc/html/fusion/sequences/operators/comparison.html
@@ -48,7 +48,7 @@
           only until the result is clear.
         

- + Header
diff --git a/doc/html/fusion/sequences/operators/comparison/equal.html b/doc/html/fusion/sequences/operators/comparison/equal.html
index fb59fc41..5c57fba7 100644
--- a/doc/html/fusion/sequences/operators/comparison/equal.html
+++ b/doc/html/fusion/sequences/operators/comparison/equal.html
@@ -27,14 +27,14 @@
 
 
- + Description

Compare two sequences for equality.

- + Synopsis
@@ -43,7 +43,7 @@
 operator==(Seq1 const& a, Seq2 const& b);
 
- + Parameters
@@ -67,7 +67,7 @@
- + Expression Semantics
@@ -103,14 +103,14 @@ true.

- + Header
 #include <boost/fusion/sequence/comparison/equal_to.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators/comparison/greater_than.html b/doc/html/fusion/sequences/operators/comparison/greater_than.html
index 8f5d3805..389215db 100644
--- a/doc/html/fusion/sequences/operators/comparison/greater_than.html
+++ b/doc/html/fusion/sequences/operators/comparison/greater_than.html
@@ -34,7 +34,7 @@
             Lexicographically compare two sequences.
           

- + Synopsis
@@ -43,7 +43,7 @@
 operator>(Seq1 const& a, Seq2 const& b);
 
- + Parameters
@@ -67,7 +67,7 @@
- + Expression Semantics
@@ -95,14 +95,14 @@ Semantics: Returns b < a.

- + Header
 #include <boost/fusion/sequence/comparison/less_equal.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html b/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html
index 0ed555ed..06a1feac 100644
--- a/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html
+++ b/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html
@@ -33,7 +33,7 @@
             Lexicographically compare two sequences.
           

- + Synopsis
@@ -42,7 +42,7 @@
 operator>=(Seq1 const& a, Seq2 const& b);
 
- + Parameters
@@ -66,7 +66,7 @@
- + Expression Semantics
@@ -94,14 +94,14 @@ Semantics: Returns !(a < b).

- + Header
 #include <boost/fusion/sequence/comparison/greater_equal.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators/comparison/less_than.html b/doc/html/fusion/sequences/operators/comparison/less_than.html
index 9694a731..67a89b6a 100644
--- a/doc/html/fusion/sequences/operators/comparison/less_than.html
+++ b/doc/html/fusion/sequences/operators/comparison/less_than.html
@@ -34,7 +34,7 @@
             Lexicographically compare two sequences.
           

- + Synopsis
@@ -43,7 +43,7 @@
 operator<(Seq1 const& a, Seq2 const& b);
 
- + Parameters
@@ -67,7 +67,7 @@
- + Expression Semantics
@@ -97,14 +97,14 @@ and b.

- + Header
 #include <boost/fusion/sequence/comparison/less.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators/comparison/less_than_equal.html b/doc/html/fusion/sequences/operators/comparison/less_than_equal.html
index 6ddde327..75689835 100644
--- a/doc/html/fusion/sequences/operators/comparison/less_than_equal.html
+++ b/doc/html/fusion/sequences/operators/comparison/less_than_equal.html
@@ -34,7 +34,7 @@
             Lexicographically compare two sequences.
           

- + Synopsis
@@ -43,7 +43,7 @@
 operator<=(Seq1 const& a, Seq2 const& b);
 
- + Parameters
@@ -67,7 +67,7 @@
- + Expression Semantics
@@ -95,14 +95,14 @@ Semantics: Returns !(b < a).

- + Header
 #include <boost/fusion/sequence/comparison/less_equal.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators/comparison/not_equal.html b/doc/html/fusion/sequences/operators/comparison/not_equal.html
index 8c5be8df..963f8463 100644
--- a/doc/html/fusion/sequences/operators/comparison/not_equal.html
+++ b/doc/html/fusion/sequences/operators/comparison/not_equal.html
@@ -33,7 +33,7 @@
             Compare two sequences for inequality.
           

- + Synopsis
@@ -42,7 +42,7 @@
 operator!=(Seq1 const& a, Seq2 const& b);
 
- + Parameters
@@ -66,7 +66,7 @@
- + Expression Semantics
@@ -97,14 +97,14 @@ Returns !(a == b).

- + Header
 #include <boost/fusion/sequence/comparison/not_equal_to.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators/i_o.html b/doc/html/fusion/sequences/operators/i_o.html
index 521bdfa2..d4cc871c 100644
--- a/doc/html/fusion/sequences/operators/i_o.html
+++ b/doc/html/fusion/sequences/operators/i_o.html
@@ -115,7 +115,7 @@
           representation may not be unambiguously parseable.
         

- + Header
diff --git a/doc/html/fusion/sequences/operators/i_o/in.html b/doc/html/fusion/sequences/operators/i_o/in.html
index b4389522..f8389827 100644
--- a/doc/html/fusion/sequences/operators/i_o/in.html
+++ b/doc/html/fusion/sequences/operators/i_o/in.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ stream.

- + Synopsis
@@ -43,7 +43,7 @@
 operator>>(IStream& is, Sequence& seq);
 
- + Parameters
@@ -73,7 +73,7 @@
- + Expression Semantics
@@ -88,14 +88,14 @@ call is >> e.

- + Header
 #include <boost/fusion/sequence/io/in.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators/i_o/out.html b/doc/html/fusion/sequences/operators/i_o/out.html
index d5ed19c8..ba126f09 100644
--- a/doc/html/fusion/sequences/operators/i_o/out.html
+++ b/doc/html/fusion/sequences/operators/i_o/out.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ stream.

- + Synopsis
@@ -43,7 +43,7 @@
 operator<<(OStream& os, Sequence& seq);
 
- + Parameters
@@ -73,7 +73,7 @@
- + Expression Semantics
@@ -88,14 +88,14 @@ call os << e.

- + Header
 #include <boost/fusion/sequence/io/out.hpp>
 
- + Example
diff --git a/doc/html/fusion/tuples/class_template_tuple.html b/doc/html/fusion/tuples/class_template_tuple.html
index 36db5861..1970eb79 100644
--- a/doc/html/fusion/tuples/class_template_tuple.html
+++ b/doc/html/fusion/tuples/class_template_tuple.html
@@ -48,7 +48,7 @@
         in future releases of fusion.
       

- + Synopsis

@@ -60,7 +60,7 @@
 class tuple;
 

- + Header

diff --git a/doc/html/fusion/tuples/class_template_tuple/construction.html b/doc/html/fusion/tuples/class_template_tuple/construction.html
index c87738f4..d1a85f06 100644
--- a/doc/html/fusion/tuples/class_template_tuple/construction.html
+++ b/doc/html/fusion/tuples/class_template_tuple/construction.html
@@ -27,7 +27,7 @@
 
 
- + Description

@@ -38,7 +38,7 @@ in this section.

- + Specification
diff --git a/doc/html/fusion/tuples/class_template_tuple/element_access.html b/doc/html/fusion/tuples/class_template_tuple/element_access.html index 27844ef3..60663fcb 100644 --- a/doc/html/fusion/tuples/class_template_tuple/element_access.html +++ b/doc/html/fusion/tuples/class_template_tuple/element_access.html @@ -31,7 +31,7 @@ access">Element access
- + Description

@@ -40,7 +40,7 @@ function to provide access to it's elements by zero based numeric index.

- + Specification
diff --git a/doc/html/fusion/tuples/class_template_tuple/relational_operators.html b/doc/html/fusion/tuples/class_template_tuple/relational_operators.html
index 1791d31d..38dc69f8 100644
--- a/doc/html/fusion/tuples/class_template_tuple/relational_operators.html
+++ b/doc/html/fusion/tuples/class_template_tuple/relational_operators.html
@@ -30,7 +30,7 @@
         operators">Relational
         operators
- + Description

@@ -38,7 +38,7 @@ Tuple provides the standard boolean relational operators.

- + Specification
diff --git a/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html b/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html index e4e2df4d..ccc32603 100644 --- a/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html +++ b/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html @@ -30,7 +30,7 @@ creation functions">Tuple creation functions
- + Description

@@ -40,7 +40,7 @@ functions are described in this section.

- + Specification
diff --git a/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html b/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html
index d451ffad..777d9633 100644
--- a/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html
+++ b/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html
@@ -31,7 +31,7 @@
         helper classes">Tuple
         helper classes
- + Description

@@ -40,7 +40,7 @@ tuple size, and the element types.

- + Specification
diff --git a/doc/html/fusion/tuples/pairs.html b/doc/html/fusion/tuples/pairs.html
index ca2f0fba..6dc3172d 100644
--- a/doc/html/fusion/tuples/pairs.html
+++ b/doc/html/fusion/tuples/pairs.html
@@ -27,7 +27,7 @@
 
 

- + Description

@@ -36,7 +36,7 @@ as if it were a 2 element tuple.

- + Specification

diff --git a/doc/html/index.html b/doc/html/index.html
index f666cdc3..90c61af8 100644
--- a/doc/html/index.html
+++ b/doc/html/index.html
@@ -57,7 +57,7 @@
 
- +

Last revised: November 20, 2006 at 23:10:22 GMT

Last revised: November 26, 2006 at 22:34:33 GMT


diff --git a/example/performance/measure.hpp b/example/performance/measure.hpp index 9749d1e2..72cd71ba 100644 --- a/example/performance/measure.hpp +++ b/example/performance/measure.hpp @@ -3,6 +3,10 @@ // 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) +#if !defined(LIVE_CODE_TYPE) +# define LIVE_CODE_TYPE int +#endif + #include namespace test @@ -11,7 +15,7 @@ namespace test // code elimination doesn't optimize away anything we're testing. // We'll use it to compute the return code of the executable to make // sure it's needed. - int live_code; + LIVE_CODE_TYPE live_code; // Call objects of the given Accumulator type repeatedly with x as // an argument. diff --git a/example/performance/sequence_efficiency.cpp b/example/performance/sequence_efficiency.cpp index 35cc0111..43e39d88 100644 --- a/example/performance/sequence_efficiency.cpp +++ b/example/performance/sequence_efficiency.cpp @@ -26,6 +26,36 @@ # pragma inline_depth(255) // max inline depth #endif +// About the tests: +// +// The tests below compare various fusion sequences to see how abstraction +// affects prformance. +// +// We have 3 sequence sizes for each fusion sequence we're going to test. +// +// small = 3 elements +// medium = 10 elements +// big = 30 elements +// +// The sequences are initialized with values 0..N-1 from numeric strings +// parsed by boost::lexical_cast to make sure that the compiler is not +// optimizing by replacing the computation with constant results computed +// at compile time. +// +// These sequences will be subjected to our accumulator which calls +// fusion::accumulate: +// +// this->sum += boost::fusion::accumulate(seq, 0, poly_add()); +// +// where poly_add simply sums the current value with the content of +// the sequence element. This accumulator will be called many times +// through the "hammer" test (see measure.hpp). +// +// The tests are compared against a base using a plain_accumulator +// which does a simple addition: +// +// this->sum += x; + namespace { struct poly_add @@ -59,6 +89,23 @@ namespace T sum; }; + + // Plain Accumulator function + template + struct plain_accumulator + { + plain_accumulator() + : sum() + {} + + template + void operator()(X const& x) + { + this->sum += x; + } + + T sum; + }; template void check(T const& seq, char const* info) @@ -68,11 +115,13 @@ namespace } template - void measure(T const& seq, char const* info, long const repeats) + void measure(T const& seq, char const* info, long const repeats, double base) { + double t = test::measure >(seq, repeats); std::cout << info - << test::measure >(seq, repeats) + << t + << " (" << int((t/base)*100) << "%)" << std::endl; } @@ -92,7 +141,6 @@ namespace int main() { using namespace boost::fusion; - std::cout.setf(std::ios::scientific); vector< @@ -138,6 +186,7 @@ int main() boost::timer time; + test::hammer >(0, repeats); test::hammer >(vsmall, repeats); test::hammer >(lsmall, repeats); test::hammer >(vmedium, repeats); @@ -148,6 +197,22 @@ int main() measured = time.elapsed(); } + test::measure >(1, 1); + std::cout + << "base accumulated result: " + << test::live_code + << std::endl; + + double base_time = test::measure >(1, repeats); + std::cout + << "base time: " + << base_time; + + std::cout + << std::endl + << "-------------------------------------------------------------------" + << std::endl; + check(vsmall, "small vector accumulated result: "); check(lsmall, "small list accumulated result: "); check(vmedium, "medium vector accumulated result: "); @@ -155,13 +220,21 @@ int main() check(vbig, "big vector accumulated result: "); check(lbig, "big list accumulated result: "); - measure(vsmall, "small vector time: ", repeats); - measure(lsmall, "small list time: ", repeats); - measure(vmedium, "medium vector time: ", repeats); - measure(lmedium, "medium list time: ", repeats); - measure(vbig, "big vector time: ", repeats); - measure(lbig, "big list time: ", repeats); - + std::cout + << "-------------------------------------------------------------------" + << std::endl; + + measure(vsmall, "small vector time: ", repeats, base_time); + measure(lsmall, "small list time: ", repeats, base_time); + measure(vmedium, "medium vector time: ", repeats, base_time); + measure(lmedium, "medium list time: ", repeats, base_time); + measure(vbig, "big vector time: ", repeats, base_time); + measure(lbig, "big list time: ", repeats, base_time); + + std::cout + << "-------------------------------------------------------------------" + << std::endl; + // Let's see how this looks in assembler test_assembler(vmedium); From 31f5b557667de4b4d4615de208fc5de77a422424 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Thu, 14 Dec 2006 08:41:22 +0000 Subject: [PATCH 062/234] renamed Jamfile.v2 to Jamfile and updated the docs [SVN r36379] --- doc/{Jamfile.v2 => Jamfile} | 0 doc/html/fusion/algorithms.html | 6 +++--- .../concepts/polymorphic_function_object.html | 6 +++--- doc/html/fusion/algorithms/iteration.html | 2 +- .../iteration/functions/accumulate.html | 14 +++++++------- .../algorithms/iteration/functions/fold.html | 14 +++++++------- .../iteration/functions/for_each.html | 14 +++++++------- .../iteration/metafunctions/accumulate.html | 12 ++++++------ .../iteration/metafunctions/fold.html | 12 ++++++------ .../iteration/metafunctions/for_each.html | 12 ++++++------ doc/html/fusion/algorithms/query.html | 2 +- .../fusion/algorithms/query/functions/all.html | 14 +++++++------- .../fusion/algorithms/query/functions/any.html | 14 +++++++------- .../algorithms/query/functions/count.html | 14 +++++++------- .../algorithms/query/functions/count_if.html | 14 +++++++------- .../algorithms/query/functions/find.html | 14 +++++++------- .../algorithms/query/functions/find_if.html | 14 +++++++------- .../algorithms/query/functions/none.html | 14 +++++++------- .../algorithms/query/metafunctions/all.html | 12 ++++++------ .../algorithms/query/metafunctions/any.html | 12 ++++++------ .../algorithms/query/metafunctions/count.html | 12 ++++++------ .../query/metafunctions/count_if.html | 12 ++++++------ .../algorithms/query/metafunctions/find.html | 12 ++++++------ .../query/metafunctions/find_if.html | 12 ++++++------ .../algorithms/query/metafunctions/none.html | 12 ++++++------ doc/html/fusion/algorithms/transformation.html | 2 +- .../transformation/functions/clear.html | 14 +++++++------- .../transformation/functions/erase.html | 14 +++++++------- .../transformation/functions/erase_key.html | 14 +++++++------- .../transformation/functions/filter.html | 14 +++++++------- .../transformation/functions/filter_if.html | 14 +++++++------- .../transformation/functions/insert.html | 14 +++++++------- .../transformation/functions/insert_range.html | 14 +++++++------- .../transformation/functions/join.html | 14 +++++++------- .../transformation/functions/pop_back.html | 14 +++++++------- .../transformation/functions/pop_front.html | 14 +++++++------- .../transformation/functions/push_back.html | 14 +++++++------- .../transformation/functions/push_front.html | 14 +++++++------- .../transformation/functions/remove.html | 14 +++++++------- .../transformation/functions/remove_if.html | 14 +++++++------- .../transformation/functions/replace.html | 14 +++++++------- .../transformation/functions/replace_if.html | 14 +++++++------- .../transformation/functions/reverse.html | 14 +++++++------- .../transformation/functions/transform.html | 18 +++++++++--------- .../transformation/functions/zip.html | 14 +++++++------- .../transformation/metafunctions/clear.html | 12 ++++++------ .../transformation/metafunctions/erase.html | 12 ++++++------ .../metafunctions/erase_key.html | 12 ++++++------ .../transformation/metafunctions/filter.html | 12 ++++++------ .../metafunctions/filter_if.html | 12 ++++++------ .../transformation/metafunctions/insert.html | 12 ++++++------ .../metafunctions/insert_range.html | 12 ++++++------ .../transformation/metafunctions/join.html | 10 +++++----- .../transformation/metafunctions/pop_back.html | 12 ++++++------ .../metafunctions/pop_front.html | 12 ++++++------ .../metafunctions/push_back.html | 12 ++++++------ .../metafunctions/push_front.html | 12 ++++++------ .../transformation/metafunctions/remove.html | 12 ++++++------ .../metafunctions/remove_if.html | 12 ++++++------ .../transformation/metafunctions/replace.html | 12 ++++++------ .../metafunctions/replace_if.html | 12 ++++++------ .../transformation/metafunctions/reverse.html | 12 ++++++------ .../metafunctions/transform.html | 12 ++++++------ .../transformation/metafunctions/zip.html | 10 +++++----- doc/html/fusion/extension.html | 16 ++++++++-------- doc/html/fusion/iterators.html | 2 +- .../concepts/bidirectional_iterator.html | 14 +++++++------- .../iterators/concepts/forward_iterator.html | 12 ++++++------ .../concepts/random_access_iterator.html | 10 +++++----- .../fusion/iterators/functions/advance.html | 12 ++++++------ .../fusion/iterators/functions/advance_c.html | 12 ++++++------ doc/html/fusion/iterators/functions/deref.html | 12 ++++++------ .../fusion/iterators/functions/distance.html | 12 ++++++------ doc/html/fusion/iterators/functions/next.html | 12 ++++++------ doc/html/fusion/iterators/functions/prior.html | 12 ++++++------ .../iterators/metafunctions/advance.html | 12 ++++++------ .../iterators/metafunctions/advance_c.html | 12 ++++++------ .../fusion/iterators/metafunctions/deref.html | 12 ++++++------ .../iterators/metafunctions/distance.html | 12 ++++++------ .../iterators/metafunctions/equal_to.html | 12 ++++++------ .../fusion/iterators/metafunctions/next.html | 12 ++++++------ .../fusion/iterators/metafunctions/prior.html | 12 ++++++------ .../iterators/metafunctions/value_of.html | 12 ++++++------ .../iterators/operators/operator_equality.html | 10 +++++----- .../operators/operator_inequality.html | 10 +++++----- .../operators/operator_unary_star.html | 12 ++++++------ doc/html/fusion/notes.html | 16 ++++++++-------- doc/html/fusion/organization.html | 10 +++++----- doc/html/fusion/preface.html | 10 +++++----- doc/html/fusion/quick_start.html | 16 ++++++++-------- doc/html/fusion/sequences.html | 2 +- doc/html/fusion/sequences/adapted.html | 6 +++--- .../fusion/sequences/adapted/boost__array.html | 8 ++++---- .../fusion/sequences/adapted/mpl_sequence.html | 8 ++++---- .../fusion/sequences/adapted/std__pair.html | 8 ++++---- doc/html/fusion/sequences/concepts.html | 4 ++-- .../concepts/associative_sequence.html | 10 +++++----- .../concepts/bidirectional_sequence.html | 12 ++++++------ .../sequences/concepts/forward_sequence.html | 12 ++++++------ .../concepts/random_access_sequence.html | 12 ++++++------ doc/html/fusion/sequences/containers.html | 2 +- doc/html/fusion/sequences/containers/cons.html | 14 +++++++------- doc/html/fusion/sequences/containers/list.html | 14 +++++++------- doc/html/fusion/sequences/containers/map.html | 14 +++++++------- doc/html/fusion/sequences/containers/set.html | 14 +++++++------- .../fusion/sequences/containers/vector.html | 14 +++++++------- doc/html/fusion/sequences/conversion.html | 2 +- .../conversion/functions/as_list.html | 12 ++++++------ .../sequences/conversion/functions/as_map.html | 12 ++++++------ .../sequences/conversion/functions/as_set.html | 12 ++++++------ .../conversion/functions/as_vector.html | 12 ++++++------ .../conversion/metafunctions/as_list.html | 12 ++++++------ .../conversion/metafunctions/as_map.html | 12 ++++++------ .../conversion/metafunctions/as_set.html | 12 ++++++------ .../conversion/metafunctions/as_vector.html | 12 ++++++------ doc/html/fusion/sequences/generation.html | 2 +- .../generation/functions/list_tie.html | 12 ++++++------ .../generation/functions/make_cons.html | 14 +++++++------- .../generation/functions/make_list.html | 14 +++++++------- .../generation/functions/make_map.html | 18 +++++++++--------- .../generation/functions/make_set.html | 18 +++++++++--------- .../generation/functions/make_vector.html | 14 +++++++------- .../sequences/generation/functions/tiers.html | 6 +++--- .../generation/functions/vector_tie.html | 12 ++++++------ .../generation/metafunctions/list_tie.html | 12 ++++++------ .../generation/metafunctions/make_cons.html | 12 ++++++------ .../generation/metafunctions/make_list.html | 12 ++++++------ .../generation/metafunctions/make_map.html | 18 +++++++++--------- .../generation/metafunctions/make_set.html | 16 ++++++++-------- .../generation/metafunctions/make_vector.html | 12 ++++++------ .../generation/metafunctions/vector_tie.html | 12 ++++++------ doc/html/fusion/sequences/intrinsics.html | 6 +++--- .../sequences/intrinsics/functions/at.html | 12 ++++++------ .../sequences/intrinsics/functions/at_c.html | 12 ++++++------ .../sequences/intrinsics/functions/at_key.html | 12 ++++++------ .../sequences/intrinsics/functions/back.html | 12 ++++++------ .../sequences/intrinsics/functions/begin.html | 12 ++++++------ .../sequences/intrinsics/functions/empty.html | 12 ++++++------ .../sequences/intrinsics/functions/end.html | 12 ++++++------ .../sequences/intrinsics/functions/front.html | 12 ++++++------ .../intrinsics/functions/has_key.html | 12 ++++++------ .../sequences/intrinsics/functions/size.html | 12 ++++++------ .../sequences/intrinsics/metafunctions/at.html | 16 ++++++++-------- .../intrinsics/metafunctions/at_c.html | 16 ++++++++-------- .../intrinsics/metafunctions/at_key.html | 16 ++++++++-------- .../intrinsics/metafunctions/back.html | 12 ++++++------ .../intrinsics/metafunctions/begin.html | 12 ++++++------ .../intrinsics/metafunctions/empty.html | 12 ++++++------ .../intrinsics/metafunctions/end.html | 12 ++++++------ .../intrinsics/metafunctions/front.html | 12 ++++++------ .../intrinsics/metafunctions/has_key.html | 12 ++++++------ .../intrinsics/metafunctions/size.html | 12 ++++++------ .../intrinsics/metafunctions/value_at.html | 12 ++++++------ .../intrinsics/metafunctions/value_at_c.html | 12 ++++++------ .../intrinsics/metafunctions/value_at_key.html | 12 ++++++------ .../fusion/sequences/operators/comparison.html | 2 +- .../sequences/operators/comparison/equal.html | 12 ++++++------ .../operators/comparison/greater_than.html | 10 +++++----- .../comparison/greater_than_equal.html | 10 +++++----- .../operators/comparison/less_than.html | 10 +++++----- .../operators/comparison/less_than_equal.html | 10 +++++----- .../operators/comparison/not_equal.html | 10 +++++----- doc/html/fusion/sequences/operators/i_o.html | 2 +- .../fusion/sequences/operators/i_o/in.html | 12 ++++++------ .../fusion/sequences/operators/i_o/out.html | 12 ++++++------ doc/html/fusion/sequences/views.html | 2 +- .../fusion/sequences/views/filter_view.html | 14 +++++++------- .../fusion/sequences/views/iterator_range.html | 14 +++++++------- .../fusion/sequences/views/joint_view.html | 14 +++++++------- .../fusion/sequences/views/reverse_view.html | 12 ++++++------ .../fusion/sequences/views/single_view.html | 12 ++++++------ .../fusion/sequences/views/transform_view.html | 12 ++++++------ doc/html/fusion/sequences/views/zip_view.html | 14 +++++++------- doc/html/fusion/support/category_of.html | 12 ++++++------ doc/html/fusion/support/is_sequence.html | 12 ++++++------ doc/html/fusion/support/is_view.html | 12 ++++++------ doc/html/fusion/support/pair.html | 12 ++++++------ doc/html/fusion/support/tag_of.html | 12 ++++++------ .../fusion/tuples/class_template_tuple.html | 4 ++-- .../class_template_tuple/construction.html | 4 ++-- .../class_template_tuple/element_access.html | 4 ++-- .../relational_operators.html | 4 ++-- .../tuple_creation_functions.html | 4 ++-- .../tuple_helper_classes.html | 4 ++-- doc/html/fusion/tuples/pairs.html | 4 ++-- doc/html/index.html | 4 ++-- example/extension/{Jamfile.v2 => Jamfile} | 0 example/performance/{Jamfile.v2 => Jamfile} | 0 test/{Jamfile.v2 => Jamfile} | 0 189 files changed, 1052 insertions(+), 1052 deletions(-) rename doc/{Jamfile.v2 => Jamfile} (100%) rename example/extension/{Jamfile.v2 => Jamfile} (100%) rename example/performance/{Jamfile.v2 => Jamfile} (100%) rename test/{Jamfile.v2 => Jamfile} (100%) diff --git a/doc/Jamfile.v2 b/doc/Jamfile similarity index 100% rename from doc/Jamfile.v2 rename to doc/Jamfile diff --git a/doc/html/fusion/algorithms.html b/doc/html/fusion/algorithms.html index 0d735802..c8c01091 100644 --- a/doc/html/fusion/algorithms.html +++ b/doc/html/fusion/algorithms.html @@ -33,7 +33,7 @@
Transformation

- + Lazy Evaluation

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

- + Sequence Extension

@@ -79,7 +79,7 @@ functions to convert back to the original sequence type.

- + Header

diff --git a/doc/html/fusion/algorithms/concepts/polymorphic_function_object.html b/doc/html/fusion/algorithms/concepts/polymorphic_function_object.html
index d3e927c3..b0c485d6 100644
--- a/doc/html/fusion/algorithms/concepts/polymorphic_function_object.html
+++ b/doc/html/fusion/algorithms/concepts/polymorphic_function_object.html
@@ -29,7 +29,7 @@
         Function Object">Polymorphic
         Function Object
- + Description

@@ -61,7 +61,7 @@

- + Refinement of
@@ -69,7 +69,7 @@ MPL Metafunction Class

- + Expression requirements
diff --git a/doc/html/fusion/algorithms/iteration.html b/doc/html/fusion/algorithms/iteration.html index 080d3744..78f158da 100644 --- a/doc/html/fusion/algorithms/iteration.html +++ b/doc/html/fusion/algorithms/iteration.html @@ -35,7 +35,7 @@ a sequence repeatedly applying an operation to its elements.

- + Header

diff --git a/doc/html/fusion/algorithms/iteration/functions/accumulate.html b/doc/html/fusion/algorithms/iteration/functions/accumulate.html
index 7dee9295..bddf3353 100644
--- a/doc/html/fusion/algorithms/iteration/functions/accumulate.html
+++ b/doc/html/fusion/algorithms/iteration/functions/accumulate.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -37,7 +37,7 @@ fold.

- + Synopsis
@@ -50,7 +50,7 @@
     Sequence& seq, State const& initial_state, F const& f);
 
-

Table 1.33. Parameters

+

Table 1.33. Parameters

@@ -93,7 +93,7 @@
- + Expression Semantics
@@ -108,21 +108,21 @@ where e1 ...eN are the elements of seq.

- + Complexity

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

- + Header
 #include <boost/fusion/algorithm/iteration/accumulate.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/iteration/functions/fold.html b/doc/html/fusion/algorithms/iteration/functions/fold.html
index 662e5e42..d04b1308 100644
--- a/doc/html/fusion/algorithms/iteration/functions/fold.html
+++ b/doc/html/fusion/algorithms/iteration/functions/fold.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -36,7 +36,7 @@ to each element of a sequence and the previous state.

- + Synopsis
@@ -49,7 +49,7 @@
     Sequence& seq, State const& initial_state, F const& f);
 
-

Table 1.32. Parameters

+

Table 1.32. Parameters

@@ -91,7 +91,7 @@
- + Expression Semantics
@@ -106,21 +106,21 @@ where e1 ...eN are the elements of seq.

- + Complexity

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

- + Header
 #include <boost/fusion/algorithm/iteration/fold.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/iteration/functions/for_each.html b/doc/html/fusion/algorithms/iteration/functions/for_each.html
index a13bcd59..8e89304a 100644
--- a/doc/html/fusion/algorithms/iteration/functions/for_each.html
+++ b/doc/html/fusion/algorithms/iteration/functions/for_each.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

- + Synopsis
@@ -45,7 +45,7 @@
     Sequence& seq, F const& f);
 
-

Table 1.34. Parameters

+

Table 1.34. Parameters

@@ -78,7 +78,7 @@
- + Expression Semantics
@@ -93,21 +93,21 @@ in seq.

- + Complexity

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

- + Header
 #include <boost/fusion/algorithm/iteration/for_each.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html b/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html
index 7281aa24..e1f63976 100644
--- a/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html
+++ b/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of accumulate.

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

Table 1.36. Parameters

+

Table 1.36. Parameters

@@ -91,7 +91,7 @@
- + Expression Semantics
@@ -111,14 +111,14 @@ Function Object of type F.

- + Complexity

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

- + Header
diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/fold.html b/doc/html/fusion/algorithms/iteration/metafunctions/fold.html
index a8fc3e94..e4abcea3 100644
--- a/doc/html/fusion/algorithms/iteration/metafunctions/fold.html
+++ b/doc/html/fusion/algorithms/iteration/metafunctions/fold.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of fold.

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

Table 1.35. Parameters

+

Table 1.35. Parameters

@@ -91,7 +91,7 @@
- + Expression Semantics
@@ -111,14 +111,14 @@ Function Object of type F.

- + Complexity

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

- + Header
diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html b/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html
index d1fd7d41..ae80abbe 100644
--- a/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html
+++ b/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html
@@ -30,11 +30,11 @@
             return type of for_each is always void.
           

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

Table 1.37. Parameters

+

Table 1.37. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -98,14 +98,14 @@ return type is always void.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/query.html b/doc/html/fusion/algorithms/query.html
index 71471093..5cde9217 100644
--- a/doc/html/fusion/algorithms/query.html
+++ b/doc/html/fusion/algorithms/query.html
@@ -33,7 +33,7 @@
         The query algorithms provide support for searching and analyzing sequences.
       

- + Header

diff --git a/doc/html/fusion/algorithms/query/functions/all.html b/doc/html/fusion/algorithms/query/functions/all.html
index 33eaa71c..f3032956 100644
--- a/doc/html/fusion/algorithms/query/functions/all.html
+++ b/doc/html/fusion/algorithms/query/functions/all.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.39. Parameters

+

Table 1.39. Parameters

@@ -84,7 +84,7 @@
- + Expression Semantics
@@ -101,21 +101,21 @@ element e in seq.

- + Complexity

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

- + Header
 #include <boost/fusion/algorithm/query/all.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/query/functions/any.html b/doc/html/fusion/algorithms/query/functions/any.html
index 1b20505c..442c9f76 100644
--- a/doc/html/fusion/algorithms/query/functions/any.html
+++ b/doc/html/fusion/algorithms/query/functions/any.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.38. Parameters

+

Table 1.38. Parameters

@@ -84,7 +84,7 @@
- + Expression semantics
@@ -101,21 +101,21 @@ element e in seq.

- + Complexity

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

- + Header
 #include <boost/fusion/algorithm/query/any.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/query/functions/count.html b/doc/html/fusion/algorithms/query/functions/count.html
index c6c4b18d..b6421175 100644
--- a/doc/html/fusion/algorithms/query/functions/count.html
+++ b/doc/html/fusion/algorithms/query/functions/count.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

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

Table 1.43. Parameters

+

Table 1.43. Parameters

@@ -81,7 +81,7 @@
- + Expression Semantics
@@ -97,21 +97,21 @@ t in seq.

- + Complexity

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

- + Header
 #include <boost/fusion/algorithm/query/count.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/query/functions/count_if.html b/doc/html/fusion/algorithms/query/functions/count_if.html
index b9aedbc9..54b50b7a 100644
--- a/doc/html/fusion/algorithms/query/functions/count_if.html
+++ b/doc/html/fusion/algorithms/query/functions/count_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.44. Parameters

+

Table 1.44. Parameters

@@ -81,7 +81,7 @@
- + Expression Semantics
@@ -96,21 +96,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/query/functions/find.html b/doc/html/fusion/algorithms/query/functions/find.html
index bff96f47..56e1c4ed 100644
--- a/doc/html/fusion/algorithms/query/functions/find.html
+++ b/doc/html/fusion/algorithms/query/functions/find.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

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

Table 1.41. Parameters

+

Table 1.41. Parameters

@@ -82,7 +82,7 @@
- + Expression Semantics
@@ -100,21 +100,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/query/functions/find_if.html b/doc/html/fusion/algorithms/query/functions/find_if.html
index 86bfd6fa..51fca1de 100644
--- a/doc/html/fusion/algorithms/query/functions/find_if.html
+++ b/doc/html/fusion/algorithms/query/functions/find_if.html
@@ -30,11 +30,11 @@
             MPL Lambda Expression evaluates to boost::mpl::true_.
           

- + Description
- + Synopsis
@@ -51,7 +51,7 @@
 unspecified find_if(Sequence& seq);
 
-

Table 1.42. Parameters

+

Table 1.42. Parameters

@@ -83,7 +83,7 @@
- + Expression Semantics
@@ -102,21 +102,21 @@ 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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/query/functions/none.html b/doc/html/fusion/algorithms/query/functions/none.html
index d024bb24..38f14483 100644
--- a/doc/html/fusion/algorithms/query/functions/none.html
+++ b/doc/html/fusion/algorithms/query/functions/none.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.40. Parameters

+

Table 1.40. Parameters

@@ -84,7 +84,7 @@
- + Expression Semantics
@@ -101,21 +101,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/query/metafunctions/all.html b/doc/html/fusion/algorithms/query/metafunctions/all.html
index 03c3924d..258d2844 100644
--- a/doc/html/fusion/algorithms/query/metafunctions/all.html
+++ b/doc/html/fusion/algorithms/query/metafunctions/all.html
@@ -26,14 +26,14 @@
 
 
- + Description

A metafunction returning the result type of all.

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

Table 1.46. Parameters

+

Table 1.46. Parameters

@@ -82,7 +82,7 @@
- + Expression Semantics
@@ -102,14 +102,14 @@ The return type is always bool.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/query/metafunctions/any.html b/doc/html/fusion/algorithms/query/metafunctions/any.html
index bb63c8d8..eab0791d 100644
--- a/doc/html/fusion/algorithms/query/metafunctions/any.html
+++ b/doc/html/fusion/algorithms/query/metafunctions/any.html
@@ -26,14 +26,14 @@
 
 
- + Description

A metafunction returning the result type of any.

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

Table 1.45. Parameters

+

Table 1.45. Parameters

@@ -82,7 +82,7 @@
- + Expression Semantics
@@ -102,14 +102,14 @@ The return type is always bool.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/query/metafunctions/count.html b/doc/html/fusion/algorithms/query/metafunctions/count.html
index 2c634d8f..31874e45 100644
--- a/doc/html/fusion/algorithms/query/metafunctions/count.html
+++ b/doc/html/fusion/algorithms/query/metafunctions/count.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.50. Parameters

+

Table 1.50. Parameters

@@ -81,7 +81,7 @@
- + Expression Semantics
@@ -97,14 +97,14 @@ int.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/query/metafunctions/count_if.html b/doc/html/fusion/algorithms/query/metafunctions/count_if.html
index 74b2dcea..7940330a 100644
--- a/doc/html/fusion/algorithms/query/metafunctions/count_if.html
+++ b/doc/html/fusion/algorithms/query/metafunctions/count_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.51. Parameters

+

Table 1.51. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -96,14 +96,14 @@ always int.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/query/metafunctions/find.html b/doc/html/fusion/algorithms/query/metafunctions/find.html
index 4c9c9540..e43aa19e 100644
--- a/doc/html/fusion/algorithms/query/metafunctions/find.html
+++ b/doc/html/fusion/algorithms/query/metafunctions/find.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.48. Parameters

+

Table 1.48. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -97,14 +97,14 @@ in Sequence, or result_of::end<Sequence>::type if there is no such element.

- + Complexity

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

- + Header
diff --git a/doc/html/fusion/algorithms/query/metafunctions/find_if.html b/doc/html/fusion/algorithms/query/metafunctions/find_if.html
index 74bb66f4..8254251b 100644
--- a/doc/html/fusion/algorithms/query/metafunctions/find_if.html
+++ b/doc/html/fusion/algorithms/query/metafunctions/find_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.49. Parameters

+

Table 1.49. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -98,14 +98,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
diff --git a/doc/html/fusion/algorithms/query/metafunctions/none.html b/doc/html/fusion/algorithms/query/metafunctions/none.html
index bbfafc20..6c688ed9 100644
--- a/doc/html/fusion/algorithms/query/metafunctions/none.html
+++ b/doc/html/fusion/algorithms/query/metafunctions/none.html
@@ -26,14 +26,14 @@
 
 
- + Description

A metafunction returning the result type of none.

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

Table 1.47. Parameters

+

Table 1.47. Parameters

@@ -82,7 +82,7 @@
- + Expression Semantics
@@ -102,14 +102,14 @@ The return type is always bool.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation.html b/doc/html/fusion/algorithms/transformation.html
index c4fc7772..30d27b82 100644
--- a/doc/html/fusion/algorithms/transformation.html
+++ b/doc/html/fusion/algorithms/transformation.html
@@ -46,7 +46,7 @@
         

- + Header

diff --git a/doc/html/fusion/algorithms/transformation/functions/clear.html b/doc/html/fusion/algorithms/transformation/functions/clear.html
index 28ad27dd..ba72ba51 100644
--- a/doc/html/fusion/algorithms/transformation/functions/clear.html
+++ b/doc/html/fusion/algorithms/transformation/functions/clear.html
@@ -26,14 +26,14 @@
 
 
- + Description

clear returns an empty sequence.

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

Table 1.61. Parameters

+

Table 1.61. Parameters

@@ -67,7 +67,7 @@
- + Expression Semantics
@@ -84,21 +84,21 @@ with no elements.

- + Complexity

Constant.

- + Header
 #include <boost/fusion/algorithm/transformation/clear.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/erase.html b/doc/html/fusion/algorithms/transformation/functions/erase.html
index 238c1525..e88fa22e 100644
--- a/doc/html/fusion/algorithms/transformation/functions/erase.html
+++ b/doc/html/fusion/algorithms/transformation/functions/erase.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.62. Parameters

+

Table 1.62. Parameters

@@ -101,7 +101,7 @@
- + Expression Semantics
@@ -132,21 +132,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/erase_key.html b/doc/html/fusion/algorithms/transformation/functions/erase_key.html
index cec8a28e..fb72ede2 100644
--- a/doc/html/fusion/algorithms/transformation/functions/erase_key.html
+++ b/doc/html/fusion/algorithms/transformation/functions/erase_key.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -39,7 +39,7 @@ with a given key.

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

Table 1.63. Parameters

+

Table 1.63. Parameters

@@ -82,7 +82,7 @@
- + Expression Semantics
@@ -100,21 +100,21 @@ except those with key Key.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/erase_key.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/filter.html b/doc/html/fusion/algorithms/transformation/functions/filter.html
index 5c420f32..cc41ae29 100644
--- a/doc/html/fusion/algorithms/transformation/functions/filter.html
+++ b/doc/html/fusion/algorithms/transformation/functions/filter.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.52. Parameters

+

Table 1.52. Parameters

@@ -77,7 +77,7 @@
- + Expression Semantics
@@ -96,21 +96,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/filter_if.html b/doc/html/fusion/algorithms/transformation/functions/filter_if.html
index 8b8da67c..bd3f15fe 100644
--- a/doc/html/fusion/algorithms/transformation/functions/filter_if.html
+++ b/doc/html/fusion/algorithms/transformation/functions/filter_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.53. Parameters

+

Table 1.53. Parameters

@@ -79,7 +79,7 @@
- + Expression Semantics
@@ -99,21 +99,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/insert.html b/doc/html/fusion/algorithms/transformation/functions/insert.html
index bb62b8c1..a1fdf2b0 100644
--- a/doc/html/fusion/algorithms/transformation/functions/insert.html
+++ b/doc/html/fusion/algorithms/transformation/functions/insert.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Synposis
@@ -46,7 +46,7 @@
 unspecified insert(Sequence const& seq, Pos const& pos, T const& t);
 
-

Table 1.64. Parameters

+

Table 1.64. Parameters

@@ -87,7 +87,7 @@
- + Expression Semantics
@@ -107,21 +107,21 @@ pos.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/insert.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/insert_range.html b/doc/html/fusion/algorithms/transformation/functions/insert_range.html
index 51789af7..52c2e316 100644
--- a/doc/html/fusion/algorithms/transformation/functions/insert_range.html
+++ b/doc/html/fusion/algorithms/transformation/functions/insert_range.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ iterator.

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

Table 1.65. Parameters

+

Table 1.65. Parameters

@@ -91,7 +91,7 @@
- + Expression Semantics
@@ -111,21 +111,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/join.html b/doc/html/fusion/algorithms/transformation/functions/join.html
index ebc93987..02a5dae1 100644
--- a/doc/html/fusion/algorithms/transformation/functions/join.html
+++ b/doc/html/fusion/algorithms/transformation/functions/join.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.66. Parameters

+

Table 1.66. Parameters

@@ -79,7 +79,7 @@
- + Expression Semantics
@@ -98,21 +98,21 @@ The order of th elements is preserved.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/join.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/pop_back.html b/doc/html/fusion/algorithms/transformation/functions/pop_back.html
index 04f582dd..a684b8cf 100644
--- a/doc/html/fusion/algorithms/transformation/functions/pop_back.html
+++ b/doc/html/fusion/algorithms/transformation/functions/pop_back.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

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

Table 1.68. Parameters

+

Table 1.68. Parameters

@@ -67,7 +67,7 @@
- + Expression Semantics
@@ -86,21 +86,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/pop_front.html b/doc/html/fusion/algorithms/transformation/functions/pop_front.html
index a5813caf..cc930714 100644
--- a/doc/html/fusion/algorithms/transformation/functions/pop_front.html
+++ b/doc/html/fusion/algorithms/transformation/functions/pop_front.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

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

Table 1.69. Parameters

+

Table 1.69. Parameters

@@ -67,7 +67,7 @@
- + Expression Semantics
@@ -86,21 +86,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/push_back.html b/doc/html/fusion/algorithms/transformation/functions/push_back.html
index c83bd30e..1b19299e 100644
--- a/doc/html/fusion/algorithms/transformation/functions/push_back.html
+++ b/doc/html/fusion/algorithms/transformation/functions/push_back.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

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

Table 1.70. Parameters

+

Table 1.70. Parameters

@@ -77,7 +77,7 @@
- + Expression Semantics
@@ -96,21 +96,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/push_front.html b/doc/html/fusion/algorithms/transformation/functions/push_front.html
index a57a3599..2f3d4bf0 100644
--- a/doc/html/fusion/algorithms/transformation/functions/push_front.html
+++ b/doc/html/fusion/algorithms/transformation/functions/push_front.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

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

Table 1.71. Parameters

+

Table 1.71. Parameters

@@ -77,7 +77,7 @@
- + Expression Semantics
@@ -97,21 +97,21 @@ seq.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/push_front.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/remove.html b/doc/html/fusion/algorithms/transformation/functions/remove.html
index f668b3f5..3f9c6e77 100644
--- a/doc/html/fusion/algorithms/transformation/functions/remove.html
+++ b/doc/html/fusion/algorithms/transformation/functions/remove.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.58. Parameters

+

Table 1.58. Parameters

@@ -77,7 +77,7 @@
- + Expression Semantics
@@ -96,21 +96,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/remove_if.html b/doc/html/fusion/algorithms/transformation/functions/remove_if.html
index 0375b58a..b40b3800 100644
--- a/doc/html/fusion/algorithms/transformation/functions/remove_if.html
+++ b/doc/html/fusion/algorithms/transformation/functions/remove_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.59. Parameters

+

Table 1.59. Parameters

@@ -77,7 +77,7 @@
- + Expression Semantics
@@ -96,21 +96,21 @@ Pred evaluates to boost::mpl::true_. Equivalent to filter<boost::mpl::not_<Pred> >(seq).

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/remove_if.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/replace.html b/doc/html/fusion/algorithms/transformation/functions/replace.html
index 24aeee6f..c77fbce7 100644
--- a/doc/html/fusion/algorithms/transformation/functions/replace.html
+++ b/doc/html/fusion/algorithms/transformation/functions/replace.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.56. Parameters

+

Table 1.56. Parameters

@@ -89,7 +89,7 @@
- + Expression Semantics
@@ -108,21 +108,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/replace_if.html b/doc/html/fusion/algorithms/transformation/functions/replace_if.html
index 2a52f9b2..c55dca8e 100644
--- a/doc/html/fusion/algorithms/transformation/functions/replace_if.html
+++ b/doc/html/fusion/algorithms/transformation/functions/replace_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.57. Parameters

+

Table 1.57. Parameters

@@ -88,7 +88,7 @@
- + Expression Semantics
@@ -108,21 +108,21 @@ evaluates to true.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/replace_if.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/reverse.html b/doc/html/fusion/algorithms/transformation/functions/reverse.html
index f285c9e6..6c364354 100644
--- a/doc/html/fusion/algorithms/transformation/functions/reverse.html
+++ b/doc/html/fusion/algorithms/transformation/functions/reverse.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

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

Table 1.60. Parameters

+

Table 1.60. Parameters

@@ -67,7 +67,7 @@
- + Expression Semantics
@@ -85,21 +85,21 @@ in reverse order.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/reverse.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/transform.html b/doc/html/fusion/algorithms/transformation/functions/transform.html
index 83910ee4..1d082bb1 100644
--- a/doc/html/fusion/algorithms/transformation/functions/transform.html
+++ b/doc/html/fusion/algorithms/transformation/functions/transform.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -39,7 +39,7 @@ to each element of seq.

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

Table 1.54. Parameters

+

Table 1.54. Parameters

@@ -89,7 +89,7 @@
- + Expression Semantics
@@ -107,7 +107,7 @@ within seq.

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

Table 1.55. Parameters

+

Table 1.55. Parameters

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

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/transform.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/zip.html b/doc/html/fusion/algorithms/transformation/functions/zip.html
index 0f373853..9537765f 100644
--- a/doc/html/fusion/algorithms/transformation/functions/zip.html
+++ b/doc/html/fusion/algorithms/transformation/functions/zip.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.67. Parameters

+

Table 1.67. Parameters

@@ -73,7 +73,7 @@
- + Expression Semantics
@@ -93,21 +93,21 @@ ('a', 'b', 'c') would return ((1, 'a'),(2, 'b'),(3, 'c'))

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/zip.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/clear.html b/doc/html/fusion/algorithms/transformation/metafunctions/clear.html
index a7dbb2f7..67a01802 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/clear.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/clear.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ type.

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

Table 1.80. Parameters

+

Table 1.80. Parameters

@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -84,14 +84,14 @@ Semantics: Returns an empty sequence.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/erase.html b/doc/html/fusion/algorithms/transformation/metafunctions/erase.html
index 3cb8bf74..85cd97b9 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/erase.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/erase.html
@@ -30,11 +30,11 @@
             and range delimiting iterator types.
           

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

Table 1.81. Parameters

+

Table 1.81. Parameters

@@ -92,7 +92,7 @@
- + Expression Semantics
@@ -122,14 +122,14 @@ and It2 removed.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html b/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html
index f98e44c1..394f9414 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.82. Parameters

+

Table 1.82. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -98,14 +98,14 @@ except those with key Key.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/filter.html b/doc/html/fusion/algorithms/transformation/metafunctions/filter.html
index f4436b50..807fb947 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/filter.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/filter.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.72. Parameter

+

Table 1.72. Parameter

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -99,14 +99,14 @@ to result_of::filter_if<Sequence, boost::is_same<mpl::_, T> >::type.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html
index dc1d5710..15e405e7 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ and unary MPL Lambda Expression predicate type.

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

Table 1.73. Parameter

+

Table 1.73. Parameter

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -99,14 +99,14 @@ to boost::mpl::true_.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/insert.html b/doc/html/fusion/algorithms/transformation/metafunctions/insert.html
index e76f9f34..ebbe6943 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/insert.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/insert.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.83. Parameters

+

Table 1.83. Parameters

@@ -90,7 +90,7 @@
- + Expression Semantics
@@ -109,14 +109,14 @@ in Sequence.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html b/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html
index b10a611e..d92b6d7d 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.84. Parameters

+

Table 1.84. Parameters

@@ -93,7 +93,7 @@
- + Expression Semantics
@@ -112,14 +112,14 @@ into Sequence.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/join.html b/doc/html/fusion/algorithms/transformation/metafunctions/join.html
index ff9bc0d0..5c9abd5f 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/join.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/join.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

- + Synopsis
@@ -47,7 +47,7 @@
 };
 
- + Expression Semantics
@@ -66,14 +66,14 @@ The order of the elements in the 2 sequences is preserved.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html b/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html
index 1c1bdec3..531765fb 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ type.

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

Table 1.85. Parameters

+

Table 1.85. Parameters

@@ -71,7 +71,7 @@
- + Expression Semantics
@@ -89,14 +89,14 @@ except the last element.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html b/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html
index a9e9a286..cbb71888 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ type.

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

Table 1.86. Parameters

+

Table 1.86. Parameters

@@ -71,7 +71,7 @@
- + Expression Semantics
@@ -89,14 +89,14 @@ except the first element.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html b/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html
index 07d78c47..b3a09f04 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.87. Parameters

+

Table 1.87. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -99,14 +99,14 @@ added to the end.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html b/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html
index a3a44042..c34ab466 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.88. Parameters

+

Table 1.88. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -99,14 +99,14 @@ added to the beginning.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/remove.html b/doc/html/fusion/algorithms/transformation/metafunctions/remove.html
index b220b665..9b5042ef 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/remove.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/remove.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.77. Parameters

+

Table 1.77. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -99,14 +99,14 @@ to result_of::replace_if<Sequence, boost::is_same<mpl::_, T> >::type.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html
index ffa8cf98..af11a065 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ and unary MPL Lambda Expression predicate types.

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

Table 1.78. Parameters

+

Table 1.78. Parameters

@@ -82,7 +82,7 @@
- + Expression Semantics
@@ -101,14 +101,14 @@ to boost::mpl::false_.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/replace.html b/doc/html/fusion/algorithms/transformation/metafunctions/replace.html
index b4e07b3f..c395ee71 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/replace.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/replace.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.75. Parameters

+

Table 1.75. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -97,14 +97,14 @@ replace.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html
index 4dfddbc7..be1ac1ef 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Synopsis
@@ -50,7 +50,7 @@
 };
 
-

Table 1.76. Parameters

+

Table 1.76. Parameters

@@ -91,7 +91,7 @@
- + Expression Semantics
@@ -108,14 +108,14 @@ replace_if.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html b/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html
index 3b8a759b..5ff8b112 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ type.

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

Table 1.79. Parameters

+

Table 1.79. Parameters

@@ -71,7 +71,7 @@
- + Expression Semantics
@@ -88,14 +88,14 @@ elements in the reverse order to Sequence.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/transform.html b/doc/html/fusion/algorithms/transformation/metafunctions/transform.html
index 2e4907b6..9f76b37f 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/transform.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/transform.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -36,7 +36,7 @@ Function Object types.

- + Synopsis
@@ -50,7 +50,7 @@
 };
 
-

Table 1.74. Parameters

+

Table 1.74. Parameters

@@ -84,7 +84,7 @@
- + Expression Semantics
@@ -101,14 +101,14 @@ F::apply<E>::type for each element type E in Sequence.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/zip.html b/doc/html/fusion/algorithms/transformation/metafunctions/zip.html
index 69415c0a..cdf88802 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/zip.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/zip.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Synopsis
@@ -50,7 +50,7 @@
 };
 
- + Expression Semantics
@@ -69,14 +69,14 @@ return ((1, 'a'),(2, 'b'),(3, 'c'))

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/extension.html b/doc/html/fusion/extension.html
index 39fd4553..11339360 100644
--- a/doc/html/fusion/extension.html
+++ b/doc/html/fusion/extension.html
@@ -48,7 +48,7 @@
       
 

- + Our example

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

- + Enabling Tag Dispatching

@@ -121,7 +121,7 @@ #include <boost/fusion/sequence/adapted/mpl/tag_of.hpp>

- + Designing a suitable iterator

@@ -184,7 +184,7 @@ clearer as we add features to our implementation.

- + A first couple of instructive features

@@ -327,7 +327,7 @@

- + Implementing the remaining iterator functionality

@@ -382,7 +382,7 @@ are provided in the example code.

- + Implementing the intrinsic functions of the sequence

@@ -441,7 +441,7 @@ value_at_impl and at_impl.

- + Enabling our type as an associative container

@@ -507,7 +507,7 @@ of is_associative_impl.

- + Summary

diff --git a/doc/html/fusion/iterators.html b/doc/html/fusion/iterators.html index 4b960e0b..148aef15 100644 --- a/doc/html/fusion/iterators.html +++ b/doc/html/fusion/iterators.html @@ -40,7 +40,7 @@ Sequence.

- + Header

diff --git a/doc/html/fusion/iterators/concepts/bidirectional_iterator.html b/doc/html/fusion/iterators/concepts/bidirectional_iterator.html
index 65feb9ea..dbca9747 100644
--- a/doc/html/fusion/iterators/concepts/bidirectional_iterator.html
+++ b/doc/html/fusion/iterators/concepts/bidirectional_iterator.html
@@ -31,7 +31,7 @@
         Iterator">Bidirectional
         Iterator
 
- + Description

@@ -61,7 +61,7 @@

- + Refinement of
@@ -70,7 +70,7 @@ Iterator">Forward Iterator

- + Expression requirements
@@ -123,7 +123,7 @@
- + Meta Expressions
@@ -143,7 +143,7 @@
- + Expression Semantics
@@ -170,7 +170,7 @@
- + Invariants

@@ -187,7 +187,7 @@

- + Models
    diff --git a/doc/html/fusion/iterators/concepts/forward_iterator.html b/doc/html/fusion/iterators/concepts/forward_iterator.html index 1a717d76..9276aa2b 100644 --- a/doc/html/fusion/iterators/concepts/forward_iterator.html +++ b/doc/html/fusion/iterators/concepts/forward_iterator.html @@ -30,7 +30,7 @@ Iterator">Forward Iterator
- + Description

@@ -63,7 +63,7 @@

- + Expression requirements
@@ -132,7 +132,7 @@
- + Meta Expressions
@@ -181,7 +181,7 @@
- + Expression Semantics
@@ -245,7 +245,7 @@
- + Invariants

@@ -268,7 +268,7 @@

- + Models
    diff --git a/doc/html/fusion/iterators/concepts/random_access_iterator.html b/doc/html/fusion/iterators/concepts/random_access_iterator.html index 59448640..22ef5eb6 100644 --- a/doc/html/fusion/iterators/concepts/random_access_iterator.html +++ b/doc/html/fusion/iterators/concepts/random_access_iterator.html @@ -30,7 +30,7 @@ Access Iterator">Random Access Iterator
- + Description

@@ -63,7 +63,7 @@

- + Refinement of
@@ -73,7 +73,7 @@ Iterator

- + Expression requirements
@@ -126,7 +126,7 @@
- + Meta Expressions
@@ -158,7 +158,7 @@
- + Models
    diff --git a/doc/html/fusion/iterators/functions/advance.html b/doc/html/fusion/iterators/functions/advance.html index 6dadbf56..a08c9e4b 100644 --- a/doc/html/fusion/iterators/functions/advance.html +++ b/doc/html/fusion/iterators/functions/advance.html @@ -26,14 +26,14 @@
    - + Description

    Moves an iterator by a specified distance.

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

    Table 1.6. Parameters

    +

    Table 1.6. Parameters

    @@ -76,7 +76,7 @@
    - + Expression Semantics
    @@ -97,14 +97,14 @@ may be negative.

    - + Header
     #include <boost/fusion/iterator/advance.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/functions/advance_c.html b/doc/html/fusion/iterators/functions/advance_c.html
    index bfddfb14..43e8a429 100644
    --- a/doc/html/fusion/iterators/functions/advance_c.html
    +++ b/doc/html/fusion/iterators/functions/advance_c.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Moves an iterator by a specified distance.

    - + Synopsis
    @@ -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

    @@ -76,7 +76,7 @@
    - + Expression Semantics
    @@ -97,14 +97,14 @@ may be negative.

    - + Header
     #include <boost/fusion/iterator/advance.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/functions/deref.html b/doc/html/fusion/iterators/functions/deref.html
    index dfd632ca..b7f2f957 100644
    --- a/doc/html/fusion/iterators/functions/deref.html
    +++ b/doc/html/fusion/iterators/functions/deref.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Deferences an iterator.

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

    Table 1.2. Parameters

    +

    Table 1.2. Parameters

    @@ -67,7 +67,7 @@
    - + Expression Semantics
    @@ -82,14 +82,14 @@ i.

    - + Header
     #include <boost/fusion/iterator/deref.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/functions/distance.html b/doc/html/fusion/iterators/functions/distance.html
    index 33a6e95a..bf141e32 100644
    --- a/doc/html/fusion/iterators/functions/distance.html
    +++ b/doc/html/fusion/iterators/functions/distance.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the distance between 2 iterators.

    - + Synopsis
    @@ -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

    @@ -69,7 +69,7 @@
    - + Expression Semantics
    @@ -84,14 +84,14 @@ iterators i and j.

    - + Header
     #include <boost/fusion/iterator/distance.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/functions/next.html b/doc/html/fusion/iterators/functions/next.html
    index 4faa1642..40aca648 100644
    --- a/doc/html/fusion/iterators/functions/next.html
    +++ b/doc/html/fusion/iterators/functions/next.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Moves an iterator 1 position forwards.

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

    Table 1.3. Parameters

    +

    Table 1.3. Parameters

    @@ -67,7 +67,7 @@
    - + Expression Semantics
    @@ -83,14 +83,14 @@ next element after i.

    - + Header
     #include <boost/fusion/iterator/next.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/functions/prior.html b/doc/html/fusion/iterators/functions/prior.html
    index 5f0b373f..71e89091 100644
    --- a/doc/html/fusion/iterators/functions/prior.html
    +++ b/doc/html/fusion/iterators/functions/prior.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Moves an iterator 1 position backwards.

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

    Table 1.4. Parameters

    +

    Table 1.4. Parameters

    @@ -67,7 +67,7 @@
    - + Expression Semantics
    @@ -83,14 +83,14 @@ element prior to i.

    - + Header
     #include <boost/fusion/iterator/prior.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/advance.html b/doc/html/fusion/iterators/metafunctions/advance.html
    index e02f7269..beb77487 100644
    --- a/doc/html/fusion/iterators/metafunctions/advance.html
    +++ b/doc/html/fusion/iterators/metafunctions/advance.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Moves an iterator a specified distance.

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

    Table 1.17. Parameters

    +

    Table 1.17. Parameters

    @@ -79,7 +79,7 @@
    - + Expression Semantics
    @@ -99,14 +99,14 @@ may be negative.

    - + Header
     #include <boost/fusion/iterator/advance.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/advance_c.html b/doc/html/fusion/iterators/metafunctions/advance_c.html
    index cf21ed8e..f0ec5d72 100644
    --- a/doc/html/fusion/iterators/metafunctions/advance_c.html
    +++ b/doc/html/fusion/iterators/metafunctions/advance_c.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Moves an iterator by a specified distance.

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

    Table 1.18. Parameters

    +

    Table 1.18. Parameters

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

    - + Header
     #include <boost/fusion/iterator/advance.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/deref.html b/doc/html/fusion/iterators/metafunctions/deref.html
    index 33d28489..a9ef354f 100644
    --- a/doc/html/fusion/iterators/metafunctions/deref.html
    +++ b/doc/html/fusion/iterators/metafunctions/deref.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

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

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

    Table 1.12. Parameters

    +

    Table 1.12. Parameters

    @@ -70,7 +70,7 @@
    - + Expression Semantics
    @@ -85,14 +85,14 @@ an iterator of type I.

    - + Header
     #include <boost/fusion/iterator/deref.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/distance.html b/doc/html/fusion/iterators/metafunctions/distance.html
    index 71e74e78..596ffe9f 100644
    --- a/doc/html/fusion/iterators/metafunctions/distance.html
    +++ b/doc/html/fusion/iterators/metafunctions/distance.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the distance between two iterators.

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

    Table 1.16. Parameters

    +

    Table 1.16. Parameters

    @@ -72,7 +72,7 @@
    - + Expression Semantics
    @@ -88,14 +88,14 @@ J.

    - + Header
     #include <boost/fusion/iterator/distance.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/equal_to.html b/doc/html/fusion/iterators/metafunctions/equal_to.html
    index e68b3e02..a4a9917a 100644
    --- a/doc/html/fusion/iterators/metafunctions/equal_to.html
    +++ b/doc/html/fusion/iterators/metafunctions/equal_to.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

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

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

    Table 1.15. Parameters

    +

    Table 1.15. Parameters

    @@ -71,7 +71,7 @@
    - + Expression Semantics
    @@ -87,14 +87,14 @@ Returns boost::mpl::false_ otherwise.

    - + Header
     #include <boost/fusion/iterator/equal_to.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/next.html b/doc/html/fusion/iterators/metafunctions/next.html
    index 21601c70..794ca21b 100644
    --- a/doc/html/fusion/iterators/metafunctions/next.html
    +++ b/doc/html/fusion/iterators/metafunctions/next.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the type of the next iterator in a sequence.

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

    Table 1.13. Parameters

    +

    Table 1.13. Parameters

    @@ -70,7 +70,7 @@
    - + Expression Semantics
    @@ -86,14 +86,14 @@ next element in the sequence after I.

    - + Header
     #include <boost/fusion/iterator/next.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/prior.html b/doc/html/fusion/iterators/metafunctions/prior.html
    index 1e15ffd9..ffa32902 100644
    --- a/doc/html/fusion/iterators/metafunctions/prior.html
    +++ b/doc/html/fusion/iterators/metafunctions/prior.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the type of the previous iterator in a sequence.

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

    Table 1.14. Parameters

    +

    Table 1.14. Parameters

    @@ -70,7 +70,7 @@
    - + Expression Semantics
    @@ -86,14 +86,14 @@ previous element in the sequence before I.

    - + Header
     #include <boost/fusion/iterator/prior.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/value_of.html b/doc/html/fusion/iterators/metafunctions/value_of.html
    index f10329c5..be7941db 100644
    --- a/doc/html/fusion/iterators/metafunctions/value_of.html
    +++ b/doc/html/fusion/iterators/metafunctions/value_of.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the type stored at the position of an iterator.

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

    Table 1.11. Parameters

    +

    Table 1.11. Parameters

    @@ -70,7 +70,7 @@
    - + Expression Semantics
    @@ -85,14 +85,14 @@ a sequence at iterator position I.

    - + Header
     #include <boost/fusion/iterator/value_of.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/operators/operator_equality.html b/doc/html/fusion/iterators/operators/operator_equality.html
    index c484246c..f5ddf59b 100644
    --- a/doc/html/fusion/iterators/operators/operator_equality.html
    +++ b/doc/html/fusion/iterators/operators/operator_equality.html
    @@ -31,14 +31,14 @@
             =="> Operator
             ==
- + Description

Compares 2 iterators for equality.

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

Table 1.9. Parameters

+

Table 1.9. Parameters

@@ -72,7 +72,7 @@
- + Expression Semantics
@@ -88,7 +88,7 @@ and j respectively.

- + Header
diff --git a/doc/html/fusion/iterators/operators/operator_inequality.html b/doc/html/fusion/iterators/operators/operator_inequality.html
index 100779e7..d0c76d2c 100644
--- a/doc/html/fusion/iterators/operators/operator_inequality.html
+++ b/doc/html/fusion/iterators/operators/operator_inequality.html
@@ -30,14 +30,14 @@
         !="> Operator
         !=
 
- + Description

Compares 2 iterators for inequality.

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

Table 1.10. Parameters

+

Table 1.10. Parameters

@@ -71,7 +71,7 @@
- + Expression Semantics
@@ -84,7 +84,7 @@ and j respectively.

- + Header
diff --git a/doc/html/fusion/iterators/operators/operator_unary_star.html b/doc/html/fusion/iterators/operators/operator_unary_star.html
index a4408cad..3c8c0e8f 100644
--- a/doc/html/fusion/iterators/operators/operator_unary_star.html
+++ b/doc/html/fusion/iterators/operators/operator_unary_star.html
@@ -30,14 +30,14 @@
         *"> Operator
         *
 
- + Description

Dereferences an iterator.

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

Table 1.8. Parameters

+

Table 1.8. Parameters

@@ -71,7 +71,7 @@
- + Expression Semantics
@@ -86,14 +86,14 @@ Semantics: Equivalent to deref(i).

- + Header
 #include <boost/fusion/iterator/deref.hpp>
 
- + Example
diff --git a/doc/html/fusion/notes.html b/doc/html/fusion/notes.html
index 1dd43233..77fe7158 100644
--- a/doc/html/fusion/notes.html
+++ b/doc/html/fusion/notes.html
@@ -26,7 +26,7 @@
 
 

- + Recursive Inlined Functions

@@ -39,7 +39,7 @@ compiler limit of course). Compile time complexity remains linear.

- + Overloaded Functions

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

- + Tag Dispatching

@@ -101,7 +101,7 @@

- + Extensibility

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

- + Element Conversion

@@ -158,7 +158,7 @@

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

@@ -191,7 +191,7 @@
 list<void (*)(int)>
 

- + boost::ref

@@ -234,7 +234,7 @@



-

[14] +

[14] 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 diff --git a/doc/html/fusion/organization.html b/doc/html/fusion/organization.html index a011c3fc..ca05f1f0 100644 --- a/doc/html/fusion/organization.html +++ b/doc/html/fusion/organization.html @@ -34,7 +34,7 @@ The library is organized in three layers:

- + Layers

@@ -50,7 +50,7 @@ against.

- + Directory

    @@ -159,7 +159,7 @@

- + Example

@@ -175,12 +175,12 @@

The first includes all sequences. The second includes all of sequence containers. The third includes only list  - [3] + [3] .



-

[3] +

[3] 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 d96178b6..bfcc85b5 100644 --- a/doc/html/fusion/preface.html +++ b/doc/html/fusion/preface.html @@ -32,7 +32,7 @@ --Niklaus Wirth

- + Description

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

- + Motivation

@@ -76,7 +76,7 @@ an instant AHA! moment.

- + How to use this manual

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

-

Table 1.1. Icons

+

Table 1.1. Icons

@@ -130,7 +130,7 @@ Tools.

- + Support

diff --git a/doc/html/fusion/quick_start.html b/doc/html/fusion/quick_start.html index 9b2484fc..adeabe64 100644 --- a/doc/html/fusion/quick_start.html +++ b/doc/html/fusion/quick_start.html @@ -33,7 +33,7 @@

For starters, we shall include all of Fusion's _sequence_s - [1] + [1] :

@@ -41,7 +41,7 @@
 

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

@@ -59,7 +59,7 @@
       Let's see some examples.
     

- + Print the vector as XML

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

- + Print only pointers

@@ -150,7 +150,7 @@ Easy, right?

- + Associative tuples

@@ -225,7 +225,7 @@ a dog or a whole alternate_universe.

- + Tip of the Iceberg

@@ -236,12 +236,12 @@



-

[1] +

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

-

[2] +

[2] 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. diff --git a/doc/html/fusion/sequences.html b/doc/html/fusion/sequences.html index 0a83149e..69b55ad0 100644 --- a/doc/html/fusion/sequences.html +++ b/doc/html/fusion/sequences.html @@ -46,7 +46,7 @@ type that can be used to iterate through the Sequence's elements.

- + Header

diff --git a/doc/html/fusion/sequences/adapted.html b/doc/html/fusion/sequences/adapted.html
index c0396b69..cce8e9fb 100644
--- a/doc/html/fusion/sequences/adapted.html
+++ b/doc/html/fusion/sequences/adapted.html
@@ -40,11 +40,11 @@
         mechanism. If you wish to use these sequences with fusion, simply include
         the necessary files and they will be regarded as first-class, fully conforming
         fusion sequences
-        [4]
+        [4]
         .
       

- + Header

@@ -52,7 +52,7 @@
 


-

[4] +

[4] Fusion sequences may also be adapted as fully conforming MPL sequences (see Intrinsics). That way, we can have 2-way adaptation to and from MPL diff --git a/doc/html/fusion/sequences/adapted/boost__array.html b/doc/html/fusion/sequences/adapted/boost__array.html index b3949d49..335eb13d 100644 --- a/doc/html/fusion/sequences/adapted/boost__array.html +++ b/doc/html/fusion/sequences/adapted/boost__array.html @@ -33,21 +33,21 @@ Access Sequence.

- + Header
 #include <boost/fusion/sequence/adapted/array.hpp>
 
- + Model of
- + Example
@@ -60,7 +60,7 @@
 std::cout << at_c<2>(arr) << std::endl;
 
- + See also

diff --git a/doc/html/fusion/sequences/adapted/mpl_sequence.html b/doc/html/fusion/sequences/adapted/mpl_sequence.html index 83c0bcb4..6644d98b 100644 --- a/doc/html/fusion/sequences/adapted/mpl_sequence.html +++ b/doc/html/fusion/sequences/adapted/mpl_sequence.html @@ -31,14 +31,14 @@ sequences fully conforming fusion sequences.

- + Header
 #include <boost/fusion/sequence/adapted/mpl.hpp>
 
- + Model of
    @@ -62,7 +62,7 @@
- + Example
@@ -76,7 +76,7 @@
 std::cout << at_c<1>(v) << std::endl;
 
- + See also

diff --git a/doc/html/fusion/sequences/adapted/std__pair.html b/doc/html/fusion/sequences/adapted/std__pair.html index 33c67185..3c38130c 100644 --- a/doc/html/fusion/sequences/adapted/std__pair.html +++ b/doc/html/fusion/sequences/adapted/std__pair.html @@ -33,21 +33,21 @@ Access Sequence.

- + Header
 #include <boost/fusion/sequence/adapted/std_pair.hpp>
 
- + Model of
- + Example
@@ -57,7 +57,7 @@
 std::cout << p << std::endl;
 
- + See also

diff --git a/doc/html/fusion/sequences/concepts.html b/doc/html/fusion/sequences/concepts.html index 75590407..a195325d 100644 --- a/doc/html/fusion/sequences/concepts.html +++ b/doc/html/fusion/sequences/concepts.html @@ -40,7 +40,7 @@ Fusion Sequences are organized into a hierarchy of concepts.

- + Traversal

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

- + Associativity

diff --git a/doc/html/fusion/sequences/concepts/associative_sequence.html b/doc/html/fusion/sequences/concepts/associative_sequence.html index 87eef640..f7bbc6a6 100644 --- a/doc/html/fusion/sequences/concepts/associative_sequence.html +++ b/doc/html/fusion/sequences/concepts/associative_sequence.html @@ -30,7 +30,7 @@ Sequence">Associative Sequence

- + Description

@@ -71,7 +71,7 @@

- + Valid Expressions
@@ -121,7 +121,7 @@
- + Result Type Expressions
@@ -161,7 +161,7 @@ be a reference to begin with. For this purpose, you can use result_of::value_at_key<S, N>.

- + Expression Semantics
@@ -193,7 +193,7 @@
- + Models
    diff --git a/doc/html/fusion/sequences/concepts/bidirectional_sequence.html b/doc/html/fusion/sequences/concepts/bidirectional_sequence.html index e6bb111e..96a98163 100644 --- a/doc/html/fusion/sequences/concepts/bidirectional_sequence.html +++ b/doc/html/fusion/sequences/concepts/bidirectional_sequence.html @@ -31,7 +31,7 @@ Sequence">Bidirectional Sequence
- + Description

@@ -42,7 +42,7 @@ Iterator.

- + Refinement of
@@ -72,7 +72,7 @@
- + Valid Expressions
@@ -133,7 +133,7 @@
- + Result Type Expressions
@@ -165,7 +165,7 @@
- + Expression Semantics
@@ -191,7 +191,7 @@
- + Models
    diff --git a/doc/html/fusion/sequences/concepts/forward_sequence.html b/doc/html/fusion/sequences/concepts/forward_sequence.html index 8476e9af..b55786fd 100644 --- a/doc/html/fusion/sequences/concepts/forward_sequence.html +++ b/doc/html/fusion/sequences/concepts/forward_sequence.html @@ -30,7 +30,7 @@ Sequence">Forward Sequence
- + Description

@@ -62,7 +62,7 @@

- + Valid Expressions
@@ -133,7 +133,7 @@
- + Result Type Expressions
@@ -173,7 +173,7 @@
- + Expression Semantics
@@ -217,7 +217,7 @@
- + Invariants

@@ -243,7 +243,7 @@

- + Models
    diff --git a/doc/html/fusion/sequences/concepts/random_access_sequence.html b/doc/html/fusion/sequences/concepts/random_access_sequence.html index 6d445045..853f153f 100644 --- a/doc/html/fusion/sequences/concepts/random_access_sequence.html +++ b/doc/html/fusion/sequences/concepts/random_access_sequence.html @@ -31,7 +31,7 @@ Access Sequence">Random Access Sequence
- + Description

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

- + Refinement of
@@ -78,7 +78,7 @@
- + Valid Expressions
@@ -139,7 +139,7 @@
- + Result Type Expressions
@@ -184,7 +184,7 @@ be a reference to begin with. For this purpose, you can use result_of::value_at<S, N>.

- + Expression Semantics
@@ -210,7 +210,7 @@
- + Models
    diff --git a/doc/html/fusion/sequences/containers.html b/doc/html/fusion/sequences/containers.html index 1350b21d..cdcf6dc2 100644 --- a/doc/html/fusion/sequences/containers.html +++ b/doc/html/fusion/sequences/containers.html @@ -39,7 +39,7 @@ These containers are more or less counterparts of those in STL.

    - + Header

    diff --git a/doc/html/fusion/sequences/containers/cons.html b/doc/html/fusion/sequences/containers/cons.html
    index b6a184ab..67d0b33f 100644
    --- a/doc/html/fusion/sequences/containers/cons.html
    +++ b/doc/html/fusion/sequences/containers/cons.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -41,14 +41,14 @@ Inlined Functions).

    - + Header
     #include <boost/fusion/sequence/container/list/cons.hpp>
     
    - + Synopsis
    @@ -56,7 +56,7 @@
     struct cons;
     
    - + Template parameters
    @@ -87,7 +87,7 @@
- + Model of
  • - + Expression Semantics
    @@ -205,7 +205,7 @@ Inlined Functions).

    - + Example
    diff --git a/doc/html/fusion/sequences/containers/list.html b/doc/html/fusion/sequences/containers/list.html
    index 03ec8c8e..ad769676 100644
    --- a/doc/html/fusion/sequences/containers/list.html
    +++ b/doc/html/fusion/sequences/containers/list.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

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

    - + Header
    @@ -46,7 +46,7 @@
     #include <boost/fusion/sequence/container/list/list_forward.hpp>
     
    - + Synopsis
    @@ -77,7 +77,7 @@
     #define FUSION_MAX_LIST_SIZE 20
     
    - + Template parameters
    @@ -101,7 +101,7 @@
- + Model of
  • - + Expression Semantics
    @@ -197,7 +197,7 @@ Inlined Functions).

    - + Example
    diff --git a/doc/html/fusion/sequences/containers/map.html b/doc/html/fusion/sequences/containers/map.html
    index c2b89b00..6a079d45 100644
    --- a/doc/html/fusion/sequences/containers/map.html
    +++ b/doc/html/fusion/sequences/containers/map.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -41,14 +41,14 @@ Functions).

    - + Header
     #include <boost/fusion/sequence/container/map.hpp>
     
    - + Synopsis
    @@ -79,7 +79,7 @@
     #define FUSION_MAX_MAP_SIZE 20
     
    - + Template parameters
    @@ -103,7 +103,7 @@
- + Model of
    @@ -137,7 +137,7 @@
- + Expression Semantics
@@ -186,7 +186,7 @@
- + Example
diff --git a/doc/html/fusion/sequences/containers/set.html b/doc/html/fusion/sequences/containers/set.html
index 66d14d15..70065438 100644
--- a/doc/html/fusion/sequences/containers/set.html
+++ b/doc/html/fusion/sequences/containers/set.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Header
 #include <boost/fusion/sequence/container/set.hpp>
 
- + Synopsis
@@ -77,7 +77,7 @@
 #define FUSION_MAX_SET_SIZE 20
 
- + Template parameters
@@ -101,7 +101,7 @@
- + Model of
    @@ -135,7 +135,7 @@
- + Expression Semantics
@@ -184,7 +184,7 @@
- + Example
diff --git a/doc/html/fusion/sequences/containers/vector.html b/doc/html/fusion/sequences/containers/vector.html
index 3f7c078c..369ee0bf 100644
--- a/doc/html/fusion/sequences/containers/vector.html
+++ b/doc/html/fusion/sequences/containers/vector.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

@@ -115,7 +115,7 @@ #define FUSION_MAX_VECTOR_SIZE 20

- + Template parameters
@@ -139,7 +139,7 @@
- + Model of
- + Example
diff --git a/doc/html/fusion/sequences/conversion.html b/doc/html/fusion/sequences/conversion.html
index d4b50b10..231206bd 100644
--- a/doc/html/fusion/sequences/conversion.html
+++ b/doc/html/fusion/sequences/conversion.html
@@ -34,7 +34,7 @@
         types using one of these conversion functions.
       

- + Header

diff --git a/doc/html/fusion/sequences/conversion/functions/as_list.html b/doc/html/fusion/sequences/conversion/functions/as_list.html
index d621e09f..3afd351d 100644
--- a/doc/html/fusion/sequences/conversion/functions/as_list.html
+++ b/doc/html/fusion/sequences/conversion/functions/as_list.html
@@ -26,14 +26,14 @@
 
 
- + Description

Convert a fusion sequence to a list.

- + Synopsis
@@ -46,7 +46,7 @@
 as_list(Sequence const& seq);
 
- + Parameters
@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -83,14 +83,14 @@ seq, to a list.

- + Header
 #include <boost/fusion/sequence/conversion/as_list.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/conversion/functions/as_map.html b/doc/html/fusion/sequences/conversion/functions/as_map.html
index df2cf6da..de6489b5 100644
--- a/doc/html/fusion/sequences/conversion/functions/as_map.html
+++ b/doc/html/fusion/sequences/conversion/functions/as_map.html
@@ -26,14 +26,14 @@
 
 
- + Description

Convert a fusion sequence to a map.

- + Synopsis
@@ -46,7 +46,7 @@
 as_map(Sequence const& seq);
 
- + Parameters
@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -88,14 +88,14 @@ There may be no duplicate fusion::pair key types.

- + Header
 #include <boost/fusion/sequence/conversion/as_map.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/conversion/functions/as_set.html b/doc/html/fusion/sequences/conversion/functions/as_set.html
index 71035a5a..2b89045b 100644
--- a/doc/html/fusion/sequences/conversion/functions/as_set.html
+++ b/doc/html/fusion/sequences/conversion/functions/as_set.html
@@ -26,14 +26,14 @@
 
 
- + Description

Convert a fusion sequence to a set.

- + Synopsis
@@ -46,7 +46,7 @@
 as_set(Sequence const& seq);
 
- + Parameters
@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -87,14 +87,14 @@ key types.

- + Header
 #include <boost/fusion/sequence/conversion/as_set.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/conversion/functions/as_vector.html b/doc/html/fusion/sequences/conversion/functions/as_vector.html
index 0086205f..4a2223ec 100644
--- a/doc/html/fusion/sequences/conversion/functions/as_vector.html
+++ b/doc/html/fusion/sequences/conversion/functions/as_vector.html
@@ -26,14 +26,14 @@
 
 
- + Description

Convert a fusion sequence to a vector.

- + Synopsis
@@ -46,7 +46,7 @@
 as_vector(Sequence const& seq);
 
- + Parameters
@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -83,14 +83,14 @@ seq, to a vector.

- + Header
 #include <boost/fusion/sequence/conversion/as_vector.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_list.html b/doc/html/fusion/sequences/conversion/metafunctions/as_list.html
index 2a0705d6..7ebf6b91 100644
--- a/doc/html/fusion/sequences/conversion/metafunctions/as_list.html
+++ b/doc/html/fusion/sequences/conversion/metafunctions/as_list.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of as_list.

- + Synopsis
@@ -41,7 +41,7 @@
 struct as_list;
 
- + Parameters
@@ -65,7 +65,7 @@
- + Expression Semantics
@@ -81,14 +81,14 @@ Sequence, to a list.

- + Header
 #include <boost/fusion/sequence/conversion/as_list.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_map.html b/doc/html/fusion/sequences/conversion/metafunctions/as_map.html
index d003a331..4dbb9cf0 100644
--- a/doc/html/fusion/sequences/conversion/metafunctions/as_map.html
+++ b/doc/html/fusion/sequences/conversion/metafunctions/as_map.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of as_map.

- + Synopsis
@@ -41,7 +41,7 @@
 struct as_map;
 
- + Parameters
@@ -65,7 +65,7 @@
- + Expression Semantics
@@ -86,14 +86,14 @@ There may be no duplicate fusion::pair key types.

- + Header
 #include <boost/fusion/sequence/conversion/as_map.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_set.html b/doc/html/fusion/sequences/conversion/metafunctions/as_set.html
index d6404857..bcb1923b 100644
--- a/doc/html/fusion/sequences/conversion/metafunctions/as_set.html
+++ b/doc/html/fusion/sequences/conversion/metafunctions/as_set.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of as_set.

- + Synopsis
@@ -41,7 +41,7 @@
 struct as_set;
 
- + Parameters
@@ -65,7 +65,7 @@
- + Expression Semantics
@@ -85,14 +85,14 @@ key types.

- + Header
 #include <boost/fusion/sequence/conversion/as_set.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html b/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html
index 6986569a..808f3ea2 100644
--- a/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html
+++ b/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of as_vector.

- + Synopsis
@@ -41,7 +41,7 @@
 struct as_vector;
 
- + Parameters
@@ -65,7 +65,7 @@
- + Expression Semantics
@@ -81,14 +81,14 @@ Sequence, to a vector.

- + Header
 #include <boost/fusion/sequence/conversion/as_vector.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/generation.html b/doc/html/fusion/sequences/generation.html
index 50802198..3c4ba8c0 100644
--- a/doc/html/fusion/sequences/generation.html
+++ b/doc/html/fusion/sequences/generation.html
@@ -33,7 +33,7 @@
         These are the functions that you can use to generate various forms of Containers from elemental values.
       

- + Header

diff --git a/doc/html/fusion/sequences/generation/functions/list_tie.html b/doc/html/fusion/sequences/generation/functions/list_tie.html
index 2bca6053..67f5e942 100644
--- a/doc/html/fusion/sequences/generation/functions/list_tie.html
+++ b/doc/html/fusion/sequences/generation/functions/list_tie.html
@@ -26,14 +26,14 @@
 
 
- + Description

Constructs a tie using a list sequence.

- + Synopsis
@@ -53,7 +53,7 @@
 #define FUSION_MAX_LIST_SIZE 20
 
- + Parameters
@@ -78,7 +78,7 @@
- + Expression Semantics
@@ -93,14 +93,14 @@ Semantics: Create a list of references from x0, x1,... xN.

- + Header
 #include <boost/fusion/sequence/generation/list_tie.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/generation/functions/make_cons.html b/doc/html/fusion/sequences/generation/functions/make_cons.html
index 8edc62d3..4f8cec19 100644
--- a/doc/html/fusion/sequences/generation/functions/make_cons.html
+++ b/doc/html/fusion/sequences/generation/functions/make_cons.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -35,7 +35,7 @@ (tail).

- + Synopsis
@@ -48,7 +48,7 @@
 make_cons(Car const& car, Cdr const& cdr);
 
- + Parameters
@@ -82,7 +82,7 @@
- + Expression Semantics
@@ -98,21 +98,21 @@ (tail).

- + Header
 #include <boost/fusion/sequence/generation/make_cons.hpp>
 
- + Example
 make_cons('x', make_cons(123))
 
- + See also
diff --git a/doc/html/fusion/sequences/generation/functions/make_list.html b/doc/html/fusion/sequences/generation/functions/make_list.html index 4b2cf54c..bce8e73e 100644 --- a/doc/html/fusion/sequences/generation/functions/make_list.html +++ b/doc/html/fusion/sequences/generation/functions/make_list.html @@ -26,14 +26,14 @@
- + Description

Create a list from one or more values.

- + Synopsis
@@ -53,7 +53,7 @@
 #define FUSION_MAX_LIST_SIZE 20
 
- + Parameters
@@ -78,7 +78,7 @@
- + Expression Semantics
@@ -92,21 +92,21 @@ Semantics: Create a list from x0, x1,... xN.

- + Header
 #include <boost/fusion/sequence/generation/make_list.hpp>
 
- + Example
 make_list(123, "hello", 12.5)
 
- + See also
diff --git a/doc/html/fusion/sequences/generation/functions/make_map.html b/doc/html/fusion/sequences/generation/functions/make_map.html index 737de935..8f7b583d 100644 --- a/doc/html/fusion/sequences/generation/functions/make_map.html +++ b/doc/html/fusion/sequences/generation/functions/make_map.html @@ -26,7 +26,7 @@
- + Description

@@ -34,7 +34,7 @@ pairs.

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

The variadic function accepts 0 to FUSION_MAX_VECTOR_SIZE - [10] + [10] elements, where FUSION_MAX_VECTOR_SIZE is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE @@ -57,7 +57,7 @@ #define FUSION_MAX_VECTOR_SIZE 20

- + Parameters
@@ -91,7 +91,7 @@
- + Expression Semantics
@@ -110,14 +110,14 @@ key types.

- + Header
 #include <boost/fusion/sequence/generation/make_map.hpp>
 
- + Example
@@ -126,7 +126,7 @@
   , make_pair<double>("Men"))
 
- + See also
@@ -136,7 +136,7 @@



-

[10] +

[10] map is implemented in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

diff --git a/doc/html/fusion/sequences/generation/functions/make_set.html b/doc/html/fusion/sequences/generation/functions/make_set.html index 4e56b27b..6d2ef1e2 100644 --- a/doc/html/fusion/sequences/generation/functions/make_set.html +++ b/doc/html/fusion/sequences/generation/functions/make_set.html @@ -26,14 +26,14 @@
- + Description

Create a set from one or more values.

- + Synopsis
@@ -44,7 +44,7 @@
 

The variadic function accepts 0 to FUSION_MAX_VECTOR_SIZE - [9] + [9] elements, where FUSION_MAX_VECTOR_SIZE is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE @@ -54,7 +54,7 @@ #define FUSION_MAX_VECTOR_SIZE 20

- + Parameters
@@ -79,7 +79,7 @@
- + Expression Semantics
@@ -97,21 +97,21 @@ key types.

- + Header
 #include <boost/fusion/sequence/generation/make_set.hpp>
 
- + Example
 make_set(123, "hello", 12.5)
 
- + See also
@@ -120,7 +120,7 @@



-

[9] +

[9] set is implemented in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

diff --git a/doc/html/fusion/sequences/generation/functions/make_vector.html b/doc/html/fusion/sequences/generation/functions/make_vector.html index 8bb6d26a..9aa363ba 100644 --- a/doc/html/fusion/sequences/generation/functions/make_vector.html +++ b/doc/html/fusion/sequences/generation/functions/make_vector.html @@ -26,14 +26,14 @@
- + Description

Create a vector from one or more values.

- + Synopsis
@@ -53,7 +53,7 @@
 #define FUSION_MAX_VECTOR_SIZE 20
 
- + Parameters
@@ -78,7 +78,7 @@
- + Expression Semantics
@@ -92,21 +92,21 @@ Semantics: Create a vector from x0, x1,... xN.

- + Header
 #include <boost/fusion/sequence/generation/make_vector.hpp>
 
- + Example
 make_vector(123, "hello", 12.5)
 
- + See also
diff --git a/doc/html/fusion/sequences/generation/functions/tiers.html b/doc/html/fusion/sequences/generation/functions/tiers.html index a697731b..d3e9b8c8 100644 --- a/doc/html/fusion/sequences/generation/functions/tiers.html +++ b/doc/html/fusion/sequences/generation/functions/tiers.html @@ -48,7 +48,7 @@ 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)) - [11] + [11] .

@@ -66,7 +66,7 @@ when calling functions which return sequences.

- + Ignore

@@ -81,7 +81,7 @@



-

[11] +

[11] see Boost.Ref for details about ref

diff --git a/doc/html/fusion/sequences/generation/functions/vector_tie.html b/doc/html/fusion/sequences/generation/functions/vector_tie.html index 43b257eb..18af356d 100644 --- a/doc/html/fusion/sequences/generation/functions/vector_tie.html +++ b/doc/html/fusion/sequences/generation/functions/vector_tie.html @@ -26,14 +26,14 @@
- + Description

Constructs a tie using a vector sequence.

- + Synopsis
@@ -53,7 +53,7 @@
 #define FUSION_MAX_VECTOR_SIZE 20
 
- + Parameters
@@ -78,7 +78,7 @@
- + Expression Semantics
@@ -93,14 +93,14 @@ Semantics: Create a vector of references from x0, x1,... xN.

- + Header
 #include <boost/fusion/sequence/generation/vector_tie.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/generation/metafunctions/list_tie.html b/doc/html/fusion/sequences/generation/metafunctions/list_tie.html
index bc416d46..696c3337 100644
--- a/doc/html/fusion/sequences/generation/metafunctions/list_tie.html
+++ b/doc/html/fusion/sequences/generation/metafunctions/list_tie.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of list_tie.

- + Synopsis
@@ -52,7 +52,7 @@
 #define FUSION_MAX_LIST_SIZE 20
 
- + Parameters
@@ -75,7 +75,7 @@
- + Expression Semantics
@@ -90,14 +90,14 @@ Semantics: Create a list of references from T0, T1,... TN.

- + Header
 #include <boost/fusion/sequence/generation/list_tie.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_cons.html b/doc/html/fusion/sequences/generation/metafunctions/make_cons.html
index 59a1f54f..2e53657a 100644
--- a/doc/html/fusion/sequences/generation/metafunctions/make_cons.html
+++ b/doc/html/fusion/sequences/generation/metafunctions/make_cons.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of make_cons.

- + Synopsis
@@ -41,7 +41,7 @@
 struct make_cons;
 
- + Parameters
@@ -73,7 +73,7 @@
- + Expression Semantics
@@ -91,14 +91,14 @@ (tail).

- + Header
 #include <boost/fusion/sequence/generation/make_cons.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_list.html b/doc/html/fusion/sequences/generation/metafunctions/make_list.html
index 0c74f039..0f71378d 100644
--- a/doc/html/fusion/sequences/generation/metafunctions/make_list.html
+++ b/doc/html/fusion/sequences/generation/metafunctions/make_list.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of make_list.

- + Synopsis
@@ -52,7 +52,7 @@
 #define FUSION_MAX_LIST_SIZE 20
 
- + Parameters
@@ -75,7 +75,7 @@
- + Expression Semantics
@@ -91,14 +91,14 @@ Semantics: Create a list from T0, T1,... TN.

- + Header
 #include <boost/fusion/sequence/generation/make_list.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_map.html b/doc/html/fusion/sequences/generation/metafunctions/make_map.html
index 722dab78..c04e8222 100644
--- a/doc/html/fusion/sequences/generation/metafunctions/make_map.html
+++ b/doc/html/fusion/sequences/generation/metafunctions/make_map.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of make_map.

- + Synopsis
@@ -45,7 +45,7 @@
 

The variadic function accepts 0 to FUSION_MAX_VECTOR_SIZE - [13] + [13] elements, where FUSION_MAX_VECTOR_SIZE is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE @@ -55,7 +55,7 @@ #define FUSION_MAX_VECTOR_SIZE 20

- + Parameters
@@ -87,7 +87,7 @@
- + Expression Semantics
@@ -107,21 +107,21 @@ key types.

- + Header
 #include <boost/fusion/sequence/generation/make_map.hpp>
 
- + Example
 result_of::make_map<int, double, char, double>::type
 
- + See also
@@ -130,7 +130,7 @@



-

[13] +

[13] map is implemented in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_set.html b/doc/html/fusion/sequences/generation/metafunctions/make_set.html index cfb780e0..adbe76a5 100644 --- a/doc/html/fusion/sequences/generation/metafunctions/make_set.html +++ b/doc/html/fusion/sequences/generation/metafunctions/make_set.html @@ -26,14 +26,14 @@
- + Description

Returns the result type of make_set.

- + Synopsis
@@ -43,7 +43,7 @@
 

The variadic function accepts 0 to FUSION_MAX_VECTOR_SIZE - [12] + [12] elements, where FUSION_MAX_VECTOR_SIZE is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE @@ -53,7 +53,7 @@ #define FUSION_MAX_VECTOR_SIZE 20

- + Parameters
@@ -76,7 +76,7 @@
- + Expression Semantics
@@ -96,14 +96,14 @@ key types.

- + Header
 #include <boost/fusion/sequence/generation/make_set.hpp>
 
- + Example
@@ -111,7 +111,7 @@
 


-

[12] +

[12] set is implemented in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_vector.html b/doc/html/fusion/sequences/generation/metafunctions/make_vector.html index 0164126c..f261bb8e 100644 --- a/doc/html/fusion/sequences/generation/metafunctions/make_vector.html +++ b/doc/html/fusion/sequences/generation/metafunctions/make_vector.html @@ -26,14 +26,14 @@
- + Description

Returns the result type of make_vector.

- + Synopsis
@@ -52,7 +52,7 @@
 #define FUSION_MAX_VECTOR_SIZE 20
 
- + Parameters
@@ -75,7 +75,7 @@
- + Expression Semantics
@@ -91,14 +91,14 @@ Semantics: Create a vector from T0, T1,... TN.

- + Header
 #include <boost/fusion/sequence/generation/make_list.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html b/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html
index 29bdda74..4d3be016 100644
--- a/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html
+++ b/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of vector_tie.

- + Synopsis
@@ -52,7 +52,7 @@
 #define FUSION_MAX_VECTOR_SIZE 20
 
- + Parameters
@@ -75,7 +75,7 @@
- + Expression Semantics
@@ -90,14 +90,14 @@ Semantics: Create a vector of references from T0, T1,... TN.

- + Header
 #include <boost/fusion/sequence/generation/vector_tie.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics.html b/doc/html/fusion/sequences/intrinsics.html
index b4a9ecd5..0e3218a2 100644
--- a/doc/html/fusion/sequences/intrinsics.html
+++ b/doc/html/fusion/sequences/intrinsics.html
@@ -36,11 +36,11 @@
         Intrinsic functions, unlike Algorithms,
         are not generic across the full Sequence
         repertoire. They need to be implemented for each Fusion Sequence
-        [5]
+        [5]
         .
       

- + Header

@@ -48,7 +48,7 @@
 


-

[5] +

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

diff --git a/doc/html/fusion/sequences/intrinsics/functions/at.html b/doc/html/fusion/sequences/intrinsics/functions/at.html index 7a05ec4e..eb158afe 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/at.html +++ b/doc/html/fusion/sequences/intrinsics/functions/at.html @@ -26,14 +26,14 @@
- + Description

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

- + Synopsis
@@ -46,7 +46,7 @@
 at(Sequence const& seq);
 
- + Parameters
@@ -81,7 +81,7 @@
- + Expression Semantics
@@ -107,14 +107,14 @@ deref(advance<N>(begin(s)))
- + Header
 #include <boost/fusion/sequence/intrinsic/at.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/at_c.html b/doc/html/fusion/sequences/intrinsics/functions/at_c.html
index 292901ea..8329abd2 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/at_c.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/at_c.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

- + Synopsis
@@ -46,7 +46,7 @@
 at_c(Sequence const& seq);
 
- + Parameters
@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -106,14 +106,14 @@ deref(advance<N>(begin(s)))
- + Header
 #include <boost/fusion/sequence/intrinsic/at_c.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/at_key.html b/doc/html/fusion/sequences/intrinsics/functions/at_key.html
index 5ccd45e8..de5683f9 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/at_key.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/at_key.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the element associated with a Key from the sequence.

- + Synopsis
@@ -46,7 +46,7 @@
 at_key(Sequence const& seq);
 
- + Parameters
@@ -79,7 +79,7 @@
- + Expression Semantics
@@ -102,14 +102,14 @@ with Key.

- + Header
 #include <boost/fusion/sequence/intrinsic/at_key.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/back.html b/doc/html/fusion/sequences/intrinsics/functions/back.html
index f96f9717..be44c7e2 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/back.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/back.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the last element in the sequence.

- + Synopsis
@@ -46,7 +46,7 @@
 back(Sequence const& seq);
 
- + Parameters
@@ -71,7 +71,7 @@
- + Expression Semantics
@@ -94,14 +94,14 @@ in the sequence.

- + Header
 #include <boost/fusion/sequence/intrinsic/back.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/begin.html b/doc/html/fusion/sequences/intrinsics/functions/begin.html
index 2bb20519..673d9108 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/begin.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/begin.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

- + Synopsis
@@ -46,7 +46,7 @@
 begin(Sequence const& seq);
 
- + Parameters
@@ -72,7 +72,7 @@
- + Expression Semantics
@@ -102,14 +102,14 @@ to the first element in the sequence.

- + Header
 #include <boost/fusion/sequence/intrinsic/begin.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/empty.html b/doc/html/fusion/sequences/intrinsics/functions/empty.html
index b629e544..547686b1 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/empty.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/empty.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Synopsis
@@ -44,7 +44,7 @@
 empty(Sequence const& seq);
 
- + Parameters
@@ -69,7 +69,7 @@
- + Expression Semantics
@@ -84,14 +84,14 @@ to false.

- + Header
 #include <boost/fusion/sequence/intrinsic/empty.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/end.html b/doc/html/fusion/sequences/intrinsics/functions/end.html
index d710a8fa..02d3c204 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/end.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/end.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

- + Synopsis
@@ -46,7 +46,7 @@
 end(Sequence const& seq);
 
- + Parameters
@@ -72,7 +72,7 @@
- + Expression Semantics
@@ -102,14 +102,14 @@ to one element past the end of the sequence.

- + Header
 #include <boost/fusion/sequence/intrinsic/end.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/front.html b/doc/html/fusion/sequences/intrinsics/functions/front.html
index fe90a3c2..5b6c6d19 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/front.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/front.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the first element in the sequence.

- + Synopsis
@@ -46,7 +46,7 @@
 front(Sequence const& seq);
 
- + Parameters
@@ -71,7 +71,7 @@
- + Expression Semantics
@@ -94,14 +94,14 @@ in the sequence.

- + Header
 #include <boost/fusion/sequence/intrinsic/front.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/has_key.html b/doc/html/fusion/sequences/intrinsics/functions/has_key.html
index ef9e6e5d..730a2ce0 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/has_key.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/has_key.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Synopsis
@@ -45,7 +45,7 @@
 has_key(Sequence const& seq);
 
- + Parameters
@@ -78,7 +78,7 @@
- + Expression Semantics
@@ -93,14 +93,14 @@ associated with Key, else, evaluates to false.

- + Header
 #include <boost/fusion/sequence/intrinsic/has_key.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/size.html b/doc/html/fusion/sequences/intrinsics/functions/size.html
index 0d3aa3cd..dcd82a5e 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/size.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/size.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Synopsis
@@ -43,7 +43,7 @@
 size(Sequence const& seq);
 
- + Parameters
@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -83,14 +83,14 @@ in the sequence.

- + Header
 #include <boost/fusion/sequence/intrinsic/size.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/at.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at.html
index e9e81e62..c575c466 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/at.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/at.html
@@ -26,16 +26,16 @@
 
 
- + Description

Returns the result type of at - [6] + [6] .

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

Table 1.25. Parameters

+

Table 1.25. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -95,14 +95,14 @@ using at to access the Nth element of Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/at.hpp>
 
- + Example
@@ -111,7 +111,7 @@
 


-

[6] +

[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 diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html index 06ea8688..705930c4 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html @@ -26,16 +26,16 @@

- + Description

Returns the result type of at_c - [7] + [7] .

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

Table 1.26. Parameters

+

Table 1.26. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -95,14 +95,14 @@ using at_c to access the Mth element of Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/at.hpp>
 
- + Example
@@ -111,7 +111,7 @@
 


-

[7] +

[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 diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html index d1362302..0b4a245b 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html @@ -26,16 +26,16 @@

- + Description

Returns the result type of at_key - [8] + [8] .

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

Table 1.30. Parameters

+

Table 1.30. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -97,14 +97,14 @@ Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/at_key.hpp>
 
- + Example
@@ -113,7 +113,7 @@
 


-

[8] +

[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 diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/back.html b/doc/html/fusion/sequences/intrinsics/metafunctions/back.html index d25e9514..347538c6 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/back.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/back.html @@ -26,14 +26,14 @@

- + Description

Returns the result type of back.

- + Synopsis
@@ -44,7 +44,7 @@
 };
 
-

Table 1.23. Parameters

+

Table 1.23. Parameters

@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -83,14 +83,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>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html b/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html
index 81d449c6..fb7f379d 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of begin.

- + Synopsis
@@ -44,7 +44,7 @@
 };
 
-

Table 1.19. Parameters

+

Table 1.19. Parameters

@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -84,14 +84,14 @@ to the first element of Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/begin.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html b/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html
index 723595f2..2893570a 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of empty.

- + Synopsis
@@ -44,7 +44,7 @@
 };
 
-

Table 1.21. Parameters

+

Table 1.21. Parameters

@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -84,14 +84,14 @@ mpl::false_ otherwise.

- + Header
 #include <boost/fusion/sequence/intrinsic/empty.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/end.html b/doc/html/fusion/sequences/intrinsics/metafunctions/end.html
index 57812d7e..871ad5a6 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/end.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/end.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of end.

- + Synopsis
@@ -44,7 +44,7 @@
 };
 
-

Table 1.20. Parameters

+

Table 1.20. Parameters

@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -84,14 +84,14 @@ one past the end of Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/end.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/front.html b/doc/html/fusion/sequences/intrinsics/metafunctions/front.html
index 30d55a72..372191ac 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/front.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/front.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of front.

- + Synopsis
@@ -44,7 +44,7 @@
 };
 
-

Table 1.22. Parameters

+

Table 1.22. Parameters

@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -84,14 +84,14 @@ Equivalent to result_of::deref<result_of::begin<Seq>::type>::type.

- + Header
 #include <boost/fusion/sequence/intrinsic/front.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html
index 454f6550..1f23bcef 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of has_key.

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

Table 1.29. Parameters

+

Table 1.29. Parameters

@@ -78,7 +78,7 @@
- + Expression Semantics
@@ -95,14 +95,14 @@ mpl::false_ otherwise.

- + Header
 #include <boost/fusion/sequence/intrinsic/has_key.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/size.html b/doc/html/fusion/sequences/intrinsics/metafunctions/size.html
index 0da16a6e..29f2c18a 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/size.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/size.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of size.

- + Synopsis
@@ -44,7 +44,7 @@
 };
 
-

Table 1.24. Parameters

+

Table 1.24. Parameters

@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -83,14 +83,14 @@ in Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/size.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html
index cb0b07c3..25e78bd3 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the actual type at a given index from the Sequence.

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

Table 1.27. Parameters

+

Table 1.27. Parameters

@@ -78,7 +78,7 @@
- + Expression Semantics
@@ -93,14 +93,14 @@ the Nth element of Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/value_at.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html
index 55bc3c41..60deaccc 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the actual type at a given index from the Sequence.

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

Table 1.28. Parameters

+

Table 1.28. Parameters

@@ -78,7 +78,7 @@
- + Expression Semantics
@@ -93,14 +93,14 @@ the Mth element of Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/value_at.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html
index 8a0c9c61..e073a890 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the actual element type associated with a Key from the Sequence.

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

Table 1.31. Parameters

+

Table 1.31. Parameters

@@ -78,7 +78,7 @@
- + Expression Semantics
@@ -94,14 +94,14 @@ in Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/value_at_key.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators/comparison.html b/doc/html/fusion/sequences/operators/comparison.html
index c28055ae..d91263a3 100644
--- a/doc/html/fusion/sequences/operators/comparison.html
+++ b/doc/html/fusion/sequences/operators/comparison.html
@@ -48,7 +48,7 @@
           only until the result is clear.
         

- + Header
diff --git a/doc/html/fusion/sequences/operators/comparison/equal.html b/doc/html/fusion/sequences/operators/comparison/equal.html
index 5c57fba7..1ff05e6d 100644
--- a/doc/html/fusion/sequences/operators/comparison/equal.html
+++ b/doc/html/fusion/sequences/operators/comparison/equal.html
@@ -27,14 +27,14 @@
 
 
- + Description

Compare two sequences for equality.

- + Synopsis
@@ -43,7 +43,7 @@
 operator==(Seq1 const& a, Seq2 const& b);
 
- + Parameters
@@ -67,7 +67,7 @@
- + Expression Semantics
@@ -103,14 +103,14 @@ true.

- + Header
 #include <boost/fusion/sequence/comparison/equal_to.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators/comparison/greater_than.html b/doc/html/fusion/sequences/operators/comparison/greater_than.html
index 389215db..272fb007 100644
--- a/doc/html/fusion/sequences/operators/comparison/greater_than.html
+++ b/doc/html/fusion/sequences/operators/comparison/greater_than.html
@@ -34,7 +34,7 @@
             Lexicographically compare two sequences.
           

- + Synopsis
@@ -43,7 +43,7 @@
 operator>(Seq1 const& a, Seq2 const& b);
 
- + Parameters
@@ -67,7 +67,7 @@
- + Expression Semantics
@@ -95,14 +95,14 @@ Semantics: Returns b < a.

- + Header
 #include <boost/fusion/sequence/comparison/less_equal.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html b/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html
index 06a1feac..654ebb43 100644
--- a/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html
+++ b/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html
@@ -33,7 +33,7 @@
             Lexicographically compare two sequences.
           

- + Synopsis
@@ -42,7 +42,7 @@
 operator>=(Seq1 const& a, Seq2 const& b);
 
- + Parameters
@@ -66,7 +66,7 @@
- + Expression Semantics
@@ -94,14 +94,14 @@ Semantics: Returns !(a < b).

- + Header
 #include <boost/fusion/sequence/comparison/greater_equal.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators/comparison/less_than.html b/doc/html/fusion/sequences/operators/comparison/less_than.html
index 67a89b6a..72a6d38d 100644
--- a/doc/html/fusion/sequences/operators/comparison/less_than.html
+++ b/doc/html/fusion/sequences/operators/comparison/less_than.html
@@ -34,7 +34,7 @@
             Lexicographically compare two sequences.
           

- + Synopsis
@@ -43,7 +43,7 @@
 operator<(Seq1 const& a, Seq2 const& b);
 
- + Parameters
@@ -67,7 +67,7 @@
- + Expression Semantics
@@ -97,14 +97,14 @@ and b.

- + Header
 #include <boost/fusion/sequence/comparison/less.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators/comparison/less_than_equal.html b/doc/html/fusion/sequences/operators/comparison/less_than_equal.html
index 75689835..7591a912 100644
--- a/doc/html/fusion/sequences/operators/comparison/less_than_equal.html
+++ b/doc/html/fusion/sequences/operators/comparison/less_than_equal.html
@@ -34,7 +34,7 @@
             Lexicographically compare two sequences.
           

- + Synopsis
@@ -43,7 +43,7 @@
 operator<=(Seq1 const& a, Seq2 const& b);
 
- + Parameters
@@ -67,7 +67,7 @@
- + Expression Semantics
@@ -95,14 +95,14 @@ Semantics: Returns !(b < a).

- + Header
 #include <boost/fusion/sequence/comparison/less_equal.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators/comparison/not_equal.html b/doc/html/fusion/sequences/operators/comparison/not_equal.html
index 963f8463..edd32f59 100644
--- a/doc/html/fusion/sequences/operators/comparison/not_equal.html
+++ b/doc/html/fusion/sequences/operators/comparison/not_equal.html
@@ -33,7 +33,7 @@
             Compare two sequences for inequality.
           

- + Synopsis
@@ -42,7 +42,7 @@
 operator!=(Seq1 const& a, Seq2 const& b);
 
- + Parameters
@@ -66,7 +66,7 @@
- + Expression Semantics
@@ -97,14 +97,14 @@ Returns !(a == b).

- + Header
 #include <boost/fusion/sequence/comparison/not_equal_to.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators/i_o.html b/doc/html/fusion/sequences/operators/i_o.html
index d4cc871c..10e1f93d 100644
--- a/doc/html/fusion/sequences/operators/i_o.html
+++ b/doc/html/fusion/sequences/operators/i_o.html
@@ -115,7 +115,7 @@
           representation may not be unambiguously parseable.
         

- + Header
diff --git a/doc/html/fusion/sequences/operators/i_o/in.html b/doc/html/fusion/sequences/operators/i_o/in.html
index f8389827..534bf0d1 100644
--- a/doc/html/fusion/sequences/operators/i_o/in.html
+++ b/doc/html/fusion/sequences/operators/i_o/in.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ stream.

- + Synopsis
@@ -43,7 +43,7 @@
 operator>>(IStream& is, Sequence& seq);
 
- + Parameters
@@ -73,7 +73,7 @@
- + Expression Semantics
@@ -88,14 +88,14 @@ call is >> e.

- + Header
 #include <boost/fusion/sequence/io/in.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators/i_o/out.html b/doc/html/fusion/sequences/operators/i_o/out.html
index ba126f09..8cc8aa5d 100644
--- a/doc/html/fusion/sequences/operators/i_o/out.html
+++ b/doc/html/fusion/sequences/operators/i_o/out.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ stream.

- + Synopsis
@@ -43,7 +43,7 @@
 operator<<(OStream& os, Sequence& seq);
 
- + Parameters
@@ -73,7 +73,7 @@
- + Expression Semantics
@@ -88,14 +88,14 @@ call os << e.

- + Header
 #include <boost/fusion/sequence/io/out.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/views.html b/doc/html/fusion/sequences/views.html
index 981c0f30..49e6ce55 100644
--- a/doc/html/fusion/sequences/views.html
+++ b/doc/html/fusion/sequences/views.html
@@ -44,7 +44,7 @@
         very cheap to copy and be passed around by value.
       

- + Header

diff --git a/doc/html/fusion/sequences/views/filter_view.html b/doc/html/fusion/sequences/views/filter_view.html
index f9151f74..ac590014 100644
--- a/doc/html/fusion/sequences/views/filter_view.html
+++ b/doc/html/fusion/sequences/views/filter_view.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -37,14 +37,14 @@ only those elements for which its predicate evaluates to mpl::true_.

- + Header
 #include <boost/fusion/sequence/view/filter_view.hpp>
 
- + Synopsis
@@ -52,7 +52,7 @@
 struct filter_view;
 
- + Template parameters
@@ -87,7 +87,7 @@
- + Model of
- + Example
diff --git a/doc/html/fusion/sequences/views/iterator_range.html b/doc/html/fusion/sequences/views/iterator_range.html
index 52f0ba19..049e9044 100644
--- a/doc/html/fusion/sequences/views/iterator_range.html
+++ b/doc/html/fusion/sequences/views/iterator_range.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,14 +34,14 @@ a sub-range of its underlying sequence delimited by a pair of iterators.

- + Header
 #include <boost/fusion/sequence/view/iterator_range.hpp>
 
- + Synopsis
@@ -49,7 +49,7 @@
 struct iterator_range;
 
- + Template parameters
@@ -82,7 +82,7 @@
- + Model of
- + Example
diff --git a/doc/html/fusion/sequences/views/joint_view.html b/doc/html/fusion/sequences/views/joint_view.html
index a6b7628b..37938576 100644
--- a/doc/html/fusion/sequences/views/joint_view.html
+++ b/doc/html/fusion/sequences/views/joint_view.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,14 +34,14 @@ which is a concatenation of two sequences.

- + Header
 #include <boost/fusion/sequence/view/joint_view.hpp>
 
- + Synopsis
@@ -49,7 +49,7 @@
 struct joint_view;
 
- + Template parameters
@@ -86,7 +86,7 @@
- + Model of
- + Example
diff --git a/doc/html/fusion/sequences/views/reverse_view.html b/doc/html/fusion/sequences/views/reverse_view.html
index b46e00dc..fa2b1844 100644
--- a/doc/html/fusion/sequences/views/reverse_view.html
+++ b/doc/html/fusion/sequences/views/reverse_view.html
@@ -31,14 +31,14 @@
           and the last element will be its first.
         

- + Header
 #include <boost/fusion/sequence/view/reverse_view.hpp>
 
- + Synopsis
@@ -46,7 +46,7 @@
 struct reverse_view;
 
- + Template parameters
@@ -72,7 +72,7 @@
- + Model of
- + Example
diff --git a/doc/html/fusion/sequences/views/single_view.html b/doc/html/fusion/sequences/views/single_view.html
index c958dd36..45380fe1 100644
--- a/doc/html/fusion/sequences/views/single_view.html
+++ b/doc/html/fusion/sequences/views/single_view.html
@@ -30,14 +30,14 @@
           a value as a single element sequence.
         

- + Header
 #include <boost/fusion/sequence/view/single_view.hpp>
 
- + Synopsis
@@ -45,7 +45,7 @@
 struct single_view;
 
- + Template parameters
@@ -68,7 +68,7 @@
- + Model of
- + Example
diff --git a/doc/html/fusion/sequences/views/transform_view.html b/doc/html/fusion/sequences/views/transform_view.html
index d217a513..b6cbee38 100644
--- a/doc/html/fusion/sequences/views/transform_view.html
+++ b/doc/html/fusion/sequences/views/transform_view.html
@@ -34,14 +34,14 @@
           Traversal Concept) of its underlying sequence.
         

- + Header
 #include <boost/fusion/sequence/view/transform_view.hpp>
 
- + Synopsis

@@ -59,7 +59,7 @@ struct transform_view;

- + Template parameters
@@ -114,7 +114,7 @@
- + Model of
  • @@ -169,7 +169,7 @@
- + Expression Semantics
@@ -232,7 +232,7 @@
- + Example
diff --git a/doc/html/fusion/sequences/views/zip_view.html b/doc/html/fusion/sequences/views/zip_view.html
index a77f9c97..534d46ab 100644
--- a/doc/html/fusion/sequences/views/zip_view.html
+++ b/doc/html/fusion/sequences/views/zip_view.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -37,14 +37,14 @@ of references to the component _sequence_s.

- + Header
 #include <boost/fusion/sequence/view/zip_view.hpp>
 
- + Synopsis
@@ -52,7 +52,7 @@
 struct zip_view;
 
- + Template parameters
@@ -77,7 +77,7 @@
- + Model of
- + Example
diff --git a/doc/html/fusion/support/category_of.html b/doc/html/fusion/support/category_of.html
index 5fd196e5..219e3609 100644
--- a/doc/html/fusion/support/category_of.html
+++ b/doc/html/fusion/support/category_of.html
@@ -26,7 +26,7 @@
 
 

- + Description

@@ -36,7 +36,7 @@ Sequence Concepts).

- + Synopsis

@@ -50,7 +50,7 @@
 }
 

- + Parameters

@@ -72,7 +72,7 @@

- + Expression Semantics

@@ -138,14 +138,14 @@ of a particular Sequence or Iterator.

- + Header

 #include <boost/fusion/support/category_of.hpp>
 

- + Example

diff --git a/doc/html/fusion/support/is_sequence.html b/doc/html/fusion/support/is_sequence.html
index a78f927e..82fc1695 100644
--- a/doc/html/fusion/support/is_sequence.html
+++ b/doc/html/fusion/support/is_sequence.html
@@ -26,7 +26,7 @@
 
 

- + Description

@@ -37,7 +37,7 @@ conforming sequences.

- + Synopsis

@@ -51,7 +51,7 @@
 }
 

- + Parameters

@@ -73,7 +73,7 @@

- + Expression Semantics

@@ -90,14 +90,14 @@ otherwise.

- + Header

 #include <boost/fusion/support/is_sequence.hpp>
 

- + Example

diff --git a/doc/html/fusion/support/is_view.html b/doc/html/fusion/support/is_view.html
index c5cab447..9d595da6 100644
--- a/doc/html/fusion/support/is_view.html
+++ b/doc/html/fusion/support/is_view.html
@@ -26,7 +26,7 @@
 
 

- + Description

@@ -40,7 +40,7 @@ specialized to accomodate clients providing Fusion conforming views.

- + Synopsis

@@ -54,7 +54,7 @@
 }
 

- + Parameters

@@ -76,7 +76,7 @@

- + Expression Semantics

@@ -92,14 +92,14 @@
         otherwise.
       

- + Header

 #include <boost/fusion/support/is_view.hpp>
 

- + Example

diff --git a/doc/html/fusion/support/pair.html b/doc/html/fusion/support/pair.html
index 5baf2f76..f45a3612 100644
--- a/doc/html/fusion/support/pair.html
+++ b/doc/html/fusion/support/pair.html
@@ -26,7 +26,7 @@
 
 

- + Description

@@ -37,7 +37,7 @@ for example.

- + Synopsis

@@ -61,7 +61,7 @@
 make_pair(Second const &);
 

- + Template parameters

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

- + Expression Semantics

@@ -193,14 +193,14 @@

- + Header

 #include <boost/fusion/support/pair.hpp>
 

- + Example

diff --git a/doc/html/fusion/support/tag_of.html b/doc/html/fusion/support/tag_of.html
index c2fab867..e337efa4 100644
--- a/doc/html/fusion/support/tag_of.html
+++ b/doc/html/fusion/support/tag_of.html
@@ -26,7 +26,7 @@
 
 

- + Description

@@ -40,7 +40,7 @@ conforming sequences.

- + Synopsis

@@ -54,7 +54,7 @@
 }
 

- + Parameters

@@ -76,7 +76,7 @@

- + Expression Semantics

@@ -90,14 +90,14 @@
         with T.
       

- + Header

 #include <boost/fusion/support/tag_of.hpp>
 

- + Example

diff --git a/doc/html/fusion/tuples/class_template_tuple.html b/doc/html/fusion/tuples/class_template_tuple.html
index 1970eb79..ac817cef 100644
--- a/doc/html/fusion/tuples/class_template_tuple.html
+++ b/doc/html/fusion/tuples/class_template_tuple.html
@@ -48,7 +48,7 @@
         in future releases of fusion.
       

- + Synopsis

@@ -60,7 +60,7 @@
 class tuple;
 

- + Header

diff --git a/doc/html/fusion/tuples/class_template_tuple/construction.html b/doc/html/fusion/tuples/class_template_tuple/construction.html
index d1a85f06..e788eea4 100644
--- a/doc/html/fusion/tuples/class_template_tuple/construction.html
+++ b/doc/html/fusion/tuples/class_template_tuple/construction.html
@@ -27,7 +27,7 @@
 
 
- + Description

@@ -38,7 +38,7 @@ in this section.

- + Specification
diff --git a/doc/html/fusion/tuples/class_template_tuple/element_access.html b/doc/html/fusion/tuples/class_template_tuple/element_access.html index 60663fcb..51b0a7b0 100644 --- a/doc/html/fusion/tuples/class_template_tuple/element_access.html +++ b/doc/html/fusion/tuples/class_template_tuple/element_access.html @@ -31,7 +31,7 @@ access">Element access
- + Description

@@ -40,7 +40,7 @@ function to provide access to it's elements by zero based numeric index.

- + Specification
diff --git a/doc/html/fusion/tuples/class_template_tuple/relational_operators.html b/doc/html/fusion/tuples/class_template_tuple/relational_operators.html
index 38dc69f8..f73a5290 100644
--- a/doc/html/fusion/tuples/class_template_tuple/relational_operators.html
+++ b/doc/html/fusion/tuples/class_template_tuple/relational_operators.html
@@ -30,7 +30,7 @@
         operators">Relational
         operators
- + Description

@@ -38,7 +38,7 @@ Tuple provides the standard boolean relational operators.

- + Specification
diff --git a/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html b/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html index ccc32603..a88104b9 100644 --- a/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html +++ b/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html @@ -30,7 +30,7 @@ creation functions">Tuple creation functions
- + Description

@@ -40,7 +40,7 @@ functions are described in this section.

- + Specification
diff --git a/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html b/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html
index 777d9633..8ef28681 100644
--- a/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html
+++ b/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html
@@ -31,7 +31,7 @@
         helper classes">Tuple
         helper classes
 
- + Description

@@ -40,7 +40,7 @@ tuple size, and the element types.

- + Specification
diff --git a/doc/html/fusion/tuples/pairs.html b/doc/html/fusion/tuples/pairs.html
index 6dc3172d..25cf95ad 100644
--- a/doc/html/fusion/tuples/pairs.html
+++ b/doc/html/fusion/tuples/pairs.html
@@ -27,7 +27,7 @@
 
 

- + Description

@@ -36,7 +36,7 @@ as if it were a 2 element tuple.

- + Specification

diff --git a/doc/html/index.html b/doc/html/index.html
index 90c61af8..5b571db7 100644
--- a/doc/html/index.html
+++ b/doc/html/index.html
@@ -30,7 +30,7 @@
 
 
-

+

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

@@ -57,7 +57,7 @@
- +

Last revised: November 26, 2006 at 22:34:33 GMT

Last revised: December 14, 2006 at 08:32:59 GMT


diff --git a/example/extension/Jamfile.v2 b/example/extension/Jamfile similarity index 100% rename from example/extension/Jamfile.v2 rename to example/extension/Jamfile diff --git a/example/performance/Jamfile.v2 b/example/performance/Jamfile similarity index 100% rename from example/performance/Jamfile.v2 rename to example/performance/Jamfile diff --git a/test/Jamfile.v2 b/test/Jamfile similarity index 100% rename from test/Jamfile.v2 rename to test/Jamfile From 2fba7fb2f3909f099b38172ea224ed3e522fde47 Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Mon, 18 Dec 2006 21:09:53 +0000 Subject: [PATCH 063/234] added initial version of deque [SVN r36457] --- include/boost/fusion/sequence/container.hpp | 1 + .../boost/fusion/sequence/container/deque.hpp | 15 +++ .../container/deque/back_extended_deque.hpp | 36 ++++++ .../fusion/sequence/container/deque/deque.hpp | 85 ++++++++++++++ .../container/deque/deque_iterator.hpp | 107 ++++++++++++++++++ .../container/deque/detail/at_impl.hpp | 60 ++++++++++ .../container/deque/detail/begin_impl.hpp | 47 ++++++++ .../deque/detail/deque_forward_ctor.hpp | 32 ++++++ .../deque/detail/deque_initial_size.hpp | 34 ++++++ .../deque/detail/deque_keyed_values.hpp | 76 +++++++++++++ .../deque/detail/deque_keyed_values_call.hpp | 39 +++++++ .../container/deque/detail/end_impl.hpp | 47 ++++++++ .../container/deque/detail/keyed_element.hpp | 96 ++++++++++++++++ .../container/deque/detail/value_at_impl.hpp | 44 +++++++ .../container/deque/front_extended_deque.hpp | 37 ++++++ .../sequence/container/deque/limits.hpp | 16 +++ include/boost/fusion/sequence/conversion.hpp | 1 + .../fusion/sequence/conversion/as_deque.hpp | 48 ++++++++ .../sequence/conversion/detail/as_deque.hpp | 103 +++++++++++++++++ .../fusion/sequence/generation/deque_tie.hpp | 73 ++++++++++++ .../fusion/sequence/generation/make_deque.hpp | 93 +++++++++++++++ .../sequence/intrinsic/mpl/detail/as.hpp | 7 ++ 22 files changed, 1097 insertions(+) create mode 100644 include/boost/fusion/sequence/container/deque.hpp create mode 100644 include/boost/fusion/sequence/container/deque/back_extended_deque.hpp create mode 100644 include/boost/fusion/sequence/container/deque/deque.hpp create mode 100644 include/boost/fusion/sequence/container/deque/deque_iterator.hpp create mode 100644 include/boost/fusion/sequence/container/deque/detail/at_impl.hpp create mode 100644 include/boost/fusion/sequence/container/deque/detail/begin_impl.hpp create mode 100644 include/boost/fusion/sequence/container/deque/detail/deque_forward_ctor.hpp create mode 100644 include/boost/fusion/sequence/container/deque/detail/deque_initial_size.hpp create mode 100644 include/boost/fusion/sequence/container/deque/detail/deque_keyed_values.hpp create mode 100644 include/boost/fusion/sequence/container/deque/detail/deque_keyed_values_call.hpp create mode 100644 include/boost/fusion/sequence/container/deque/detail/end_impl.hpp create mode 100644 include/boost/fusion/sequence/container/deque/detail/keyed_element.hpp create mode 100644 include/boost/fusion/sequence/container/deque/detail/value_at_impl.hpp create mode 100644 include/boost/fusion/sequence/container/deque/front_extended_deque.hpp create mode 100644 include/boost/fusion/sequence/container/deque/limits.hpp create mode 100644 include/boost/fusion/sequence/conversion/as_deque.hpp create mode 100644 include/boost/fusion/sequence/conversion/detail/as_deque.hpp create mode 100644 include/boost/fusion/sequence/generation/deque_tie.hpp create mode 100644 include/boost/fusion/sequence/generation/make_deque.hpp diff --git a/include/boost/fusion/sequence/container.hpp b/include/boost/fusion/sequence/container.hpp index c34fc492..bd07e8c8 100644 --- a/include/boost/fusion/sequence/container.hpp +++ b/include/boost/fusion/sequence/container.hpp @@ -12,5 +12,6 @@ #include #include #include +#include #endif diff --git a/include/boost/fusion/sequence/container/deque.hpp b/include/boost/fusion/sequence/container/deque.hpp new file mode 100644 index 00000000..de5faba9 --- /dev/null +++ b/include/boost/fusion/sequence/container/deque.hpp @@ -0,0 +1,15 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_SEQUENCE_CONTAINER_DEQUE_24112006_2036) +#define BOOST_FUSION_SEQUENCE_CONTAINER_DEQUE_24112006_2036 + +#include + +#endif + diff --git a/include/boost/fusion/sequence/container/deque/back_extended_deque.hpp b/include/boost/fusion/sequence/container/deque/back_extended_deque.hpp new file mode 100644 index 00000000..f9dbf489 --- /dev/null +++ b/include/boost/fusion/sequence/container/deque/back_extended_deque.hpp @@ -0,0 +1,36 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_BACK_EXTENDED_DEQUE_26112006_2209) +#define BOOST_FUSION_BACK_EXTENDED_DEQUE_26112006_2209 + +#include +#include +#include +#include + +#include +#include + +namespace boost { namespace fusion { + template + struct back_extended_deque + : detail::keyed_element + { + typedef detail::keyed_element base; + typedef typename Deque::next_down next_down; + typedef mpl::int_ >::value> next_up; + typedef mpl::plus::type, mpl::int_<1> > size; + + back_extended_deque(Deque const& deque, typename add_reference::type>::type t) + : base(t, deque) + {} + }; +}} + +#endif diff --git a/include/boost/fusion/sequence/container/deque/deque.hpp b/include/boost/fusion/sequence/container/deque/deque.hpp new file mode 100644 index 00000000..cb36bb17 --- /dev/null +++ b/include/boost/fusion/sequence/container/deque/deque.hpp @@ -0,0 +1,85 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_DEQUE_26112006_1649) +#define BOOST_FUSION_DEQUE_26112006_1649 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +namespace boost { namespace fusion { + + struct deque_tag; + struct void_; + + template + struct deque; + + template + struct deque + : + detail::deque_keyed_values::type + { + typedef deque_tag fusion_tag; + typedef typename detail::deque_keyed_values::type base; + typedef typename detail::deque_initial_size::type size; + typedef mpl::int_ next_up; + typedef mpl::int_< + mpl::if_ >, mpl::int_<0>, mpl::int_<-1> >::type::value> next_down; + typedef mpl::false_ is_view; + +#include + + deque() + {} + + explicit deque(typename add_reference::type>::type t0) + : base(t0, detail::nil_keyed_element()) + {} + + template + deque(deque const& seq) + : base(seq) + {} + + template + deque& + operator=(deque const& rhs) + { + base::operator=(rhs); + return *this; + } + + template + deque& + operator=(T const& rhs) + { + base::operator=(rhs); + return *this; + } + + }; +}} + +#endif diff --git a/include/boost/fusion/sequence/container/deque/deque_iterator.hpp b/include/boost/fusion/sequence/container/deque/deque_iterator.hpp new file mode 100644 index 00000000..deb80eb4 --- /dev/null +++ b/include/boost/fusion/sequence/container/deque/deque_iterator.hpp @@ -0,0 +1,107 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_DEQUE_ITERATOR_26112006_2154) +#define BOOST_FUSION_DEQUE_ITERATOR_26112006_2154 + +#include +#include +#include +#include + +namespace boost { namespace fusion { + + struct bidirectional_traversal_tag; + + template + struct deque_iterator + : iterator_facade, bidirectional_traversal_tag> + { + typedef Seq sequence; + typedef mpl::int_ index; + + deque_iterator(Seq& seq) + : seq_(seq) + {} + + template + struct value_of + : detail::keyed_element_value_at< + typename Iterator::sequence, typename Iterator::index> + {}; + + template + struct deref + { + typedef typename detail::keyed_element_value_at< + typename Iterator::sequence, typename Iterator::index>::type element_type; + + typedef typename add_reference< + typename mpl::eval_if< + is_const, + add_const, + mpl::identity >::type>::type type; + + static type + call(Iterator const& it) + { + return it.seq_.get(typename Iterator::index()); + } + }; + + template + struct advance + { + typedef typename Iterator::index index; + typedef typename Iterator::sequence sequence; + typedef deque_iterator type; + + static type + call(Iterator const& i) + { + return type(i.seq_); + } + }; + + 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(); + } + }; + + template + struct equal_to + : mpl::equal_to + {}; + + Seq& seq_; + }; + +}} + +#endif diff --git a/include/boost/fusion/sequence/container/deque/detail/at_impl.hpp b/include/boost/fusion/sequence/container/deque/detail/at_impl.hpp new file mode 100644 index 00000000..0b872d7b --- /dev/null +++ b/include/boost/fusion/sequence/container/deque/detail/at_impl.hpp @@ -0,0 +1,60 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_DEQUE_AT_IMPL_09122006_2017) +#define BOOST_FUSION_DEQUE_AT_IMPL_09122006_2017 + +#include + +#include +#include +#include +#include + +#include +#include +#include + +namespace boost { namespace fusion { + + struct deque_tag; + + namespace extension + { + template + struct at_impl; + + template<> + struct at_impl + { + template + struct apply + { + typedef typename Sequence::next_up next_up; + typedef typename Sequence::next_down next_down; + BOOST_MPL_ASSERT_RELATION(next_down::value, !=, next_up::value); + + typedef mpl::plus > offset; + typedef mpl::int_::value> adjusted_index; + typedef typename detail::keyed_element_value_at::type element_type; + typedef typename add_reference< + typename mpl::eval_if< + is_const, + add_const, + mpl::identity >::type>::type type; + + static type call(Sequence& seq) + { + return seq.get(adjusted_index()); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/container/deque/detail/begin_impl.hpp b/include/boost/fusion/sequence/container/deque/detail/begin_impl.hpp new file mode 100644 index 00000000..a2ff2641 --- /dev/null +++ b/include/boost/fusion/sequence/container/deque/detail/begin_impl.hpp @@ -0,0 +1,47 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_DEQUE_BEGIN_IMPL_09122006_2034) +#define BOOST_FUSION_DEQUE_BEGIN_IMPL_09122006_2034 + +#include + +#include +#include + +namespace boost { namespace fusion { + + struct deque_tag; + + namespace extension + { + template + struct begin_impl; + + template<> + struct begin_impl + { + template + struct apply + { + typedef typename mpl::if_< + mpl::equal_to, + deque_iterator, + deque_iterator< + Sequence, mpl::plus >::value> >::type type; + + static type call(Sequence& seq) + { + return type(seq); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/container/deque/detail/deque_forward_ctor.hpp b/include/boost/fusion/sequence/container/deque/detail/deque_forward_ctor.hpp new file mode 100644 index 00000000..ef25dcee --- /dev/null +++ b/include/boost/fusion/sequence/container/deque/detail/deque_forward_ctor.hpp @@ -0,0 +1,32 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_PP_IS_ITERATING) +#if !defined(BOOST_FUSION_SEQUENCE_DEQUE_DETAIL_DEQUE_FORWARD_CTOR_04122006_2212) +#define BOOST_FUSION_SEQUENCE_DEQUE_DETAIL_DEQUE_FORWARD_CTOR_04122006_2212 + +#include +#include +#include + +#define BOOST_PP_FILENAME_1 \ + +#define BOOST_PP_ITERATION_LIMITS (2, FUSION_MAX_DEQUE_SIZE) +#include BOOST_PP_ITERATE() + +#endif +#else + +#define N BOOST_PP_ITERATION() + +deque(BOOST_PP_ENUM_BINARY_PARAMS(N, typename add_reference::type>::type t)) + : base(detail::deque_keyed_values::call(BOOST_PP_ENUM_PARAMS(N, t))) +{} + +#undef N +#endif diff --git a/include/boost/fusion/sequence/container/deque/detail/deque_initial_size.hpp b/include/boost/fusion/sequence/container/deque/detail/deque_initial_size.hpp new file mode 100644 index 00000000..202a9f10 --- /dev/null +++ b/include/boost/fusion/sequence/container/deque/detail/deque_initial_size.hpp @@ -0,0 +1,34 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_DEQUE_DETAIL_DEQUE_INITIAL_SIZE_26112006_2139) +#define BOOST_FUSION_DEQUE_DETAIL_DEQUE_INITIAL_SIZE_26112006_2139 + +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion { + + struct void_; + +namespace detail { + + template + struct deque_initial_size + { + typedef mpl::vector args; + typedef typename mpl::find::type first_void; + typedef typename mpl::distance::type, first_void>::type type; + }; +}}} + +#endif diff --git a/include/boost/fusion/sequence/container/deque/detail/deque_keyed_values.hpp b/include/boost/fusion/sequence/container/deque/detail/deque_keyed_values.hpp new file mode 100644 index 00000000..47421f7c --- /dev/null +++ b/include/boost/fusion/sequence/container/deque/detail/deque_keyed_values.hpp @@ -0,0 +1,76 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_DEQUE_DETAIL_DEQUE_KEYED_VALUES_26112006_1330) +#define BOOST_FUSION_DEQUE_DETAIL_DEQUE_KEYED_VALUES_26112006_1330 + +#include +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#define FUSION_VOID(z, n, _) void_ + +namespace boost { namespace fusion { + + struct void_; + +namespace detail { + + template + struct keyed_element; + + struct nil_keyed_element; + + template + struct deque_keyed_values_impl; + + template + struct deque_keyed_values_impl + { + typedef nil_keyed_element type; + + static type call() + { + return type(); + } + }; + + template + struct deque_keyed_values_impl + { + typedef mpl::int_ >::value> next_index; + + typedef typename deque_keyed_values_impl< + next_index, + BOOST_PP_ENUM_SHIFTED_PARAMS(FUSION_MAX_DEQUE_SIZE, T)>::type tail; + typedef keyed_element type; + +#include + + }; + + template + struct deque_keyed_values + : deque_keyed_values_impl, BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, T)> + {}; + +}}} + +#undef FUSION_VOID + +#endif diff --git a/include/boost/fusion/sequence/container/deque/detail/deque_keyed_values_call.hpp b/include/boost/fusion/sequence/container/deque/detail/deque_keyed_values_call.hpp new file mode 100644 index 00000000..7d1f1542 --- /dev/null +++ b/include/boost/fusion/sequence/container/deque/detail/deque_keyed_values_call.hpp @@ -0,0 +1,39 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_PP_IS_ITERATING) +#if !defined(BOOST_FUSION_SEQUENCE_DEQUE_DETAIL_DEQUE_KEYED_VALUES_CALL_04122006_2211) +#define BOOST_FUSION_SEQUENCE_DEQUE_DETAIL_DEQUE_KEYED_VALUES_CALL_04122006_2211 + +#include +#include +#include + +#define BOOST_PP_FILENAME_1 \ + +#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_DEQUE_SIZE) +#include BOOST_PP_ITERATE() + +#endif +#else + +#define N BOOST_PP_ITERATION() + +static type call(BOOST_PP_ENUM_BINARY_PARAMS(N, typename add_reference::type>::type t)) +{ + return type(t0, + deque_keyed_values_impl< + next_index +#if N > 1 + , BOOST_PP_ENUM_SHIFTED_PARAMS(N, T) +#endif + >::call(BOOST_PP_ENUM_SHIFTED_PARAMS(N, t))); +} + +#undef N +#endif diff --git a/include/boost/fusion/sequence/container/deque/detail/end_impl.hpp b/include/boost/fusion/sequence/container/deque/detail/end_impl.hpp new file mode 100644 index 00000000..1816ae6e --- /dev/null +++ b/include/boost/fusion/sequence/container/deque/detail/end_impl.hpp @@ -0,0 +1,47 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_DEQUE_END_IMPL_09122006_2034) +#define BOOST_FUSION_DEQUE_END_IMPL_09122006_2034 + +#include + +#include +#include + +namespace boost { namespace fusion { + + struct deque_tag; + + namespace extension + { + template + struct end_impl; + + template<> + struct end_impl + { + template + struct apply + { + typedef typename mpl::if_< + mpl::equal_to, + deque_iterator, + deque_iterator< + Sequence, Sequence::next_up::value> >::type type; + + static type call(Sequence& seq) + { + return type(seq); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/container/deque/detail/keyed_element.hpp b/include/boost/fusion/sequence/container/deque/detail/keyed_element.hpp new file mode 100644 index 00000000..0acc07bd --- /dev/null +++ b/include/boost/fusion/sequence/container/deque/detail/keyed_element.hpp @@ -0,0 +1,96 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_DEQUE_DETAIL_KEYED_ELEMENT_26112006_1330) +#define BOOST_FUSION_DEQUE_DETAIL_KEYED_ELEMENT_26112006_1330 + +#include +#include +#include + +namespace boost { namespace fusion { + + struct fusion_sequence_tag; + +namespace detail { + + struct nil_keyed_element + : sequence_base + { + typedef fusion_sequence_tag tag; + void get(); + }; + + template + struct keyed_element + : Rest + { + typedef Rest base; + typedef fusion_sequence_tag tag; + using Rest::get; + + template + keyed_element(keyed_element const& rhs) + : Rest(rhs.get_base()), value_(rhs.value_) + {} + + Rest const get_base() const + { + return *this; + } + + typename add_reference::type>::type get(Key) const + { + return value_; + } + + typename add_reference::type get(Key) + { + return value_; + } + + keyed_element(typename add_reference::type>::type value, Rest const& rest) + : Rest(rest), value_(value) + {} + + keyed_element() + : Rest(), value_() + {} + + template + keyed_element& operator=(keyed_element const& rhs) + { + base::operator=(static_cast(rhs)); // cast for msvc-7.1 + value_ = rhs.value_; + return *this; + } + + keyed_element& operator=(keyed_element const& rhs) + { + base::operator=(rhs); + value_ = rhs.value_; + return *this; + } + + Value value_; + }; + + template + struct keyed_element_value_at + : keyed_element_value_at + {}; + + template + struct keyed_element_value_at, Key> + { + typedef Value type; + }; + +}}} + +#endif diff --git a/include/boost/fusion/sequence/container/deque/detail/value_at_impl.hpp b/include/boost/fusion/sequence/container/deque/detail/value_at_impl.hpp new file mode 100644 index 00000000..3686fd0c --- /dev/null +++ b/include/boost/fusion/sequence/container/deque/detail/value_at_impl.hpp @@ -0,0 +1,44 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_DEQUE_VALUE_AT_IMPL_08122006_0756) +#define BOOST_FUSION_DEQUE_VALUE_AT_IMPL_08122006_0756 + +#include + +#include +#include + +namespace boost { namespace fusion { + + struct deque_tag; + + namespace extension + { + template + struct value_at_impl; + + template<> + struct value_at_impl + { + template + struct apply + { + typedef typename Sequence::next_up next_up; + typedef typename Sequence::next_down next_down; + BOOST_MPL_ASSERT_RELATION(next_down::value, !=, next_up::value); + + typedef mpl::plus > offset; + typedef mpl::int_::value> adjusted_index; + typedef typename detail::keyed_element_value_at::type type; + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/container/deque/front_extended_deque.hpp b/include/boost/fusion/sequence/container/deque/front_extended_deque.hpp new file mode 100644 index 00000000..802cb0d3 --- /dev/null +++ b/include/boost/fusion/sequence/container/deque/front_extended_deque.hpp @@ -0,0 +1,37 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_FRONT_EXTENDED_DEQUE_26112006_2209) +#define BOOST_FUSION_FRONT_EXTENDED_DEQUE_26112006_2209 + +#include +#include +#include +#include +#include + +#include +#include + +namespace boost { namespace fusion { + template + struct front_extended_deque + : detail::keyed_element + { + typedef detail::keyed_element base; + typedef mpl::int_ >::value> next_down; + typedef typename Deque::next_up next_up; + typedef mpl::plus::type, mpl::int_<1> > size; + + front_extended_deque(Deque const& deque, typename add_reference::type>::type t) + : base(t, deque) + {} + }; +}} + +#endif diff --git a/include/boost/fusion/sequence/container/deque/limits.hpp b/include/boost/fusion/sequence/container/deque/limits.hpp new file mode 100644 index 00000000..f11c31b3 --- /dev/null +++ b/include/boost/fusion/sequence/container/deque/limits.hpp @@ -0,0 +1,16 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_DEQUE_LIMITS_26112006_1737) +#define BOOST_FUSION_DEQUE_LIMITS_26112006_1737 + +#if !defined(FUSION_MAX_DEQUE_SIZE) +#define FUSION_MAX_DEQUE_SIZE 10 +#endif + +#endif diff --git a/include/boost/fusion/sequence/conversion.hpp b/include/boost/fusion/sequence/conversion.hpp index 471bd27d..9105e839 100644 --- a/include/boost/fusion/sequence/conversion.hpp +++ b/include/boost/fusion/sequence/conversion.hpp @@ -12,5 +12,6 @@ #include #include #include +#include #endif diff --git a/include/boost/fusion/sequence/conversion/as_deque.hpp b/include/boost/fusion/sequence/conversion/as_deque.hpp new file mode 100644 index 00000000..1774c13d --- /dev/null +++ b/include/boost/fusion/sequence/conversion/as_deque.hpp @@ -0,0 +1,48 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_AS_DEQUE_20061213_2207) +#define FUSION_AS_DEQUE_20061213_2207 + +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + namespace result_of + { + template + struct as_deque + { + typedef typename detail::as_deque::value> gen; + typedef typename gen:: + template apply::type>::type + type; + }; + } + + template + inline typename result_of::as_deque::type + as_deque(Sequence& seq) + { + typedef typename result_of::as_deque::gen gen; + return gen::call(fusion::begin(seq)); + } + + template + inline typename result_of::as_deque::type + as_deque(Sequence const& seq) + { + typedef typename result_of::as_deque::gen gen; + return gen::call(fusion::begin(seq)); + } +}} + +#endif diff --git a/include/boost/fusion/sequence/conversion/detail/as_deque.hpp b/include/boost/fusion/sequence/conversion/detail/as_deque.hpp new file mode 100644 index 00000000..59861bf6 --- /dev/null +++ b/include/boost/fusion/sequence/conversion/detail/as_deque.hpp @@ -0,0 +1,103 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#ifndef BOOST_PP_IS_ITERATING +#if !defined(FUSION_AS_DEQUE_20061213_2210) +#define FUSION_AS_DEQUE_20061213_2210 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion { namespace detail +{ + template + struct as_deque; + + template <> + struct as_deque<0> + { + template + struct apply + { + typedef deque<> type; + }; + + template + static typename apply::type + call(Iterator) + { + return deque<>(); + } + }; + +#define BOOST_FUSION_NEXT_ITERATOR(z, n, data) \ + typedef typename fusion::result_of::next::type \ + BOOST_PP_CAT(I, BOOST_PP_INC(n)); + +#define BOOST_FUSION_NEXT_CALL_ITERATOR(z, n, data) \ + typename gen::BOOST_PP_CAT(I, BOOST_PP_INC(n)) \ + BOOST_PP_CAT(i, BOOST_PP_INC(n)) = fusion::next(BOOST_PP_CAT(i, n)); + +#define BOOST_FUSION_VALUE_OF_ITERATOR(z, n, data) \ + typedef typename fusion::result_of::value_of::type \ + BOOST_PP_CAT(T, n); + +#define BOOST_PP_FILENAME_1 +#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_DEQUE_SIZE) +#include BOOST_PP_ITERATE() + +#undef BOOST_FUSION_NEXT_ITERATOR +#undef BOOST_FUSION_NEXT_CALL_ITERATOR +#undef BOOST_FUSION_VALUE_OF_ITERATOR + +}}} + +#endif +#else // defined(BOOST_PP_IS_ITERATING) +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// + +#define N BOOST_PP_ITERATION() + + template <> + struct as_deque + { + template + struct apply + { + BOOST_PP_REPEAT(N, BOOST_FUSION_NEXT_ITERATOR, _) + BOOST_PP_REPEAT(N, BOOST_FUSION_VALUE_OF_ITERATOR, _) + typedef deque type; + }; + + template + static typename apply::type + call(Iterator const& i0) + { + typedef apply gen; + typedef typename gen::type result; + BOOST_PP_REPEAT(BOOST_PP_DEC(N), BOOST_FUSION_NEXT_CALL_ITERATOR, _) + return result(BOOST_PP_ENUM_PARAMS(N, *i)); + } + }; + +#undef N +#endif // defined(BOOST_PP_IS_ITERATING) + diff --git a/include/boost/fusion/sequence/generation/deque_tie.hpp b/include/boost/fusion/sequence/generation/deque_tie.hpp new file mode 100644 index 00000000..95598afa --- /dev/null +++ b/include/boost/fusion/sequence/generation/deque_tie.hpp @@ -0,0 +1,73 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#ifndef BOOST_PP_IS_ITERATING +#if !defined(FUSION_DEQUE_TIE_07192005_1242) +#define FUSION_DEQUE_TIE_07192005_1242 + +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct void_; + + namespace result_of + { + template < + BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( + FUSION_MAX_DEQUE_SIZE, typename T, void_) + , typename Extra = void_ + > + struct deque_tie; + } + +#define BOOST_FUSION_REF(z, n, data) BOOST_PP_CAT(T, n)& + +#define BOOST_PP_FILENAME_1 +#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_DEQUE_SIZE) +#include BOOST_PP_ITERATE() + +#undef BOOST_FUSION_REF + +}} + +#endif +#else // defined(BOOST_PP_IS_ITERATING) +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// + +#define N BOOST_PP_ITERATION() + + namespace result_of + { + template + struct deque_tie + { + typedef deque type; + }; + } + + template + inline deque + deque_tie(BOOST_PP_ENUM_BINARY_PARAMS(N, T, & _)) + { + return deque( + BOOST_PP_ENUM_PARAMS(N, _)); + } + +#undef N +#endif // defined(BOOST_PP_IS_ITERATING) + diff --git a/include/boost/fusion/sequence/generation/make_deque.hpp b/include/boost/fusion/sequence/generation/make_deque.hpp new file mode 100644 index 00000000..3c89aac2 --- /dev/null +++ b/include/boost/fusion/sequence/generation/make_deque.hpp @@ -0,0 +1,93 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#ifndef BOOST_PP_IS_ITERATING +#if !defined(FUSION_MAKE_DEQUE_07162005_0243) +#define FUSION_MAKE_DEQUE_07162005_0243 + +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct void_; + + namespace result_of + { + template < + BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( + FUSION_MAX_DEQUE_SIZE, typename T, void_) + , typename Extra = void_ + > + struct make_deque; + + template <> + struct make_deque<> + { + typedef deque<> type; + }; + } + + inline deque<> + make_deque() + { + return deque<>(); + } + +#define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \ + typename detail::as_fusion_element::type + +#define BOOST_PP_FILENAME_1 +#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_DEQUE_SIZE) +#include BOOST_PP_ITERATE() + +#undef BOOST_FUSION_AS_FUSION_ELEMENT + +}} + +#endif +#else // defined(BOOST_PP_IS_ITERATING) +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// + +#define N BOOST_PP_ITERATION() + + namespace result_of + { + template + struct make_deque + { + typedef deque type; + }; + } + + template + inline deque + make_deque(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& _)) + { + return deque( + BOOST_PP_ENUM_PARAMS(N, _)); + } + +#undef N +#endif // defined(BOOST_PP_IS_ITERATING) + diff --git a/include/boost/fusion/sequence/intrinsic/mpl/detail/as.hpp b/include/boost/fusion/sequence/intrinsic/mpl/detail/as.hpp index 9659f325..c257844b 100644 --- a/include/boost/fusion/sequence/intrinsic/mpl/detail/as.hpp +++ b/include/boost/fusion/sequence/intrinsic/mpl/detail/as.hpp @@ -43,6 +43,13 @@ namespace boost { namespace fusion { namespace detail struct apply : result_of::as_vector {}; }; + template<> + struct as_impl + { + template + struct apply : result_of::as_deque {}; + }; + template struct as { From 6ed683b610082d778c06d21ee97899ab142e97af Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Mon, 18 Dec 2006 22:36:43 +0000 Subject: [PATCH 064/234] added deque tests [SVN r36458] --- test/Jamfile | 11 ++++ test/sequence/back_extended_deque.cpp | 75 ++++++++++++++++++++++++++ test/sequence/deque_comparison.cpp | 21 ++++++++ test/sequence/deque_construction.cpp | 20 +++++++ test/sequence/deque_copy.cpp | 23 ++++++++ test/sequence/deque_iterator.cpp | 20 +++++++ test/sequence/deque_make.cpp | 21 ++++++++ test/sequence/deque_misc.cpp | 22 ++++++++ test/sequence/deque_mutate.cpp | 21 ++++++++ test/sequence/deque_tie.cpp | 24 +++++++++ test/sequence/deque_value_at.cpp | 21 ++++++++ test/sequence/front_extended_deque.cpp | 75 ++++++++++++++++++++++++++ 12 files changed, 354 insertions(+) create mode 100644 test/sequence/back_extended_deque.cpp create mode 100644 test/sequence/deque_comparison.cpp create mode 100644 test/sequence/deque_construction.cpp create mode 100644 test/sequence/deque_copy.cpp create mode 100644 test/sequence/deque_iterator.cpp create mode 100644 test/sequence/deque_make.cpp create mode 100644 test/sequence/deque_misc.cpp create mode 100644 test/sequence/deque_mutate.cpp create mode 100644 test/sequence/deque_tie.cpp create mode 100644 test/sequence/deque_value_at.cpp create mode 100644 test/sequence/front_extended_deque.cpp diff --git a/test/Jamfile b/test/Jamfile index 496697f9..26c62df0 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -61,6 +61,17 @@ import testing ; [ run sequence/list_mutate.cpp : : : : ] [ run sequence/list_tie.cpp : : : : ] [ run sequence/list_value_at.cpp : : : : ] + [ run sequence/deque_comparison.cpp : : : : ] + [ run sequence/deque_construction.cpp : : : : ] + [ run sequence/deque_copy.cpp : : : : ] + [ run sequence/deque_iterator.cpp : : : : ] + [ run sequence/deque_make.cpp : : : : ] + [ run sequence/deque_misc.cpp : : : : ] + [ run sequence/deque_mutate.cpp : : : : ] + [ run sequence/deque_tie.cpp : : : : ] + [ run sequence/deque_value_at.cpp : : : : ] + [ run sequence/front_extended_deque.cpp : : : : ] + [ run sequence/back_extended_deque.cpp : : : : ] [ run sequence/make_list.cpp : : : : ] [ run sequence/make_vector.cpp : : : : ] [ run sequence/map.cpp : : : : ] diff --git a/test/sequence/back_extended_deque.cpp b/test/sequence/back_extended_deque.cpp new file mode 100644 index 00000000..2bd5b47c --- /dev/null +++ b/test/sequence/back_extended_deque.cpp @@ -0,0 +1,75 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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 + +int main() +{ + using namespace boost::fusion; + { + typedef deque initial_deque_type; + initial_deque_type initial_deque(1, 'a'); + typedef back_extended_deque extended_type; + extended_type extended(initial_deque, 101L); + + BOOST_TEST(size(extended) == 3); + BOOST_TEST(extended == make_vector(1, 'a', 101L)); + BOOST_TEST(*begin(extended) == 1); + BOOST_TEST(*next(begin(extended)) == 'a'); + BOOST_TEST(*prior(end(extended)) == 101L); + BOOST_TEST(distance(begin(extended), end(extended)) == 3); + BOOST_TEST(*advance_c<2>(begin(extended)) == 101L); + } + { + namespace mpl = boost::mpl; + typedef deque initial_deque_type; + typedef back_extended_deque extended_type; + + BOOST_MPL_ASSERT((boost::is_same::type, int>)); + BOOST_MPL_ASSERT((boost::is_same::type, char>)); + BOOST_MPL_ASSERT((boost::is_same::type, long>)); + BOOST_MPL_ASSERT((boost::is_same::type>::type, int>)); + BOOST_MPL_ASSERT((mpl::equal_to::type, mpl::int_<3> >)); + } + { + char ch('a'); + long l(101L); + int i(1); + typedef deque initial_deque_type; + initial_deque_type initial_deque(i, ch); + typedef back_extended_deque extended_type; + extended_type extended(initial_deque, l); + BOOST_TEST(extended == make_vector(1, 'a', 101L)); + + char ch2('b'); + long l2(202L); + int i2(2); + extended_type extended2(initial_deque_type(i2, ch2), l2); + + extended = extended2; + + BOOST_TEST(extended == make_vector(2, 'b', 202L)); + + BOOST_TEST(i == i2); + BOOST_TEST(ch == ch2); + BOOST_TEST(l == l2); + } + return boost::report_errors(); +} diff --git a/test/sequence/deque_comparison.cpp b/test/sequence/deque_comparison.cpp new file mode 100644 index 00000000..156e82d8 --- /dev/null +++ b/test/sequence/deque_comparison.cpp @@ -0,0 +1,21 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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 + +#define FUSION_SEQUENCE deque +#include "comparison.hpp" + +int +main() +{ + equality_test(); + ordering_test(); + return boost::report_errors(); +} diff --git a/test/sequence/deque_construction.cpp b/test/sequence/deque_construction.cpp new file mode 100644 index 00000000..08e8d2f2 --- /dev/null +++ b/test/sequence/deque_construction.cpp @@ -0,0 +1,20 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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 + +#define FUSION_SEQUENCE deque +#include "construction.hpp" + +int +main() +{ + test(); + return boost::report_errors(); +} diff --git a/test/sequence/deque_copy.cpp b/test/sequence/deque_copy.cpp new file mode 100644 index 00000000..03401efd --- /dev/null +++ b/test/sequence/deque_copy.cpp @@ -0,0 +1,23 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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 + +#define FUSION_SEQUENCE deque +#include "copy.hpp" + +int +main() +{ + test(); + return boost::report_errors(); +} + diff --git a/test/sequence/deque_iterator.cpp b/test/sequence/deque_iterator.cpp new file mode 100644 index 00000000..be9137a0 --- /dev/null +++ b/test/sequence/deque_iterator.cpp @@ -0,0 +1,20 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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 + +#define FUSION_SEQUENCE deque +#define FUSION_TRAVERSAL_TAG bidirectional_traversal_tag +#include "./iterator.hpp" + +int +main() +{ + test(); + return boost::report_errors(); +} diff --git a/test/sequence/deque_make.cpp b/test/sequence/deque_make.cpp new file mode 100644 index 00000000..624446a3 --- /dev/null +++ b/test/sequence/deque_make.cpp @@ -0,0 +1,21 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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 + +#define FUSION_SEQUENCE deque +#include "make.hpp" + +int +main() +{ + test(); + return boost::report_errors(); +} diff --git a/test/sequence/deque_misc.cpp b/test/sequence/deque_misc.cpp new file mode 100644 index 00000000..cd18270b --- /dev/null +++ b/test/sequence/deque_misc.cpp @@ -0,0 +1,22 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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 + +#define FUSION_SEQUENCE deque +#include "misc.hpp" + +int +main() +{ + test(); + return boost::report_errors(); +} + diff --git a/test/sequence/deque_mutate.cpp b/test/sequence/deque_mutate.cpp new file mode 100644 index 00000000..516a4b4d --- /dev/null +++ b/test/sequence/deque_mutate.cpp @@ -0,0 +1,21 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 + + Use, modification and distribution is 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 + +#define FUSION_SEQUENCE deque +#include "mutate.hpp" + +int +main() +{ + test(); + return boost::report_errors(); +} + diff --git a/test/sequence/deque_tie.cpp b/test/sequence/deque_tie.cpp new file mode 100644 index 00000000..42c2404f --- /dev/null +++ b/test/sequence/deque_tie.cpp @@ -0,0 +1,24 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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 + +#define FUSION_SEQUENCE deque +#include "tie.hpp" + +int +main() +{ + test(); + return boost::report_errors(); +} + diff --git a/test/sequence/deque_value_at.cpp b/test/sequence/deque_value_at.cpp new file mode 100644 index 00000000..a444118b --- /dev/null +++ b/test/sequence/deque_value_at.cpp @@ -0,0 +1,21 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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 + +#define FUSION_SEQUENCE deque +#include "value_at.hpp" + +int +main() +{ + test(); + return boost::report_errors(); +} + diff --git a/test/sequence/front_extended_deque.cpp b/test/sequence/front_extended_deque.cpp new file mode 100644 index 00000000..51618d49 --- /dev/null +++ b/test/sequence/front_extended_deque.cpp @@ -0,0 +1,75 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Järvi + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Use, modification and distribution is 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 + +int main() +{ + using namespace boost::fusion; + { + typedef deque initial_deque_type; + initial_deque_type initial_deque('a', 101L); + typedef front_extended_deque extended_type; + extended_type extended(initial_deque, 1); + + BOOST_TEST(size(extended) == 3); + BOOST_TEST(extended == make_vector(1, 'a', 101L)); + BOOST_TEST(*begin(extended) == 1); + BOOST_TEST(*next(begin(extended)) == 'a'); + BOOST_TEST(*prior(end(extended)) == 101L); + BOOST_TEST(distance(begin(extended), end(extended)) == 3); + BOOST_TEST(*advance_c<2>(begin(extended)) == 101L); + } + { + namespace mpl = boost::mpl; + typedef deque initial_deque_type; + typedef front_extended_deque extended_type; + + BOOST_MPL_ASSERT((boost::is_same::type, int>)); + BOOST_MPL_ASSERT((boost::is_same::type, char>)); + BOOST_MPL_ASSERT((boost::is_same::type, long>)); + BOOST_MPL_ASSERT((boost::is_same::type>::type, int>)); + BOOST_MPL_ASSERT((mpl::equal_to::type, mpl::int_<3> >)); + } + { + char ch('a'); + long l(101L); + int i(1); + typedef deque initial_deque_type; + initial_deque_type initial_deque(ch, l); + typedef front_extended_deque extended_type; + extended_type extended(initial_deque, i); + BOOST_TEST(extended == make_vector(1, 'a', 101L)); + + char ch2('b'); + long l2(202L); + int i2(2); + extended_type extended2(initial_deque_type(ch2, l2), i2); + + extended = extended2; + + BOOST_TEST(extended == make_vector(2, 'b', 202L)); + + BOOST_TEST(i == i2); + BOOST_TEST(ch == ch2); + BOOST_TEST(l == l2); + } + return boost::report_errors(); +} From ef48d728efc6dea173a62c530144faf0a41b488f Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Tue, 19 Dec 2006 14:46:40 +0000 Subject: [PATCH 065/234] fixing level at which sequence base is applied [SVN r36460] --- .../fusion/sequence/container/deque/back_extended_deque.hpp | 4 +++- include/boost/fusion/sequence/container/deque/deque.hpp | 5 ++++- .../fusion/sequence/container/deque/detail/keyed_element.hpp | 2 -- .../fusion/sequence/container/deque/front_extended_deque.hpp | 5 ++++- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/include/boost/fusion/sequence/container/deque/back_extended_deque.hpp b/include/boost/fusion/sequence/container/deque/back_extended_deque.hpp index f9dbf489..f028dd1f 100644 --- a/include/boost/fusion/sequence/container/deque/back_extended_deque.hpp +++ b/include/boost/fusion/sequence/container/deque/back_extended_deque.hpp @@ -13,6 +13,7 @@ #include #include #include +#include #include #include @@ -20,7 +21,8 @@ namespace boost { namespace fusion { template struct back_extended_deque - : detail::keyed_element + : detail::keyed_element, + sequence_base > { typedef detail::keyed_element base; typedef typename Deque::next_down next_down; diff --git a/include/boost/fusion/sequence/container/deque/deque.hpp b/include/boost/fusion/sequence/container/deque/deque.hpp index cb36bb17..2dde4d81 100644 --- a/include/boost/fusion/sequence/container/deque/deque.hpp +++ b/include/boost/fusion/sequence/container/deque/deque.hpp @@ -28,6 +28,8 @@ #include #include +#include + namespace boost { namespace fusion { struct deque_tag; @@ -39,7 +41,8 @@ namespace boost { namespace fusion { template struct deque : - detail::deque_keyed_values::type + detail::deque_keyed_values::type, + sequence_base > { typedef deque_tag fusion_tag; typedef typename detail::deque_keyed_values::type base; diff --git a/include/boost/fusion/sequence/container/deque/detail/keyed_element.hpp b/include/boost/fusion/sequence/container/deque/detail/keyed_element.hpp index 0acc07bd..4244c529 100644 --- a/include/boost/fusion/sequence/container/deque/detail/keyed_element.hpp +++ b/include/boost/fusion/sequence/container/deque/detail/keyed_element.hpp @@ -9,7 +9,6 @@ #if !defined(BOOST_FUSION_DEQUE_DETAIL_KEYED_ELEMENT_26112006_1330) #define BOOST_FUSION_DEQUE_DETAIL_KEYED_ELEMENT_26112006_1330 -#include #include #include @@ -20,7 +19,6 @@ namespace boost { namespace fusion { namespace detail { struct nil_keyed_element - : sequence_base { typedef fusion_sequence_tag tag; void get(); diff --git a/include/boost/fusion/sequence/container/deque/front_extended_deque.hpp b/include/boost/fusion/sequence/container/deque/front_extended_deque.hpp index 802cb0d3..b3a3bec6 100644 --- a/include/boost/fusion/sequence/container/deque/front_extended_deque.hpp +++ b/include/boost/fusion/sequence/container/deque/front_extended_deque.hpp @@ -18,10 +18,13 @@ #include #include +#include + namespace boost { namespace fusion { template struct front_extended_deque - : detail::keyed_element + : detail::keyed_element, + sequence_base > { typedef detail::keyed_element base; typedef mpl::int_ >::value> next_down; From 2be540e903ac892eab8191c4bf07c7ca6713c445 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Mon, 1 Jan 2007 02:23:51 +0000 Subject: [PATCH 066/234] some updates [SVN r36555] --- doc/algorithms.qbk | 2 +- doc/fusion.qbk | 2 +- doc/html/fusion/algorithms.html | 6 +- doc/html/fusion/algorithms/concepts.html | 12 +-- ...morphic_function_object.html => poly.html} | 32 ++++---- doc/html/fusion/algorithms/iteration.html | 10 +-- .../iteration/functions/accumulate.html | 30 +++---- .../algorithms/iteration/functions/fold.html | 28 +++---- .../iteration/functions/for_each.html | 14 ++-- .../iteration/metafunctions/accumulate.html | 20 ++--- .../iteration/metafunctions/fold.html | 20 ++--- .../iteration/metafunctions/for_each.html | 12 +-- doc/html/fusion/algorithms/query.html | 2 +- .../algorithms/query/functions/all.html | 14 ++-- .../algorithms/query/functions/any.html | 14 ++-- .../algorithms/query/functions/count.html | 16 ++-- .../algorithms/query/functions/count_if.html | 14 ++-- .../algorithms/query/functions/find.html | 16 ++-- .../algorithms/query/functions/find_if.html | 14 ++-- .../algorithms/query/functions/none.html | 16 ++-- .../algorithms/query/metafunctions/all.html | 20 ++--- .../algorithms/query/metafunctions/any.html | 20 ++--- .../algorithms/query/metafunctions/count.html | 12 +-- .../query/metafunctions/count_if.html | 12 +-- .../algorithms/query/metafunctions/find.html | 12 +-- .../query/metafunctions/find_if.html | 12 +-- .../algorithms/query/metafunctions/none.html | 22 +++--- .../fusion/algorithms/transformation.html | 2 +- .../transformation/functions/clear.html | 14 ++-- .../transformation/functions/erase.html | 14 ++-- .../transformation/functions/erase_key.html | 16 ++-- .../transformation/functions/filter.html | 16 ++-- .../transformation/functions/filter_if.html | 14 ++-- .../transformation/functions/insert.html | 14 ++-- .../functions/insert_range.html | 14 ++-- .../transformation/functions/join.html | 14 ++-- .../transformation/functions/pop_back.html | 14 ++-- .../transformation/functions/pop_front.html | 14 ++-- .../transformation/functions/push_back.html | 14 ++-- .../transformation/functions/push_front.html | 14 ++-- .../transformation/functions/remove.html | 16 ++-- .../transformation/functions/remove_if.html | 17 ++-- .../transformation/functions/replace.html | 16 ++-- .../transformation/functions/replace_if.html | 14 ++-- .../transformation/functions/reverse.html | 14 ++-- .../transformation/functions/transform.html | 39 +++++---- .../transformation/functions/zip.html | 21 ++--- .../transformation/metafunctions/clear.html | 12 +-- .../transformation/metafunctions/erase.html | 12 +-- .../metafunctions/erase_key.html | 12 +-- .../transformation/metafunctions/filter.html | 15 ++-- .../metafunctions/filter_if.html | 12 +-- .../transformation/metafunctions/insert.html | 12 +-- .../metafunctions/insert_range.html | 12 +-- .../transformation/metafunctions/join.html | 10 +-- .../metafunctions/pop_back.html | 12 +-- .../metafunctions/pop_front.html | 12 +-- .../metafunctions/push_back.html | 12 +-- .../metafunctions/push_front.html | 12 +-- .../transformation/metafunctions/remove.html | 15 ++-- .../metafunctions/remove_if.html | 12 +-- .../transformation/metafunctions/replace.html | 12 +-- .../metafunctions/replace_if.html | 20 ++--- .../transformation/metafunctions/reverse.html | 12 +-- .../metafunctions/transform.html | 24 +++--- .../transformation/metafunctions/zip.html | 18 +++-- doc/html/fusion/extension.html | 18 ++--- doc/html/fusion/introduction.html | 3 +- doc/html/fusion/iterators.html | 2 +- .../concepts/bidirectional_iterator.html | 19 ++--- .../iterators/concepts/forward_iterator.html | 64 ++++++++------- .../concepts/random_access_iterator.html | 16 ++-- .../fusion/iterators/functions/advance.html | 12 +-- .../fusion/iterators/functions/advance_c.html | 12 +-- .../fusion/iterators/functions/deref.html | 12 +-- .../fusion/iterators/functions/distance.html | 12 +-- doc/html/fusion/iterators/functions/next.html | 12 +-- .../fusion/iterators/functions/prior.html | 12 +-- .../iterators/metafunctions/advance.html | 12 +-- .../iterators/metafunctions/advance_c.html | 14 ++-- .../fusion/iterators/metafunctions/deref.html | 12 +-- .../iterators/metafunctions/distance.html | 12 +-- .../iterators/metafunctions/equal_to.html | 12 +-- .../fusion/iterators/metafunctions/next.html | 12 +-- .../fusion/iterators/metafunctions/prior.html | 12 +-- .../iterators/metafunctions/value_of.html | 12 +-- .../operators/operator_equality.html | 10 +-- .../operators/operator_inequality.html | 10 +-- .../operators/operator_unary_star.html | 12 +-- doc/html/fusion/notes.html | 23 +++--- doc/html/fusion/organization.html | 12 +-- doc/html/fusion/preface.html | 10 +-- doc/html/fusion/quick_start.html | 18 ++--- doc/html/fusion/sequences.html | 2 +- doc/html/fusion/sequences/adapted.html | 6 +- .../sequences/adapted/boost__array.html | 8 +- .../sequences/adapted/boost__tuple.html | 75 ++++++++++++++++++ .../sequences/adapted/boost__variant.html | 79 +++++++++++++++++++ .../sequences/adapted/mpl_sequence.html | 8 +- .../fusion/sequences/adapted/std__pair.html | 11 +-- doc/html/fusion/sequences/concepts.html | 4 +- .../concepts/associative_sequence.html | 35 ++++---- .../concepts/bidirectional_sequence.html | 16 ++-- .../sequences/concepts/forward_sequence.html | 25 +++--- .../concepts/random_access_sequence.html | 30 +++---- doc/html/fusion/sequences/containers.html | 2 +- .../fusion/sequences/containers/cons.html | 27 ++++--- .../fusion/sequences/containers/list.html | 27 ++++--- doc/html/fusion/sequences/containers/map.html | 29 ++++--- doc/html/fusion/sequences/containers/set.html | 29 ++++--- .../fusion/sequences/containers/vector.html | 25 +++--- doc/html/fusion/sequences/conversion.html | 2 +- .../conversion/functions/as_list.html | 12 +-- .../conversion/functions/as_map.html | 12 +-- .../conversion/functions/as_set.html | 12 +-- .../conversion/functions/as_vector.html | 12 +-- .../conversion/metafunctions/as_list.html | 12 +-- .../conversion/metafunctions/as_map.html | 12 +-- .../conversion/metafunctions/as_set.html | 12 +-- .../conversion/metafunctions/as_vector.html | 12 +-- doc/html/fusion/sequences/generation.html | 2 +- .../generation/functions/list_tie.html | 28 ++++--- .../generation/functions/make_cons.html | 16 ++-- .../generation/functions/make_list.html | 32 ++++---- .../generation/functions/make_map.html | 50 +++++++----- .../generation/functions/make_set.html | 36 +++++---- .../generation/functions/make_vector.html | 32 ++++---- .../sequences/generation/functions/tiers.html | 8 +- .../generation/functions/vector_tie.html | 28 ++++--- .../generation/metafunctions/list_tie.html | 24 +++--- .../generation/metafunctions/make_cons.html | 12 +-- .../generation/metafunctions/make_list.html | 24 +++--- .../generation/metafunctions/make_map.html | 40 +++++----- .../generation/metafunctions/make_set.html | 28 ++++--- .../generation/metafunctions/make_vector.html | 24 +++--- .../generation/metafunctions/vector_tie.html | 24 +++--- doc/html/fusion/sequences/intrinsics.html | 6 +- .../sequences/intrinsics/functions/at.html | 18 +++-- .../sequences/intrinsics/functions/at_c.html | 19 +++-- .../intrinsics/functions/at_key.html | 17 ++-- .../sequences/intrinsics/functions/back.html | 17 ++-- .../sequences/intrinsics/functions/begin.html | 12 +-- .../sequences/intrinsics/functions/empty.html | 12 +-- .../sequences/intrinsics/functions/end.html | 12 +-- .../sequences/intrinsics/functions/front.html | 17 ++-- .../intrinsics/functions/has_key.html | 12 +-- .../sequences/intrinsics/functions/size.html | 12 +-- .../intrinsics/metafunctions/at.html | 16 ++-- .../intrinsics/metafunctions/at_c.html | 16 ++-- .../intrinsics/metafunctions/at_key.html | 16 ++-- .../intrinsics/metafunctions/back.html | 12 +-- .../intrinsics/metafunctions/begin.html | 12 +-- .../intrinsics/metafunctions/empty.html | 12 +-- .../intrinsics/metafunctions/end.html | 12 +-- .../intrinsics/metafunctions/front.html | 12 +-- .../intrinsics/metafunctions/has_key.html | 12 +-- .../intrinsics/metafunctions/size.html | 12 +-- .../intrinsics/metafunctions/value_at.html | 12 +-- .../intrinsics/metafunctions/value_at_c.html | 12 +-- .../metafunctions/value_at_key.html | 12 +-- .../sequences/operators/comparison.html | 2 +- .../sequences/operators/comparison/equal.html | 23 +++--- .../operators/comparison/greater_than.html | 19 ++--- .../comparison/greater_than_equal.html | 19 ++--- .../operators/comparison/less_than.html | 19 ++--- .../operators/comparison/less_than_equal.html | 19 ++--- .../operators/comparison/not_equal.html | 19 ++--- doc/html/fusion/sequences/operators/i_o.html | 2 +- .../fusion/sequences/operators/i_o/in.html | 15 ++-- .../fusion/sequences/operators/i_o/out.html | 15 ++-- doc/html/fusion/sequences/views.html | 2 +- .../fusion/sequences/views/filter_view.html | 24 +++--- .../sequences/views/iterator_range.html | 23 +++--- .../fusion/sequences/views/joint_view.html | 25 +++--- .../fusion/sequences/views/reverse_view.html | 21 ++--- .../fusion/sequences/views/single_view.html | 22 +++--- .../sequences/views/transform_view.html | 43 +++++----- doc/html/fusion/sequences/views/zip_view.html | 17 ++-- doc/html/fusion/support/category_of.html | 12 +-- doc/html/fusion/support/is_sequence.html | 12 +-- doc/html/fusion/support/is_view.html | 12 +-- doc/html/fusion/support/pair.html | 39 +++++---- doc/html/fusion/support/tag_of.html | 12 +-- .../fusion/tuples/class_template_tuple.html | 4 +- .../class_template_tuple/construction.html | 6 +- .../class_template_tuple/element_access.html | 12 ++- .../relational_operators.html | 54 ++++++++----- .../tuple_creation_functions.html | 6 +- .../tuple_helper_classes.html | 8 +- doc/html/fusion/tuples/pairs.html | 19 +++-- doc/html/index.html | 4 +- example/performance/accumulate.cpp | 10 +-- example/performance/inner_product.cpp | 4 +- example/performance/inner_product2.cpp | 4 +- test/sequence/construction.hpp | 3 +- test/sequence/copy.hpp | 3 +- test/sequence/make.hpp | 3 +- test/sequence/mutate.hpp | 3 +- test/sequence/tie.hpp | 3 +- test/sequence/value_at.hpp | 3 +- 200 files changed, 1744 insertions(+), 1447 deletions(-) rename doc/html/fusion/algorithms/concepts/{polymorphic_function_object.html => poly.html} (79%) create mode 100644 doc/html/fusion/sequences/adapted/boost__tuple.html create mode 100644 doc/html/fusion/sequences/adapted/boost__variant.html diff --git a/doc/algorithms.qbk b/doc/algorithms.qbk index 519b8087..2a8f3c56 100644 --- a/doc/algorithms.qbk +++ b/doc/algorithms.qbk @@ -39,7 +39,7 @@ sequence type. [section Concepts] -[section Polymorphic Function Object] +[section:poly Polymorphic Function Object] [heading Description] diff --git a/doc/fusion.qbk b/doc/fusion.qbk index 2dbbffe9..27f3ccd7 100644 --- a/doc/fusion.qbk +++ b/doc/fusion.qbk @@ -174,7 +174,7 @@ [def __algorithm__ [link fusion.algorithms Algorithm]] [def __algorithms__ [link fusion.algorithms Algorithms]] -[def __poly_func_obj__ [link fusion.algorithms.concepts.polymorphic_function_object Polymorphic Function Object]] +[def __poly_func_obj__ [link fusion.algorithms.concepts.poly Polymorphic Function Object]] [def __fold__ [link fusion.algorithms.iteration.functions.fold `fold`]] [def __result_of_fold__ [link fusion.algorithms.iteration.metafunctions.fold `result_of::fold`]] [def __accumulate__ [link fusion.algorithms.iteration.functions.accumulate `accumulate`]] diff --git a/doc/html/fusion/algorithms.html b/doc/html/fusion/algorithms.html index c8c01091..841c94c3 100644 --- a/doc/html/fusion/algorithms.html +++ b/doc/html/fusion/algorithms.html @@ -33,7 +33,7 @@
Transformation

- + Lazy Evaluation

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

- + Sequence Extension

@@ -79,7 +79,7 @@ functions to convert back to the original sequence type.

- + Header

diff --git a/doc/html/fusion/algorithms/concepts.html b/doc/html/fusion/algorithms/concepts.html
index 991a3c20..492017fe 100644
--- a/doc/html/fusion/algorithms/concepts.html
+++ b/doc/html/fusion/algorithms/concepts.html
@@ -7,8 +7,8 @@
 
 
 
-
+
 
 
 
@@ -21,13 +21,13 @@
 

-PrevUpHomeNext +PrevUpHomeNext
@@ -35,7 +35,7 @@

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/fusion/algorithms/concepts/polymorphic_function_object.html b/doc/html/fusion/algorithms/concepts/poly.html similarity index 79% rename from doc/html/fusion/algorithms/concepts/polymorphic_function_object.html rename to doc/html/fusion/algorithms/concepts/poly.html index b0c485d6..b18d26a3 100644 --- a/doc/html/fusion/algorithms/concepts/polymorphic_function_object.html +++ b/doc/html/fusion/algorithms/concepts/poly.html @@ -1,8 +1,8 @@ -Polymorphic - Function Object + Polymorphic Function + Object @@ -25,12 +25,12 @@ +
+ + Description

A type of function object with a nested metafunction result. @@ -60,17 +60,17 @@ -

- - Refinement +
+ + Refinement of

MPL Metafunction Class

-
- - Expression +
+ + Expression requirements
@@ -86,8 +86,8 @@ Complexity - - + +
f(t1, ...tN)F::result<T1, ...TN>::typef(t1, ...tN)F::result<T1, ...TN>::type Unspecified
diff --git a/doc/html/fusion/algorithms/iteration.html b/doc/html/fusion/algorithms/iteration.html index 78f158da..9e61c9c1 100644 --- a/doc/html/fusion/algorithms/iteration.html +++ b/doc/html/fusion/algorithms/iteration.html @@ -6,8 +6,8 @@ - + @@ -21,7 +21,7 @@
-PrevUpHomeNext +PrevUpHomeNext

@@ -35,7 +35,7 @@ a sequence repeatedly applying an operation to its elements.

- + Header

@@ -48,7 +48,7 @@
 
 
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/fusion/algorithms/iteration/functions/accumulate.html b/doc/html/fusion/algorithms/iteration/functions/accumulate.html index bddf3353..18e200d2 100644 --- a/doc/html/fusion/algorithms/iteration/functions/accumulate.html +++ b/doc/html/fusion/algorithms/iteration/functions/accumulate.html @@ -26,18 +26,18 @@
- + Description

- Repeatedly applies binary Polymorphic - Function Object f + Repeatedly applies binary Polymorphic + Function Object f to each element of a sequence and the previous state. accumulate is equivalent to fold.

- + Synopsis
@@ -50,7 +50,7 @@
     Sequence& seq, State const& initial_state, F const& f);
 
-

Table 1.33. Parameters

+

Table 1.33. Parameters

@@ -68,7 +68,7 @@ @@ -83,8 +83,8 @@ @@ -93,7 +93,7 @@
A model of Forward - Sequence, f(eN ....f(e2,f(e1,initial_state))) must be a valid expression for + Sequence, f(eN ....f(e2,f(e1,initial_state))) must be a valid expression for each element e1 to eN in seq
f A - model of binary Polymorphic + model of binary Polymorphic Function Object Operation's argument
- + Expression Semantics
@@ -104,25 +104,25 @@ Return type: Any type

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

- + Complexity

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

- + Header
 #include <boost/fusion/algorithm/iteration/accumulate.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/iteration/functions/fold.html b/doc/html/fusion/algorithms/iteration/functions/fold.html
index d04b1308..71697bd6 100644
--- a/doc/html/fusion/algorithms/iteration/functions/fold.html
+++ b/doc/html/fusion/algorithms/iteration/functions/fold.html
@@ -26,17 +26,17 @@
 
 
- + Description

- Repeatedly applies binary Polymorphic - Function Object f + Repeatedly applies binary Polymorphic + Function Object f to each element of a sequence and the previous state.

- + Synopsis
@@ -49,7 +49,7 @@
     Sequence& seq, State const& initial_state, F const& f);
 
-

Table 1.32. Parameters

+

Table 1.32. Parameters

@@ -81,8 +81,8 @@ @@ -91,7 +91,7 @@
f A - model of binary Polymorphic + model of binary Polymorphic Function Object Operation's argument
- + Expression Semantics
@@ -102,25 +102,25 @@ Return type: Any type

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

- + Complexity

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

- + Header
 #include <boost/fusion/algorithm/iteration/fold.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/iteration/functions/for_each.html b/doc/html/fusion/algorithms/iteration/functions/for_each.html
index 8e89304a..966c6538 100644
--- a/doc/html/fusion/algorithms/iteration/functions/for_each.html
+++ b/doc/html/fusion/algorithms/iteration/functions/for_each.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

- + Synopsis
@@ -45,7 +45,7 @@
     Sequence& seq, F const& f);
 
-

Table 1.34. Parameters

+

Table 1.34. Parameters

@@ -78,7 +78,7 @@
- + Expression Semantics
@@ -93,21 +93,21 @@ in seq.

- + Complexity

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

- + Header
 #include <boost/fusion/algorithm/iteration/for_each.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html b/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html
index e1f63976..9b950909 100644
--- a/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html
+++ b/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of accumulate.

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

Table 1.36. Parameters

+

Table 1.36. Parameters

@@ -80,8 +80,8 @@
F A - model of binary Polymorphic + model of binary Polymorphic Function Object The operation to be applied @@ -91,7 +91,7 @@
- + Expression Semantics
@@ -106,19 +106,19 @@ accumulate to a sequence of type Sequence, with an initial state of type State - and binary Polymorphic + and binary Polymorphic Function Object of type F.

- + Complexity

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

- + Header
diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/fold.html b/doc/html/fusion/algorithms/iteration/metafunctions/fold.html
index e4abcea3..26b5002b 100644
--- a/doc/html/fusion/algorithms/iteration/metafunctions/fold.html
+++ b/doc/html/fusion/algorithms/iteration/metafunctions/fold.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of fold.

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

Table 1.35. Parameters

+

Table 1.35. Parameters

@@ -80,8 +80,8 @@
F A - model of binary Polymorphic + model of binary Polymorphic Function Object The operation to be applied @@ -91,7 +91,7 @@
- + Expression Semantics
@@ -106,19 +106,19 @@ fold to a sequence of type Sequence, with an initial state of type State - and binary Polymorphic + and binary Polymorphic Function Object of type F.

- + Complexity

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

- + Header
diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html b/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html
index ae80abbe..fb726676 100644
--- a/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html
+++ b/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html
@@ -30,11 +30,11 @@
             return type of for_each is always void.
           

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

Table 1.37. Parameters

+

Table 1.37. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -98,14 +98,14 @@ return type is always void.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/query.html b/doc/html/fusion/algorithms/query.html
index 5cde9217..eed0146c 100644
--- a/doc/html/fusion/algorithms/query.html
+++ b/doc/html/fusion/algorithms/query.html
@@ -33,7 +33,7 @@
         The query algorithms provide support for searching and analyzing sequences.
       

- + Header

diff --git a/doc/html/fusion/algorithms/query/functions/all.html b/doc/html/fusion/algorithms/query/functions/all.html
index f3032956..415d8cc4 100644
--- a/doc/html/fusion/algorithms/query/functions/all.html
+++ b/doc/html/fusion/algorithms/query/functions/all.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.39. Parameters

+

Table 1.39. Parameters

@@ -84,7 +84,7 @@
- + Expression Semantics
@@ -101,21 +101,21 @@ element e in seq.

- + Complexity

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

- + Header
 #include <boost/fusion/algorithm/query/all.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/query/functions/any.html b/doc/html/fusion/algorithms/query/functions/any.html
index 442c9f76..38bbb878 100644
--- a/doc/html/fusion/algorithms/query/functions/any.html
+++ b/doc/html/fusion/algorithms/query/functions/any.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.38. Parameters

+

Table 1.38. Parameters

@@ -84,7 +84,7 @@
- + Expression semantics
@@ -101,21 +101,21 @@ element e in seq.

- + Complexity

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

- + Header
 #include <boost/fusion/algorithm/query/any.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/query/functions/count.html b/doc/html/fusion/algorithms/query/functions/count.html
index b6421175..b0c4f191 100644
--- a/doc/html/fusion/algorithms/query/functions/count.html
+++ b/doc/html/fusion/algorithms/query/functions/count.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

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

Table 1.43. Parameters

+

Table 1.43. Parameters

@@ -63,7 +63,7 @@
A model of Forward - Sequence, e == t + Sequence, e == t must be a valid expression, convertible to bool, for each element e in seq @@ -81,7 +81,7 @@
- + Expression Semantics
@@ -97,21 +97,21 @@ t in seq.

- + Complexity

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

- + Header
 #include <boost/fusion/algorithm/query/count.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/query/functions/count_if.html b/doc/html/fusion/algorithms/query/functions/count_if.html
index 54b50b7a..6c892079 100644
--- a/doc/html/fusion/algorithms/query/functions/count_if.html
+++ b/doc/html/fusion/algorithms/query/functions/count_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.44. Parameters

+

Table 1.44. Parameters

@@ -81,7 +81,7 @@
- + Expression Semantics
@@ -96,21 +96,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/query/functions/find.html b/doc/html/fusion/algorithms/query/functions/find.html
index 56e1c4ed..7cdc9eb9 100644
--- a/doc/html/fusion/algorithms/query/functions/find.html
+++ b/doc/html/fusion/algorithms/query/functions/find.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

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

Table 1.41. Parameters

+

Table 1.41. Parameters

@@ -82,7 +82,7 @@
- + Expression Semantics
@@ -97,24 +97,24 @@ Semantics: Returns an iterator to the first element of seq of type T, or end(seq) if there is no such element. Equivalent - to find_if<boost::is_same<_, T> >(seq) + 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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/query/functions/find_if.html b/doc/html/fusion/algorithms/query/functions/find_if.html
index 51fca1de..f25f624e 100644
--- a/doc/html/fusion/algorithms/query/functions/find_if.html
+++ b/doc/html/fusion/algorithms/query/functions/find_if.html
@@ -30,11 +30,11 @@
             MPL Lambda Expression evaluates to boost::mpl::true_.
           

- + Description
- + Synopsis
@@ -51,7 +51,7 @@
 unspecified find_if(Sequence& seq);
 
-

Table 1.42. Parameters

+

Table 1.42. Parameters

@@ -83,7 +83,7 @@
- + Expression Semantics
@@ -102,21 +102,21 @@ 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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/query/functions/none.html b/doc/html/fusion/algorithms/query/functions/none.html
index 38f14483..329527e1 100644
--- a/doc/html/fusion/algorithms/query/functions/none.html
+++ b/doc/html/fusion/algorithms/query/functions/none.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.40. Parameters

+

Table 1.40. Parameters

@@ -84,7 +84,7 @@
- + Expression Semantics
@@ -98,24 +98,24 @@ Semantics: Returns true if and only if f(e) evaluates to false for every - element e in seq. Result equivalent to !any(seq, f). + 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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/query/metafunctions/all.html b/doc/html/fusion/algorithms/query/metafunctions/all.html
index 258d2844..aabeb22d 100644
--- a/doc/html/fusion/algorithms/query/metafunctions/all.html
+++ b/doc/html/fusion/algorithms/query/metafunctions/all.html
@@ -26,14 +26,14 @@
 
 
- + Description

A metafunction returning the result type of all.

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

Table 1.46. Parameters

+

Table 1.46. Parameters

@@ -72,8 +72,8 @@ @@ -82,7 +82,7 @@
F A - model of unary Polymorphic + model of unary Polymorphic Function Object Operation's argument
- + Expression Semantics
@@ -96,20 +96,20 @@ Semantics: Returns the return type of all given a sequence of type Sequence - and a unary Polymorphic + and a unary Polymorphic Function Object of type F. The return type is always bool.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/query/metafunctions/any.html b/doc/html/fusion/algorithms/query/metafunctions/any.html
index eab0791d..f75bd271 100644
--- a/doc/html/fusion/algorithms/query/metafunctions/any.html
+++ b/doc/html/fusion/algorithms/query/metafunctions/any.html
@@ -26,14 +26,14 @@
 
 
- + Description

A metafunction returning the result type of any.

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

Table 1.45. Parameters

+

Table 1.45. Parameters

@@ -72,8 +72,8 @@ @@ -82,7 +82,7 @@
F A - model of unary Polymorphic + model of unary Polymorphic Function Object Operation's argument
- + Expression Semantics
@@ -96,20 +96,20 @@ Semantics: Returns the return type of any given a sequence of type Sequence - and a unary Polymorphic + and a unary Polymorphic Function Object of type F. The return type is always bool.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/query/metafunctions/count.html b/doc/html/fusion/algorithms/query/metafunctions/count.html
index 31874e45..e866e60d 100644
--- a/doc/html/fusion/algorithms/query/metafunctions/count.html
+++ b/doc/html/fusion/algorithms/query/metafunctions/count.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.50. Parameters

+

Table 1.50. Parameters

@@ -81,7 +81,7 @@
- + Expression Semantics
@@ -97,14 +97,14 @@ int.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/query/metafunctions/count_if.html b/doc/html/fusion/algorithms/query/metafunctions/count_if.html
index 7940330a..3c1b8d49 100644
--- a/doc/html/fusion/algorithms/query/metafunctions/count_if.html
+++ b/doc/html/fusion/algorithms/query/metafunctions/count_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.51. Parameters

+

Table 1.51. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -96,14 +96,14 @@ always int.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/query/metafunctions/find.html b/doc/html/fusion/algorithms/query/metafunctions/find.html
index e43aa19e..4b515092 100644
--- a/doc/html/fusion/algorithms/query/metafunctions/find.html
+++ b/doc/html/fusion/algorithms/query/metafunctions/find.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.48. Parameters

+

Table 1.48. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -97,14 +97,14 @@ in Sequence, or result_of::end<Sequence>::type if there is no such element.

- + Complexity

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

- + Header
diff --git a/doc/html/fusion/algorithms/query/metafunctions/find_if.html b/doc/html/fusion/algorithms/query/metafunctions/find_if.html
index 8254251b..2369994f 100644
--- a/doc/html/fusion/algorithms/query/metafunctions/find_if.html
+++ b/doc/html/fusion/algorithms/query/metafunctions/find_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.49. Parameters

+

Table 1.49. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -98,14 +98,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
diff --git a/doc/html/fusion/algorithms/query/metafunctions/none.html b/doc/html/fusion/algorithms/query/metafunctions/none.html
index 6c688ed9..f3513804 100644
--- a/doc/html/fusion/algorithms/query/metafunctions/none.html
+++ b/doc/html/fusion/algorithms/query/metafunctions/none.html
@@ -26,14 +26,14 @@
 
 
- + Description

A metafunction returning the result type of none.

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

Table 1.47. Parameters

+

Table 1.47. Parameters

@@ -72,8 +72,8 @@ @@ -82,7 +82,7 @@
F A - model of unary Polymorphic + model of unary Polymorphic Function Object Operation's argument
- + Expression Semantics
@@ -96,20 +96,20 @@ Semantics: Returns the return type of none given a sequence of type Sequence and a unary - Polymorphic - Function Object of type F. + Polymorphic Function + Object of type F. The return type is always bool.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation.html b/doc/html/fusion/algorithms/transformation.html
index 30d27b82..cf3f6dd3 100644
--- a/doc/html/fusion/algorithms/transformation.html
+++ b/doc/html/fusion/algorithms/transformation.html
@@ -46,7 +46,7 @@
         

- + Header

diff --git a/doc/html/fusion/algorithms/transformation/functions/clear.html b/doc/html/fusion/algorithms/transformation/functions/clear.html
index ba72ba51..375a4d7f 100644
--- a/doc/html/fusion/algorithms/transformation/functions/clear.html
+++ b/doc/html/fusion/algorithms/transformation/functions/clear.html
@@ -26,14 +26,14 @@
 
 
- + Description

clear returns an empty sequence.

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

Table 1.61. Parameters

+

Table 1.61. Parameters

@@ -67,7 +67,7 @@
- + Expression Semantics
@@ -84,21 +84,21 @@ with no elements.

- + Complexity

Constant.

- + Header
 #include <boost/fusion/algorithm/transformation/clear.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/erase.html b/doc/html/fusion/algorithms/transformation/functions/erase.html
index e88fa22e..f8639e5c 100644
--- a/doc/html/fusion/algorithms/transformation/functions/erase.html
+++ b/doc/html/fusion/algorithms/transformation/functions/erase.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.62. Parameters

+

Table 1.62. Parameters

@@ -101,7 +101,7 @@
- + Expression Semantics
@@ -132,21 +132,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/erase_key.html b/doc/html/fusion/algorithms/transformation/functions/erase_key.html
index fb72ede2..47c28a1b 100644
--- a/doc/html/fusion/algorithms/transformation/functions/erase_key.html
+++ b/doc/html/fusion/algorithms/transformation/functions/erase_key.html
@@ -26,20 +26,20 @@
 
 
- + Description

For an Associative - Sequence seq, + Sequence seq, returns a Forward Sequence containing all the elements of the original except those with a given key.

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

Table 1.63. Parameters

+

Table 1.63. Parameters

@@ -82,7 +82,7 @@
- + Expression Semantics
@@ -100,21 +100,21 @@ except those with key Key.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/erase_key.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/filter.html b/doc/html/fusion/algorithms/transformation/functions/filter.html
index cc41ae29..85add777 100644
--- a/doc/html/fusion/algorithms/transformation/functions/filter.html
+++ b/doc/html/fusion/algorithms/transformation/functions/filter.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.52. Parameters

+

Table 1.52. Parameters

@@ -77,7 +77,7 @@
- + Expression Semantics
@@ -93,24 +93,24 @@ Semantics: Returns a sequence containing all the elements of seq of type T. Equivalent - to filter_if<boost::same_type<_, T> >(seq). + 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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/filter_if.html b/doc/html/fusion/algorithms/transformation/functions/filter_if.html
index bd3f15fe..5f1fb609 100644
--- a/doc/html/fusion/algorithms/transformation/functions/filter_if.html
+++ b/doc/html/fusion/algorithms/transformation/functions/filter_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.53. Parameters

+

Table 1.53. Parameters

@@ -79,7 +79,7 @@
- + Expression Semantics
@@ -99,21 +99,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/insert.html b/doc/html/fusion/algorithms/transformation/functions/insert.html
index a1fdf2b0..6f69a169 100644
--- a/doc/html/fusion/algorithms/transformation/functions/insert.html
+++ b/doc/html/fusion/algorithms/transformation/functions/insert.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

- + Synposis
@@ -46,7 +46,7 @@
 unspecified insert(Sequence const& seq, Pos const& pos, T const& t);
 
-

Table 1.64. Parameters

+

Table 1.64. Parameters

@@ -87,7 +87,7 @@
- + Expression Semantics
@@ -107,21 +107,21 @@ pos.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/insert.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/insert_range.html b/doc/html/fusion/algorithms/transformation/functions/insert_range.html
index 52c2e316..aca08b4b 100644
--- a/doc/html/fusion/algorithms/transformation/functions/insert_range.html
+++ b/doc/html/fusion/algorithms/transformation/functions/insert_range.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ iterator.

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

Table 1.65. Parameters

+

Table 1.65. Parameters

@@ -91,7 +91,7 @@
- + Expression Semantics
@@ -111,21 +111,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/join.html b/doc/html/fusion/algorithms/transformation/functions/join.html
index 02a5dae1..b129b474 100644
--- a/doc/html/fusion/algorithms/transformation/functions/join.html
+++ b/doc/html/fusion/algorithms/transformation/functions/join.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.66. Parameters

+

Table 1.66. Parameters

@@ -79,7 +79,7 @@
- + Expression Semantics
@@ -98,21 +98,21 @@ The order of th elements is preserved.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/join.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/pop_back.html b/doc/html/fusion/algorithms/transformation/functions/pop_back.html
index a684b8cf..44763587 100644
--- a/doc/html/fusion/algorithms/transformation/functions/pop_back.html
+++ b/doc/html/fusion/algorithms/transformation/functions/pop_back.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

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

Table 1.68. Parameters

+

Table 1.68. Parameters

@@ -67,7 +67,7 @@
- + Expression Semantics
@@ -86,21 +86,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/pop_front.html b/doc/html/fusion/algorithms/transformation/functions/pop_front.html
index cc930714..5c605cd2 100644
--- a/doc/html/fusion/algorithms/transformation/functions/pop_front.html
+++ b/doc/html/fusion/algorithms/transformation/functions/pop_front.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

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

Table 1.69. Parameters

+

Table 1.69. Parameters

@@ -67,7 +67,7 @@
- + Expression Semantics
@@ -86,21 +86,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/push_back.html b/doc/html/fusion/algorithms/transformation/functions/push_back.html
index 1b19299e..6e8efe0a 100644
--- a/doc/html/fusion/algorithms/transformation/functions/push_back.html
+++ b/doc/html/fusion/algorithms/transformation/functions/push_back.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

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

Table 1.70. Parameters

+

Table 1.70. Parameters

@@ -77,7 +77,7 @@
- + Expression Semantics
@@ -96,21 +96,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/push_front.html b/doc/html/fusion/algorithms/transformation/functions/push_front.html
index 2f3d4bf0..bdf5a0fd 100644
--- a/doc/html/fusion/algorithms/transformation/functions/push_front.html
+++ b/doc/html/fusion/algorithms/transformation/functions/push_front.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

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

Table 1.71. Parameters

+

Table 1.71. Parameters

@@ -77,7 +77,7 @@
- + Expression Semantics
@@ -97,21 +97,21 @@ seq.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/push_front.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/remove.html b/doc/html/fusion/algorithms/transformation/functions/remove.html
index 3f9c6e77..cbf88720 100644
--- a/doc/html/fusion/algorithms/transformation/functions/remove.html
+++ b/doc/html/fusion/algorithms/transformation/functions/remove.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.58. Parameters

+

Table 1.58. Parameters

@@ -77,7 +77,7 @@
- + Expression Semantics
@@ -93,24 +93,24 @@ Semantics: Returns a new sequence, containing all the elements of seq, in their original order, except those of type T. - Equivalent to remove_if<boost::is_same<_,T> >(seq). + 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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/remove_if.html b/doc/html/fusion/algorithms/transformation/functions/remove_if.html
index b40b3800..c75a497c 100644
--- a/doc/html/fusion/algorithms/transformation/functions/remove_if.html
+++ b/doc/html/fusion/algorithms/transformation/functions/remove_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.59. Parameters

+

Table 1.59. Parameters

@@ -77,7 +77,7 @@
- + Expression Semantics
@@ -93,24 +93,25 @@ Semantics: Returns a new sequence, containing all the elements of seq, in their original order, except those elements with types for which - Pred evaluates to boost::mpl::true_. Equivalent to filter<boost::mpl::not_<Pred> >(seq). + Pred evaluates to boost::mpl::true_. Equivalent to filter<boost::mpl::not_<Pred> + >(seq).

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/remove_if.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/replace.html b/doc/html/fusion/algorithms/transformation/functions/replace.html
index c77fbce7..68e1bf93 100644
--- a/doc/html/fusion/algorithms/transformation/functions/replace.html
+++ b/doc/html/fusion/algorithms/transformation/functions/replace.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.56. Parameters

+

Table 1.56. Parameters

@@ -64,7 +64,7 @@
A model of Forward - Sequence, e == old_value + Sequence, e == old_value is a valid expression, convertible to bool, for each element e in seq with type @@ -89,7 +89,7 @@
- + Expression Semantics
@@ -108,21 +108,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/replace_if.html b/doc/html/fusion/algorithms/transformation/functions/replace_if.html
index c55dca8e..fbd04a74 100644
--- a/doc/html/fusion/algorithms/transformation/functions/replace_if.html
+++ b/doc/html/fusion/algorithms/transformation/functions/replace_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.57. Parameters

+

Table 1.57. Parameters

@@ -88,7 +88,7 @@
- + Expression Semantics
@@ -108,21 +108,21 @@ evaluates to true.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/replace_if.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/reverse.html b/doc/html/fusion/algorithms/transformation/functions/reverse.html
index 6c364354..768578b8 100644
--- a/doc/html/fusion/algorithms/transformation/functions/reverse.html
+++ b/doc/html/fusion/algorithms/transformation/functions/reverse.html
@@ -26,14 +26,14 @@
 
 
- + Description

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

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

Table 1.60. Parameters

+

Table 1.60. Parameters

@@ -67,7 +67,7 @@
- + Expression Semantics
@@ -85,21 +85,21 @@ in reverse order.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/reverse.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/transform.html b/doc/html/fusion/algorithms/transformation/functions/transform.html
index 1d082bb1..228409e3 100644
--- a/doc/html/fusion/algorithms/transformation/functions/transform.html
+++ b/doc/html/fusion/algorithms/transformation/functions/transform.html
@@ -26,20 +26,19 @@
 
 
- + Description

For a sequence seq and - Polymorphic - Function Object F, - transform returns a new - sequence with elements created by applying F + Polymorphic Function + Object F, transform returns a new sequence with + elements created by applying F to each element of seq.

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

Table 1.54. Parameters

+

Table 1.54. Parameters

@@ -77,8 +76,8 @@ @@ -89,7 +88,7 @@
f A - model of unary Polymorphic + model of unary Polymorphic Function Object where f(e) is a valid expression for each element e of seq
- + Expression Semantics
@@ -107,7 +106,7 @@ within seq.

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

Table 1.55. Parameters

+

Table 1.55. Parameters

@@ -155,9 +154,9 @@ @@ -173,25 +172,25 @@

Semantics: Returns a new sequence, containing - the return values of f(e1, e2) for each pair of elements e1 and e2 + the return values of f(e1, e2) for each pair of elements e1 and e2 within seq1 and seq2 respectively.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/transform.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/zip.html b/doc/html/fusion/algorithms/transformation/functions/zip.html
index 9537765f..61bcb202 100644
--- a/doc/html/fusion/algorithms/transformation/functions/zip.html
+++ b/doc/html/fusion/algorithms/transformation/functions/zip.html
@@ -26,7 +26,7 @@
 
 
- + Description

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

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

Table 1.67. Parameters

+

Table 1.67. Parameters

f A - model of binary Polymorphic - Function Object where f(e1, e2) is a valid expression for each pair + model of binary Polymorphic + Function Object where f(e1, e2) is a valid expression for each pair of elements e1 and e2 of seq1 and seq2 respectively
@@ -73,7 +73,7 @@
- + Expression Semantics
@@ -89,25 +89,28 @@ Semantics: Returns a sequence containing tuples of elements from sequences seq1 to seqN. For example, - applying zip to tuples (1, 2, 3) and - ('a', 'b', 'c') would return ((1, 'a'),(2, 'b'),(3, 'c')) + applying zip to tuples (1, 2, 3) + and ('a', 'b', + 'c') + would return ((1, 'a'),(2, 'b'),(3, + 'c'))

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/zip.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/clear.html b/doc/html/fusion/algorithms/transformation/metafunctions/clear.html
index 67a01802..919a76bc 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/clear.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/clear.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ type.

- + Synopsis
@@ -47,7 +47,7 @@
 };
 
-

Table 1.80. Parameters

+

Table 1.80. Parameters

@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -84,14 +84,14 @@ Semantics: Returns an empty sequence.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/erase.html b/doc/html/fusion/algorithms/transformation/metafunctions/erase.html
index 85cd97b9..6d51669f 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/erase.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/erase.html
@@ -30,11 +30,11 @@
             and range delimiting iterator types.
           

- + Description
- + Synopsis
@@ -48,7 +48,7 @@
 };
 
-

Table 1.81. Parameters

+

Table 1.81. Parameters

@@ -92,7 +92,7 @@
- + Expression Semantics
@@ -122,14 +122,14 @@ and It2 removed.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html b/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html
index 394f9414..2d7d2322 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ and key types.

- + Synopsis
@@ -48,7 +48,7 @@
 };
 
-

Table 1.82. Parameters

+

Table 1.82. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -98,14 +98,14 @@ except those with key Key.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/filter.html b/doc/html/fusion/algorithms/transformation/metafunctions/filter.html
index 807fb947..e6641fea 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/filter.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/filter.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ and type to retain.

- + Synopsis
@@ -48,7 +48,7 @@
 };
 
-

Table 1.72. Parameter

+

Table 1.72. Parameter

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -96,17 +96,18 @@ Semantics: Returns a sequence containing the elements of Sequence that are of type T. Equivalent - to result_of::filter_if<Sequence, boost::is_same<mpl::_, T> >::type. + to result_of::filter_if<Sequence, + boost::is_same<mpl::_, T> >::type.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html
index 15e405e7..2e19143d 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ and unary MPL Lambda Expression predicate type.

- + Synopsis
@@ -48,7 +48,7 @@
 };
 
-

Table 1.73. Parameter

+

Table 1.73. Parameter

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -99,14 +99,14 @@ to boost::mpl::true_.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/insert.html b/doc/html/fusion/algorithms/transformation/metafunctions/insert.html
index ebbe6943..37614f87 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/insert.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/insert.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ position iterator and insertion types.

- + Synopsis
@@ -49,7 +49,7 @@
 };
 
-

Table 1.83. Parameters

+

Table 1.83. Parameters

@@ -90,7 +90,7 @@
- + Expression Semantics
@@ -109,14 +109,14 @@ in Sequence.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html b/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html
index d92b6d7d..59727097 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ sequence, position iterator and insertion range types.

- + Synopsis
@@ -49,7 +49,7 @@
 };
 
-

Table 1.84. Parameters

+

Table 1.84. Parameters

@@ -93,7 +93,7 @@
- + Expression Semantics
@@ -112,14 +112,14 @@ into Sequence.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/join.html b/doc/html/fusion/algorithms/transformation/metafunctions/join.html
index 5c9abd5f..1ed8eec7 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/join.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/join.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result of joining 2 sequences, given the sequence types.

- + Synopsis
@@ -47,7 +47,7 @@
 };
 
- + Expression Semantics
@@ -66,14 +66,14 @@ The order of the elements in the 2 sequences is preserved.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html b/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html
index 531765fb..d060f809 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ type.

- + Synopsis
@@ -47,7 +47,7 @@
 };
 
-

Table 1.85. Parameters

+

Table 1.85. Parameters

@@ -71,7 +71,7 @@
- + Expression Semantics
@@ -89,14 +89,14 @@ except the last element.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html b/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html
index cbb71888..c07610b1 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ type.

- + Synopsis
@@ -47,7 +47,7 @@
 };
 
-

Table 1.86. Parameters

+

Table 1.86. Parameters

@@ -71,7 +71,7 @@
- + Expression Semantics
@@ -89,14 +89,14 @@ except the first element.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html b/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html
index b3a09f04..593d21c0 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ the input sequence and element to push.

- + Synopsis
@@ -48,7 +48,7 @@
 };
 
-

Table 1.87. Parameters

+

Table 1.87. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -99,14 +99,14 @@ added to the end.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html b/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html
index c34ab466..0e5b417e 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ of the input sequence and element to push.

- + Synopsis
@@ -48,7 +48,7 @@
 };
 
-

Table 1.88. Parameters

+

Table 1.88. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -99,14 +99,14 @@ added to the beginning.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/remove.html b/doc/html/fusion/algorithms/transformation/metafunctions/remove.html
index 9b5042ef..3b2d5eca 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/remove.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/remove.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ removal types.

- + Synopsis
@@ -48,7 +48,7 @@
 };
 
-

Table 1.77. Parameters

+

Table 1.77. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -96,17 +96,18 @@ Semantics: Returns a sequence containing the elements of Sequence not of type T. Equivalent - to result_of::replace_if<Sequence, boost::is_same<mpl::_, T> >::type. + to result_of::replace_if<Sequence, + boost::is_same<mpl::_, T> >::type.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html
index af11a065..fab81df9 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ and unary MPL Lambda Expression predicate types.

- + Synopsis
@@ -48,7 +48,7 @@
 };
 
-

Table 1.78. Parameters

+

Table 1.78. Parameters

@@ -82,7 +82,7 @@
- + Expression Semantics
@@ -101,14 +101,14 @@ to boost::mpl::false_.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/replace.html b/doc/html/fusion/algorithms/transformation/metafunctions/replace.html
index c395ee71..5d508b53 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/replace.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/replace.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ the input sequence and element to replace.

- + Synopsis
@@ -48,7 +48,7 @@
 };
 
-

Table 1.75. Parameters

+

Table 1.75. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -97,14 +97,14 @@ replace.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html
index be1ac1ef..20cb8d4b 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html
@@ -26,17 +26,17 @@
 
 
- + Description

Returns the result type of replace_if, given the types - of the sequence, Polymorphic + of the sequence, Polymorphic Function Object predicate and replacement object.

- + Synopsis
@@ -50,7 +50,7 @@
 };
 
-

Table 1.76. Parameters

+

Table 1.76. Parameters

@@ -75,8 +75,8 @@ @@ -91,7 +91,7 @@
F A - model of unary Polymorphic + model of unary Polymorphic Function Object Replacement predicate
- + Expression Semantics
@@ -108,14 +108,14 @@ replace_if.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html b/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html
index 5ff8b112..1a18585c 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ type.

- + Synopsis
@@ -47,7 +47,7 @@
 };
 
-

Table 1.79. Parameters

+

Table 1.79. Parameters

@@ -71,7 +71,7 @@
- + Expression Semantics
@@ -88,14 +88,14 @@ elements in the reverse order to Sequence.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/transform.html b/doc/html/fusion/algorithms/transformation/metafunctions/transform.html
index 9f76b37f..148d4887 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/transform.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/transform.html
@@ -26,17 +26,17 @@
 
 
- + Description

Returns the result of type transform, given the sequence - and Polymorphic - Function Object types. + and Polymorphic Function + Object types.

- + Synopsis
@@ -50,7 +50,7 @@
 };
 
-

Table 1.74. Parameters

+

Table 1.74. Parameters

@@ -68,14 +68,14 @@ + Sequence @@ -84,7 +84,7 @@
A model of Forward - Sequence  Operation's argument
F A - model of unary Polymorphic + model of unary Polymorphic Function Object Transformation function object
- + Expression Semantics
@@ -101,14 +101,14 @@ F::apply<E>::type for each element type E in Sequence.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/zip.html b/doc/html/fusion/algorithms/transformation/metafunctions/zip.html
index cdf88802..9cf2d774 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/zip.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/zip.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ of the members of the component sequences.

- + Synopsis
@@ -50,7 +50,7 @@
 };
 
- + Expression Semantics
@@ -65,18 +65,22 @@

Semantics: Return a sequence containing tuples of elements from each sequence. For example, applying zip to tuples - (1, 2, 3) and ('a', 'b', 'c') would - return ((1, 'a'),(2, 'b'),(3, 'c')) + (1, 2, + 3) + and ('a', 'b', + 'c') + would return ((1, 'a'),(2, 'b'),(3, + 'c'))

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/extension.html b/doc/html/fusion/extension.html
index 11339360..0401d84c 100644
--- a/doc/html/fusion/extension.html
+++ b/doc/html/fusion/extension.html
@@ -48,7 +48,7 @@
       
 

- + Our example

@@ -80,7 +80,7 @@ Start guide.

- + Enabling Tag Dispatching

@@ -121,7 +121,7 @@ #include <boost/fusion/sequence/adapted/mpl/tag_of.hpp>

- + Designing a suitable iterator

@@ -184,7 +184,7 @@ clearer as we add features to our implementation.

- + A first couple of instructive features

@@ -327,7 +327,7 @@

- + Implementing the remaining iterator functionality

@@ -369,7 +369,7 @@ Iterator will also need an implementation of prior_impl. For a Random - Access Iterator distance_impl + Access Iterator distance_impl and advance_impl also need to be provided in order to satisfy the necessary complexity guarantees. As our iterator is a

- + Implementing the intrinsic functions of the sequence

@@ -441,7 +441,7 @@ value_at_impl and at_impl.

- + Enabling our type as an associative container

@@ -507,7 +507,7 @@ of is_associative_impl.

- + Summary

diff --git a/doc/html/fusion/introduction.html b/doc/html/fusion/introduction.html index 9feadd71..593c454c 100644 --- a/doc/html/fusion/introduction.html +++ b/doc/html/fusion/introduction.html @@ -41,7 +41,8 @@ on virtual functions to provide polymorphic behavior since the actual type is erased as soon as you store a pointer to a derived class to a pointer to its base. The held objects must be related: you cannot hold objects of unrelated - types such as char, int, class X, float, + types such as char, int, class + X, float, etc. Oh sure you can use something like Boost.Any to hold arbitrary types, but then you pay more in terms of runtime costs and due to the fact that you practically erased all type information, you'll have diff --git a/doc/html/fusion/iterators.html b/doc/html/fusion/iterators.html index 148aef15..71d0b4d1 100644 --- a/doc/html/fusion/iterators.html +++ b/doc/html/fusion/iterators.html @@ -40,7 +40,7 @@ Sequence.

- + Header

diff --git a/doc/html/fusion/iterators/concepts/bidirectional_iterator.html b/doc/html/fusion/iterators/concepts/bidirectional_iterator.html
index dbca9747..d2dde59c 100644
--- a/doc/html/fusion/iterators/concepts/bidirectional_iterator.html
+++ b/doc/html/fusion/iterators/concepts/bidirectional_iterator.html
@@ -31,7 +31,7 @@
         Iterator">Bidirectional
         Iterator
 
- + Description

@@ -61,7 +61,7 @@

- + Refinement of
@@ -70,7 +70,7 @@ Iterator">Forward Iterator

- + Expression requirements
@@ -123,7 +123,7 @@
- + Meta Expressions
@@ -143,7 +143,7 @@
- + Expression Semantics
@@ -170,7 +170,7 @@
- + Invariants

@@ -179,15 +179,16 @@ Iterator, the following invariants always hold:

- + Models
    diff --git a/doc/html/fusion/iterators/concepts/forward_iterator.html b/doc/html/fusion/iterators/concepts/forward_iterator.html index 9276aa2b..ad724ede 100644 --- a/doc/html/fusion/iterators/concepts/forward_iterator.html +++ b/doc/html/fusion/iterators/concepts/forward_iterator.html @@ -30,7 +30,7 @@ Iterator">Forward Iterator
- + Description

@@ -63,7 +63,7 @@

- + Expression requirements
@@ -91,15 +91,17 @@ Constant -i == j -Convertible to - bool +i == + j +Convertible + to bool Constant -i != j -Convertible to - bool +i != + j +Convertible + to bool Constant @@ -115,8 +117,8 @@ Constant -distance(i, j) -result_of::distance<I, J>::type +distance(i, j) +result_of::distance<I, J>::type Constant @@ -132,7 +134,7 @@
- + Meta Expressions
@@ -152,20 +154,20 @@ time -result_of::equal_to<I, J>::type +result_of::equal_to<I, J>::type Amortized constant time -result_of::advance_c<I, N>::type +result_of::advance_c<I, N>::type Linear -result_of::advance<I ,M>::type +result_of::advance<I ,M>::type Linear -result_of::distance<I ,J>::type +result_of::distance<I ,J>::type Linear @@ -181,7 +183,7 @@
- + Expression Semantics
@@ -202,14 +204,16 @@ -i == j -Iterator equality - comparison +i == + j +Iterator + equality comparison -i != j -Iterator inequality - comparison +i != + j +Iterator + inequality comparison advance_c<N>(i) @@ -224,7 +228,7 @@ -distance(i, j) +distance(i, j) The number of elements between i and j @@ -245,16 +249,17 @@
- + Invariants

The following invariants always hold:

    -
  • !(i == j) == (i != j)
  • -
  • next(i) == advance_c<1>(i)
  • -
  • distance(i, advance_c<N>(i)) == N
  • +
  • !(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 @@ -264,11 +269,12 @@ is equivalent to *i
  • - If i == j then *i is equivalent to *j + If i == + j then *i is equivalent to *j
- + Models
    diff --git a/doc/html/fusion/iterators/concepts/random_access_iterator.html b/doc/html/fusion/iterators/concepts/random_access_iterator.html index 22ef5eb6..3253c06e 100644 --- a/doc/html/fusion/iterators/concepts/random_access_iterator.html +++ b/doc/html/fusion/iterators/concepts/random_access_iterator.html @@ -30,7 +30,7 @@ Access Iterator">Random Access Iterator
- + Description

@@ -63,7 +63,7 @@

- + Refinement of
@@ -73,7 +73,7 @@ Iterator

- + Expression requirements
@@ -126,7 +126,7 @@
- + Meta Expressions
@@ -141,24 +141,24 @@ -result_of::advance_c<I, N>::type +result_of::advance_c<I, N>::type Amortized constant time -result_of::advance<I, M>::type +result_of::advance<I, M>::type Amortized constant time -result_of::distance<I ,J>::type +result_of::distance<I ,J>::type Amortized constant time
- + Models
    diff --git a/doc/html/fusion/iterators/functions/advance.html b/doc/html/fusion/iterators/functions/advance.html index a08c9e4b..85e47b42 100644 --- a/doc/html/fusion/iterators/functions/advance.html +++ b/doc/html/fusion/iterators/functions/advance.html @@ -26,14 +26,14 @@
    - + Description

    Moves an iterator by a specified distance.

    - + Synopsis
    @@ -44,7 +44,7 @@
     typename result_of::advance<I, M>::type advance(I const& i); 
     
    -

    Table 1.6. Parameters

    +

    Table 1.6. Parameters

    @@ -76,7 +76,7 @@
    - + Expression Semantics
    @@ -97,14 +97,14 @@ may be negative.

    - + Header
     #include <boost/fusion/iterator/advance.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/functions/advance_c.html b/doc/html/fusion/iterators/functions/advance_c.html
    index 43e8a429..04bb0f6a 100644
    --- a/doc/html/fusion/iterators/functions/advance_c.html
    +++ b/doc/html/fusion/iterators/functions/advance_c.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Moves an iterator by a specified distance.

    - + Synopsis
    @@ -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

    @@ -76,7 +76,7 @@
    - + Expression Semantics
    @@ -97,14 +97,14 @@ may be negative.

    - + Header
     #include <boost/fusion/iterator/advance.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/functions/deref.html b/doc/html/fusion/iterators/functions/deref.html
    index b7f2f957..6bde93ce 100644
    --- a/doc/html/fusion/iterators/functions/deref.html
    +++ b/doc/html/fusion/iterators/functions/deref.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Deferences an iterator.

    - + Synopsis
    @@ -43,7 +43,7 @@
     typename result_of::deref<I>::type deref(I const& i);
     
    -

    Table 1.2. Parameters

    +

    Table 1.2. Parameters

    @@ -67,7 +67,7 @@
    - + Expression Semantics
    @@ -82,14 +82,14 @@ i.

    - + Header
     #include <boost/fusion/iterator/deref.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/functions/distance.html b/doc/html/fusion/iterators/functions/distance.html
    index bf141e32..17f506e3 100644
    --- a/doc/html/fusion/iterators/functions/distance.html
    +++ b/doc/html/fusion/iterators/functions/distance.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the distance between 2 iterators.

    - + Synopsis
    @@ -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

    @@ -69,7 +69,7 @@
    - + Expression Semantics
    @@ -84,14 +84,14 @@ iterators i and j.

    - + Header
     #include <boost/fusion/iterator/distance.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/functions/next.html b/doc/html/fusion/iterators/functions/next.html
    index 40aca648..0a0eee25 100644
    --- a/doc/html/fusion/iterators/functions/next.html
    +++ b/doc/html/fusion/iterators/functions/next.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Moves an iterator 1 position forwards.

    - + Synopsis
    @@ -43,7 +43,7 @@
     typename result_of::next<I>::type next(I const& i);
     
    -

    Table 1.3. Parameters

    +

    Table 1.3. Parameters

    @@ -67,7 +67,7 @@
    - + Expression Semantics
    @@ -83,14 +83,14 @@ next element after i.

    - + Header
     #include <boost/fusion/iterator/next.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/functions/prior.html b/doc/html/fusion/iterators/functions/prior.html
    index 71e89091..114a850d 100644
    --- a/doc/html/fusion/iterators/functions/prior.html
    +++ b/doc/html/fusion/iterators/functions/prior.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Moves an iterator 1 position backwards.

    - + Synopsis
    @@ -43,7 +43,7 @@
     typename result_of::prior<I>::type prior(I const& i);
     
    -

    Table 1.4. Parameters

    +

    Table 1.4. Parameters

    @@ -67,7 +67,7 @@
    - + Expression Semantics
    @@ -83,14 +83,14 @@ element prior to i.

    - + Header
     #include <boost/fusion/iterator/prior.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/advance.html b/doc/html/fusion/iterators/metafunctions/advance.html
    index beb77487..01bf8c41 100644
    --- a/doc/html/fusion/iterators/metafunctions/advance.html
    +++ b/doc/html/fusion/iterators/metafunctions/advance.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Moves an iterator a specified distance.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.17. Parameters

    +

    Table 1.17. Parameters

    @@ -79,7 +79,7 @@
    - + Expression Semantics
    @@ -99,14 +99,14 @@ may be negative.

    - + Header
     #include <boost/fusion/iterator/advance.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/advance_c.html b/doc/html/fusion/iterators/metafunctions/advance_c.html
    index f0ec5d72..d431546c 100644
    --- a/doc/html/fusion/iterators/metafunctions/advance_c.html
    +++ b/doc/html/fusion/iterators/metafunctions/advance_c.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Moves an iterator by a specified distance.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.18. Parameters

    +

    Table 1.18. Parameters

    @@ -79,7 +79,7 @@
    - + Expression Semantics
    @@ -96,17 +96,17 @@ If I is a Bidirectional Iterator then N - may be negative. Equivalent to result_of::advance<I, boost::mpl::int_<N> >::type. + may be negative. Equivalent to result_of::advance<I, boost::mpl::int_<N> >::type.

    - + Header
     #include <boost/fusion/iterator/advance.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/deref.html b/doc/html/fusion/iterators/metafunctions/deref.html
    index a9ef354f..045249d5 100644
    --- a/doc/html/fusion/iterators/metafunctions/deref.html
    +++ b/doc/html/fusion/iterators/metafunctions/deref.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the type that will be returned by dereferencing an iterator.

    - + Synposis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.12. Parameters

    +

    Table 1.12. Parameters

    @@ -70,7 +70,7 @@
    - + Expression Semantics
    @@ -85,14 +85,14 @@ an iterator of type I.

    - + Header
     #include <boost/fusion/iterator/deref.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/distance.html b/doc/html/fusion/iterators/metafunctions/distance.html
    index 596ffe9f..a314e2f8 100644
    --- a/doc/html/fusion/iterators/metafunctions/distance.html
    +++ b/doc/html/fusion/iterators/metafunctions/distance.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the distance between two iterators.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.16. Parameters

    +

    Table 1.16. Parameters

    @@ -72,7 +72,7 @@
    - + Expression Semantics
    @@ -88,14 +88,14 @@ J.

    - + Header
     #include <boost/fusion/iterator/distance.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/equal_to.html b/doc/html/fusion/iterators/metafunctions/equal_to.html
    index a4a9917a..f4101bfa 100644
    --- a/doc/html/fusion/iterators/metafunctions/equal_to.html
    +++ b/doc/html/fusion/iterators/metafunctions/equal_to.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -34,7 +34,7 @@ and J are equal.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.15. Parameters

    +

    Table 1.15. Parameters

    @@ -71,7 +71,7 @@
    - + Expression Semantics
    @@ -87,14 +87,14 @@ Returns boost::mpl::false_ otherwise.

    - + Header
     #include <boost/fusion/iterator/equal_to.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/next.html b/doc/html/fusion/iterators/metafunctions/next.html
    index 794ca21b..0bc556b5 100644
    --- a/doc/html/fusion/iterators/metafunctions/next.html
    +++ b/doc/html/fusion/iterators/metafunctions/next.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the type of the next iterator in a sequence.

    - + Synposis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.13. Parameters

    +

    Table 1.13. Parameters

    @@ -70,7 +70,7 @@
    - + Expression Semantics
    @@ -86,14 +86,14 @@ next element in the sequence after I.

    - + Header
     #include <boost/fusion/iterator/next.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/prior.html b/doc/html/fusion/iterators/metafunctions/prior.html
    index ffa32902..9b9038fa 100644
    --- a/doc/html/fusion/iterators/metafunctions/prior.html
    +++ b/doc/html/fusion/iterators/metafunctions/prior.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the type of the previous iterator in a sequence.

    - + Synopsis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.14. Parameters

    +

    Table 1.14. Parameters

    @@ -70,7 +70,7 @@
    - + Expression Semantics
    @@ -86,14 +86,14 @@ previous element in the sequence before I.

    - + Header
     #include <boost/fusion/iterator/prior.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/value_of.html b/doc/html/fusion/iterators/metafunctions/value_of.html
    index be7941db..77268003 100644
    --- a/doc/html/fusion/iterators/metafunctions/value_of.html
    +++ b/doc/html/fusion/iterators/metafunctions/value_of.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the type stored at the position of an iterator.

    - + Synopsis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.11. Parameters

    +

    Table 1.11. Parameters

    @@ -70,7 +70,7 @@
    - + Expression Semantics
    @@ -85,14 +85,14 @@ a sequence at iterator position I.

    - + Header
     #include <boost/fusion/iterator/value_of.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/operators/operator_equality.html b/doc/html/fusion/iterators/operators/operator_equality.html
    index f5ddf59b..078fdce0 100644
    --- a/doc/html/fusion/iterators/operators/operator_equality.html
    +++ b/doc/html/fusion/iterators/operators/operator_equality.html
    @@ -31,14 +31,14 @@
             =="> Operator
             ==
- + Description

Compares 2 iterators for equality.

- + Synopsis
@@ -49,7 +49,7 @@
 unspecified operator==(I const& i, J const& i);
 
-

Table 1.9. Parameters

+

Table 1.9. Parameters

@@ -72,7 +72,7 @@
- + Expression Semantics
@@ -88,7 +88,7 @@ and j respectively.

- + Header
diff --git a/doc/html/fusion/iterators/operators/operator_inequality.html b/doc/html/fusion/iterators/operators/operator_inequality.html
index d0c76d2c..52204a63 100644
--- a/doc/html/fusion/iterators/operators/operator_inequality.html
+++ b/doc/html/fusion/iterators/operators/operator_inequality.html
@@ -30,14 +30,14 @@
         !="> Operator
         !=
 
- + Description

Compares 2 iterators for inequality.

- + Synopsis
@@ -48,7 +48,7 @@
 unspecified operator==(I const& i, J const& i);
 
-

Table 1.10. Parameters

+

Table 1.10. Parameters

@@ -71,7 +71,7 @@
- + Expression Semantics
@@ -84,7 +84,7 @@ and j respectively.

- + Header
diff --git a/doc/html/fusion/iterators/operators/operator_unary_star.html b/doc/html/fusion/iterators/operators/operator_unary_star.html
index 3c8c0e8f..f90acbdd 100644
--- a/doc/html/fusion/iterators/operators/operator_unary_star.html
+++ b/doc/html/fusion/iterators/operators/operator_unary_star.html
@@ -30,14 +30,14 @@
         *"> Operator
         *
 
- + Description

Dereferences an iterator.

- + Synopsis
@@ -47,7 +47,7 @@
 typename result_of::deref<I>::type operator*(unspecified<I> const& i);
 
-

Table 1.8. Parameters

+

Table 1.8. Parameters

@@ -71,7 +71,7 @@
- + Expression Semantics
@@ -86,14 +86,14 @@ Semantics: Equivalent to deref(i).

- + Header
 #include <boost/fusion/iterator/deref.hpp>
 
- + Example
diff --git a/doc/html/fusion/notes.html b/doc/html/fusion/notes.html
index 77fe7158..8b1024c9 100644
--- a/doc/html/fusion/notes.html
+++ b/doc/html/fusion/notes.html
@@ -26,7 +26,7 @@
 
 

- + Recursive Inlined Functions

@@ -39,17 +39,17 @@ compiler limit of course). Compile time complexity remains linear.

- + Overloaded Functions

Associative sequences use function overloading to implement membership testing and type associated key lookup. This amounts to constant runtime and amortized - constant compile time complexities. There is an overloaded function, f(k), for each key type k. The compiler chooses the appropriate function + constant compile time complexities. There is an overloaded function, f(k), for each key type k. The compiler chooses the appropriate function given a key, k.

- + Tag Dispatching

@@ -101,7 +101,7 @@

- + Extensibility

@@ -136,7 +136,7 @@ it very cheap to pass around.

- + Element Conversion

@@ -148,7 +148,8 @@ make_list(1, 'x')

- returns a list<int, char>. + returns a list<int, + char>.

There are a few exceptions, however. @@ -158,7 +159,7 @@

Array arguments are deduced to reference to const types. For example - [14] + [14] :

@@ -191,7 +192,7 @@
 list<void (*)(int)>
 

- + boost::ref

@@ -234,9 +235,9 @@



-

[14] +

[14] 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 + 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 ca05f1f0..8cb5f4dd 100644 --- a/doc/html/fusion/organization.html +++ b/doc/html/fusion/organization.html @@ -34,7 +34,7 @@ The library is organized in three layers:

- + Layers

@@ -50,7 +50,7 @@ against.

- + Directory

    @@ -159,7 +159,7 @@

- + Example

@@ -174,13 +174,13 @@

The first includes all sequences. The second includes all of sequence containers. - The third includes only list  - [3] + The third includes only list + [3] .



-

[3] +

[3] 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 bfcc85b5..13dbc037 100644 --- a/doc/html/fusion/preface.html +++ b/doc/html/fusion/preface.html @@ -32,7 +32,7 @@ --Niklaus Wirth

- + Description

@@ -50,7 +50,7 @@ of compile time metaprogramming with runtime programming.

- + Motivation

@@ -76,7 +76,7 @@ an instant AHA! moment.

- + How to use this manual

@@ -84,7 +84,7 @@ icons precede some text to indicate:

-

Table 1.1. Icons

+

Table 1.1. Icons

@@ -130,7 +130,7 @@ Tools.

- + Support

diff --git a/doc/html/fusion/quick_start.html b/doc/html/fusion/quick_start.html index adeabe64..9103da97 100644 --- a/doc/html/fusion/quick_start.html +++ b/doc/html/fusion/quick_start.html @@ -33,15 +33,15 @@

For starters, we shall include all of Fusion's _sequence_s - [1] + [1] :

 #include <boost/fusion/sequence.hpp>
 

- Let's begin with a vector  - [2] + Let's begin with a vector + [2] :

@@ -59,7 +59,7 @@
       Let's see some examples.
     

- + Print the vector as XML

@@ -116,7 +116,7 @@ print just about any Fusion Sequence.

- + Print only pointers

@@ -150,7 +150,7 @@ Easy, right?

- + Associative tuples

@@ -225,7 +225,7 @@ a dog or a whole alternate_universe.

- + Tip of the Iceberg

@@ -236,12 +236,12 @@



-

[1] +

[1] There are finer grained header files available if you wish to have more control over which components to include (see section Orgainization for details).

-

[2] +

[2] 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. diff --git a/doc/html/fusion/sequences.html b/doc/html/fusion/sequences.html index 69b55ad0..5df84c38 100644 --- a/doc/html/fusion/sequences.html +++ b/doc/html/fusion/sequences.html @@ -46,7 +46,7 @@ type that can be used to iterate through the Sequence's elements.

- + Header

diff --git a/doc/html/fusion/sequences/adapted.html b/doc/html/fusion/sequences/adapted.html
index cce8e9fb..39ca90eb 100644
--- a/doc/html/fusion/sequences/adapted.html
+++ b/doc/html/fusion/sequences/adapted.html
@@ -40,11 +40,11 @@
         mechanism. If you wish to use these sequences with fusion, simply include
         the necessary files and they will be regarded as first-class, fully conforming
         fusion sequences
-        [4]
+        [4]
         .
       

- + Header

@@ -52,7 +52,7 @@
 


-

[4] +

[4] Fusion sequences may also be adapted as fully conforming MPL sequences (see Intrinsics). That way, we can have 2-way adaptation to and from MPL diff --git a/doc/html/fusion/sequences/adapted/boost__array.html b/doc/html/fusion/sequences/adapted/boost__array.html index 335eb13d..920b5d2c 100644 --- a/doc/html/fusion/sequences/adapted/boost__array.html +++ b/doc/html/fusion/sequences/adapted/boost__array.html @@ -33,21 +33,21 @@ Access Sequence.

- + Header
 #include <boost/fusion/sequence/adapted/array.hpp>
 
- + Model of
- + Example
@@ -60,7 +60,7 @@
 std::cout << at_c<2>(arr) << std::endl;
 
- + See also

diff --git a/doc/html/fusion/sequences/adapted/boost__tuple.html b/doc/html/fusion/sequences/adapted/boost__tuple.html new file mode 100644 index 00000000..e4852ad1 --- /dev/null +++ b/doc/html/fusion/sequences/adapted/boost__tuple.html @@ -0,0 +1,75 @@ + + + +boost::tuple + + + + + + + + +

+ + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ This module provides adapters for boost::tuple. + Including the module header makes boost::tuple + a fully conforming Forward + Sequence. +

+
+ + Header +
+
+#include <boost/fusion/sequence/adapted/boost_tuple.hpp>
+
+
+ + Model of +
+ +
+ + Example +
+
+boost::tuple<int,std::string> example_tuple(101, "hello");
+std::cout << *boost::fusion::begin(example_tuple) << '\n';
+std::cout << *boost::fusion::next(boost::fusion::begin(example_tuple)) << '\n';
+
+
+ + See also +
+

+ Boost.Tuple + Library +

+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/adapted/boost__variant.html b/doc/html/fusion/sequences/adapted/boost__variant.html new file mode 100644 index 00000000..736a9711 --- /dev/null +++ b/doc/html/fusion/sequences/adapted/boost__variant.html @@ -0,0 +1,79 @@ + + + +boost::variant + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ This module provides adapters for boost::variant. + Including the module header makes boost::variant + a fully conforming Forward + Sequence. The variant acts as a sequence of the types that can be + contained in the variant. Accessing types not currently stored int the + variant will lead to the variant being populated with a default constructed + value of that type. +

+
+ + Header +
+
+#include <boost/fusion/sequence/adapted/variant.hpp>
+
+
+ + Model + of +
+ +
+ + Example +
+
+boost::variant<int,std::string> example_variant = 101;
+std::cout << example_variant << '\n';
+*boost::fusion::find<std::string>(example_variant) = "hello";
+std::cout << example_variant << '\n';
+
+
+ + See also +
+

+ Boost.Variant Library +

+
+ + + +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/sequences/adapted/mpl_sequence.html b/doc/html/fusion/sequences/adapted/mpl_sequence.html index 6644d98b..9e1e50ea 100644 --- a/doc/html/fusion/sequences/adapted/mpl_sequence.html +++ b/doc/html/fusion/sequences/adapted/mpl_sequence.html @@ -31,14 +31,14 @@ sequences fully conforming fusion sequences.

- + Header
 #include <boost/fusion/sequence/adapted/mpl.hpp>
 
- + Model of
    @@ -62,7 +62,7 @@
- + Example
@@ -76,7 +76,7 @@
 std::cout << at_c<1>(v) << std::endl;
 
- + See also

diff --git a/doc/html/fusion/sequences/adapted/std__pair.html b/doc/html/fusion/sequences/adapted/std__pair.html index 3c38130c..62a81557 100644 --- a/doc/html/fusion/sequences/adapted/std__pair.html +++ b/doc/html/fusion/sequences/adapted/std__pair.html @@ -33,21 +33,21 @@ Access Sequence.

- + Header
 #include <boost/fusion/sequence/adapted/std_pair.hpp>
 
- + Model of
- + Example
@@ -57,12 +57,13 @@
 std::cout << p << std::endl;
 
- + See also

std::pair, - TR1 and std::pair + TR1 + and std::pair

diff --git a/doc/html/fusion/sequences/concepts.html b/doc/html/fusion/sequences/concepts.html index a195325d..c3692992 100644 --- a/doc/html/fusion/sequences/concepts.html +++ b/doc/html/fusion/sequences/concepts.html @@ -40,7 +40,7 @@ Fusion Sequences are organized into a hierarchy of concepts.

- + Traversal

@@ -58,7 +58,7 @@ Sequence. These concepts pertain to sequence traversal.

- + Associativity

diff --git a/doc/html/fusion/sequences/concepts/associative_sequence.html b/doc/html/fusion/sequences/concepts/associative_sequence.html index f7bbc6a6..a7ad919f 100644 --- a/doc/html/fusion/sequences/concepts/associative_sequence.html +++ b/doc/html/fusion/sequences/concepts/associative_sequence.html @@ -30,7 +30,7 @@ Sequence">Associative Sequence

- + Description

@@ -71,7 +71,7 @@

- + Valid Expressions
@@ -108,12 +108,12 @@ - + @@ -121,7 +121,7 @@
Constant
at_key<K>(s) = oat_key<K>(s) = o Any type s - is mutable and e = o, + is mutable and e = o, where e is the first element in the sequence, is a valid expression. Constant
- + Result Type Expressions
@@ -136,32 +136,32 @@ -result_of::has_key<S, K>::type +result_of::has_key<S, K>::type Amortized constant time -result_of::at_key<S, K>::type +result_of::at_key<S, K>::type Amortized constant time -result_of::value_at_key<S, K>::type +result_of::value_at_key<S, K>::type Amortized constant time

- note result_of::at_key<S, K> - returns the actual type returned by at_key<K>(s). In + note result_of::at_key<S, K> returns the actual type returned by + at_key<K>(s). In most cases, this is a reference. Hence, there is no way to know the exact - element type using result_of::at_key<S, K>.The - element at K may actually - be a reference to begin with. For this purpose, you can use result_of::value_at_key<S, N>. + element type using result_of::at_key<S, K>.The element at K + may actually be a reference to begin with. For this purpose, you can use + result_of::value_at_key<S, N>.

- + Expression Semantics
@@ -179,8 +179,9 @@ has_key<K>(s) A boolean Integral Constant c - such that c::value == true if and only if there is one or - more elements with the key k + such that c::value == + true if and only if there + is one or more elements with the key k in s; see has_key. @@ -193,7 +194,7 @@
- + Models
    diff --git a/doc/html/fusion/sequences/concepts/bidirectional_sequence.html b/doc/html/fusion/sequences/concepts/bidirectional_sequence.html index 96a98163..e43d120f 100644 --- a/doc/html/fusion/sequences/concepts/bidirectional_sequence.html +++ b/doc/html/fusion/sequences/concepts/bidirectional_sequence.html @@ -31,7 +31,7 @@ Sequence">Bidirectional Sequence
- + Description

@@ -42,7 +42,7 @@ Iterator.

- + Refinement of
@@ -72,7 +72,7 @@
- + Valid Expressions
@@ -120,12 +120,12 @@ Constant -back(s) = o +back(s) = o Any type s - is mutable and e = o, + is mutable and e = o, where e is the first element in the sequence, is a valid expression. Constant @@ -133,7 +133,7 @@
- + Result Type Expressions
@@ -165,7 +165,7 @@
- + Expression Semantics
@@ -191,7 +191,7 @@
- + Models
    diff --git a/doc/html/fusion/sequences/concepts/forward_sequence.html b/doc/html/fusion/sequences/concepts/forward_sequence.html index b55786fd..7ec4993f 100644 --- a/doc/html/fusion/sequences/concepts/forward_sequence.html +++ b/doc/html/fusion/sequences/concepts/forward_sequence.html @@ -30,7 +30,7 @@ Sequence">Forward Sequence
- + Description

@@ -62,7 +62,7 @@

- + Valid Expressions
@@ -120,12 +120,12 @@ Constant -front(s) = o +front(s) = o Any type s - is mutable and e = o, + is mutable and e = o, where e is the first element in the sequence, is a valid expression. Constant @@ -133,7 +133,7 @@
- + Result Type Expressions
@@ -173,7 +173,7 @@
- + Expression Semantics
@@ -206,8 +206,9 @@ empty(s) A boolean Integral Constant c - such that c::value == true if and only if the sequence is - empty; see empty. + such that c::value == + true if and only if the sequence + is empty; see empty. front(s) @@ -217,7 +218,7 @@
- + Invariants

@@ -225,11 +226,11 @@

  • -[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 + the range [begin(s), end(s)) will pass through every element of s exactly once.
  • @@ -243,7 +244,7 @@
- + Models
    diff --git a/doc/html/fusion/sequences/concepts/random_access_sequence.html b/doc/html/fusion/sequences/concepts/random_access_sequence.html index 853f153f..f4aeacc9 100644 --- a/doc/html/fusion/sequences/concepts/random_access_sequence.html +++ b/doc/html/fusion/sequences/concepts/random_access_sequence.html @@ -31,7 +31,7 @@ Access Sequence">Random Access Sequence
- + Description

@@ -43,7 +43,7 @@ sequence elements.

- + Refinement of
@@ -78,7 +78,7 @@
- + Valid Expressions
@@ -126,12 +126,12 @@ Constant -at<N>(s) = o +at<N>(s) = o Any type s - is mutable and e = o, + is mutable and e = o, where e is the first element in the sequence, is a valid expression. Constant @@ -139,7 +139,7 @@
- + Result Type Expressions
@@ -164,27 +164,27 @@ time -result_of::at<S, N>::type +result_of::at<S, N>::type Amortized constant time -result_of::value_at<S, N>::type +result_of::value_at<S, N>::type Amortized constant time

- note result_of::at<S, N> - returns the actual type returned by at<N>(s). In + note result_of::at<S, N> returns the actual type returned by + at<N>(s). In most cases, this is a reference. Hence, there is no way to know the exact - element type using result_of::at<S, N>.The - element at N may actually - be a reference to begin with. For this purpose, you can use result_of::value_at<S, N>. + element type using result_of::at<S, N>.The element at N + may actually be a reference to begin with. For this purpose, you can use + result_of::value_at<S, N>.

- + Expression Semantics
@@ -210,7 +210,7 @@
- + Models
    diff --git a/doc/html/fusion/sequences/containers.html b/doc/html/fusion/sequences/containers.html index cdcf6dc2..e18827a9 100644 --- a/doc/html/fusion/sequences/containers.html +++ b/doc/html/fusion/sequences/containers.html @@ -39,7 +39,7 @@ These containers are more or less counterparts of those in STL.

    - + Header

    diff --git a/doc/html/fusion/sequences/containers/cons.html b/doc/html/fusion/sequences/containers/cons.html
    index 67d0b33f..f5e1fe9d 100644
    --- a/doc/html/fusion/sequences/containers/cons.html
    +++ b/doc/html/fusion/sequences/containers/cons.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -41,14 +41,14 @@ Inlined Functions).

    - + Header
     #include <boost/fusion/sequence/container/list/cons.hpp>
     
    - + Synopsis
    @@ -56,7 +56,7 @@
     struct cons;
     
    - + Template parameters
    @@ -87,7 +87,7 @@
- + Model of

- note at<N>(l) is + note at<N>(l) is provided for convenience and compatibility with the original Boost.Tuple library, despite cons being a

- + Example
diff --git a/doc/html/fusion/sequences/containers/list.html b/doc/html/fusion/sequences/containers/list.html
index ad769676..c2c988de 100644
--- a/doc/html/fusion/sequences/containers/list.html
+++ b/doc/html/fusion/sequences/containers/list.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -38,7 +38,7 @@ runtime cost of access to each element is peculiarly constant (see Recursive Inlined Functions).

- + Header
@@ -46,7 +46,7 @@
 #include <boost/fusion/sequence/container/list/list_forward.hpp>
 
- + Synopsis
@@ -77,7 +77,7 @@
 #define FUSION_MAX_LIST_SIZE 20
 
- + Template parameters
@@ -101,7 +101,7 @@
- + Model of

- note at<n>(l) is + note at<n>(l) is provided for convenience and compatibility with the original Boost.Tuple library, despite list being a

- + Example
diff --git a/doc/html/fusion/sequences/containers/map.html b/doc/html/fusion/sequences/containers/map.html
index 6a079d45..51ddc521 100644
--- a/doc/html/fusion/sequences/containers/map.html
+++ b/doc/html/fusion/sequences/containers/map.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -41,14 +41,14 @@ Functions).

- + Header
 #include <boost/fusion/sequence/container/map.hpp>
 
- + Synopsis
@@ -79,7 +79,7 @@
 #define FUSION_MAX_MAP_SIZE 20
 
- + Template parameters
@@ -103,7 +103,7 @@
- + Model of
    @@ -137,7 +137,7 @@
- + Expression Semantics
@@ -165,7 +165,8 @@ a map with default constructed elements. -M(e0, e1,... en) +M(e0, e1,... + en) Creates a map with element pairs e0...en. @@ -174,19 +175,21 @@ Copy constructs a map from a Forward - Sequence s. + Sequence s. -m = s -Assigns to a map, - m, from a m = + s +Assigns + to a map, m, from + a Forward - Sequence s. + Sequence s.
- + Example
diff --git a/doc/html/fusion/sequences/containers/set.html b/doc/html/fusion/sequences/containers/set.html
index 70065438..e400566b 100644
--- a/doc/html/fusion/sequences/containers/set.html
+++ b/doc/html/fusion/sequences/containers/set.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -39,14 +39,14 @@ Functions).

- + Header
 #include <boost/fusion/sequence/container/set.hpp>
 
- + Synopsis
@@ -77,7 +77,7 @@
 #define FUSION_MAX_SET_SIZE 20
 
- + Template parameters
@@ -101,7 +101,7 @@
- + Model of
    @@ -135,7 +135,7 @@
- + Expression Semantics
@@ -163,7 +163,8 @@ a set with default constructed elements. -S(e0, e1,... en) +S(e0, e1,... + en) Creates a set with elements e0...en. @@ -172,19 +173,21 @@ Copy constructs a set from a Forward - Sequence fs. + Sequence fs. -s = fs -Assigns to a set, - s, from a s = + fs +Assigns + to a set, s, from + a Forward - Sequence fs. + Sequence fs.
- + Example
diff --git a/doc/html/fusion/sequences/containers/vector.html b/doc/html/fusion/sequences/containers/vector.html
index 369ee0bf..a6b7cf34 100644
--- a/doc/html/fusion/sequences/containers/vector.html
+++ b/doc/html/fusion/sequences/containers/vector.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -39,7 +39,7 @@ most efficient.

- + Header
@@ -54,7 +54,7 @@
 #include <boost/fusion/sequence/container/vector/vector50.hpp>
 
- + Synopsis

@@ -115,7 +115,7 @@ #define FUSION_MAX_VECTOR_SIZE 20

- + Template parameters
@@ -139,7 +139,7 @@
- + Model of
- + Example
diff --git a/doc/html/fusion/sequences/conversion.html b/doc/html/fusion/sequences/conversion.html
index 231206bd..aaa10a56 100644
--- a/doc/html/fusion/sequences/conversion.html
+++ b/doc/html/fusion/sequences/conversion.html
@@ -34,7 +34,7 @@
         types using one of these conversion functions.
       

- + Header

diff --git a/doc/html/fusion/sequences/conversion/functions/as_list.html b/doc/html/fusion/sequences/conversion/functions/as_list.html
index 3afd351d..167ba97c 100644
--- a/doc/html/fusion/sequences/conversion/functions/as_list.html
+++ b/doc/html/fusion/sequences/conversion/functions/as_list.html
@@ -26,14 +26,14 @@
 
 
- + Description

Convert a fusion sequence to a list.

- + Synopsis
@@ -46,7 +46,7 @@
 as_list(Sequence const& seq);
 
- + Parameters
@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -83,14 +83,14 @@ seq, to a list.

- + Header
 #include <boost/fusion/sequence/conversion/as_list.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/conversion/functions/as_map.html b/doc/html/fusion/sequences/conversion/functions/as_map.html
index de6489b5..5791bc49 100644
--- a/doc/html/fusion/sequences/conversion/functions/as_map.html
+++ b/doc/html/fusion/sequences/conversion/functions/as_map.html
@@ -26,14 +26,14 @@
 
 
- + Description

Convert a fusion sequence to a map.

- + Synopsis
@@ -46,7 +46,7 @@
 as_map(Sequence const& seq);
 
- + Parameters
@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -88,14 +88,14 @@ There may be no duplicate fusion::pair key types.

- + Header
 #include <boost/fusion/sequence/conversion/as_map.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/conversion/functions/as_set.html b/doc/html/fusion/sequences/conversion/functions/as_set.html
index 2b89045b..c5b0564d 100644
--- a/doc/html/fusion/sequences/conversion/functions/as_set.html
+++ b/doc/html/fusion/sequences/conversion/functions/as_set.html
@@ -26,14 +26,14 @@
 
 
- + Description

Convert a fusion sequence to a set.

- + Synopsis
@@ -46,7 +46,7 @@
 as_set(Sequence const& seq);
 
- + Parameters
@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -87,14 +87,14 @@ key types.

- + Header
 #include <boost/fusion/sequence/conversion/as_set.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/conversion/functions/as_vector.html b/doc/html/fusion/sequences/conversion/functions/as_vector.html
index 4a2223ec..741005a4 100644
--- a/doc/html/fusion/sequences/conversion/functions/as_vector.html
+++ b/doc/html/fusion/sequences/conversion/functions/as_vector.html
@@ -26,14 +26,14 @@
 
 
- + Description

Convert a fusion sequence to a vector.

- + Synopsis
@@ -46,7 +46,7 @@
 as_vector(Sequence const& seq);
 
- + Parameters
@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -83,14 +83,14 @@ seq, to a vector.

- + Header
 #include <boost/fusion/sequence/conversion/as_vector.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_list.html b/doc/html/fusion/sequences/conversion/metafunctions/as_list.html
index 7ebf6b91..aca4cdeb 100644
--- a/doc/html/fusion/sequences/conversion/metafunctions/as_list.html
+++ b/doc/html/fusion/sequences/conversion/metafunctions/as_list.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of as_list.

- + Synopsis
@@ -41,7 +41,7 @@
 struct as_list;
 
- + Parameters
@@ -65,7 +65,7 @@
- + Expression Semantics
@@ -81,14 +81,14 @@ Sequence, to a list.

- + Header
 #include <boost/fusion/sequence/conversion/as_list.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_map.html b/doc/html/fusion/sequences/conversion/metafunctions/as_map.html
index 4dbb9cf0..8f11703d 100644
--- a/doc/html/fusion/sequences/conversion/metafunctions/as_map.html
+++ b/doc/html/fusion/sequences/conversion/metafunctions/as_map.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of as_map.

- + Synopsis
@@ -41,7 +41,7 @@
 struct as_map;
 
- + Parameters
@@ -65,7 +65,7 @@
- + Expression Semantics
@@ -86,14 +86,14 @@ There may be no duplicate fusion::pair key types.

- + Header
 #include <boost/fusion/sequence/conversion/as_map.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_set.html b/doc/html/fusion/sequences/conversion/metafunctions/as_set.html
index bcb1923b..c74ed1e2 100644
--- a/doc/html/fusion/sequences/conversion/metafunctions/as_set.html
+++ b/doc/html/fusion/sequences/conversion/metafunctions/as_set.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of as_set.

- + Synopsis
@@ -41,7 +41,7 @@
 struct as_set;
 
- + Parameters
@@ -65,7 +65,7 @@
- + Expression Semantics
@@ -85,14 +85,14 @@ key types.

- + Header
 #include <boost/fusion/sequence/conversion/as_set.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html b/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html
index 808f3ea2..bf2dc169 100644
--- a/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html
+++ b/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of as_vector.

- + Synopsis
@@ -41,7 +41,7 @@
 struct as_vector;
 
- + Parameters
@@ -65,7 +65,7 @@
- + Expression Semantics
@@ -81,14 +81,14 @@ Sequence, to a vector.

- + Header
 #include <boost/fusion/sequence/conversion/as_vector.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/generation.html b/doc/html/fusion/sequences/generation.html
index 3c4ba8c0..0f633324 100644
--- a/doc/html/fusion/sequences/generation.html
+++ b/doc/html/fusion/sequences/generation.html
@@ -33,7 +33,7 @@
         These are the functions that you can use to generate various forms of Containers from elemental values.
       

- + Header

diff --git a/doc/html/fusion/sequences/generation/functions/list_tie.html b/doc/html/fusion/sequences/generation/functions/list_tie.html
index 67f5e942..52390b33 100644
--- a/doc/html/fusion/sequences/generation/functions/list_tie.html
+++ b/doc/html/fusion/sequences/generation/functions/list_tie.html
@@ -26,14 +26,14 @@
 
 
- + Description

Constructs a tie using a list sequence.

- + Synopsis
@@ -53,7 +53,7 @@
 #define FUSION_MAX_LIST_SIZE 20
 
- + Parameters
@@ -68,17 +68,21 @@ - - + -
Description
x0, x1,... xNInstances of - T0, T1,... TN +x0, + x1,... + xNInstances + of T0, + T1,... + TN The arguments - to list_tie +The + arguments to list_tie
- + Expression Semantics
@@ -90,17 +94,17 @@ TN&>

- Semantics: Create a list of references from x0, x1,... xN. + Semantics: Create a list of references from x0, x1,... xN.

- + Header
 #include <boost/fusion/sequence/generation/list_tie.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/generation/functions/make_cons.html b/doc/html/fusion/sequences/generation/functions/make_cons.html
index 4f8cec19..872bb4b6 100644
--- a/doc/html/fusion/sequences/generation/functions/make_cons.html
+++ b/doc/html/fusion/sequences/generation/functions/make_cons.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -35,7 +35,7 @@ (tail).

- + Synopsis
@@ -48,7 +48,7 @@
 make_cons(Car const& car, Cdr const& cdr);
 
- + Parameters
@@ -82,7 +82,7 @@
- + Expression Semantics
@@ -90,7 +90,7 @@ make_cons(car, cdr);

- Return type: result_of::make_cons<Car, Cdr>::type or result_of::make_cons<Car>::type + Return type: result_of::make_cons<Car, Cdr>::type or result_of::make_cons<Car>::type

Semantics: Create a cons from car @@ -98,21 +98,21 @@ (tail).

- + Header
 #include <boost/fusion/sequence/generation/make_cons.hpp>
 
- + Example
 make_cons('x', make_cons(123))
 
- + See also
diff --git a/doc/html/fusion/sequences/generation/functions/make_list.html b/doc/html/fusion/sequences/generation/functions/make_list.html index bce8e73e..70ba8854 100644 --- a/doc/html/fusion/sequences/generation/functions/make_list.html +++ b/doc/html/fusion/sequences/generation/functions/make_list.html @@ -26,14 +26,14 @@
- + Description

Create a list from one or more values.

- + Synopsis
@@ -53,7 +53,7 @@
 #define FUSION_MAX_LIST_SIZE 20
 
- + Parameters
@@ -68,17 +68,21 @@ - - + -
Description
x0, x1,... xNInstances of - T0, T1,... TN +x0, + x1,... + xNInstances + of T0, + T1,... + TN The arguments - to make_list +The + arguments to make_list
- + Expression Semantics
@@ -86,27 +90,27 @@ make_list(x0, x1,... xN);

- Return type: result_of::make_list<T0, T1,... TN>::type + Return type: result_of::make_list<T0, T1,... TN>::type

- Semantics: Create a list from x0, x1,... xN. + Semantics: Create a list from x0, x1,... xN.

- + Header
 #include <boost/fusion/sequence/generation/make_list.hpp>
 
- + Example
 make_list(123, "hello", 12.5)
 
- + See also
diff --git a/doc/html/fusion/sequences/generation/functions/make_map.html b/doc/html/fusion/sequences/generation/functions/make_map.html index 8f7b583d..6ab49f6c 100644 --- a/doc/html/fusion/sequences/generation/functions/make_map.html +++ b/doc/html/fusion/sequences/generation/functions/make_map.html @@ -26,7 +26,7 @@
- + Description

@@ -34,7 +34,7 @@ pairs.

- + Synopsis
@@ -47,7 +47,7 @@
 

The variadic function accepts 0 to FUSION_MAX_VECTOR_SIZE - [10] + [10] elements, where FUSION_MAX_VECTOR_SIZE is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE @@ -57,7 +57,7 @@ #define FUSION_MAX_VECTOR_SIZE 20

- + Parameters
@@ -73,25 +73,31 @@ - - - + + - - + -
K0, K1,... KNThe key typesKeys - associated with x0, x1,... xN +K0, + K1,... + KNThe + key typesKeys associated with x0, x1,... xN
x0, x1,... xNInstances of - T0, T1,... TN +x0, + x1,... + xNInstances + of T0, + T1,... + TN The arguments - to make_map +The + arguments to make_map
- + Expression Semantics
@@ -99,25 +105,27 @@ make_map<K0, K1,... KN>(x0, x1,... xN);

- Return type: result_of::make_map<K0, K0,... KN, T0, T1,... TN>::type + Return type: result_of::make_map<K0, K0,... KN, T0, T1,... TN>::type

- Semantics: Create a map from K0, K1,... KN - keys and x0, x1,... xN data. + Semantics: Create a map from K0, K1,... KN + keys and x0, + x1,... + xN data.

Precondition: There may be no duplicate key types.

- + Header
 #include <boost/fusion/sequence/generation/make_map.hpp>
 
- + Example
@@ -126,7 +134,7 @@
   , make_pair<double>("Men"))
 
- + See also
@@ -136,7 +144,7 @@



-

[10] +

[10] map is implemented in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

diff --git a/doc/html/fusion/sequences/generation/functions/make_set.html b/doc/html/fusion/sequences/generation/functions/make_set.html index 6d2ef1e2..803ae3fb 100644 --- a/doc/html/fusion/sequences/generation/functions/make_set.html +++ b/doc/html/fusion/sequences/generation/functions/make_set.html @@ -26,14 +26,14 @@
- + Description

Create a set from one or more values.

- + Synopsis
@@ -44,7 +44,7 @@
 

The variadic function accepts 0 to FUSION_MAX_VECTOR_SIZE - [9] + [9] elements, where FUSION_MAX_VECTOR_SIZE is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE @@ -54,7 +54,7 @@ #define FUSION_MAX_VECTOR_SIZE 20

- + Parameters
@@ -69,17 +69,21 @@ - - + -
Description
x0, x1,... xNInstances of - T0, T1,... TN +x0, + x1,... + xNInstances + of T0, + T1,... + TN The arguments - to make_set +The + arguments to make_set
- + Expression Semantics
@@ -87,31 +91,31 @@ make_set(x0, x1,... xN);

- Return type: result_of::make_set<T0, T1,... TN>::type + Return type: result_of::make_set<T0, T1,... TN>::type

- Semantics: Create a set from x0, x1,... xN. + Semantics: Create a set from x0, x1,... xN.

Precondition: There may be no duplicate key types.

- + Header
 #include <boost/fusion/sequence/generation/make_set.hpp>
 
- + Example
 make_set(123, "hello", 12.5)
 
- + See also
@@ -120,7 +124,7 @@



-

[9] +

[9] set is implemented in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

diff --git a/doc/html/fusion/sequences/generation/functions/make_vector.html b/doc/html/fusion/sequences/generation/functions/make_vector.html index 9aa363ba..ae28f9be 100644 --- a/doc/html/fusion/sequences/generation/functions/make_vector.html +++ b/doc/html/fusion/sequences/generation/functions/make_vector.html @@ -26,14 +26,14 @@
- + Description

Create a vector from one or more values.

- + Synopsis
@@ -53,7 +53,7 @@
 #define FUSION_MAX_VECTOR_SIZE 20
 
- + Parameters
@@ -68,17 +68,21 @@ - - + -
Description
x0, x1,... xNInstances of - T0, T1,... TN +x0, + x1,... + xNInstances + of T0, + T1,... + TN The arguments - to make_vector +The + arguments to make_vector
- + Expression Semantics
@@ -86,27 +90,27 @@ make_vector(x0, x1,... xN);

- Return type: result_of::make_vector<T0, T1,... TN>::type + Return type: result_of::make_vector<T0, T1,... TN>::type

- Semantics: Create a vector from x0, x1,... xN. + Semantics: Create a vector from x0, x1,... xN.

- + Header
 #include <boost/fusion/sequence/generation/make_vector.hpp>
 
- + Example
 make_vector(123, "hello", 12.5)
 
- + See also
diff --git a/doc/html/fusion/sequences/generation/functions/tiers.html b/doc/html/fusion/sequences/generation/functions/tiers.html index d3e9b8c8..8c7536b7 100644 --- a/doc/html/fusion/sequences/generation/functions/tiers.html +++ b/doc/html/fusion/sequences/generation/functions/tiers.html @@ -46,9 +46,9 @@

The vector_tie function creates a vector - of type vector<int&, char&, double&>. + of type vector<int&, char&, double&>. The same result could be achieved with the call make_vector(ref(i), ref(c), ref(a)) - [11] + [11] .

@@ -66,7 +66,7 @@ when calling functions which return sequences.

- + Ignore

@@ -81,7 +81,7 @@



-

[11] +

[11] see Boost.Ref for details about ref

diff --git a/doc/html/fusion/sequences/generation/functions/vector_tie.html b/doc/html/fusion/sequences/generation/functions/vector_tie.html index 18af356d..eb45acf4 100644 --- a/doc/html/fusion/sequences/generation/functions/vector_tie.html +++ b/doc/html/fusion/sequences/generation/functions/vector_tie.html @@ -26,14 +26,14 @@
- + Description

Constructs a tie using a vector sequence.

- + Synopsis
@@ -53,7 +53,7 @@
 #define FUSION_MAX_VECTOR_SIZE 20
 
- + Parameters
@@ -68,17 +68,21 @@ - - + -
Description
x0, x1,... xNInstances of - T0, T1,... TN +x0, + x1,... + xNInstances + of T0, + T1,... + TN The arguments - to vector_tie +The + arguments to vector_tie
- + Expression Semantics
@@ -90,17 +94,17 @@ TN&>

- Semantics: Create a vector of references from x0, x1,... xN. + Semantics: Create a vector of references from x0, x1,... xN.

- + Header
 #include <boost/fusion/sequence/generation/vector_tie.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/generation/metafunctions/list_tie.html b/doc/html/fusion/sequences/generation/metafunctions/list_tie.html
index 696c3337..d5f9950e 100644
--- a/doc/html/fusion/sequences/generation/metafunctions/list_tie.html
+++ b/doc/html/fusion/sequences/generation/metafunctions/list_tie.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of list_tie.

- + Synopsis
@@ -52,7 +52,7 @@
 #define FUSION_MAX_LIST_SIZE 20
 
- + Parameters
@@ -67,15 +67,17 @@ - - - + +
Description
T0, T1,... TNAny typeThe - arguments to list_tie +T0, + T1,... + TNAny + typeThe arguments to list_tie
- + Expression Semantics
@@ -87,17 +89,17 @@ TN&>

- Semantics: Create a list of references from T0, T1,... TN. + Semantics: Create a list of references from T0, T1,... TN.

- + Header
 #include <boost/fusion/sequence/generation/list_tie.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_cons.html b/doc/html/fusion/sequences/generation/metafunctions/make_cons.html
index 2e53657a..dc9b1b63 100644
--- a/doc/html/fusion/sequences/generation/metafunctions/make_cons.html
+++ b/doc/html/fusion/sequences/generation/metafunctions/make_cons.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of make_cons.

- + Synopsis
@@ -41,7 +41,7 @@
 struct make_cons;
 
- + Parameters
@@ -73,7 +73,7 @@
- + Expression Semantics
@@ -91,14 +91,14 @@ (tail).

- + Header
 #include <boost/fusion/sequence/generation/make_cons.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_list.html b/doc/html/fusion/sequences/generation/metafunctions/make_list.html
index 0f71378d..54e6eb09 100644
--- a/doc/html/fusion/sequences/generation/metafunctions/make_list.html
+++ b/doc/html/fusion/sequences/generation/metafunctions/make_list.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of make_list.

- + Synopsis
@@ -52,7 +52,7 @@
 #define FUSION_MAX_LIST_SIZE 20
 
- + Parameters
@@ -67,15 +67,17 @@ - - - + +
Description
T0, T1,... TNAny typeTemplate - arguments to make_list +T0, + T1,... + TNAny + typeTemplate arguments to make_list
- + Expression Semantics
@@ -88,17 +90,17 @@ conversion.

- Semantics: Create a list from T0, T1,... TN. + Semantics: Create a list from T0, T1,... TN.

- + Header
 #include <boost/fusion/sequence/generation/make_list.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_map.html b/doc/html/fusion/sequences/generation/metafunctions/make_map.html
index c04e8222..d70315d8 100644
--- a/doc/html/fusion/sequences/generation/metafunctions/make_map.html
+++ b/doc/html/fusion/sequences/generation/metafunctions/make_map.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of make_map.

- + Synopsis
@@ -45,7 +45,7 @@
 

The variadic function accepts 0 to FUSION_MAX_VECTOR_SIZE - [13] + [13] elements, where FUSION_MAX_VECTOR_SIZE is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE @@ -55,7 +55,7 @@ #define FUSION_MAX_VECTOR_SIZE 20

- + Parameters
@@ -71,23 +71,27 @@ - - - + + - - - + +
K0, K1,... KNAny typeKeys - associated with T0, T1,... TN +K0, + K1,... + KNAny + typeKeys associated with T0, T1,... TN
T0, T1,... TNAny typeData - associated with keys K0, K1,... KN +T0, + T1,... + TNAny + typeData associated with keys K0, K1,... KN
- + Expression Semantics
@@ -95,7 +99,7 @@ resulf_of::make_map<K0, K1,... KN, T0, T1,... TN>::type;

- Return type: result_of::make_map<K0, K0,... KN, T0, T1,... TN>::type + Return type: result_of::make_map<K0, K0,... KN, T0, T1,... TN>::type

Semantics: A map with fusion::pair elements where the second_type is converted following @@ -107,21 +111,21 @@ key types.

- + Header
 #include <boost/fusion/sequence/generation/make_map.hpp>
 
- + Example
 result_of::make_map<int, double, char, double>::type
 
- + See also
@@ -130,7 +134,7 @@



-

[13] +

[13] map is implemented in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_set.html b/doc/html/fusion/sequences/generation/metafunctions/make_set.html index adbe76a5..a94ebba7 100644 --- a/doc/html/fusion/sequences/generation/metafunctions/make_set.html +++ b/doc/html/fusion/sequences/generation/metafunctions/make_set.html @@ -26,14 +26,14 @@
- + Description

Returns the result type of make_set.

- + Synopsis
@@ -43,7 +43,7 @@
 

The variadic function accepts 0 to FUSION_MAX_VECTOR_SIZE - [12] + [12] elements, where FUSION_MAX_VECTOR_SIZE is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE @@ -53,7 +53,7 @@ #define FUSION_MAX_VECTOR_SIZE 20

- + Parameters
@@ -68,15 +68,17 @@ - - - + +
Description
T0, T1,... TNAny typeThe - arguments to make_set +T0, + T1,... + TNAny + typeThe arguments to make_set
- + Expression Semantics
@@ -89,21 +91,21 @@ conversion.

- Semantics: Create a set from T0, T1,... TN. + Semantics: Create a set from T0, T1,... TN.

Precondition: There may be no duplicate key types.

- + Header
 #include <boost/fusion/sequence/generation/make_set.hpp>
 
- + Example
@@ -111,7 +113,7 @@
 


-

[12] +

[12] set is implemented in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_vector.html b/doc/html/fusion/sequences/generation/metafunctions/make_vector.html index f261bb8e..c0298e41 100644 --- a/doc/html/fusion/sequences/generation/metafunctions/make_vector.html +++ b/doc/html/fusion/sequences/generation/metafunctions/make_vector.html @@ -26,14 +26,14 @@
- + Description

Returns the result type of make_vector.

- + Synopsis
@@ -52,7 +52,7 @@
 #define FUSION_MAX_VECTOR_SIZE 20
 
- + Parameters
@@ -67,15 +67,17 @@ - - - + +
Description
T0, T1,... TNAny typeTemplate - arguments to make_vector +T0, + T1,... + TNAny + typeTemplate arguments to make_vector
- + Expression Semantics
@@ -88,17 +90,17 @@ conversion.

- Semantics: Create a vector from T0, T1,... TN. + Semantics: Create a vector from T0, T1,... TN.

- + Header
 #include <boost/fusion/sequence/generation/make_list.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html b/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html
index 4d3be016..1bf93848 100644
--- a/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html
+++ b/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of vector_tie.

- + Synopsis
@@ -52,7 +52,7 @@
 #define FUSION_MAX_VECTOR_SIZE 20
 
- + Parameters
@@ -67,15 +67,17 @@ - - - + +
Description
T0, T1,... TNAny typeThe - arguments to vector_tie +T0, + T1,... + TNAny + typeThe arguments to vector_tie
- + Expression Semantics
@@ -87,17 +89,17 @@ TN&>

- Semantics: Create a vector of references from T0, T1,... TN. + Semantics: Create a vector of references from T0, T1,... TN.

- + Header
 #include <boost/fusion/sequence/generation/vector_tie.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics.html b/doc/html/fusion/sequences/intrinsics.html
index 0e3218a2..7701a5bc 100644
--- a/doc/html/fusion/sequences/intrinsics.html
+++ b/doc/html/fusion/sequences/intrinsics.html
@@ -36,11 +36,11 @@
         Intrinsic functions, unlike Algorithms,
         are not generic across the full Sequence
         repertoire. They need to be implemented for each Fusion Sequence
-        [5]
+        [5]
         .
       

- + Header

@@ -48,7 +48,7 @@
 


-

[5] +

[5] In practice, many of intrinsic functions have default implementations that will work in majority of cases

diff --git a/doc/html/fusion/sequences/intrinsics/functions/at.html b/doc/html/fusion/sequences/intrinsics/functions/at.html index eb158afe..c926fb16 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/at.html +++ b/doc/html/fusion/sequences/intrinsics/functions/at.html @@ -26,14 +26,14 @@
- + Description

Returns the N-th element from the beginning of the sequence.

- + Synopsis
@@ -46,7 +46,7 @@
 at(Sequence const& seq);
 
- + Parameters
@@ -81,7 +81,7 @@
- + Expression Semantics
@@ -92,13 +92,15 @@ Return type: Returns a reference to the N-th element from the beginning of the sequence seq if seq is mutable and - e = o, where e + e = + o, where e is the N-th element from the beginning of the sequence, is a valid expression. Else, returns a type convertable to the N-th element from the beginning of the sequence.

- Precondition: 0 <= N::value < size(s) + Precondition: 0 + <= N::value < size(s)

Semantics: Equivalent to @@ -107,14 +109,14 @@ deref(advance<N>(begin(s)))

- + Header
 #include <boost/fusion/sequence/intrinsic/at.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/at_c.html b/doc/html/fusion/sequences/intrinsics/functions/at_c.html
index 8329abd2..4de50bbf 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/at_c.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/at_c.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the N-th element from the beginning of the sequence.

- + Synopsis
@@ -46,7 +46,7 @@
 at_c(Sequence const& seq);
 
- + Parameters
@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -91,13 +91,16 @@ Return type: Returns a reference to the N-th element from the beginning of the sequence seq if seq is mutable and - e = o, where e + e = + o, where e is the N-th element from the beginning of the sequence, is a valid expression. Else, returns a type convertable to the N-th element from the beginning of the sequence.

- Precondition: 0 <= N < size(s) + Precondition: 0 + <= N + < size(s)

Semantics: Equivalent to @@ -106,14 +109,14 @@ deref(advance<N>(begin(s)))

- + Header
 #include <boost/fusion/sequence/intrinsic/at_c.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/at_key.html b/doc/html/fusion/sequences/intrinsics/functions/at_key.html
index de5683f9..7f3b1e90 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/at_key.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/at_key.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the element associated with a Key from the sequence.

- + Synopsis
@@ -46,7 +46,7 @@
 at_key(Sequence const& seq);
 
- + Parameters
@@ -79,7 +79,7 @@
- + Expression Semantics
@@ -90,26 +90,27 @@ Return type: Returns a reference to the element associated with Key from the sequence seq if seq is mutable and - e = o, where e + e = + o, where e is the element associated with Key, is a valid expression. Else, returns a type convertable to the element associated with Key.

- Precondition: has_key<Key>(seq) == true + Precondition: has_key<Key>(seq) == true

Semantics: Returns the element associated with Key.

- + Header
 #include <boost/fusion/sequence/intrinsic/at_key.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/back.html b/doc/html/fusion/sequences/intrinsics/functions/back.html
index be44c7e2..dec1d102 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/back.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/back.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the last element in the sequence.

- + Synopsis
@@ -46,7 +46,7 @@
 back(Sequence const& seq);
 
- + Parameters
@@ -71,7 +71,7 @@
- + Expression Semantics
@@ -82,26 +82,27 @@ Return type: Returns a reference to the last element in the sequence seq if seq is mutable and - e = o, where e + e = + o, where e is the last element in the sequence, is a valid expression. Else, returns a type convertable to the last element in the sequence.

- Precondition: empty(seq) == false + Precondition: empty(seq) == false

Semantics: Returns the last element in the sequence.

- + Header
 #include <boost/fusion/sequence/intrinsic/back.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/begin.html b/doc/html/fusion/sequences/intrinsics/functions/begin.html
index 673d9108..09c74c3c 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/begin.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/begin.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns an iterator pointing to the first element in the sequence.

- + Synopsis
@@ -46,7 +46,7 @@
 begin(Sequence const& seq);
 
- + Parameters
@@ -72,7 +72,7 @@
- + Expression Semantics
@@ -102,14 +102,14 @@ to the first element in the sequence.

- + Header
 #include <boost/fusion/sequence/intrinsic/begin.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/empty.html b/doc/html/fusion/sequences/intrinsics/functions/empty.html
index 547686b1..13c24ee3 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/empty.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/empty.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -35,7 +35,7 @@ the sequence is empty, else, evaluates to false.

- + Synopsis
@@ -44,7 +44,7 @@
 empty(Sequence const& seq);
 
- + Parameters
@@ -69,7 +69,7 @@
- + Expression Semantics
@@ -84,14 +84,14 @@ to false.

- + Header
 #include <boost/fusion/sequence/intrinsic/empty.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/end.html b/doc/html/fusion/sequences/intrinsics/functions/end.html
index 02d3c204..317acb6f 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/end.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/end.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns an iterator pointing to one element past the end of the sequence.

- + Synopsis
@@ -46,7 +46,7 @@
 end(Sequence const& seq);
 
- + Parameters
@@ -72,7 +72,7 @@
- + Expression Semantics
@@ -102,14 +102,14 @@ to one element past the end of the sequence.

- + Header
 #include <boost/fusion/sequence/intrinsic/end.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/front.html b/doc/html/fusion/sequences/intrinsics/functions/front.html
index 5b6c6d19..d3cf8e9a 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/front.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/front.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the first element in the sequence.

- + Synopsis
@@ -46,7 +46,7 @@
 front(Sequence const& seq);
 
- + Parameters
@@ -71,7 +71,7 @@
- + Expression Semantics
@@ -82,26 +82,27 @@ Return type: Returns a reference to the first element in the sequence seq if seq is mutable and - e = o, where e + e = + o, where e is the first element in the sequence, is a valid expression. Else, returns a type convertable to the first element in the sequence.

- Precondition: empty(seq) == false + Precondition: empty(seq) == false

Semantics: Returns the first element in the sequence.

- + Header
 #include <boost/fusion/sequence/intrinsic/front.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/has_key.html b/doc/html/fusion/sequences/intrinsics/functions/has_key.html
index 730a2ce0..79a52efb 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/has_key.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/has_key.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -36,7 +36,7 @@ to false.

- + Synopsis
@@ -45,7 +45,7 @@
 has_key(Sequence const& seq);
 
- + Parameters
@@ -78,7 +78,7 @@
- + Expression Semantics
@@ -93,14 +93,14 @@ associated with Key, else, evaluates to false.

- + Header
 #include <boost/fusion/sequence/intrinsic/has_key.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/size.html b/doc/html/fusion/sequences/intrinsics/functions/size.html
index dcd82a5e..34a48e38 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/size.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/size.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ that evaluates the number of elements in the sequence.

- + Synopsis
@@ -43,7 +43,7 @@
 size(Sequence const& seq);
 
- + Parameters
@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -83,14 +83,14 @@ in the sequence.

- + Header
 #include <boost/fusion/sequence/intrinsic/size.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/at.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at.html
index c575c466..1bb45941 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/at.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/at.html
@@ -26,16 +26,16 @@
 
 
- + Description

Returns the result type of at - [6] + [6] .

- + Synopsis
@@ -48,7 +48,7 @@
 };
 
-

Table 1.25. Parameters

+

Table 1.25. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -95,14 +95,14 @@ using at to access the Nth element of Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/at.hpp>
 
- + Example
@@ -111,7 +111,7 @@
 


-

[6] +

[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 diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html index 705930c4..713f20f1 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html @@ -26,16 +26,16 @@

- + Description

Returns the result type of at_c - [7] + [7] .

- + Synopsis
@@ -48,7 +48,7 @@
 };
 
-

Table 1.26. Parameters

+

Table 1.26. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -95,14 +95,14 @@ using at_c to access the Mth element of Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/at.hpp>
 
- + Example
@@ -111,7 +111,7 @@
 


-

[7] +

[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 diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html index 0b4a245b..5eb245b7 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html @@ -26,16 +26,16 @@

- + Description

Returns the result type of at_key - [8] + [8] .

- + Synopsis
@@ -48,7 +48,7 @@
 };
 
-

Table 1.30. Parameters

+

Table 1.30. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -97,14 +97,14 @@ Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/at_key.hpp>
 
- + Example
@@ -113,7 +113,7 @@
 


-

[8] +

[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 diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/back.html b/doc/html/fusion/sequences/intrinsics/metafunctions/back.html index 347538c6..4f79219a 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/back.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/back.html @@ -26,14 +26,14 @@

- + Description

Returns the result type of back.

- + Synopsis
@@ -44,7 +44,7 @@
 };
 
-

Table 1.23. Parameters

+

Table 1.23. Parameters

@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -83,14 +83,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>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html b/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html
index fb7f379d..d51f0dcb 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of begin.

- + Synopsis
@@ -44,7 +44,7 @@
 };
 
-

Table 1.19. Parameters

+

Table 1.19. Parameters

@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -84,14 +84,14 @@ to the first element of Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/begin.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html b/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html
index 2893570a..e9960fb8 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of empty.

- + Synopsis
@@ -44,7 +44,7 @@
 };
 
-

Table 1.21. Parameters

+

Table 1.21. Parameters

@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -84,14 +84,14 @@ mpl::false_ otherwise.

- + Header
 #include <boost/fusion/sequence/intrinsic/empty.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/end.html b/doc/html/fusion/sequences/intrinsics/metafunctions/end.html
index 871ad5a6..94c27951 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/end.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/end.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of end.

- + Synopsis
@@ -44,7 +44,7 @@
 };
 
-

Table 1.20. Parameters

+

Table 1.20. Parameters

@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -84,14 +84,14 @@ one past the end of Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/end.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/front.html b/doc/html/fusion/sequences/intrinsics/metafunctions/front.html
index 372191ac..77a5318f 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/front.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/front.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of front.

- + Synopsis
@@ -44,7 +44,7 @@
 };
 
-

Table 1.22. Parameters

+

Table 1.22. Parameters

@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -84,14 +84,14 @@ Equivalent to result_of::deref<result_of::begin<Seq>::type>::type.

- + Header
 #include <boost/fusion/sequence/intrinsic/front.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html
index 1f23bcef..7d63088c 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of has_key.

- + Synopsis
@@ -46,7 +46,7 @@
 };
 
-

Table 1.29. Parameters

+

Table 1.29. Parameters

@@ -78,7 +78,7 @@
- + Expression Semantics
@@ -95,14 +95,14 @@ mpl::false_ otherwise.

- + Header
 #include <boost/fusion/sequence/intrinsic/has_key.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/size.html b/doc/html/fusion/sequences/intrinsics/metafunctions/size.html
index 29f2c18a..b69d9396 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/size.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/size.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of size.

- + Synopsis
@@ -44,7 +44,7 @@
 };
 
-

Table 1.24. Parameters

+

Table 1.24. Parameters

@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -83,14 +83,14 @@ in Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/size.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html
index 25e78bd3..03a77a3e 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the actual type at a given index from the Sequence.

- + Synopsis
@@ -46,7 +46,7 @@
 };
 
-

Table 1.27. Parameters

+

Table 1.27. Parameters

@@ -78,7 +78,7 @@
- + Expression Semantics
@@ -93,14 +93,14 @@ the Nth element of Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/value_at.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html
index 60deaccc..f9c7a754 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the actual type at a given index from the Sequence.

- + Synopsis
@@ -46,7 +46,7 @@
 };
 
-

Table 1.28. Parameters

+

Table 1.28. Parameters

@@ -78,7 +78,7 @@
- + Expression Semantics
@@ -93,14 +93,14 @@ the Mth element of Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/value_at.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html
index e073a890..61e44f24 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the actual element type associated with a Key from the Sequence.

- + Synopsis
@@ -46,7 +46,7 @@
 };
 
-

Table 1.31. Parameters

+

Table 1.31. Parameters

@@ -78,7 +78,7 @@
- + Expression Semantics
@@ -94,14 +94,14 @@ in Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/value_at_key.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators/comparison.html b/doc/html/fusion/sequences/operators/comparison.html
index d91263a3..6c3f945c 100644
--- a/doc/html/fusion/sequences/operators/comparison.html
+++ b/doc/html/fusion/sequences/operators/comparison.html
@@ -48,7 +48,7 @@
           only until the result is clear.
         

- + Header
diff --git a/doc/html/fusion/sequences/operators/comparison/equal.html b/doc/html/fusion/sequences/operators/comparison/equal.html
index 1ff05e6d..c1ba1ff5 100644
--- a/doc/html/fusion/sequences/operators/comparison/equal.html
+++ b/doc/html/fusion/sequences/operators/comparison/equal.html
@@ -27,14 +27,14 @@
 
 
- + Description

Compare two sequences for equality.

- + Synopsis
@@ -43,7 +43,7 @@
 operator==(Seq1 const& a, Seq2 const& b);
 
- + Parameters
@@ -58,16 +58,17 @@ - - +
Description
a, bInstances of - Sequence +a, + bInstances + of Sequence _sequence_s to compare
- + Expression Semantics
@@ -84,7 +85,7 @@ For each element, e1, in sequence a, and for each element, e2, in - sequence b, a == b is a valid expression returning a + sequence b, a == b is a valid expression returning a type that is convertible to bool.

@@ -98,19 +99,19 @@ For each element, e1, in sequence a, and for each element, e2, in - sequence b, e1 == e2 returns true. For any 2 zero length + sequence b, e1 == e2 returns true. For any 2 zero length _sequence_s, e and f, e == f returns true.

- + Header
 #include <boost/fusion/sequence/comparison/equal_to.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators/comparison/greater_than.html b/doc/html/fusion/sequences/operators/comparison/greater_than.html
index 272fb007..a5b9660d 100644
--- a/doc/html/fusion/sequences/operators/comparison/greater_than.html
+++ b/doc/html/fusion/sequences/operators/comparison/greater_than.html
@@ -34,7 +34,7 @@
             Lexicographically compare two sequences.
           

- + Synopsis
@@ -43,7 +43,7 @@
 operator>(Seq1 const& a, Seq2 const& b);
 
- + Parameters
@@ -58,16 +58,17 @@ - - +
Description
a, bInstances of - Sequence +a, + bInstances + of Sequence _sequence_s to compare
- + Expression Semantics
@@ -84,7 +85,7 @@ For each element, e1, in sequence a, and for each element, e2, in - sequence b, a < b is a valid expression returning a + sequence b, a < b is a valid expression returning a type that is convertible to bool.

@@ -95,14 +96,14 @@ Semantics: Returns b < a.

- + Header
 #include <boost/fusion/sequence/comparison/less_equal.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html b/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html
index 654ebb43..50a765b3 100644
--- a/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html
+++ b/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html
@@ -33,7 +33,7 @@
             Lexicographically compare two sequences.
           

- + Synopsis
@@ -42,7 +42,7 @@
 operator>=(Seq1 const& a, Seq2 const& b);
 
- + Parameters
@@ -57,16 +57,17 @@ - - +
Description
a, bInstances of - Sequence +a, + bInstances + of Sequence _sequence_s to compare
- + Expression Semantics
@@ -83,7 +84,7 @@ For each element, e1, in sequence a, and for each element, e2, in - sequence b, a < b is a valid expression returning a + sequence b, a < b is a valid expression returning a type that is convertible to bool.

@@ -94,14 +95,14 @@ Semantics: Returns !(a < b).

- + Header
 #include <boost/fusion/sequence/comparison/greater_equal.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators/comparison/less_than.html b/doc/html/fusion/sequences/operators/comparison/less_than.html
index 72a6d38d..4a64508b 100644
--- a/doc/html/fusion/sequences/operators/comparison/less_than.html
+++ b/doc/html/fusion/sequences/operators/comparison/less_than.html
@@ -34,7 +34,7 @@
             Lexicographically compare two sequences.
           

- + Synopsis
@@ -43,7 +43,7 @@
 operator<(Seq1 const& a, Seq2 const& b);
 
- + Parameters
@@ -58,16 +58,17 @@ - - +
Description
a, bInstances of - Sequence +a, + bInstances + of Sequence _sequence_s to compare
- + Expression Semantics
@@ -84,7 +85,7 @@ For each element, e1, in sequence a, and for each element, e2, in - sequence b, a < b is a valid expression returning a + sequence b, a < b is a valid expression returning a type that is convertible to bool.

@@ -97,14 +98,14 @@ and b.

- + Header
 #include <boost/fusion/sequence/comparison/less.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators/comparison/less_than_equal.html b/doc/html/fusion/sequences/operators/comparison/less_than_equal.html
index 7591a912..561a5401 100644
--- a/doc/html/fusion/sequences/operators/comparison/less_than_equal.html
+++ b/doc/html/fusion/sequences/operators/comparison/less_than_equal.html
@@ -34,7 +34,7 @@
             Lexicographically compare two sequences.
           

- + Synopsis
@@ -43,7 +43,7 @@
 operator<=(Seq1 const& a, Seq2 const& b);
 
- + Parameters
@@ -58,16 +58,17 @@ - - +
Description
a, bInstances of - Sequence +a, + bInstances + of Sequence _sequence_s to compare
- + Expression Semantics
@@ -84,7 +85,7 @@ For each element, e1, in sequence a, and for each element, e2, in - sequence b, a < b is a valid expression returning a + sequence b, a < b is a valid expression returning a type that is convertible to bool.

@@ -95,14 +96,14 @@ Semantics: Returns !(b < a).

- + Header
 #include <boost/fusion/sequence/comparison/less_equal.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators/comparison/not_equal.html b/doc/html/fusion/sequences/operators/comparison/not_equal.html
index edd32f59..57ebe236 100644
--- a/doc/html/fusion/sequences/operators/comparison/not_equal.html
+++ b/doc/html/fusion/sequences/operators/comparison/not_equal.html
@@ -33,7 +33,7 @@
             Compare two sequences for inequality.
           

- + Synopsis
@@ -42,7 +42,7 @@
 operator!=(Seq1 const& a, Seq2 const& b);
 
- + Parameters
@@ -57,16 +57,17 @@ - - +
Description
a, bInstances of - Sequence +a, + bInstances + of Sequence _sequence_s to compare
- + Expression Semantics
@@ -83,7 +84,7 @@ For each element, e1, in sequence a, and for each element, e2, in - sequence b, a == b is a valid expression returning a + sequence b, a == b is a valid expression returning a type that is convertible to bool.

@@ -97,14 +98,14 @@ Returns !(a == b).

- + Header
 #include <boost/fusion/sequence/comparison/not_equal_to.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators/i_o.html b/doc/html/fusion/sequences/operators/i_o.html
index 10e1f93d..54c8afe5 100644
--- a/doc/html/fusion/sequences/operators/i_o.html
+++ b/doc/html/fusion/sequences/operators/i_o.html
@@ -115,7 +115,7 @@
           representation may not be unambiguously parseable.
         

- + Header
diff --git a/doc/html/fusion/sequences/operators/i_o/in.html b/doc/html/fusion/sequences/operators/i_o/in.html
index 534bf0d1..368ff95d 100644
--- a/doc/html/fusion/sequences/operators/i_o/in.html
+++ b/doc/html/fusion/sequences/operators/i_o/in.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ stream.

- + Synopsis
@@ -43,7 +43,7 @@
 operator>>(IStream& is, Sequence& seq);
 
- + Parameters
@@ -73,7 +73,7 @@
- + Expression Semantics
@@ -85,17 +85,18 @@

Semantics: For each element, e, in sequence, seq, - call is >> e. + call is >> + e.

- + Header
 #include <boost/fusion/sequence/io/in.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators/i_o/out.html b/doc/html/fusion/sequences/operators/i_o/out.html
index 8cc8aa5d..f286699b 100644
--- a/doc/html/fusion/sequences/operators/i_o/out.html
+++ b/doc/html/fusion/sequences/operators/i_o/out.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ stream.

- + Synopsis
@@ -43,7 +43,7 @@
 operator<<(OStream& os, Sequence& seq);
 
- + Parameters
@@ -73,7 +73,7 @@
- + Expression Semantics
@@ -85,17 +85,18 @@

Semantics: For each element, e, in sequence, seq, - call os << e. + call os << + e.

- + Header
 #include <boost/fusion/sequence/io/out.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/views.html b/doc/html/fusion/sequences/views.html
index 49e6ce55..b957719c 100644
--- a/doc/html/fusion/sequences/views.html
+++ b/doc/html/fusion/sequences/views.html
@@ -44,7 +44,7 @@
         very cheap to copy and be passed around by value.
       

- + Header

diff --git a/doc/html/fusion/sequences/views/filter_view.html b/doc/html/fusion/sequences/views/filter_view.html
index ac590014..583daa59 100644
--- a/doc/html/fusion/sequences/views/filter_view.html
+++ b/doc/html/fusion/sequences/views/filter_view.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -37,14 +37,14 @@ only those elements for which its predicate evaluates to mpl::true_.

- + Header
 #include <boost/fusion/sequence/view/filter_view.hpp>
 
- + Synopsis
@@ -52,7 +52,7 @@
 struct filter_view;
 
- + Template parameters
@@ -87,7 +87,7 @@
- + Model of
  • - + Expression Semantics
    @@ -147,15 +147,17 @@ f. -f = f2 -Assigns to a - filter_view, f, from another filter_view, - f2. +f = + f2 +Assigns + to a filter_view, + f, from another + filter_view, f2.
- + Example
diff --git a/doc/html/fusion/sequences/views/iterator_range.html b/doc/html/fusion/sequences/views/iterator_range.html
index 049e9044..be29163b 100644
--- a/doc/html/fusion/sequences/views/iterator_range.html
+++ b/doc/html/fusion/sequences/views/iterator_range.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,14 +34,14 @@ a sub-range of its underlying sequence delimited by a pair of iterators.

- + Header
 #include <boost/fusion/sequence/view/iterator_range.hpp>
 
- + Synopsis
@@ -49,7 +49,7 @@
 struct iterator_range;
 
- + Template parameters
@@ -82,7 +82,7 @@
- + Model of
  • - + Expression Semantics
    @@ -131,7 +131,7 @@ -IR(f, l) +IR(f, l) Creates an iterator_range given iterators, f @@ -145,9 +145,10 @@ ir. -ir = ir2 -Assigns to a - iterator_range, +ir = + ir2 +Assigns + to a iterator_range, ir, from another iterator_range, ir2. @@ -155,7 +156,7 @@
- + Example
diff --git a/doc/html/fusion/sequences/views/joint_view.html b/doc/html/fusion/sequences/views/joint_view.html
index 37938576..ad0153d3 100644
--- a/doc/html/fusion/sequences/views/joint_view.html
+++ b/doc/html/fusion/sequences/views/joint_view.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,14 +34,14 @@ which is a concatenation of two sequences.

- + Header
 #include <boost/fusion/sequence/view/joint_view.hpp>
 
- + Synopsis
@@ -49,7 +49,7 @@
 struct joint_view;
 
- + Template parameters
@@ -86,7 +86,7 @@
- + Model of
  • - + Expression Semantics
    @@ -135,7 +135,7 @@ -JV(s1, s2) +JV(s1, s2) Creates a joint_view given sequences, s1 and @@ -149,14 +149,17 @@ jv. -jv = jv2 -Assigns to a - joint_view, jv, from another joint_view, jv2. +jv = + jv2 +Assigns + to a joint_view, + jv, from another + joint_view, jv2.
- + Example
diff --git a/doc/html/fusion/sequences/views/reverse_view.html b/doc/html/fusion/sequences/views/reverse_view.html
index fa2b1844..7142b9b3 100644
--- a/doc/html/fusion/sequences/views/reverse_view.html
+++ b/doc/html/fusion/sequences/views/reverse_view.html
@@ -31,14 +31,14 @@
           and the last element will be its first.
         

- + Header
 #include <boost/fusion/sequence/view/reverse_view.hpp>
 
- + Synopsis
@@ -46,7 +46,7 @@
 struct reverse_view;
 
- + Template parameters
@@ -72,7 +72,7 @@
- + Model of
  • - + Expression Semantics
    @@ -131,14 +131,17 @@ rv. -rv = rv2 -Assigns to a - reverse_view, rv, from another reverse_view, rv2. +rv = + rv2 +Assigns + to a reverse_view, + rv, from another + reverse_view, rv2.
- + Example
diff --git a/doc/html/fusion/sequences/views/single_view.html b/doc/html/fusion/sequences/views/single_view.html
index 45380fe1..6f0982a6 100644
--- a/doc/html/fusion/sequences/views/single_view.html
+++ b/doc/html/fusion/sequences/views/single_view.html
@@ -30,14 +30,14 @@
           a value as a single element sequence.
         

- + Header
 #include <boost/fusion/sequence/view/single_view.hpp>
 
- + Synopsis
@@ -45,7 +45,7 @@
 struct single_view;
 
- + Template parameters
@@ -68,7 +68,7 @@
- + Model of
  • - + Expression Semantics
    @@ -126,15 +126,17 @@ s. -s = s2 -Assigns to a - single_view, s, from another single_view, - s2. +s = + s2 +Assigns + to a single_view, + s, from another + single_view, s2.
- + Example
diff --git a/doc/html/fusion/sequences/views/transform_view.html b/doc/html/fusion/sequences/views/transform_view.html
index b6cbee38..ea72b071 100644
--- a/doc/html/fusion/sequences/views/transform_view.html
+++ b/doc/html/fusion/sequences/views/transform_view.html
@@ -27,21 +27,21 @@
 transform_view

transform_view presents - a transformed view of its underlying sequence given a unary Polymorphic + a transformed view of its underlying sequence given a unary Polymorphic Function Object. The transform_view inherits the traversal characteristics (see Sequence Traversal Concept) of its underlying sequence.

- + Header
 #include <boost/fusion/sequence/view/transform_view.hpp>
 
- + Synopsis

@@ -59,7 +59,7 @@ struct transform_view;

- + Template parameters
@@ -105,16 +105,16 @@ F A - Polymorphic - Function Object + Polymorphic Function + Object  
- + Model of
  • @@ -169,7 +169,7 @@
- + Expression Semantics
@@ -196,23 +196,23 @@ -UTV(s, f) +UTV(s, f) Creates a unary transform_view given sequence, s - and unary Polymorphic + and unary Polymorphic Function Object, f. -BTV(s1, s2, f) +BTV(s1, s2, f) Creates a binary transform_view given sequences, s1 and s2 and unary - Polymorphic - Function Object, f. + Polymorphic Function + Object, f. TV(tv) @@ -222,9 +222,10 @@ tv. -tv = tv2 -Assigns to a - transform_view, +tv = + tv2 +Assigns + to a transform_view, tv, from another transform_view, tv2. @@ -232,7 +233,7 @@
- + Example
diff --git a/doc/html/fusion/sequences/views/zip_view.html b/doc/html/fusion/sequences/views/zip_view.html
index 534d46ab..6cf78446 100644
--- a/doc/html/fusion/sequences/views/zip_view.html
+++ b/doc/html/fusion/sequences/views/zip_view.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -37,14 +37,14 @@ of references to the component _sequence_s.

- + Header
 #include <boost/fusion/sequence/view/zip_view.hpp>
 
- + Synopsis
@@ -52,7 +52,7 @@
 struct zip_view;
 
- + Template parameters
@@ -77,7 +77,7 @@
- + Model of
  • - + Expression Semantics
    @@ -135,14 +135,15 @@ zv. -zv1 = zv2 +zv1 = + zv2 Assigns to a zip_view, zv, from another zip_view, zv2.
- + Example
diff --git a/doc/html/fusion/support/category_of.html b/doc/html/fusion/support/category_of.html
index 219e3609..133c72e9 100644
--- a/doc/html/fusion/support/category_of.html
+++ b/doc/html/fusion/support/category_of.html
@@ -26,7 +26,7 @@
 
 

- + Description

@@ -36,7 +36,7 @@ Sequence Concepts).

- + Synopsis

@@ -50,7 +50,7 @@
 }
 

- + Parameters

@@ -72,7 +72,7 @@

- + Expression Semantics

@@ -138,14 +138,14 @@ of a particular Sequence or Iterator.

- + Header

 #include <boost/fusion/support/category_of.hpp>
 

- + Example

diff --git a/doc/html/fusion/support/is_sequence.html b/doc/html/fusion/support/is_sequence.html
index 82fc1695..18867764 100644
--- a/doc/html/fusion/support/is_sequence.html
+++ b/doc/html/fusion/support/is_sequence.html
@@ -26,7 +26,7 @@
 
 

- + Description

@@ -37,7 +37,7 @@ conforming sequences.

- + Synopsis

@@ -51,7 +51,7 @@
 }
 

- + Parameters

@@ -73,7 +73,7 @@

- + Expression Semantics

@@ -90,14 +90,14 @@ otherwise.

- + Header

 #include <boost/fusion/support/is_sequence.hpp>
 

- + Example

diff --git a/doc/html/fusion/support/is_view.html b/doc/html/fusion/support/is_view.html
index 9d595da6..043a9bd7 100644
--- a/doc/html/fusion/support/is_view.html
+++ b/doc/html/fusion/support/is_view.html
@@ -26,7 +26,7 @@
 
 

- + Description

@@ -40,7 +40,7 @@ specialized to accomodate clients providing Fusion conforming views.

- + Synopsis

@@ -54,7 +54,7 @@
 }
 

- + Parameters

@@ -76,7 +76,7 @@

- + Expression Semantics

@@ -92,14 +92,14 @@
         otherwise.
       

- + Header

 #include <boost/fusion/support/is_view.hpp>
 

- + Example

diff --git a/doc/html/fusion/support/pair.html b/doc/html/fusion/support/pair.html
index f45a3612..1f9373e8 100644
--- a/doc/html/fusion/support/pair.html
+++ b/doc/html/fusion/support/pair.html
@@ -26,7 +26,7 @@
 
 

- + Description

@@ -37,7 +37,7 @@ for example.

- + Synopsis

@@ -61,7 +61,7 @@
 make_pair(Second const &);
 

- + Template parameters

@@ -117,7 +117,7 @@

- + Expression Semantics

@@ -160,9 +160,10 @@ constructs a pair from another pair, p2. - - + + @@ -173,34 +174,38 @@ - + - + - - + + - - + +
p = p2Assigns a pair, - p1, from another pair, p2.p = + p2Assigns + a pair, p1, from another pair, p2.
make_pair<F>(s)
o << po << + p Output p to output stream, o.
i >> pi >> + p Input p from input stream, i.
p == p2Tests two pairs - for equality.p == + p2Tests two + pairs for equality.
p != p2Tests two pairs - for inequality.p != + p2Tests two + pairs for inequality.

- + Header

 #include <boost/fusion/support/pair.hpp>
 

- + Example

diff --git a/doc/html/fusion/support/tag_of.html b/doc/html/fusion/support/tag_of.html
index e337efa4..e0800085 100644
--- a/doc/html/fusion/support/tag_of.html
+++ b/doc/html/fusion/support/tag_of.html
@@ -26,7 +26,7 @@
 
 

- + Description

@@ -40,7 +40,7 @@ conforming sequences.

- + Synopsis

@@ -54,7 +54,7 @@
 }
 

- + Parameters

@@ -76,7 +76,7 @@

- + Expression Semantics

@@ -90,14 +90,14 @@
         with T.
       

- + Header

 #include <boost/fusion/support/tag_of.hpp>
 

- + Example

diff --git a/doc/html/fusion/tuples/class_template_tuple.html b/doc/html/fusion/tuples/class_template_tuple.html
index ac817cef..79861bd6 100644
--- a/doc/html/fusion/tuples/class_template_tuple.html
+++ b/doc/html/fusion/tuples/class_template_tuple.html
@@ -48,7 +48,7 @@
         in future releases of fusion.
       

- + Synopsis

@@ -60,7 +60,7 @@
 class tuple;
 

- + Header

diff --git a/doc/html/fusion/tuples/class_template_tuple/construction.html b/doc/html/fusion/tuples/class_template_tuple/construction.html
index e788eea4..e83182a5 100644
--- a/doc/html/fusion/tuples/class_template_tuple/construction.html
+++ b/doc/html/fusion/tuples/class_template_tuple/construction.html
@@ -27,7 +27,7 @@
 
 
- + Description

@@ -38,7 +38,7 @@ in this section.

- + Specification
@@ -84,7 +84,7 @@

Requirements: Each Pi - is Ti if Ti is a reference type, const Ti& otherwise. + is Ti if Ti is a reference type, const Ti& otherwise.

Semantics: Copy initializes each element diff --git a/doc/html/fusion/tuples/class_template_tuple/element_access.html b/doc/html/fusion/tuples/class_template_tuple/element_access.html index 51b0a7b0..7c6cb4dd 100644 --- a/doc/html/fusion/tuples/class_template_tuple/element_access.html +++ b/doc/html/fusion/tuples/class_template_tuple/element_access.html @@ -31,7 +31,7 @@ access">Element access

- + Description

@@ -40,7 +40,7 @@ function to provide access to it's elements by zero based numeric index.

- + Specification
@@ -48,7 +48,9 @@
 RJ get(T& t);
 

- Requires: 0 < I <= N. + Requires: 0 + < I + <= N. The program is ill formed if I is out of bounds. T is any fusion sequence type, including tuple. @@ -65,7 +67,9 @@ PJ get(T const& t);

- Requires: 0 < I <= N. + Requires: 0 + < I + <= N. The program is ill formed if I is out of bounds. T is any fusion sequence type, including tuple. diff --git a/doc/html/fusion/tuples/class_template_tuple/relational_operators.html b/doc/html/fusion/tuples/class_template_tuple/relational_operators.html index f73a5290..e6559c8d 100644 --- a/doc/html/fusion/tuples/class_template_tuple/relational_operators.html +++ b/doc/html/fusion/tuples/class_template_tuple/relational_operators.html @@ -30,7 +30,7 @@ operators">Relational operators

- + Description

@@ -38,7 +38,7 @@ Tuple provides the standard boolean relational operators.

- + Specification
@@ -77,18 +77,21 @@

Requirements: For all i, - 1 <= i < N, get<i>(lhs) == 1 <= + i < + N, get<i>(lhs) == get<i>(rhs) is a valid expression returning a type that is convertible to bool.

Semantics: Returns true if and only if get<i>(lhs) == get<i>(lhs) == get<i>(rhs) for all i. For any 2 zero - length tuples e and f, e == f + length tuples e and f, e + == f returns true.

@@ -100,8 +103,10 @@
 

Requirements: For all i, - 1 <= i < N, get<i>(lhs) < 1 <= + i < + N, get<i>(lhs) < get<i>(rhs) is a valid expression returning a type that is convertible to bool.

@@ -119,13 +124,15 @@

Requirements: For all i, - 1 <= i < N, get<i>(lhs) == 1 <= + i < + N, get<i>(lhs) == get<i>(rhs) is a valid expression returning a type that is convertible to bool.

- Semantics: Returns !(lhs == rhs). + Semantics: Returns !(lhs == rhs).

 template<typename T1, typename T2, ..., typename TN,
@@ -136,13 +143,15 @@
 

Requirements: For all i, - 1 <= i < N, get<i>(rhs) < 1 <= + i < + N, get<i>(rhs) < get<i>(lhs) is a valid expression returning a type that is convertible to bool.

- Semantics: Returns !(rhs < lhs) + Semantics: Returns !(rhs < lhs)

 template<typename T1, typename T2, ..., typename TN,
@@ -153,13 +162,16 @@
 

Requirements: For all i, - 1 <= i < N, get<i>(rhs) < 1 <= + i < + N, get<i>(rhs) < get<i>(lhs) is a valid expression returning a type that is convertible to bool.

- Semantics: Returns rhs < lhs. + Semantics: Returns rhs + < lhs.

 template<typename T1, typename T2, ..., typename TN,
@@ -170,13 +182,15 @@
 

Requirements: For all i, - 1 <= i < N, get<i>(lhs) < 1 <= + i < + N, get<i>(lhs) < get<i>(rhs) is a valid expression returning a type that is convertible to bool.

- Semantics: Returns !(lhs < rhs). + Semantics: Returns !(lhs < rhs).

diff --git a/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html b/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html index a88104b9..4aa13c50 100644 --- a/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html +++ b/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html @@ -30,7 +30,7 @@ creation functions">Tuple creation functions
- + Description

@@ -40,7 +40,7 @@ functions are described in this section.

- + Specification
@@ -54,7 +54,7 @@
           otherwise Vi is Ti.
         

- Returns: tuple<V1, V2, ..., VN>(t1, t2, ..., tN) + Returns: tuple<V1, V2, ..., VN>(t1, t2, ..., tN)

 template<typename T1, typename T2, ..., typename TN>
diff --git a/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html b/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html
index 8ef28681..0398f483 100644
--- a/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html
+++ b/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html
@@ -31,7 +31,7 @@
         helper classes">Tuple
         helper classes
 
- + Description

@@ -40,7 +40,7 @@ tuple size, and the element types.

- + Specification
@@ -63,7 +63,9 @@
 

Requires: T is any fusion sequence type, including tuple. - 0 <= I < N or the program is ill formed. + 0 <= + I < + N or the program is ill formed.

Value: The type of the Ith diff --git a/doc/html/fusion/tuples/pairs.html b/doc/html/fusion/tuples/pairs.html index 25cf95ad..a8c1292f 100644 --- a/doc/html/fusion/tuples/pairs.html +++ b/doc/html/fusion/tuples/pairs.html @@ -27,7 +27,7 @@

- + Description

@@ -36,7 +36,7 @@ as if it were a 2 element tuple.

- + Specification

@@ -77,16 +77,21 @@
 const P& get(const std::pair<T1, T2>& pr);
 

- Type: If I == 0 P is T1, - else if I == 1 P + Type: If I + == 0 + P is T1, + else if I == + 1 P is T2 else the program is ill-formed.

Returns: pr.first - if I == 0 else pr.second.[*Returns: - pr.first if I == 0 else - pr.second. + if I == + 0 else pr.second.[*Returns: + pr.first if I + == 0 + else pr.second.

diff --git a/doc/html/index.html b/doc/html/index.html index 5b571db7..9a712a1a 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -30,7 +30,7 @@
-

+

Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

@@ -57,7 +57,7 @@
- +

Last revised: December 14, 2006 at 08:32:59 GMT

Last revised: January 01, 2007 at 00:55:22 GMT


diff --git a/example/performance/accumulate.cpp b/example/performance/accumulate.cpp index ee7248ef..88c841f6 100644 --- a/example/performance/accumulate.cpp +++ b/example/performance/accumulate.cpp @@ -42,7 +42,7 @@ namespace int i = 0; long long iter = 65536; long long counter, repeats; - double result = std::numeric_limits::max(); + double result = (std::numeric_limits::max)(); double runtime = 0; double run; boost::array arr; @@ -114,7 +114,7 @@ namespace int i = 0; long long iter = 65536; long long counter, repeats; - double result = std::numeric_limits::max(); + double result = (std::numeric_limits::max)(); double runtime = 0; double run; boost::array arr; @@ -160,7 +160,7 @@ namespace int i = 0; long long iter = 65536; long long counter, repeats; - double result = std::numeric_limits::max(); + double result = (std::numeric_limits::max)(); double runtime = 0; double run; boost::array arr1; @@ -203,7 +203,7 @@ namespace int i = 0; long long iter = 65536; long long counter, repeats; - double result = std::numeric_limits::max(); + double result = (std::numeric_limits::max)(); double runtime = 0; double run; boost::array arr1; @@ -264,7 +264,7 @@ namespace int i = 0; long long iter = 65536; long long counter, repeats; - double result = std::numeric_limits::max(); + double result = (std::numeric_limits::max)(); double runtime = 0; double run; boost::array arr1; diff --git a/example/performance/inner_product.cpp b/example/performance/inner_product.cpp index 7ed6283d..ee3f7036 100644 --- a/example/performance/inner_product.cpp +++ b/example/performance/inner_product.cpp @@ -73,7 +73,7 @@ namespace int i = 0; long long iter = 65536; long long counter, repeats; - double result = std::numeric_limits::max(); + double result = (std::numeric_limits::max)(); double runtime = 0; double run; boost::array arr1; @@ -116,7 +116,7 @@ namespace int i = 0; long long iter = 65536; long long counter, repeats; - double result = std::numeric_limits::max(); + double result = (std::numeric_limits::max)(); double runtime = 0; double run; boost::array arr1; diff --git a/example/performance/inner_product2.cpp b/example/performance/inner_product2.cpp index bc104cf6..dfc7d4f4 100644 --- a/example/performance/inner_product2.cpp +++ b/example/performance/inner_product2.cpp @@ -73,7 +73,7 @@ namespace int i = 0; long long iter = 65536; long long counter, repeats; - double result = std::numeric_limits::max(); + double result = (std::numeric_limits::max)(); double runtime = 0; double run; boost::array arr1; @@ -132,7 +132,7 @@ namespace int i = 0; long long iter = 65536; long long counter, repeats; - double result = std::numeric_limits::max(); + double result = (std::numeric_limits::max)(); double runtime = 0; double run; boost::array arr1; diff --git a/test/sequence/construction.hpp b/test/sequence/construction.hpp index da9e400a..1b2c2aaf 100644 --- a/test/sequence/construction.hpp +++ b/test/sequence/construction.hpp @@ -13,7 +13,7 @@ #define FUSION_AT at_c #endif -namespace +namespace test_detail { // something to prevent warnings for unused variables template void dummy(const T&) {} @@ -51,6 +51,7 @@ inline void test() { using namespace boost::fusion; + using namespace test_detail; FUSION_SEQUENCE t1; BOOST_TEST(FUSION_AT<0>(t1) == int()); diff --git a/test/sequence/copy.hpp b/test/sequence/copy.hpp index 7e88caf4..b29ea3a5 100644 --- a/test/sequence/copy.hpp +++ b/test/sequence/copy.hpp @@ -22,7 +22,7 @@ #define FUSION_TIE BOOST_PP_CAT(FUSION_SEQUENCE, _tie) #endif -namespace +namespace test_detail { // classes with different kinds of conversions class AA {}; @@ -41,6 +41,7 @@ void test() { using namespace boost::fusion; + using namespace test_detail; FUSION_SEQUENCE t1(4, 'a'); FUSION_SEQUENCE t2(5, 'b'); diff --git a/test/sequence/make.hpp b/test/sequence/make.hpp index 1b175811..f23f26a2 100644 --- a/test/sequence/make.hpp +++ b/test/sequence/make.hpp @@ -19,7 +19,7 @@ #define FUSION_MAKE BOOST_PP_CAT(make_, FUSION_SEQUENCE) #endif -namespace +namespace test_detail { // something to prevent warnings for unused variables template void dummy(const T&) {} @@ -34,6 +34,7 @@ void test() { using namespace boost::fusion; + using namespace test_detail; { FUSION_SEQUENCE t1 = FUSION_MAKE(5, 'a'); diff --git a/test/sequence/mutate.hpp b/test/sequence/mutate.hpp index d1cd66df..c713b349 100644 --- a/test/sequence/mutate.hpp +++ b/test/sequence/mutate.hpp @@ -13,7 +13,7 @@ #define FUSION_AT at_c #endif -namespace +namespace test_detail { // no public default constructor class foo @@ -38,6 +38,7 @@ void test() { using namespace boost::fusion; + using namespace test_detail; FUSION_SEQUENCE t1(5, 12.2f, true, foo(4)); FUSION_AT<0>(t1) = 6; diff --git a/test/sequence/tie.hpp b/test/sequence/tie.hpp index a36c3985..0e086e2d 100644 --- a/test/sequence/tie.hpp +++ b/test/sequence/tie.hpp @@ -21,7 +21,7 @@ #define FUSION_TIE BOOST_PP_CAT(FUSION_SEQUENCE, _tie) #endif -namespace +namespace test_detail { // something to prevent warnings for unused variables template void dummy(const T&) {} @@ -49,6 +49,7 @@ void test() { using namespace boost::fusion; + using namespace test_detail; int a; char b; diff --git a/test/sequence/value_at.hpp b/test/sequence/value_at.hpp index 72eebad9..f17c7f35 100644 --- a/test/sequence/value_at.hpp +++ b/test/sequence/value_at.hpp @@ -20,7 +20,7 @@ #define FUSION_VALUE_AT(S, N) result_of::value_at_c #endif -namespace +namespace test_detail { // something to prevent warnings for unused variables template void dummy(const T&) {} @@ -32,6 +32,7 @@ void test() { using namespace boost::fusion; + using namespace test_detail; double d = 2.7; A a; From a5bb66618d8dff044ea4c0628f309d27cebd7359 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Tue, 2 Jan 2007 09:10:04 +0000 Subject: [PATCH 067/234] removes outdated workaround for broken mpl::is_sequence [SVN r36561] --- .../fusion/support/detail/is_mpl_sequence.hpp | 34 +++---------------- 1 file changed, 4 insertions(+), 30 deletions(-) diff --git a/include/boost/fusion/support/detail/is_mpl_sequence.hpp b/include/boost/fusion/support/detail/is_mpl_sequence.hpp index 09a77a8b..749d2f87 100644 --- a/include/boost/fusion/support/detail/is_mpl_sequence.hpp +++ b/include/boost/fusion/support/detail/is_mpl_sequence.hpp @@ -6,47 +6,21 @@ 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_DETAIL_IS_MPL_SEQUENCE_15122005_2137) -#define FUSION_DETAIL_IS_MPL_SEQUENCE_15122005_2137 +#if !defined(FUSION_DETAIL_IS_MPL_SEQUENCE_29122006_1105) +#define FUSION_DETAIL_IS_MPL_SEQUENCE_29122006_1105 #include +#include #include #include #include -#include -#include -#include -#include -#include -#include -#include -#include namespace boost { namespace fusion { namespace detail { - struct mpl_int_detect - { - template - mpl_int_detect(mpl::int_) {} - - template - mpl_int_detect(mpl::bool_) {} - - template - mpl_int_detect(mpl::integral_c) {} - - template - mpl_int_detect(mpl::long_) {} - - template - mpl_int_detect(mpl::size_t) {} - }; - template struct is_mpl_sequence : mpl::and_< - mpl::not_ > - , mpl::not_ > + mpl::not_ > , mpl::is_sequence > {}; }}} From bce9a2f6ffc848b32583627c91940771e615efc1 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Sat, 13 Jan 2007 19:44:15 +0000 Subject: [PATCH 068/234] adds #undef to fix macro leak [SVN r36722] --- .../boost/fusion/sequence/container/vector/detail/vector_n.hpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/boost/fusion/sequence/container/vector/detail/vector_n.hpp b/include/boost/fusion/sequence/container/vector/detail/vector_n.hpp index ab295432..bb4b6eac 100644 --- a/include/boost/fusion/sequence/container/vector/detail/vector_n.hpp +++ b/include/boost/fusion/sequence/container/vector/detail/vector_n.hpp @@ -144,3 +144,5 @@ } }; +#undef N + From bc7d10ec9492f34dbf9664effc50242e53473487 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Sun, 14 Jan 2007 03:22:54 +0000 Subject: [PATCH 069/234] added is_empty test [SVN r36725] --- test/sequence/vector_n.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/sequence/vector_n.cpp b/test/sequence/vector_n.cpp index 49550b80..4c02a2a3 100644 --- a/test/sequence/vector_n.cpp +++ b/test/sequence/vector_n.cpp @@ -18,6 +18,7 @@ #include #include +#include #include #include @@ -36,6 +37,7 @@ main() vector0 vec; (void) vec; cout << "(): " << sizeof(vec) << endl; + cout << (boost::is_empty::value ? "is empty" : "is not empty") << endl; } { From c5f8494832c29b1c13bce85179b2bf9ba8c3e424 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Sun, 14 Jan 2007 13:35:28 +0000 Subject: [PATCH 070/234] prevents potential ODR violation through mpl::begin / mpl::is_sequence [SVN r36727] --- include/boost/fusion/support/sequence_base.hpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/include/boost/fusion/support/sequence_base.hpp b/include/boost/fusion/support/sequence_base.hpp index ed1fffc7..9d5c558f 100644 --- a/include/boost/fusion/support/sequence_base.hpp +++ b/include/boost/fusion/support/sequence_base.hpp @@ -1,5 +1,6 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2007 Tobias Schwinger Use, modification and distribution is subject to the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at @@ -9,6 +10,7 @@ #define FUSION_SEQUENCE_BASE_04182005_0737 #include +#include namespace boost { namespace fusion { @@ -29,6 +31,17 @@ namespace boost { namespace fusion return static_cast(*this); } }; + + struct fusion_sequence_tag; +}} + +namespace boost { namespace mpl +{ + // Deliberately break mpl::begin, so it doesn't lie that a Fusion sequence + // is not an MPL sequence by returning mpl::void_. + // In other words: Fusion Sequences are always MPL Sequences, but they can + // be incompletely defined. + template<> struct begin_impl< boost::fusion::fusion_sequence_tag >; }} #endif From 64a8b5e7f324c599b72f3f7608661d642ebc0aee Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Thu, 18 Jan 2007 07:26:33 +0000 Subject: [PATCH 071/234] doc tweaks [SVN r36747] --- doc/algorithms.qbk | 2 +- doc/sequences.qbk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/algorithms.qbk b/doc/algorithms.qbk index 2a8f3c56..2f959e4e 100644 --- a/doc/algorithms.qbk +++ b/doc/algorithms.qbk @@ -1082,7 +1082,7 @@ Constant. Returns a view which is lazily evaluated. struct triple { template - struct apply + struct result { typedef T type; }; diff --git a/doc/sequences.qbk b/doc/sequences.qbk index 8c81289c..3abeca63 100644 --- a/doc/sequences.qbk +++ b/doc/sequences.qbk @@ -356,7 +356,7 @@ sequence container, and in many cases the most efficient. [heading Header] #include - #include + #include // numbered forms #include From 63c122f0d8b920fed757c0e0dd141d990d9decbf Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Mon, 22 Jan 2007 00:40:36 +0000 Subject: [PATCH 072/234] Deeper TOC level + typo fix: rename apply->result in algo docs [SVN r36766] --- doc/html/fusion/algorithms.html | 20 ++- doc/html/fusion/algorithms/concepts.html | 8 +- doc/html/fusion/algorithms/concepts/poly.html | 6 +- doc/html/fusion/algorithms/iteration.html | 6 +- .../algorithms/iteration/functions.html | 11 +- .../iteration/functions/accumulate.html | 16 +- .../algorithms/iteration/functions/fold.html | 16 +- .../iteration/functions/for_each.html | 14 +- .../algorithms/iteration/metafunctions.html | 11 +- .../iteration/metafunctions/accumulate.html | 12 +- .../iteration/metafunctions/fold.html | 12 +- .../iteration/metafunctions/for_each.html | 12 +- doc/html/fusion/algorithms/query.html | 6 +- .../fusion/algorithms/query/functions.html | 15 +- .../algorithms/query/functions/all.html | 14 +- .../algorithms/query/functions/any.html | 14 +- .../algorithms/query/functions/count.html | 14 +- .../algorithms/query/functions/count_if.html | 14 +- .../algorithms/query/functions/find.html | 14 +- .../algorithms/query/functions/find_if.html | 14 +- .../algorithms/query/functions/none.html | 14 +- .../algorithms/query/metafunctions.html | 15 +- .../algorithms/query/metafunctions/all.html | 12 +- .../algorithms/query/metafunctions/any.html | 12 +- .../algorithms/query/metafunctions/count.html | 12 +- .../query/metafunctions/count_if.html | 12 +- .../algorithms/query/metafunctions/find.html | 12 +- .../query/metafunctions/find_if.html | 12 +- .../algorithms/query/metafunctions/none.html | 12 +- .../fusion/algorithms/transformation.html | 6 +- .../algorithms/transformation/functions.html | 27 +--- .../transformation/functions/clear.html | 14 +- .../transformation/functions/erase.html | 14 +- .../transformation/functions/erase_key.html | 14 +- .../transformation/functions/filter.html | 14 +- .../transformation/functions/filter_if.html | 14 +- .../transformation/functions/insert.html | 14 +- .../functions/insert_range.html | 14 +- .../transformation/functions/join.html | 14 +- .../transformation/functions/pop_back.html | 14 +- .../transformation/functions/pop_front.html | 14 +- .../transformation/functions/push_back.html | 14 +- .../transformation/functions/push_front.html | 14 +- .../transformation/functions/remove.html | 14 +- .../transformation/functions/remove_if.html | 14 +- .../transformation/functions/replace.html | 14 +- .../transformation/functions/replace_if.html | 14 +- .../transformation/functions/reverse.html | 14 +- .../transformation/functions/transform.html | 20 +-- .../transformation/functions/zip.html | 14 +- .../transformation/metafunctions.html | 27 +--- .../transformation/metafunctions/clear.html | 12 +- .../transformation/metafunctions/erase.html | 12 +- .../metafunctions/erase_key.html | 12 +- .../transformation/metafunctions/filter.html | 12 +- .../metafunctions/filter_if.html | 12 +- .../transformation/metafunctions/insert.html | 12 +- .../metafunctions/insert_range.html | 12 +- .../transformation/metafunctions/join.html | 10 +- .../metafunctions/pop_back.html | 12 +- .../metafunctions/pop_front.html | 12 +- .../metafunctions/push_back.html | 12 +- .../metafunctions/push_front.html | 12 +- .../transformation/metafunctions/remove.html | 12 +- .../metafunctions/remove_if.html | 12 +- .../transformation/metafunctions/replace.html | 12 +- .../metafunctions/replace_if.html | 12 +- .../transformation/metafunctions/reverse.html | 12 +- .../metafunctions/transform.html | 14 +- .../transformation/metafunctions/zip.html | 10 +- doc/html/fusion/extension.html | 16 +- doc/html/fusion/iterators.html | 36 ++++- doc/html/fusion/iterators/concepts.html | 8 - .../concepts/bidirectional_iterator.html | 14 +- .../iterators/concepts/forward_iterator.html | 12 +- .../concepts/random_access_iterator.html | 10 +- doc/html/fusion/iterators/functions.html | 8 - .../fusion/iterators/functions/advance.html | 12 +- .../fusion/iterators/functions/advance_c.html | 12 +- .../fusion/iterators/functions/deref.html | 12 +- .../fusion/iterators/functions/distance.html | 12 +- doc/html/fusion/iterators/functions/next.html | 12 +- .../fusion/iterators/functions/prior.html | 12 +- doc/html/fusion/iterators/metafunctions.html | 16 +- .../iterators/metafunctions/advance.html | 12 +- .../iterators/metafunctions/advance_c.html | 12 +- .../fusion/iterators/metafunctions/deref.html | 12 +- .../iterators/metafunctions/distance.html | 12 +- .../iterators/metafunctions/equal_to.html | 12 +- .../fusion/iterators/metafunctions/next.html | 12 +- .../fusion/iterators/metafunctions/prior.html | 12 +- .../iterators/metafunctions/value_of.html | 12 +- doc/html/fusion/iterators/operators.html | 8 - .../operators/operator_equality.html | 10 +- .../operators/operator_inequality.html | 10 +- .../operators/operator_unary_star.html | 12 +- doc/html/fusion/notes.html | 16 +- doc/html/fusion/organization.html | 10 +- doc/html/fusion/preface.html | 10 +- doc/html/fusion/quick_start.html | 16 +- doc/html/fusion/sequences.html | 51 +++++- doc/html/fusion/sequences/adapted.html | 13 +- .../sequences/adapted/boost__array.html | 8 +- .../sequences/adapted/boost__tuple.html | 8 +- .../sequences/adapted/boost__variant.html | 8 +- .../sequences/adapted/mpl_sequence.html | 8 +- .../fusion/sequences/adapted/std__pair.html | 8 +- doc/html/fusion/sequences/concepts.html | 14 +- .../concepts/associative_sequence.html | 10 +- .../concepts/bidirectional_sequence.html | 12 +- .../sequences/concepts/forward_sequence.html | 12 +- .../concepts/random_access_sequence.html | 12 +- doc/html/fusion/sequences/containers.html | 9 +- .../fusion/sequences/containers/cons.html | 14 +- .../fusion/sequences/containers/list.html | 14 +- doc/html/fusion/sequences/containers/map.html | 14 +- doc/html/fusion/sequences/containers/set.html | 14 +- .../fusion/sequences/containers/vector.html | 16 +- doc/html/fusion/sequences/conversion.html | 6 +- .../sequences/conversion/functions.html | 12 +- .../conversion/functions/as_list.html | 12 +- .../conversion/functions/as_map.html | 12 +- .../conversion/functions/as_set.html | 12 +- .../conversion/functions/as_vector.html | 12 +- .../sequences/conversion/metafunctions.html | 12 +- .../conversion/metafunctions/as_list.html | 12 +- .../conversion/metafunctions/as_map.html | 12 +- .../conversion/metafunctions/as_set.html | 12 +- .../conversion/metafunctions/as_vector.html | 12 +- doc/html/fusion/sequences/generation.html | 6 +- .../sequences/generation/functions.html | 16 +- .../generation/functions/list_tie.html | 12 +- .../generation/functions/make_cons.html | 14 +- .../generation/functions/make_list.html | 14 +- .../generation/functions/make_map.html | 18 +-- .../generation/functions/make_set.html | 18 +-- .../generation/functions/make_vector.html | 14 +- .../sequences/generation/functions/tiers.html | 6 +- .../generation/functions/vector_tie.html | 12 +- .../sequences/generation/metafunctions.html | 15 +- .../generation/metafunctions/list_tie.html | 12 +- .../generation/metafunctions/make_cons.html | 12 +- .../generation/metafunctions/make_list.html | 12 +- .../generation/metafunctions/make_map.html | 18 +-- .../generation/metafunctions/make_set.html | 16 +- .../generation/metafunctions/make_vector.html | 12 +- .../generation/metafunctions/vector_tie.html | 12 +- doc/html/fusion/sequences/intrinsics.html | 10 +- .../sequences/intrinsics/functions.html | 18 +-- .../sequences/intrinsics/functions/at.html | 12 +- .../sequences/intrinsics/functions/at_c.html | 12 +- .../intrinsics/functions/at_key.html | 12 +- .../sequences/intrinsics/functions/back.html | 12 +- .../sequences/intrinsics/functions/begin.html | 12 +- .../sequences/intrinsics/functions/empty.html | 12 +- .../sequences/intrinsics/functions/end.html | 12 +- .../sequences/intrinsics/functions/front.html | 12 +- .../intrinsics/functions/has_key.html | 12 +- .../sequences/intrinsics/functions/size.html | 12 +- .../sequences/intrinsics/metafunctions.html | 21 +-- .../intrinsics/metafunctions/at.html | 16 +- .../intrinsics/metafunctions/at_c.html | 16 +- .../intrinsics/metafunctions/at_key.html | 16 +- .../intrinsics/metafunctions/back.html | 12 +- .../intrinsics/metafunctions/begin.html | 12 +- .../intrinsics/metafunctions/empty.html | 12 +- .../intrinsics/metafunctions/end.html | 12 +- .../intrinsics/metafunctions/front.html | 12 +- .../intrinsics/metafunctions/has_key.html | 12 +- .../intrinsics/metafunctions/size.html | 12 +- .../intrinsics/metafunctions/value_at.html | 12 +- .../intrinsics/metafunctions/value_at_c.html | 12 +- .../metafunctions/value_at_key.html | 12 +- doc/html/fusion/sequences/operators.html | 4 - .../sequences/operators/comparison.html | 15 +- .../sequences/operators/comparison/equal.html | 12 +- .../operators/comparison/greater_than.html | 10 +- .../comparison/greater_than_equal.html | 10 +- .../operators/comparison/less_than.html | 10 +- .../operators/comparison/less_than_equal.html | 10 +- .../operators/comparison/not_equal.html | 10 +- doc/html/fusion/sequences/operators/i_o.html | 6 +- .../fusion/sequences/operators/i_o/in.html | 12 +- .../fusion/sequences/operators/i_o/out.html | 12 +- doc/html/fusion/sequences/views.html | 11 +- .../fusion/sequences/views/filter_view.html | 14 +- .../sequences/views/iterator_range.html | 14 +- .../fusion/sequences/views/joint_view.html | 14 +- .../fusion/sequences/views/reverse_view.html | 12 +- .../fusion/sequences/views/single_view.html | 12 +- .../sequences/views/transform_view.html | 12 +- doc/html/fusion/sequences/views/zip_view.html | 14 +- doc/html/fusion/support/category_of.html | 12 +- doc/html/fusion/support/is_sequence.html | 12 +- doc/html/fusion/support/is_view.html | 12 +- doc/html/fusion/support/pair.html | 12 +- doc/html/fusion/support/tag_of.html | 12 +- doc/html/fusion/tuples.html | 11 ++ .../fusion/tuples/class_template_tuple.html | 15 +- .../class_template_tuple/construction.html | 4 +- .../class_template_tuple/element_access.html | 4 +- .../relational_operators.html | 4 +- .../tuple_creation_functions.html | 4 +- .../tuple_helper_classes.html | 4 +- doc/html/fusion/tuples/pairs.html | 4 +- doc/html/index.html | 145 +++++++++++++++++- 206 files changed, 1342 insertions(+), 1374 deletions(-) diff --git a/doc/html/fusion/algorithms.html b/doc/html/fusion/algorithms.html index 841c94c3..10c67c44 100644 --- a/doc/html/fusion/algorithms.html +++ b/doc/html/fusion/algorithms.html @@ -28,12 +28,26 @@ Algorithms

- + Lazy Evaluation

@@ -56,7 +70,7 @@ as we want without incurring a high runtime penalty.

- + Sequence Extension

@@ -79,7 +93,7 @@ functions to convert back to the original sequence type.

- + Header

diff --git a/doc/html/fusion/algorithms/concepts.html b/doc/html/fusion/algorithms/concepts.html
index 492017fe..f5fae0ac 100644
--- a/doc/html/fusion/algorithms/concepts.html
+++ b/doc/html/fusion/algorithms/concepts.html
@@ -23,12 +23,8 @@
 
PrevUpHomeNext
- + diff --git a/doc/html/fusion/algorithms/concepts/poly.html b/doc/html/fusion/algorithms/concepts/poly.html index b18d26a3..3b42cb0f 100644 --- a/doc/html/fusion/algorithms/concepts/poly.html +++ b/doc/html/fusion/algorithms/concepts/poly.html @@ -29,7 +29,7 @@ Object"> Polymorphic Function Object
- + Description

@@ -61,7 +61,7 @@

- + Refinement of
@@ -69,7 +69,7 @@ MPL Metafunction Class

- + Expression requirements
diff --git a/doc/html/fusion/algorithms/iteration.html b/doc/html/fusion/algorithms/iteration.html index 9e61c9c1..3444f50f 100644 --- a/doc/html/fusion/algorithms/iteration.html +++ b/doc/html/fusion/algorithms/iteration.html @@ -26,16 +26,12 @@
-

The iteration algorithms provide the fundamental algorithms for traversing a sequence repeatedly applying an operation to its elements.

- + Header

diff --git a/doc/html/fusion/algorithms/iteration/functions.html b/doc/html/fusion/algorithms/iteration/functions.html
index 5c3db0bd..782ff9c7 100644
--- a/doc/html/fusion/algorithms/iteration/functions.html
+++ b/doc/html/fusion/algorithms/iteration/functions.html
@@ -22,15 +22,8 @@
 
PrevUpHomeNext
- +
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
diff --git a/doc/html/fusion/algorithms/iteration/functions/accumulate.html b/doc/html/fusion/algorithms/iteration/functions/accumulate.html index 18e200d2..97c5bc9e 100644 --- a/doc/html/fusion/algorithms/iteration/functions/accumulate.html +++ b/doc/html/fusion/algorithms/iteration/functions/accumulate.html @@ -26,7 +26,7 @@
- + Description

@@ -37,7 +37,7 @@ fold.

- + Synopsis
@@ -50,7 +50,7 @@
     Sequence& seq, State const& initial_state, F const& f);
 
-

Table 1.33. Parameters

+

Table 1.33. Parameters

Copyright © 2001-2005 Joel de Guzman, Dan Marsden
@@ -93,7 +93,7 @@
- + Expression Semantics
@@ -108,28 +108,28 @@ where e1 ...eN are the elements of seq.

- + Complexity

Linear, exactly result_of::size<Sequence>::value applications of f.

- + Header
 #include <boost/fusion/algorithm/iteration/accumulate.hpp>
 
- + Example
 struct make_string
 {
     template<typename T, typename State>
-    struct apply
+    struct result
     {
         typedef std::string type;
     };
diff --git a/doc/html/fusion/algorithms/iteration/functions/fold.html b/doc/html/fusion/algorithms/iteration/functions/fold.html
index 71697bd6..b2e78889 100644
--- a/doc/html/fusion/algorithms/iteration/functions/fold.html
+++ b/doc/html/fusion/algorithms/iteration/functions/fold.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -36,7 +36,7 @@ to each element of a sequence and the previous state.

- + Synopsis
@@ -49,7 +49,7 @@
     Sequence& seq, State const& initial_state, F const& f);
 
-

Table 1.32. Parameters

+

Table 1.32. Parameters

@@ -91,7 +91,7 @@
- + Expression Semantics
@@ -106,28 +106,28 @@ where e1 ...eN are the elements of seq.

- + Complexity

Linear, exactly result_of::size<Sequence>::value applications of f.

- + Header
 #include <boost/fusion/algorithm/iteration/fold.hpp>
 
- + Example
 struct make_string
 {
     template<typename T, typename State>
-    struct apply
+    struct result
     {
         typedef std::string type;
     };
diff --git a/doc/html/fusion/algorithms/iteration/functions/for_each.html b/doc/html/fusion/algorithms/iteration/functions/for_each.html
index 966c6538..bba62f2e 100644
--- a/doc/html/fusion/algorithms/iteration/functions/for_each.html
+++ b/doc/html/fusion/algorithms/iteration/functions/for_each.html
@@ -26,14 +26,14 @@
 
 
- + Description

Applies a unary function object to each element of a sequence.

- + Synopsis
@@ -45,7 +45,7 @@
     Sequence& seq, F const& f);
 
-

Table 1.34. Parameters

+

Table 1.34. Parameters

@@ -78,7 +78,7 @@
- + Expression Semantics
@@ -93,21 +93,21 @@ in seq.

- + Complexity

Linear, exactly result_of::size<Sequence>::value applications of f.

- + Header
 #include <boost/fusion/algorithm/iteration/for_each.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/iteration/metafunctions.html b/doc/html/fusion/algorithms/iteration/metafunctions.html
index 1bd66d25..8eb211d8 100644
--- a/doc/html/fusion/algorithms/iteration/metafunctions.html
+++ b/doc/html/fusion/algorithms/iteration/metafunctions.html
@@ -22,15 +22,8 @@
 
PrevUpHomeNext
- + diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html b/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html index 9b950909..8b65f9b9 100644 --- a/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html +++ b/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html @@ -26,14 +26,14 @@
- + Description

Returns the result type of accumulate.

- + Synopsis
@@ -47,7 +47,7 @@
 };
 
-

Table 1.36. Parameters

+

Table 1.36. Parameters

Copyright © 2001-2005 Joel de Guzman, Dan Marsden
@@ -91,7 +91,7 @@
- + Expression Semantics
@@ -111,14 +111,14 @@ Function Object of type F.

- + Complexity

Linear, exactly result_of::size<Sequence>::value applications of F.

- + Header
diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/fold.html b/doc/html/fusion/algorithms/iteration/metafunctions/fold.html
index 26b5002b..5f99bbe2 100644
--- a/doc/html/fusion/algorithms/iteration/metafunctions/fold.html
+++ b/doc/html/fusion/algorithms/iteration/metafunctions/fold.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of fold.

- + Synopsis
@@ -47,7 +47,7 @@
 };
 
-

Table 1.35. Parameters

+

Table 1.35. Parameters

@@ -91,7 +91,7 @@
- + Expression Semantics
@@ -111,14 +111,14 @@ Function Object of type F.

- + Complexity

Linear, exactly result_of::size<Sequence>::value applications of F.

- + Header
diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html b/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html
index fb726676..67b0f947 100644
--- a/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html
+++ b/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html
@@ -30,11 +30,11 @@
             return type of for_each is always void.
           

- + Description
- + Synopsis
@@ -48,7 +48,7 @@
 };
 
-

Table 1.37. Parameters

+

Table 1.37. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -98,14 +98,14 @@ return type is always void.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/query.html b/doc/html/fusion/algorithms/query.html
index eed0146c..e8c47055 100644
--- a/doc/html/fusion/algorithms/query.html
+++ b/doc/html/fusion/algorithms/query.html
@@ -25,15 +25,11 @@
 
-

The query algorithms provide support for searching and analyzing sequences.

- + Header

diff --git a/doc/html/fusion/algorithms/query/functions.html b/doc/html/fusion/algorithms/query/functions.html
index 112f1f24..f06fb915 100644
--- a/doc/html/fusion/algorithms/query/functions.html
+++ b/doc/html/fusion/algorithms/query/functions.html
@@ -22,19 +22,8 @@
 
PrevUpHomeNext
- + diff --git a/doc/html/fusion/algorithms/query/functions/all.html b/doc/html/fusion/algorithms/query/functions/all.html index 415d8cc4..9a6ccdb5 100644 --- a/doc/html/fusion/algorithms/query/functions/all.html +++ b/doc/html/fusion/algorithms/query/functions/all.html @@ -26,7 +26,7 @@
- + Description

@@ -37,7 +37,7 @@ element of seq.

- + Synopsis
@@ -49,7 +49,7 @@
     Sequence const& seq, F f);
 
-

Table 1.39. Parameters

+

Table 1.39. Parameters

Copyright © 2001-2005 Joel de Guzman, Dan Marsden
@@ -84,7 +84,7 @@
- + Expression Semantics
@@ -101,21 +101,21 @@ element e in seq.

- + Complexity

Linear. At most result_of::size<Sequence>::value comparisons.

- + Header
 #include <boost/fusion/algorithm/query/all.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/query/functions/any.html b/doc/html/fusion/algorithms/query/functions/any.html
index 38bbb878..723ff918 100644
--- a/doc/html/fusion/algorithms/query/functions/any.html
+++ b/doc/html/fusion/algorithms/query/functions/any.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -37,7 +37,7 @@ least one element of seq.

- + Synopsis
@@ -49,7 +49,7 @@
     Sequence const& seq, F f);
 
-

Table 1.38. Parameters

+

Table 1.38. Parameters

@@ -84,7 +84,7 @@
- + Expression semantics
@@ -101,21 +101,21 @@ element e in seq.

- + Complexity

Linear. At most result_of::size<Sequence>::value comparisons.

- + Header
 #include <boost/fusion/algorithm/query/any.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/query/functions/count.html b/doc/html/fusion/algorithms/query/functions/count.html
index b0c4f191..6978a201 100644
--- a/doc/html/fusion/algorithms/query/functions/count.html
+++ b/doc/html/fusion/algorithms/query/functions/count.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the number of elements of a given type within a sequence.

- + Synopsis
@@ -45,7 +45,7 @@
     Sequence const& seq, T const& t);
 
-

Table 1.43. Parameters

+

Table 1.43. Parameters

@@ -81,7 +81,7 @@
- + Expression Semantics
@@ -97,21 +97,21 @@ t in seq.

- + Complexity

Linear. At most result_of::size<Sequence>::value comparisons.

- + Header
 #include <boost/fusion/algorithm/query/count.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/query/functions/count_if.html b/doc/html/fusion/algorithms/query/functions/count_if.html
index 6c892079..682accd5 100644
--- a/doc/html/fusion/algorithms/query/functions/count_if.html
+++ b/doc/html/fusion/algorithms/query/functions/count_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ a given unary function object evaluates to true.

- + Synopsis
@@ -46,7 +46,7 @@
     Sequence const& seq, F f);
 
-

Table 1.44. Parameters

+

Table 1.44. Parameters

@@ -81,7 +81,7 @@
- + Expression Semantics
@@ -96,21 +96,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/query/functions/find.html b/doc/html/fusion/algorithms/query/functions/find.html
index 7cdc9eb9..aeb1aa68 100644
--- a/doc/html/fusion/algorithms/query/functions/find.html
+++ b/doc/html/fusion/algorithms/query/functions/find.html
@@ -26,14 +26,14 @@
 
 
- + Description

Finds the first element of a given type within a sequence.

- + Synopsis
@@ -50,7 +50,7 @@
 unspecified find(Sequence& seq);
 
-

Table 1.41. Parameters

+

Table 1.41. Parameters

@@ -82,7 +82,7 @@
- + Expression Semantics
@@ -100,21 +100,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/query/functions/find_if.html b/doc/html/fusion/algorithms/query/functions/find_if.html
index f25f624e..928020a8 100644
--- a/doc/html/fusion/algorithms/query/functions/find_if.html
+++ b/doc/html/fusion/algorithms/query/functions/find_if.html
@@ -30,11 +30,11 @@
             MPL Lambda Expression evaluates to boost::mpl::true_.
           

- + Description
- + Synopsis
@@ -51,7 +51,7 @@
 unspecified find_if(Sequence& seq);
 
-

Table 1.42. Parameters

+

Table 1.42. Parameters

@@ -83,7 +83,7 @@
- + Expression Semantics
@@ -102,21 +102,21 @@ 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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/query/functions/none.html b/doc/html/fusion/algorithms/query/functions/none.html
index 329527e1..1f831020 100644
--- a/doc/html/fusion/algorithms/query/functions/none.html
+++ b/doc/html/fusion/algorithms/query/functions/none.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -37,7 +37,7 @@ element of seq.

- + Synopsis
@@ -49,7 +49,7 @@
     Sequence const& seq, F f);
 
-

Table 1.40. Parameters

+

Table 1.40. Parameters

@@ -84,7 +84,7 @@
- + Expression Semantics
@@ -101,21 +101,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/query/metafunctions.html b/doc/html/fusion/algorithms/query/metafunctions.html
index 544b0b11..02299291 100644
--- a/doc/html/fusion/algorithms/query/metafunctions.html
+++ b/doc/html/fusion/algorithms/query/metafunctions.html
@@ -22,19 +22,8 @@
 
PrevUpHomeNext
- + diff --git a/doc/html/fusion/algorithms/query/metafunctions/all.html b/doc/html/fusion/algorithms/query/metafunctions/all.html index aabeb22d..b3f12915 100644 --- a/doc/html/fusion/algorithms/query/metafunctions/all.html +++ b/doc/html/fusion/algorithms/query/metafunctions/all.html @@ -26,14 +26,14 @@
- + Description

A metafunction returning the result type of all.

- + Synopsis
@@ -47,7 +47,7 @@
 };
 
-

Table 1.46. Parameters

+

Table 1.46. Parameters

Copyright © 2001-2005 Joel de Guzman, Dan Marsden
@@ -82,7 +82,7 @@
- + Expression Semantics
@@ -102,14 +102,14 @@ The return type is always bool.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/query/metafunctions/any.html b/doc/html/fusion/algorithms/query/metafunctions/any.html
index f75bd271..b0de23a9 100644
--- a/doc/html/fusion/algorithms/query/metafunctions/any.html
+++ b/doc/html/fusion/algorithms/query/metafunctions/any.html
@@ -26,14 +26,14 @@
 
 
- + Description

A metafunction returning the result type of any.

- + Synopsis
@@ -47,7 +47,7 @@
 };
 
-

Table 1.45. Parameters

+

Table 1.45. Parameters

@@ -82,7 +82,7 @@
- + Expression Semantics
@@ -102,14 +102,14 @@ The return type is always bool.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/query/metafunctions/count.html b/doc/html/fusion/algorithms/query/metafunctions/count.html
index e866e60d..bde12281 100644
--- a/doc/html/fusion/algorithms/query/metafunctions/count.html
+++ b/doc/html/fusion/algorithms/query/metafunctions/count.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ given the sequence and search types.

- + Synopsis
@@ -48,7 +48,7 @@
 };
 
-

Table 1.50. Parameters

+

Table 1.50. Parameters

@@ -81,7 +81,7 @@
- + Expression Semantics
@@ -97,14 +97,14 @@ int.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/query/metafunctions/count_if.html b/doc/html/fusion/algorithms/query/metafunctions/count_if.html
index 3c1b8d49..3e8180f5 100644
--- a/doc/html/fusion/algorithms/query/metafunctions/count_if.html
+++ b/doc/html/fusion/algorithms/query/metafunctions/count_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ given the sequence and predicate types.

- + Synopsis
@@ -48,7 +48,7 @@
 };
 
-

Table 1.51. Parameters

+

Table 1.51. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -96,14 +96,14 @@ always int.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/query/metafunctions/find.html b/doc/html/fusion/algorithms/query/metafunctions/find.html
index 4b515092..f75b8d2d 100644
--- a/doc/html/fusion/algorithms/query/metafunctions/find.html
+++ b/doc/html/fusion/algorithms/query/metafunctions/find.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ given the sequence and search types.

- + Synopsis
@@ -48,7 +48,7 @@
 };
 
-

Table 1.48. Parameters

+

Table 1.48. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -97,14 +97,14 @@ in Sequence, or result_of::end<Sequence>::type if there is no such element.

- + Complexity

Linear, at most result_of::size<Sequence>::value comparisons.

- + Header
diff --git a/doc/html/fusion/algorithms/query/metafunctions/find_if.html b/doc/html/fusion/algorithms/query/metafunctions/find_if.html
index 2369994f..19143c34 100644
--- a/doc/html/fusion/algorithms/query/metafunctions/find_if.html
+++ b/doc/html/fusion/algorithms/query/metafunctions/find_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ given the sequence and predicate types.

- + Synopsis
@@ -48,7 +48,7 @@
 };
 
-

Table 1.49. Parameters

+

Table 1.49. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -98,14 +98,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
diff --git a/doc/html/fusion/algorithms/query/metafunctions/none.html b/doc/html/fusion/algorithms/query/metafunctions/none.html
index f3513804..40c2f431 100644
--- a/doc/html/fusion/algorithms/query/metafunctions/none.html
+++ b/doc/html/fusion/algorithms/query/metafunctions/none.html
@@ -26,14 +26,14 @@
 
 
- + Description

A metafunction returning the result type of none.

- + Synopsis
@@ -47,7 +47,7 @@
 };
 
-

Table 1.47. Parameters

+

Table 1.47. Parameters

@@ -82,7 +82,7 @@
- + Expression Semantics
@@ -102,14 +102,14 @@ The return type is always bool.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation.html b/doc/html/fusion/algorithms/transformation.html
index cf3f6dd3..2c166c81 100644
--- a/doc/html/fusion/algorithms/transformation.html
+++ b/doc/html/fusion/algorithms/transformation.html
@@ -25,10 +25,6 @@
 
-

The transformation algorithms create new sequences out of existing sequences by performing some sort of transformation. In reality the new sequences are @@ -46,7 +42,7 @@

- + Header

diff --git a/doc/html/fusion/algorithms/transformation/functions.html b/doc/html/fusion/algorithms/transformation/functions.html
index 49375ca0..92367af0 100644
--- a/doc/html/fusion/algorithms/transformation/functions.html
+++ b/doc/html/fusion/algorithms/transformation/functions.html
@@ -22,31 +22,8 @@
 
PrevUpHomeNext
- + diff --git a/doc/html/fusion/algorithms/transformation/functions/clear.html b/doc/html/fusion/algorithms/transformation/functions/clear.html index 375a4d7f..4ac56bf1 100644 --- a/doc/html/fusion/algorithms/transformation/functions/clear.html +++ b/doc/html/fusion/algorithms/transformation/functions/clear.html @@ -26,14 +26,14 @@
- + Description

clear returns an empty sequence.

- + Synposis
@@ -43,7 +43,7 @@
 typename result_of::clear<Sequence const>::type clear(Sequence const& seq);
 
-

Table 1.61. Parameters

+

Table 1.61. Parameters

Copyright © 2001-2005 Joel de Guzman, Dan Marsden
@@ -67,7 +67,7 @@
- + Expression Semantics
@@ -84,21 +84,21 @@ with no elements.

- + Complexity

Constant.

- + Header
 #include <boost/fusion/algorithm/transformation/clear.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/erase.html b/doc/html/fusion/algorithms/transformation/functions/erase.html
index f8639e5c..38dc9e81 100644
--- a/doc/html/fusion/algorithms/transformation/functions/erase.html
+++ b/doc/html/fusion/algorithms/transformation/functions/erase.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ those at a specified iterator, or between two iterators.

- + Synposis
@@ -54,7 +54,7 @@
     Sequence const& seq, First const& it1, Last const& it2);
 
-

Table 1.62. Parameters

+

Table 1.62. Parameters

@@ -101,7 +101,7 @@
- + Expression Semantics
@@ -132,21 +132,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/erase_key.html b/doc/html/fusion/algorithms/transformation/functions/erase_key.html
index 47c28a1b..421651d8 100644
--- a/doc/html/fusion/algorithms/transformation/functions/erase_key.html
+++ b/doc/html/fusion/algorithms/transformation/functions/erase_key.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -39,7 +39,7 @@ with a given key.

- + Synposis
@@ -50,7 +50,7 @@
 typename result_of::erase_key<Sequence const, Key>::type erase_key(Sequence const& seq);
 
-

Table 1.63. Parameters

+

Table 1.63. Parameters

@@ -82,7 +82,7 @@
- + Expression Semantics
@@ -100,21 +100,21 @@ except those with key Key.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/erase_key.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/filter.html b/doc/html/fusion/algorithms/transformation/functions/filter.html
index 85add777..4d7e6c36 100644
--- a/doc/html/fusion/algorithms/transformation/functions/filter.html
+++ b/doc/html/fusion/algorithms/transformation/functions/filter.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ the elements of a specified type.

- + Synopsis
@@ -45,7 +45,7 @@
 typename result_of::filter<Sequence const, T>::type filter(Sequence const& seq);
 
-

Table 1.52. Parameters

+

Table 1.52. Parameters

@@ -77,7 +77,7 @@
- + Expression Semantics
@@ -96,21 +96,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/filter_if.html b/doc/html/fusion/algorithms/transformation/functions/filter_if.html
index 5f1fb609..87dd2b39 100644
--- a/doc/html/fusion/algorithms/transformation/functions/filter_if.html
+++ b/doc/html/fusion/algorithms/transformation/functions/filter_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -35,7 +35,7 @@ Expression evaluates to boost::mpl::true_.

- + Synopsis
@@ -46,7 +46,7 @@
 typename result_of::filter_if<Sequence const, Pred>::type filter_if(Sequence const& seq);
 
-

Table 1.53. Parameters

+

Table 1.53. Parameters

@@ -79,7 +79,7 @@
- + Expression Semantics
@@ -99,21 +99,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/insert.html b/doc/html/fusion/algorithms/transformation/functions/insert.html
index 6f69a169..ad128d66 100644
--- a/doc/html/fusion/algorithms/transformation/functions/insert.html
+++ b/doc/html/fusion/algorithms/transformation/functions/insert.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ element inserted the position described by a given iterator.

- + Synposis
@@ -46,7 +46,7 @@
 unspecified insert(Sequence const& seq, Pos const& pos, T const& t);
 
-

Table 1.64. Parameters

+

Table 1.64. Parameters

@@ -87,7 +87,7 @@
- + Expression Semantics
@@ -107,21 +107,21 @@ pos.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/insert.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/insert_range.html b/doc/html/fusion/algorithms/transformation/functions/insert_range.html
index aca08b4b..c4981fcb 100644
--- a/doc/html/fusion/algorithms/transformation/functions/insert_range.html
+++ b/doc/html/fusion/algorithms/transformation/functions/insert_range.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ iterator.

- + Synposis
@@ -47,7 +47,7 @@
     Sequence const& seq, Pos const& pos, Range const& range);
 
-

Table 1.65. Parameters

+

Table 1.65. Parameters

@@ -91,7 +91,7 @@
- + Expression Semantics
@@ -111,21 +111,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/join.html b/doc/html/fusion/algorithms/transformation/functions/join.html
index b129b474..a8c6a16c 100644
--- a/doc/html/fusion/algorithms/transformation/functions/join.html
+++ b/doc/html/fusion/algorithms/transformation/functions/join.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ first followed by the elements of the second.

- + Synopsis
@@ -44,7 +44,7 @@
 typename result_of::join<LhSequence, RhSequence>::type join(LhSequence const& lhs, RhSequence const& rhs);
 
-

Table 1.66. Parameters

+

Table 1.66. Parameters

@@ -79,7 +79,7 @@
- + Expression Semantics
@@ -98,21 +98,21 @@ The order of th elements is preserved.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/join.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/pop_back.html b/doc/html/fusion/algorithms/transformation/functions/pop_back.html
index 44763587..744f3b18 100644
--- a/doc/html/fusion/algorithms/transformation/functions/pop_back.html
+++ b/doc/html/fusion/algorithms/transformation/functions/pop_back.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns a new sequence, with the last element of the original removed.

- + Synopsis
@@ -43,7 +43,7 @@
 typename result_of::pop_back<Sequence const>::type pop_back(Sequence const& seq);
 
-

Table 1.68. Parameters

+

Table 1.68. Parameters

@@ -67,7 +67,7 @@
- + Expression Semantics
@@ -86,21 +86,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/pop_front.html b/doc/html/fusion/algorithms/transformation/functions/pop_front.html
index 5c605cd2..19d8c169 100644
--- a/doc/html/fusion/algorithms/transformation/functions/pop_front.html
+++ b/doc/html/fusion/algorithms/transformation/functions/pop_front.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns a new sequence, with the first element of the original removed.

- + Synopsis
@@ -43,7 +43,7 @@
 typename result_of::pop_front<Sequence const>::type pop_front(Sequence const& seq);
 
-

Table 1.69. Parameters

+

Table 1.69. Parameters

@@ -67,7 +67,7 @@
- + Expression Semantics
@@ -86,21 +86,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/push_back.html b/doc/html/fusion/algorithms/transformation/functions/push_back.html
index 6e8efe0a..367cac27 100644
--- a/doc/html/fusion/algorithms/transformation/functions/push_back.html
+++ b/doc/html/fusion/algorithms/transformation/functions/push_back.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns a new sequence with an element added at the end.

- + Synopsis
@@ -45,7 +45,7 @@
     Sequence const& seq, T const& t);
 
-

Table 1.70. Parameters

+

Table 1.70. Parameters

@@ -77,7 +77,7 @@
- + Expression Semantics
@@ -96,21 +96,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/push_front.html b/doc/html/fusion/algorithms/transformation/functions/push_front.html
index bdf5a0fd..0742ff0a 100644
--- a/doc/html/fusion/algorithms/transformation/functions/push_front.html
+++ b/doc/html/fusion/algorithms/transformation/functions/push_front.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns a new sequence with an element added at the beginning.

- + Synopsis
@@ -45,7 +45,7 @@
     Sequence const& seq, T const& t);
 
-

Table 1.71. Parameters

+

Table 1.71. Parameters

@@ -77,7 +77,7 @@
- + Expression Semantics
@@ -97,21 +97,21 @@ seq.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/push_front.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/remove.html b/doc/html/fusion/algorithms/transformation/functions/remove.html
index cbf88720..2a88a993 100644
--- a/doc/html/fusion/algorithms/transformation/functions/remove.html
+++ b/doc/html/fusion/algorithms/transformation/functions/remove.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ except those of a given type.

- + Synopsis
@@ -45,7 +45,7 @@
 typename result_of::remove<Sequence const, T>::type replace(Sequence const& seq);
 
-

Table 1.58. Parameters

+

Table 1.58. Parameters

@@ -77,7 +77,7 @@
- + Expression Semantics
@@ -96,21 +96,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/remove_if.html b/doc/html/fusion/algorithms/transformation/functions/remove_if.html
index c75a497c..68fea876 100644
--- a/doc/html/fusion/algorithms/transformation/functions/remove_if.html
+++ b/doc/html/fusion/algorithms/transformation/functions/remove_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ those where a given unary function object evaluates to true.

- + Synopsis
@@ -45,7 +45,7 @@
 typename result_of::remove_if<Sequence const, Pred>::type remove_if(Sequence const& seq);
 
-

Table 1.59. Parameters

+

Table 1.59. Parameters

@@ -77,7 +77,7 @@
- + Expression Semantics
@@ -97,21 +97,21 @@ >(seq).

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/remove_if.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/replace.html b/doc/html/fusion/algorithms/transformation/functions/replace.html
index 68e1bf93..753f7e22 100644
--- a/doc/html/fusion/algorithms/transformation/functions/replace.html
+++ b/doc/html/fusion/algorithms/transformation/functions/replace.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ a new value.

- + Synopsis
@@ -46,7 +46,7 @@
     Sequence const& seq, T const& old_value, T const& new_value);
 
-

Table 1.56. Parameters

+

Table 1.56. Parameters

@@ -89,7 +89,7 @@
- + Expression Semantics
@@ -108,21 +108,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>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/replace_if.html b/doc/html/fusion/algorithms/transformation/functions/replace_if.html
index fbd04a74..ca807d8f 100644
--- a/doc/html/fusion/algorithms/transformation/functions/replace_if.html
+++ b/doc/html/fusion/algorithms/transformation/functions/replace_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -35,7 +35,7 @@ replaced with a new value.

- + Synopsis
@@ -47,7 +47,7 @@
     Sequence const& seq, F f, T const& new_value);
 
-

Table 1.57. Parameters

+

Table 1.57. Parameters

@@ -88,7 +88,7 @@
- + Expression Semantics
@@ -108,21 +108,21 @@ evaluates to true.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/replace_if.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/reverse.html b/doc/html/fusion/algorithms/transformation/functions/reverse.html
index 768578b8..d5b7f11a 100644
--- a/doc/html/fusion/algorithms/transformation/functions/reverse.html
+++ b/doc/html/fusion/algorithms/transformation/functions/reverse.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns a new sequence with the elements of the original in reverse order.

- + Synposis
@@ -43,7 +43,7 @@
 typename result_of::reverse<Sequence const>::type reverse(Sequence const& seq);
 
-

Table 1.60. Parameters

+

Table 1.60. Parameters

@@ -67,7 +67,7 @@
- + Expression Semantics
@@ -85,21 +85,21 @@ in reverse order.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/reverse.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/functions/transform.html b/doc/html/fusion/algorithms/transformation/functions/transform.html
index 228409e3..06d0e990 100644
--- a/doc/html/fusion/algorithms/transformation/functions/transform.html
+++ b/doc/html/fusion/algorithms/transformation/functions/transform.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -38,7 +38,7 @@ to each element of seq.

- + Unary version synopsis
@@ -51,7 +51,7 @@ Sequence const& seq, F f);
-

Table 1.54. Parameters

+

Table 1.54. Parameters

@@ -88,7 +88,7 @@
- + Expression Semantics
@@ -106,7 +106,7 @@ within seq.

- + Binary version synopsis
@@ -120,7 +120,7 @@ Sequence1 const& seq1, Sequence2 const& seq2, F f);
-

Table 1.55. Parameters

+

Table 1.55. Parameters

@@ -176,28 +176,28 @@ within seq1 and seq2 respectively.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/transform.hpp>
 
- + Example
 struct triple
 {
     template<typename T>
-    struct apply
+    struct result
     {
         typedef T type;
     };
diff --git a/doc/html/fusion/algorithms/transformation/functions/zip.html b/doc/html/fusion/algorithms/transformation/functions/zip.html
index 61bcb202..4bd5fc12 100644
--- a/doc/html/fusion/algorithms/transformation/functions/zip.html
+++ b/doc/html/fusion/algorithms/transformation/functions/zip.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ of the members of the component sequences.

- + Synopsis
@@ -48,7 +48,7 @@
 zip(Sequence1 const& seq1, Sequence2 const& seq2, ... SequenceN const& seqN);
 
-

Table 1.67. Parameters

+

Table 1.67. Parameters

@@ -73,7 +73,7 @@
- + Expression Semantics
@@ -96,21 +96,21 @@ 'c'))

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/zip.hpp>
 
- + Example
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions.html b/doc/html/fusion/algorithms/transformation/metafunctions.html
index d9dbdf55..9bbf8a1e 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions.html
@@ -22,31 +22,8 @@
 
PrevUpHomeNext
- + diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/clear.html b/doc/html/fusion/algorithms/transformation/metafunctions/clear.html index 919a76bc..c6805831 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions/clear.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions/clear.html @@ -26,7 +26,7 @@
- + Description

@@ -34,7 +34,7 @@ type.

- + Synopsis
@@ -47,7 +47,7 @@
 };
 
-

Table 1.80. Parameters

+

Table 1.80. Parameters

Copyright © 2001-2005 Joel de Guzman, Dan Marsden
@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -84,14 +84,14 @@ Semantics: Returns an empty sequence.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/erase.html b/doc/html/fusion/algorithms/transformation/metafunctions/erase.html
index 6d51669f..927c3c3c 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/erase.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/erase.html
@@ -30,11 +30,11 @@
             and range delimiting iterator types.
           

- + Description
- + Synopsis
@@ -48,7 +48,7 @@
 };
 
-

Table 1.81. Parameters

+

Table 1.81. Parameters

@@ -92,7 +92,7 @@
- + Expression Semantics
@@ -122,14 +122,14 @@ and It2 removed.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html b/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html
index 2d7d2322..8152721a 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ and key types.

- + Synopsis
@@ -48,7 +48,7 @@
 };
 
-

Table 1.82. Parameters

+

Table 1.82. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -98,14 +98,14 @@ except those with key Key.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/filter.html b/doc/html/fusion/algorithms/transformation/metafunctions/filter.html
index e6641fea..daec1dca 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/filter.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/filter.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ and type to retain.

- + Synopsis
@@ -48,7 +48,7 @@
 };
 
-

Table 1.72. Parameter

+

Table 1.72. Parameter

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -100,14 +100,14 @@ boost::is_same<mpl::_, T> >::type.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html
index 2e19143d..97dbbebf 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ and unary MPL Lambda Expression predicate type.

- + Synopsis
@@ -48,7 +48,7 @@
 };
 
-

Table 1.73. Parameter

+

Table 1.73. Parameter

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -99,14 +99,14 @@ to boost::mpl::true_.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/insert.html b/doc/html/fusion/algorithms/transformation/metafunctions/insert.html
index 37614f87..25743178 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/insert.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/insert.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ position iterator and insertion types.

- + Synopsis
@@ -49,7 +49,7 @@
 };
 
-

Table 1.83. Parameters

+

Table 1.83. Parameters

@@ -90,7 +90,7 @@
- + Expression Semantics
@@ -109,14 +109,14 @@ in Sequence.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html b/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html
index 59727097..19d2b878 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ sequence, position iterator and insertion range types.

- + Synopsis
@@ -49,7 +49,7 @@
 };
 
-

Table 1.84. Parameters

+

Table 1.84. Parameters

@@ -93,7 +93,7 @@
- + Expression Semantics
@@ -112,14 +112,14 @@ into Sequence.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/join.html b/doc/html/fusion/algorithms/transformation/metafunctions/join.html
index 1ed8eec7..c817b13a 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/join.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/join.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result of joining 2 sequences, given the sequence types.

- + Synopsis
@@ -47,7 +47,7 @@
 };
 
- + Expression Semantics
@@ -66,14 +66,14 @@ The order of the elements in the 2 sequences is preserved.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html b/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html
index d060f809..19937af4 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ type.

- + Synopsis
@@ -47,7 +47,7 @@
 };
 
-

Table 1.85. Parameters

+

Table 1.85. Parameters

@@ -71,7 +71,7 @@
- + Expression Semantics
@@ -89,14 +89,14 @@ except the last element.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html b/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html
index c07610b1..dec81c11 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ type.

- + Synopsis
@@ -47,7 +47,7 @@
 };
 
-

Table 1.86. Parameters

+

Table 1.86. Parameters

@@ -71,7 +71,7 @@
- + Expression Semantics
@@ -89,14 +89,14 @@ except the first element.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html b/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html
index 593d21c0..3be4a2bb 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ the input sequence and element to push.

- + Synopsis
@@ -48,7 +48,7 @@
 };
 
-

Table 1.87. Parameters

+

Table 1.87. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -99,14 +99,14 @@ added to the end.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html b/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html
index 0e5b417e..083047b2 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ of the input sequence and element to push.

- + Synopsis
@@ -48,7 +48,7 @@
 };
 
-

Table 1.88. Parameters

+

Table 1.88. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -99,14 +99,14 @@ added to the beginning.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/remove.html b/doc/html/fusion/algorithms/transformation/metafunctions/remove.html
index 3b2d5eca..d8221aba 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/remove.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/remove.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ removal types.

- + Synopsis
@@ -48,7 +48,7 @@
 };
 
-

Table 1.77. Parameters

+

Table 1.77. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -100,14 +100,14 @@ boost::is_same<mpl::_, T> >::type.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html
index fab81df9..ceaccb9b 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ and unary MPL Lambda Expression predicate types.

- + Synopsis
@@ -48,7 +48,7 @@
 };
 
-

Table 1.78. Parameters

+

Table 1.78. Parameters

@@ -82,7 +82,7 @@
- + Expression Semantics
@@ -101,14 +101,14 @@ to boost::mpl::false_.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/replace.html b/doc/html/fusion/algorithms/transformation/metafunctions/replace.html
index 5d508b53..0df9019b 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/replace.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/replace.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ the input sequence and element to replace.

- + Synopsis
@@ -48,7 +48,7 @@
 };
 
-

Table 1.75. Parameters

+

Table 1.75. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -97,14 +97,14 @@ replace.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html
index 20cb8d4b..da9ba87a 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -36,7 +36,7 @@ Function Object predicate and replacement object.

- + Synopsis
@@ -50,7 +50,7 @@
 };
 
-

Table 1.76. Parameters

+

Table 1.76. Parameters

@@ -91,7 +91,7 @@
- + Expression Semantics
@@ -108,14 +108,14 @@ replace_if.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html b/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html
index 1a18585c..87169d88 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ type.

- + Synopsis
@@ -47,7 +47,7 @@
 };
 
-

Table 1.79. Parameters

+

Table 1.79. Parameters

@@ -71,7 +71,7 @@
- + Expression Semantics
@@ -88,14 +88,14 @@ elements in the reverse order to Sequence.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/transform.html b/doc/html/fusion/algorithms/transformation/metafunctions/transform.html
index 148d4887..2ce102e5 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/transform.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/transform.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -36,7 +36,7 @@ Object types.

- + Synopsis
@@ -50,7 +50,7 @@
 };
 
-

Table 1.74. Parameters

+

Table 1.74. Parameters

@@ -84,7 +84,7 @@
- + Expression Semantics
@@ -98,17 +98,17 @@

Semantics: Returns a sequence with values - F::apply<E>::type for each element type E in Sequence. + F::result<E>::type for each element type E in Sequence.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/zip.html b/doc/html/fusion/algorithms/transformation/metafunctions/zip.html
index 9cf2d774..40113c95 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/zip.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/zip.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ of the members of the component sequences.

- + Synopsis
@@ -50,7 +50,7 @@
 };
 
- + Expression Semantics
@@ -73,14 +73,14 @@ 'c'))

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/extension.html b/doc/html/fusion/extension.html
index 0401d84c..e9a1928b 100644
--- a/doc/html/fusion/extension.html
+++ b/doc/html/fusion/extension.html
@@ -48,7 +48,7 @@
       
 
 

- + Our example

@@ -80,7 +80,7 @@ Start guide.

- + Enabling Tag Dispatching

@@ -121,7 +121,7 @@ #include <boost/fusion/sequence/adapted/mpl/tag_of.hpp>

- + Designing a suitable iterator

@@ -184,7 +184,7 @@ clearer as we add features to our implementation.

- + A first couple of instructive features

@@ -327,7 +327,7 @@

- + Implementing the remaining iterator functionality

@@ -382,7 +382,7 @@ are provided in the example code.

- + Implementing the intrinsic functions of the sequence

@@ -441,7 +441,7 @@ value_at_impl and at_impl.

- + Enabling our type as an associative container

@@ -507,7 +507,7 @@ of is_associative_impl.

- + Summary

diff --git a/doc/html/fusion/iterators.html b/doc/html/fusion/iterators.html index 71d0b4d1..8db61de3 100644 --- a/doc/html/fusion/iterators.html +++ b/doc/html/fusion/iterators.html @@ -27,9 +27,43 @@ Iterators

Like MPL and @@ -40,7 +74,7 @@ Sequence.

- + Header

diff --git a/doc/html/fusion/iterators/concepts.html b/doc/html/fusion/iterators/concepts.html
index 303291b2..536779b6 100644
--- a/doc/html/fusion/iterators/concepts.html
+++ b/doc/html/fusion/iterators/concepts.html
@@ -26,14 +26,6 @@
 
 
- + Description

@@ -61,7 +61,7 @@

- + Refinement of
@@ -70,7 +70,7 @@ Iterator">Forward Iterator

- + Expression requirements
@@ -123,7 +123,7 @@
- + Meta Expressions
@@ -143,7 +143,7 @@
- + Expression Semantics
@@ -170,7 +170,7 @@
- + Invariants

@@ -188,7 +188,7 @@

- + Models
    diff --git a/doc/html/fusion/iterators/concepts/forward_iterator.html b/doc/html/fusion/iterators/concepts/forward_iterator.html index ad724ede..14b486e5 100644 --- a/doc/html/fusion/iterators/concepts/forward_iterator.html +++ b/doc/html/fusion/iterators/concepts/forward_iterator.html @@ -30,7 +30,7 @@ Iterator">Forward Iterator
- + Description

@@ -63,7 +63,7 @@

- + Expression requirements
@@ -134,7 +134,7 @@
- + Meta Expressions
@@ -183,7 +183,7 @@
- + Expression Semantics
@@ -249,7 +249,7 @@
- + Invariants

@@ -274,7 +274,7 @@

- + Models
    diff --git a/doc/html/fusion/iterators/concepts/random_access_iterator.html b/doc/html/fusion/iterators/concepts/random_access_iterator.html index 3253c06e..a72f3b19 100644 --- a/doc/html/fusion/iterators/concepts/random_access_iterator.html +++ b/doc/html/fusion/iterators/concepts/random_access_iterator.html @@ -30,7 +30,7 @@ Access Iterator">Random Access Iterator
- + Description

@@ -63,7 +63,7 @@

- + Refinement of
@@ -73,7 +73,7 @@ Iterator

- + Expression requirements
@@ -126,7 +126,7 @@
- + Meta Expressions
@@ -158,7 +158,7 @@
- + Models
    diff --git a/doc/html/fusion/iterators/functions.html b/doc/html/fusion/iterators/functions.html index cad3aa28..29d6130e 100644 --- a/doc/html/fusion/iterators/functions.html +++ b/doc/html/fusion/iterators/functions.html @@ -26,14 +26,6 @@
    -

    Fusion provides functions for manipulating iterators, analogous to the similar functions from the MPL diff --git a/doc/html/fusion/iterators/functions/advance.html b/doc/html/fusion/iterators/functions/advance.html index 85e47b42..27cd579c 100644 --- a/doc/html/fusion/iterators/functions/advance.html +++ b/doc/html/fusion/iterators/functions/advance.html @@ -26,14 +26,14 @@

    - + Description

    Moves an iterator by a specified distance.

    - + Synopsis
    @@ -44,7 +44,7 @@
     typename result_of::advance<I, M>::type advance(I const& i); 
     
    -

    Table 1.6. Parameters

    +

    Table 1.6. Parameters

    @@ -76,7 +76,7 @@
    - + Expression Semantics
    @@ -97,14 +97,14 @@ may be negative.

    - + Header
     #include <boost/fusion/iterator/advance.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/functions/advance_c.html b/doc/html/fusion/iterators/functions/advance_c.html
    index 04bb0f6a..bef51485 100644
    --- a/doc/html/fusion/iterators/functions/advance_c.html
    +++ b/doc/html/fusion/iterators/functions/advance_c.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Moves an iterator by a specified distance.

    - + Synopsis
    @@ -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

    @@ -76,7 +76,7 @@
    - + Expression Semantics
    @@ -97,14 +97,14 @@ may be negative.

    - + Header
     #include <boost/fusion/iterator/advance.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/functions/deref.html b/doc/html/fusion/iterators/functions/deref.html
    index 6bde93ce..22b3c745 100644
    --- a/doc/html/fusion/iterators/functions/deref.html
    +++ b/doc/html/fusion/iterators/functions/deref.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Deferences an iterator.

    - + Synopsis
    @@ -43,7 +43,7 @@
     typename result_of::deref<I>::type deref(I const& i);
     
    -

    Table 1.2. Parameters

    +

    Table 1.2. Parameters

    @@ -67,7 +67,7 @@
    - + Expression Semantics
    @@ -82,14 +82,14 @@ i.

    - + Header
     #include <boost/fusion/iterator/deref.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/functions/distance.html b/doc/html/fusion/iterators/functions/distance.html
    index 17f506e3..c51d20fc 100644
    --- a/doc/html/fusion/iterators/functions/distance.html
    +++ b/doc/html/fusion/iterators/functions/distance.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the distance between 2 iterators.

    - + Synopsis
    @@ -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

    @@ -69,7 +69,7 @@
    - + Expression Semantics
    @@ -84,14 +84,14 @@ iterators i and j.

    - + Header
     #include <boost/fusion/iterator/distance.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/functions/next.html b/doc/html/fusion/iterators/functions/next.html
    index 0a0eee25..c2f20d04 100644
    --- a/doc/html/fusion/iterators/functions/next.html
    +++ b/doc/html/fusion/iterators/functions/next.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Moves an iterator 1 position forwards.

    - + Synopsis
    @@ -43,7 +43,7 @@
     typename result_of::next<I>::type next(I const& i);
     
    -

    Table 1.3. Parameters

    +

    Table 1.3. Parameters

    @@ -67,7 +67,7 @@
    - + Expression Semantics
    @@ -83,14 +83,14 @@ next element after i.

    - + Header
     #include <boost/fusion/iterator/next.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/functions/prior.html b/doc/html/fusion/iterators/functions/prior.html
    index 114a850d..a2316015 100644
    --- a/doc/html/fusion/iterators/functions/prior.html
    +++ b/doc/html/fusion/iterators/functions/prior.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Moves an iterator 1 position backwards.

    - + Synopsis
    @@ -43,7 +43,7 @@
     typename result_of::prior<I>::type prior(I const& i);
     
    -

    Table 1.4. Parameters

    +

    Table 1.4. Parameters

    @@ -67,7 +67,7 @@
    - + Expression Semantics
    @@ -83,14 +83,14 @@ element prior to i.

    - + Header
     #include <boost/fusion/iterator/prior.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions.html b/doc/html/fusion/iterators/metafunctions.html
    index 9f4cbefe..0ed7798f 100644
    --- a/doc/html/fusion/iterators/metafunctions.html
    +++ b/doc/html/fusion/iterators/metafunctions.html
    @@ -23,20 +23,8 @@
     
    PrevUpHomeNext
    - + diff --git a/doc/html/fusion/iterators/metafunctions/advance.html b/doc/html/fusion/iterators/metafunctions/advance.html index 01bf8c41..672c34e9 100644 --- a/doc/html/fusion/iterators/metafunctions/advance.html +++ b/doc/html/fusion/iterators/metafunctions/advance.html @@ -26,14 +26,14 @@
    - + Description

    Moves an iterator a specified distance.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.17. Parameters

    +

    Table 1.17. Parameters

    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    @@ -79,7 +79,7 @@
    - + Expression Semantics
    @@ -99,14 +99,14 @@ may be negative.

    - + Header
     #include <boost/fusion/iterator/advance.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/advance_c.html b/doc/html/fusion/iterators/metafunctions/advance_c.html
    index d431546c..cd6a7141 100644
    --- a/doc/html/fusion/iterators/metafunctions/advance_c.html
    +++ b/doc/html/fusion/iterators/metafunctions/advance_c.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Moves an iterator by a specified distance.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.18. Parameters

    +

    Table 1.18. Parameters

    @@ -79,7 +79,7 @@
    - + Expression Semantics
    @@ -99,14 +99,14 @@ may be negative. Equivalent to result_of::advance<I, boost::mpl::int_<N> >::type.

    - + Header
     #include <boost/fusion/iterator/advance.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/deref.html b/doc/html/fusion/iterators/metafunctions/deref.html
    index 045249d5..0025a8ec 100644
    --- a/doc/html/fusion/iterators/metafunctions/deref.html
    +++ b/doc/html/fusion/iterators/metafunctions/deref.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the type that will be returned by dereferencing an iterator.

    - + Synposis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.12. Parameters

    +

    Table 1.12. Parameters

    @@ -70,7 +70,7 @@
    - + Expression Semantics
    @@ -85,14 +85,14 @@ an iterator of type I.

    - + Header
     #include <boost/fusion/iterator/deref.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/distance.html b/doc/html/fusion/iterators/metafunctions/distance.html
    index a314e2f8..1a94543b 100644
    --- a/doc/html/fusion/iterators/metafunctions/distance.html
    +++ b/doc/html/fusion/iterators/metafunctions/distance.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the distance between two iterators.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.16. Parameters

    +

    Table 1.16. Parameters

    @@ -72,7 +72,7 @@
    - + Expression Semantics
    @@ -88,14 +88,14 @@ J.

    - + Header
     #include <boost/fusion/iterator/distance.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/equal_to.html b/doc/html/fusion/iterators/metafunctions/equal_to.html
    index f4101bfa..7ddaef92 100644
    --- a/doc/html/fusion/iterators/metafunctions/equal_to.html
    +++ b/doc/html/fusion/iterators/metafunctions/equal_to.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -34,7 +34,7 @@ and J are equal.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.15. Parameters

    +

    Table 1.15. Parameters

    @@ -71,7 +71,7 @@
    - + Expression Semantics
    @@ -87,14 +87,14 @@ Returns boost::mpl::false_ otherwise.

    - + Header
     #include <boost/fusion/iterator/equal_to.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/next.html b/doc/html/fusion/iterators/metafunctions/next.html
    index 0bc556b5..03e72360 100644
    --- a/doc/html/fusion/iterators/metafunctions/next.html
    +++ b/doc/html/fusion/iterators/metafunctions/next.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the type of the next iterator in a sequence.

    - + Synposis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.13. Parameters

    +

    Table 1.13. Parameters

    @@ -70,7 +70,7 @@
    - + Expression Semantics
    @@ -86,14 +86,14 @@ next element in the sequence after I.

    - + Header
     #include <boost/fusion/iterator/next.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/prior.html b/doc/html/fusion/iterators/metafunctions/prior.html
    index 9b9038fa..832f7ecc 100644
    --- a/doc/html/fusion/iterators/metafunctions/prior.html
    +++ b/doc/html/fusion/iterators/metafunctions/prior.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the type of the previous iterator in a sequence.

    - + Synopsis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.14. Parameters

    +

    Table 1.14. Parameters

    @@ -70,7 +70,7 @@
    - + Expression Semantics
    @@ -86,14 +86,14 @@ previous element in the sequence before I.

    - + Header
     #include <boost/fusion/iterator/prior.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/metafunctions/value_of.html b/doc/html/fusion/iterators/metafunctions/value_of.html
    index 77268003..f3cdebb4 100644
    --- a/doc/html/fusion/iterators/metafunctions/value_of.html
    +++ b/doc/html/fusion/iterators/metafunctions/value_of.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the type stored at the position of an iterator.

    - + Synopsis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.11. Parameters

    +

    Table 1.11. Parameters

    @@ -70,7 +70,7 @@
    - + Expression Semantics
    @@ -85,14 +85,14 @@ a sequence at iterator position I.

    - + Header
     #include <boost/fusion/iterator/value_of.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/iterators/operators.html b/doc/html/fusion/iterators/operators.html
    index 707d5964..54740099 100644
    --- a/doc/html/fusion/iterators/operators.html
    +++ b/doc/html/fusion/iterators/operators.html
    @@ -26,14 +26,6 @@
     
    -

    Overloaded operators are provided to provide a more natural syntax for dereferencing iterators, and comparing them for equality. diff --git a/doc/html/fusion/iterators/operators/operator_equality.html b/doc/html/fusion/iterators/operators/operator_equality.html index 078fdce0..af003353 100644 --- a/doc/html/fusion/iterators/operators/operator_equality.html +++ b/doc/html/fusion/iterators/operators/operator_equality.html @@ -31,14 +31,14 @@ =="> Operator ==

- + Description

Compares 2 iterators for equality.

- + Synopsis
@@ -49,7 +49,7 @@
 unspecified operator==(I const& i, J const& i);
 
-

Table 1.9. Parameters

+

Table 1.9. Parameters

@@ -72,7 +72,7 @@
- + Expression Semantics
@@ -88,7 +88,7 @@ and j respectively.

- + Header
diff --git a/doc/html/fusion/iterators/operators/operator_inequality.html b/doc/html/fusion/iterators/operators/operator_inequality.html
index 52204a63..0c9316e9 100644
--- a/doc/html/fusion/iterators/operators/operator_inequality.html
+++ b/doc/html/fusion/iterators/operators/operator_inequality.html
@@ -30,14 +30,14 @@
         !="> Operator
         !=
 
- + Description

Compares 2 iterators for inequality.

- + Synopsis
@@ -48,7 +48,7 @@
 unspecified operator==(I const& i, J const& i);
 
-

Table 1.10. Parameters

+

Table 1.10. Parameters

@@ -71,7 +71,7 @@
- + Expression Semantics
@@ -84,7 +84,7 @@ and j respectively.

- + Header
diff --git a/doc/html/fusion/iterators/operators/operator_unary_star.html b/doc/html/fusion/iterators/operators/operator_unary_star.html
index f90acbdd..3262b0c3 100644
--- a/doc/html/fusion/iterators/operators/operator_unary_star.html
+++ b/doc/html/fusion/iterators/operators/operator_unary_star.html
@@ -30,14 +30,14 @@
         *"> Operator
         *
 
- + Description

Dereferences an iterator.

- + Synopsis
@@ -47,7 +47,7 @@
 typename result_of::deref<I>::type operator*(unspecified<I> const& i);
 
-

Table 1.8. Parameters

+

Table 1.8. Parameters

@@ -71,7 +71,7 @@
- + Expression Semantics
@@ -86,14 +86,14 @@ Semantics: Equivalent to deref(i).

- + Header
 #include <boost/fusion/iterator/deref.hpp>
 
- + Example
diff --git a/doc/html/fusion/notes.html b/doc/html/fusion/notes.html
index 8b1024c9..ce7942bc 100644
--- a/doc/html/fusion/notes.html
+++ b/doc/html/fusion/notes.html
@@ -26,7 +26,7 @@
 
 

- + Recursive Inlined Functions

@@ -39,7 +39,7 @@ compiler limit of course). Compile time complexity remains linear.

- + Overloaded Functions

@@ -49,7 +49,7 @@ given a key, k.

- + Tag Dispatching

@@ -101,7 +101,7 @@

- + Extensibility

@@ -136,7 +136,7 @@ it very cheap to pass around.

- + Element Conversion

@@ -159,7 +159,7 @@

Array arguments are deduced to reference to const types. For example - [14] + [14] :

@@ -192,7 +192,7 @@
 list<void (*)(int)>
 

- + boost::ref

@@ -235,7 +235,7 @@



-

[14] +

[14] 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 diff --git a/doc/html/fusion/organization.html b/doc/html/fusion/organization.html index 8cb5f4dd..6db1b1f6 100644 --- a/doc/html/fusion/organization.html +++ b/doc/html/fusion/organization.html @@ -34,7 +34,7 @@ The library is organized in three layers:

- + Layers

@@ -50,7 +50,7 @@ against.

- + Directory

    @@ -159,7 +159,7 @@

- + Example

@@ -175,12 +175,12 @@

The first includes all sequences. The second includes all of sequence containers. The third includes only list - [3] + [3] .



-

[3] +

[3] 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 13dbc037..bfcc85b5 100644 --- a/doc/html/fusion/preface.html +++ b/doc/html/fusion/preface.html @@ -32,7 +32,7 @@ --Niklaus Wirth

- + Description

@@ -50,7 +50,7 @@ of compile time metaprogramming with runtime programming.

- + Motivation

@@ -76,7 +76,7 @@ an instant AHA! moment.

- + How to use this manual

@@ -84,7 +84,7 @@ icons precede some text to indicate:

-

Table 1.1. Icons

+

Table 1.1. Icons

@@ -130,7 +130,7 @@ Tools.

- + Support

diff --git a/doc/html/fusion/quick_start.html b/doc/html/fusion/quick_start.html index 9103da97..cc0940d7 100644 --- a/doc/html/fusion/quick_start.html +++ b/doc/html/fusion/quick_start.html @@ -33,7 +33,7 @@

For starters, we shall include all of Fusion's _sequence_s - [1] + [1] :

@@ -41,7 +41,7 @@
 

Let's begin with a vector - [2] + [2] :

@@ -59,7 +59,7 @@
       Let's see some examples.
     

- + Print the vector as XML

@@ -116,7 +116,7 @@ print just about any Fusion Sequence.

- + Print only pointers

@@ -150,7 +150,7 @@ Easy, right?

- + Associative tuples

@@ -225,7 +225,7 @@ a dog or a whole alternate_universe.

- + Tip of the Iceberg

@@ -236,12 +236,12 @@



-

[1] +

[1] There are finer grained header files available if you wish to have more control over which components to include (see section Orgainization for details).

-

[2] +

[2] 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. diff --git a/doc/html/fusion/sequences.html b/doc/html/fusion/sequences.html index 5df84c38..191065dd 100644 --- a/doc/html/fusion/sequences.html +++ b/doc/html/fusion/sequences.html @@ -27,13 +27,62 @@ Sequences

Like MPL, the @@ -46,7 +95,7 @@ type that can be used to iterate through the Sequence's elements.

- + Header

diff --git a/doc/html/fusion/sequences/adapted.html b/doc/html/fusion/sequences/adapted.html
index 39ca90eb..f7f9cd89 100644
--- a/doc/html/fusion/sequences/adapted.html
+++ b/doc/html/fusion/sequences/adapted.html
@@ -25,13 +25,6 @@
 
-

Fusion provides a couple of adapters for other sequences such as std::pair, MPL sequences, @@ -40,11 +33,11 @@ mechanism. If you wish to use these sequences with fusion, simply include the necessary files and they will be regarded as first-class, fully conforming fusion sequences - [4] + [4] .

- + Header

@@ -52,7 +45,7 @@
 


-

[4] +

[4] Fusion sequences may also be adapted as fully conforming MPL sequences (see Intrinsics). That way, we can have 2-way adaptation to and from MPL diff --git a/doc/html/fusion/sequences/adapted/boost__array.html b/doc/html/fusion/sequences/adapted/boost__array.html index 920b5d2c..42004874 100644 --- a/doc/html/fusion/sequences/adapted/boost__array.html +++ b/doc/html/fusion/sequences/adapted/boost__array.html @@ -33,21 +33,21 @@ Access Sequence.

- + Header
 #include <boost/fusion/sequence/adapted/array.hpp>
 
- + Model of
- + Example
@@ -60,7 +60,7 @@
 std::cout << at_c<2>(arr) << std::endl;
 
- + See also

diff --git a/doc/html/fusion/sequences/adapted/boost__tuple.html b/doc/html/fusion/sequences/adapted/boost__tuple.html index e4852ad1..d161ce16 100644 --- a/doc/html/fusion/sequences/adapted/boost__tuple.html +++ b/doc/html/fusion/sequences/adapted/boost__tuple.html @@ -33,20 +33,20 @@ Sequence.

- + Header
 #include <boost/fusion/sequence/adapted/boost_tuple.hpp>
 
- + Model of
- + Example
@@ -55,7 +55,7 @@
 std::cout << *boost::fusion::next(boost::fusion::begin(example_tuple)) << '\n';
 
- + See also

diff --git a/doc/html/fusion/sequences/adapted/boost__variant.html b/doc/html/fusion/sequences/adapted/boost__variant.html index 736a9711..fd3e7416 100644 --- a/doc/html/fusion/sequences/adapted/boost__variant.html +++ b/doc/html/fusion/sequences/adapted/boost__variant.html @@ -36,21 +36,21 @@ value of that type.

- + Header
 #include <boost/fusion/sequence/adapted/variant.hpp>
 
- + Model of
- + Example
@@ -60,7 +60,7 @@
 std::cout << example_variant << '\n';
 
- + See also

diff --git a/doc/html/fusion/sequences/adapted/mpl_sequence.html b/doc/html/fusion/sequences/adapted/mpl_sequence.html index 9e1e50ea..184b5522 100644 --- a/doc/html/fusion/sequences/adapted/mpl_sequence.html +++ b/doc/html/fusion/sequences/adapted/mpl_sequence.html @@ -31,14 +31,14 @@ sequences fully conforming fusion sequences.

- + Header
 #include <boost/fusion/sequence/adapted/mpl.hpp>
 
- + Model of
    @@ -62,7 +62,7 @@
- + Example
@@ -76,7 +76,7 @@
 std::cout << at_c<1>(v) << std::endl;
 
- + See also

diff --git a/doc/html/fusion/sequences/adapted/std__pair.html b/doc/html/fusion/sequences/adapted/std__pair.html index 62a81557..e079ae74 100644 --- a/doc/html/fusion/sequences/adapted/std__pair.html +++ b/doc/html/fusion/sequences/adapted/std__pair.html @@ -33,21 +33,21 @@ Access Sequence.

- + Header
 #include <boost/fusion/sequence/adapted/std_pair.hpp>
 
- + Model of
- + Example
@@ -57,7 +57,7 @@
 std::cout << p << std::endl;
 
- + See also

diff --git a/doc/html/fusion/sequences/concepts.html b/doc/html/fusion/sequences/concepts.html index c3692992..680b35ac 100644 --- a/doc/html/fusion/sequences/concepts.html +++ b/doc/html/fusion/sequences/concepts.html @@ -26,21 +26,11 @@

-

Fusion Sequences are organized into a hierarchy of concepts.

- + Traversal

@@ -58,7 +48,7 @@ Sequence. These concepts pertain to sequence traversal.

- + Associativity

diff --git a/doc/html/fusion/sequences/concepts/associative_sequence.html b/doc/html/fusion/sequences/concepts/associative_sequence.html index a7ad919f..f54484d0 100644 --- a/doc/html/fusion/sequences/concepts/associative_sequence.html +++ b/doc/html/fusion/sequences/concepts/associative_sequence.html @@ -30,7 +30,7 @@ Sequence">Associative Sequence

- + Description

@@ -71,7 +71,7 @@

- + Valid Expressions
@@ -121,7 +121,7 @@
- + Result Type Expressions
@@ -161,7 +161,7 @@ result_of::value_at_key<S, N>.

- + Expression Semantics
@@ -194,7 +194,7 @@
- + Models
    diff --git a/doc/html/fusion/sequences/concepts/bidirectional_sequence.html b/doc/html/fusion/sequences/concepts/bidirectional_sequence.html index e43d120f..af10787a 100644 --- a/doc/html/fusion/sequences/concepts/bidirectional_sequence.html +++ b/doc/html/fusion/sequences/concepts/bidirectional_sequence.html @@ -31,7 +31,7 @@ Sequence">Bidirectional Sequence
- + Description

@@ -42,7 +42,7 @@ Iterator.

- + Refinement of
@@ -72,7 +72,7 @@
- + Valid Expressions
@@ -133,7 +133,7 @@
- + Result Type Expressions
@@ -165,7 +165,7 @@
- + Expression Semantics
@@ -191,7 +191,7 @@
- + Models
    diff --git a/doc/html/fusion/sequences/concepts/forward_sequence.html b/doc/html/fusion/sequences/concepts/forward_sequence.html index 7ec4993f..b6003f02 100644 --- a/doc/html/fusion/sequences/concepts/forward_sequence.html +++ b/doc/html/fusion/sequences/concepts/forward_sequence.html @@ -30,7 +30,7 @@ Sequence">Forward Sequence
- + Description

@@ -62,7 +62,7 @@

- + Valid Expressions
@@ -133,7 +133,7 @@
- + Result Type Expressions
@@ -173,7 +173,7 @@
- + Expression Semantics
@@ -218,7 +218,7 @@
- + Invariants

@@ -244,7 +244,7 @@

- + Models
    diff --git a/doc/html/fusion/sequences/concepts/random_access_sequence.html b/doc/html/fusion/sequences/concepts/random_access_sequence.html index f4aeacc9..f60100af 100644 --- a/doc/html/fusion/sequences/concepts/random_access_sequence.html +++ b/doc/html/fusion/sequences/concepts/random_access_sequence.html @@ -31,7 +31,7 @@ Access Sequence">Random Access Sequence
- + Description

@@ -43,7 +43,7 @@ sequence elements.

- + Refinement of
@@ -78,7 +78,7 @@
- + Valid Expressions
@@ -139,7 +139,7 @@
- + Result Type Expressions
@@ -184,7 +184,7 @@ result_of::value_at<S, N>.

- + Expression Semantics
@@ -210,7 +210,7 @@
- + Models
    diff --git a/doc/html/fusion/sequences/containers.html b/doc/html/fusion/sequences/containers.html index e18827a9..0f2be65c 100644 --- a/doc/html/fusion/sequences/containers.html +++ b/doc/html/fusion/sequences/containers.html @@ -26,20 +26,13 @@
    -

    Fusion provides a few predefined sequences out of the box. These containers actually hold heterogenously typed data; unlike Views. These containers are more or less counterparts of those in STL.

    - + Header

    diff --git a/doc/html/fusion/sequences/containers/cons.html b/doc/html/fusion/sequences/containers/cons.html
    index f5e1fe9d..f9793a55 100644
    --- a/doc/html/fusion/sequences/containers/cons.html
    +++ b/doc/html/fusion/sequences/containers/cons.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -41,14 +41,14 @@ Inlined Functions).

    - + Header
     #include <boost/fusion/sequence/container/list/cons.hpp>
     
    - + Synopsis
    @@ -56,7 +56,7 @@
     struct cons;
     
    - + Template parameters
    @@ -87,7 +87,7 @@
    - + Model of
    • - + Expression Semantics
      @@ -208,7 +208,7 @@ Inlined Functions).

      - + Example
      diff --git a/doc/html/fusion/sequences/containers/list.html b/doc/html/fusion/sequences/containers/list.html
      index c2c988de..6753b09c 100644
      --- a/doc/html/fusion/sequences/containers/list.html
      +++ b/doc/html/fusion/sequences/containers/list.html
      @@ -26,7 +26,7 @@
       
       
      - + Description

      @@ -38,7 +38,7 @@ runtime cost of access to each element is peculiarly constant (see Recursive Inlined Functions).

      - + Header
      @@ -46,7 +46,7 @@
       #include <boost/fusion/sequence/container/list/list_forward.hpp>
       
      - + Synopsis
      @@ -77,7 +77,7 @@
       #define FUSION_MAX_LIST_SIZE 20
       
      - + Template parameters
      @@ -101,7 +101,7 @@
    - + Model of
    • - + Expression Semantics
      @@ -200,7 +200,7 @@ Inlined Functions).

      - + Example
      diff --git a/doc/html/fusion/sequences/containers/map.html b/doc/html/fusion/sequences/containers/map.html
      index 51ddc521..afcaac73 100644
      --- a/doc/html/fusion/sequences/containers/map.html
      +++ b/doc/html/fusion/sequences/containers/map.html
      @@ -26,7 +26,7 @@
       
       
      - + Description

      @@ -41,14 +41,14 @@ Functions).

      - + Header
       #include <boost/fusion/sequence/container/map.hpp>
       
      - + Synopsis
      @@ -79,7 +79,7 @@
       #define FUSION_MAX_MAP_SIZE 20
       
      - + Template parameters
      @@ -103,7 +103,7 @@
    - + Model of
      @@ -137,7 +137,7 @@
    - + Expression Semantics
    @@ -189,7 +189,7 @@
- + Example
diff --git a/doc/html/fusion/sequences/containers/set.html b/doc/html/fusion/sequences/containers/set.html
index e400566b..e10255df 100644
--- a/doc/html/fusion/sequences/containers/set.html
+++ b/doc/html/fusion/sequences/containers/set.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -39,14 +39,14 @@ Functions).

- + Header
 #include <boost/fusion/sequence/container/set.hpp>
 
- + Synopsis
@@ -77,7 +77,7 @@
 #define FUSION_MAX_SET_SIZE 20
 
- + Template parameters
@@ -101,7 +101,7 @@
- + Model of
    @@ -135,7 +135,7 @@
- + Expression Semantics
@@ -187,7 +187,7 @@
- + Example
diff --git a/doc/html/fusion/sequences/containers/vector.html b/doc/html/fusion/sequences/containers/vector.html
index a6b7cf34..f6dedc7e 100644
--- a/doc/html/fusion/sequences/containers/vector.html
+++ b/doc/html/fusion/sequences/containers/vector.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -39,12 +39,12 @@ most efficient.

- + Header
 #include <boost/fusion/sequence/container/vector.hpp>
-#include <boost/fusion/sequence/container/vector/vector_forward.hpp>
+#include <boost/fusion/sequence/container/vector/vector_fwd.hpp>
 
 // numbered forms
 #include <boost/fusion/sequence/container/vector/vector10.hpp>
@@ -54,7 +54,7 @@
 #include <boost/fusion/sequence/container/vector/vector50.hpp>
 
- + Synopsis

@@ -115,7 +115,7 @@ #define FUSION_MAX_VECTOR_SIZE 20

- + Template parameters
@@ -139,7 +139,7 @@
- + Model of
- + Example
diff --git a/doc/html/fusion/sequences/conversion.html b/doc/html/fusion/sequences/conversion.html
index aaa10a56..cdaaa073 100644
--- a/doc/html/fusion/sequences/conversion.html
+++ b/doc/html/fusion/sequences/conversion.html
@@ -25,16 +25,12 @@
 
-

All fusion sequences can be converted to one of the Containers types using one of these conversion functions.

- + Header

diff --git a/doc/html/fusion/sequences/conversion/functions.html b/doc/html/fusion/sequences/conversion/functions.html
index ad31a4c8..404581af 100644
--- a/doc/html/fusion/sequences/conversion/functions.html
+++ b/doc/html/fusion/sequences/conversion/functions.html
@@ -22,16 +22,8 @@
 
PrevUpHomeNext
- + diff --git a/doc/html/fusion/sequences/conversion/functions/as_list.html b/doc/html/fusion/sequences/conversion/functions/as_list.html index 167ba97c..ae25a601 100644 --- a/doc/html/fusion/sequences/conversion/functions/as_list.html +++ b/doc/html/fusion/sequences/conversion/functions/as_list.html @@ -26,14 +26,14 @@
- + Description

Convert a fusion sequence to a list.

- + Synopsis
@@ -46,7 +46,7 @@
 as_list(Sequence const& seq);
 
- + Parameters
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -83,14 +83,14 @@ seq, to a list.

- + Header
 #include <boost/fusion/sequence/conversion/as_list.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/conversion/functions/as_map.html b/doc/html/fusion/sequences/conversion/functions/as_map.html
index 5791bc49..9c0abf91 100644
--- a/doc/html/fusion/sequences/conversion/functions/as_map.html
+++ b/doc/html/fusion/sequences/conversion/functions/as_map.html
@@ -26,14 +26,14 @@
 
 
- + Description

Convert a fusion sequence to a map.

- + Synopsis
@@ -46,7 +46,7 @@
 as_map(Sequence const& seq);
 
- + Parameters
@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -88,14 +88,14 @@ There may be no duplicate fusion::pair key types.

- + Header
 #include <boost/fusion/sequence/conversion/as_map.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/conversion/functions/as_set.html b/doc/html/fusion/sequences/conversion/functions/as_set.html
index c5b0564d..202bd698 100644
--- a/doc/html/fusion/sequences/conversion/functions/as_set.html
+++ b/doc/html/fusion/sequences/conversion/functions/as_set.html
@@ -26,14 +26,14 @@
 
 
- + Description

Convert a fusion sequence to a set.

- + Synopsis
@@ -46,7 +46,7 @@
 as_set(Sequence const& seq);
 
- + Parameters
@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -87,14 +87,14 @@ key types.

- + Header
 #include <boost/fusion/sequence/conversion/as_set.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/conversion/functions/as_vector.html b/doc/html/fusion/sequences/conversion/functions/as_vector.html
index 741005a4..d7f4f246 100644
--- a/doc/html/fusion/sequences/conversion/functions/as_vector.html
+++ b/doc/html/fusion/sequences/conversion/functions/as_vector.html
@@ -26,14 +26,14 @@
 
 
- + Description

Convert a fusion sequence to a vector.

- + Synopsis
@@ -46,7 +46,7 @@
 as_vector(Sequence const& seq);
 
- + Parameters
@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -83,14 +83,14 @@ seq, to a vector.

- + Header
 #include <boost/fusion/sequence/conversion/as_vector.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/conversion/metafunctions.html b/doc/html/fusion/sequences/conversion/metafunctions.html
index 9241e198..101ffa07 100644
--- a/doc/html/fusion/sequences/conversion/metafunctions.html
+++ b/doc/html/fusion/sequences/conversion/metafunctions.html
@@ -22,16 +22,8 @@
 
PrevUpHomeNext
- + diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_list.html b/doc/html/fusion/sequences/conversion/metafunctions/as_list.html index aca4cdeb..e4962648 100644 --- a/doc/html/fusion/sequences/conversion/metafunctions/as_list.html +++ b/doc/html/fusion/sequences/conversion/metafunctions/as_list.html @@ -26,14 +26,14 @@
- + Description

Returns the result type of as_list.

- + Synopsis
@@ -41,7 +41,7 @@
 struct as_list;
 
- + Parameters
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
@@ -65,7 +65,7 @@
- + Expression Semantics
@@ -81,14 +81,14 @@ Sequence, to a list.

- + Header
 #include <boost/fusion/sequence/conversion/as_list.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_map.html b/doc/html/fusion/sequences/conversion/metafunctions/as_map.html
index 8f11703d..968323ab 100644
--- a/doc/html/fusion/sequences/conversion/metafunctions/as_map.html
+++ b/doc/html/fusion/sequences/conversion/metafunctions/as_map.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of as_map.

- + Synopsis
@@ -41,7 +41,7 @@
 struct as_map;
 
- + Parameters
@@ -65,7 +65,7 @@
- + Expression Semantics
@@ -86,14 +86,14 @@ There may be no duplicate fusion::pair key types.

- + Header
 #include <boost/fusion/sequence/conversion/as_map.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_set.html b/doc/html/fusion/sequences/conversion/metafunctions/as_set.html
index c74ed1e2..f0be2ba7 100644
--- a/doc/html/fusion/sequences/conversion/metafunctions/as_set.html
+++ b/doc/html/fusion/sequences/conversion/metafunctions/as_set.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of as_set.

- + Synopsis
@@ -41,7 +41,7 @@
 struct as_set;
 
- + Parameters
@@ -65,7 +65,7 @@
- + Expression Semantics
@@ -85,14 +85,14 @@ key types.

- + Header
 #include <boost/fusion/sequence/conversion/as_set.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html b/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html
index bf2dc169..1bcd0458 100644
--- a/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html
+++ b/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of as_vector.

- + Synopsis
@@ -41,7 +41,7 @@
 struct as_vector;
 
- + Parameters
@@ -65,7 +65,7 @@
- + Expression Semantics
@@ -81,14 +81,14 @@ Sequence, to a vector.

- + Header
 #include <boost/fusion/sequence/conversion/as_vector.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/generation.html b/doc/html/fusion/sequences/generation.html
index 0f633324..d628ce29 100644
--- a/doc/html/fusion/sequences/generation.html
+++ b/doc/html/fusion/sequences/generation.html
@@ -25,15 +25,11 @@
 
-

These are the functions that you can use to generate various forms of Containers from elemental values.

- + Header

diff --git a/doc/html/fusion/sequences/generation/functions.html b/doc/html/fusion/sequences/generation/functions.html
index 202070ae..dae0210f 100644
--- a/doc/html/fusion/sequences/generation/functions.html
+++ b/doc/html/fusion/sequences/generation/functions.html
@@ -22,20 +22,8 @@
 
PrevUpHomeNext
- + diff --git a/doc/html/fusion/sequences/generation/functions/list_tie.html b/doc/html/fusion/sequences/generation/functions/list_tie.html index 52390b33..78909415 100644 --- a/doc/html/fusion/sequences/generation/functions/list_tie.html +++ b/doc/html/fusion/sequences/generation/functions/list_tie.html @@ -26,14 +26,14 @@
- + Description

Constructs a tie using a list sequence.

- + Synopsis
@@ -53,7 +53,7 @@
 #define FUSION_MAX_LIST_SIZE 20
 
- + Parameters
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
@@ -82,7 +82,7 @@
- + Expression Semantics
@@ -97,14 +97,14 @@ Semantics: Create a list of references from x0, x1,... xN.

- + Header
 #include <boost/fusion/sequence/generation/list_tie.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/generation/functions/make_cons.html b/doc/html/fusion/sequences/generation/functions/make_cons.html
index 872bb4b6..2ebc58db 100644
--- a/doc/html/fusion/sequences/generation/functions/make_cons.html
+++ b/doc/html/fusion/sequences/generation/functions/make_cons.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -35,7 +35,7 @@ (tail).

- + Synopsis
@@ -48,7 +48,7 @@
 make_cons(Car const& car, Cdr const& cdr);
 
- + Parameters
@@ -82,7 +82,7 @@
- + Expression Semantics
@@ -98,21 +98,21 @@ (tail).

- + Header
 #include <boost/fusion/sequence/generation/make_cons.hpp>
 
- + Example
 make_cons('x', make_cons(123))
 
- + See also
diff --git a/doc/html/fusion/sequences/generation/functions/make_list.html b/doc/html/fusion/sequences/generation/functions/make_list.html index 70ba8854..04532684 100644 --- a/doc/html/fusion/sequences/generation/functions/make_list.html +++ b/doc/html/fusion/sequences/generation/functions/make_list.html @@ -26,14 +26,14 @@
- + Description

Create a list from one or more values.

- + Synopsis
@@ -53,7 +53,7 @@
 #define FUSION_MAX_LIST_SIZE 20
 
- + Parameters
@@ -82,7 +82,7 @@
- + Expression Semantics
@@ -96,21 +96,21 @@ Semantics: Create a list from x0, x1,... xN.

- + Header
 #include <boost/fusion/sequence/generation/make_list.hpp>
 
- + Example
 make_list(123, "hello", 12.5)
 
- + See also
diff --git a/doc/html/fusion/sequences/generation/functions/make_map.html b/doc/html/fusion/sequences/generation/functions/make_map.html index 6ab49f6c..c0d068d0 100644 --- a/doc/html/fusion/sequences/generation/functions/make_map.html +++ b/doc/html/fusion/sequences/generation/functions/make_map.html @@ -26,7 +26,7 @@
- + Description

@@ -34,7 +34,7 @@ pairs.

- + Synopsis
@@ -47,7 +47,7 @@
 

The variadic function accepts 0 to FUSION_MAX_VECTOR_SIZE - [10] + [10] elements, where FUSION_MAX_VECTOR_SIZE is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE @@ -57,7 +57,7 @@ #define FUSION_MAX_VECTOR_SIZE 20

- + Parameters
@@ -97,7 +97,7 @@
- + Expression Semantics
@@ -118,14 +118,14 @@ key types.

- + Header
 #include <boost/fusion/sequence/generation/make_map.hpp>
 
- + Example
@@ -134,7 +134,7 @@
   , make_pair<double>("Men"))
 
- + See also
@@ -144,7 +144,7 @@



-

[10] +

[10] map is implemented in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

diff --git a/doc/html/fusion/sequences/generation/functions/make_set.html b/doc/html/fusion/sequences/generation/functions/make_set.html index 803ae3fb..c871086e 100644 --- a/doc/html/fusion/sequences/generation/functions/make_set.html +++ b/doc/html/fusion/sequences/generation/functions/make_set.html @@ -26,14 +26,14 @@
- + Description

Create a set from one or more values.

- + Synopsis
@@ -44,7 +44,7 @@
 

The variadic function accepts 0 to FUSION_MAX_VECTOR_SIZE - [9] + [9] elements, where FUSION_MAX_VECTOR_SIZE is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE @@ -54,7 +54,7 @@ #define FUSION_MAX_VECTOR_SIZE 20

- + Parameters
@@ -83,7 +83,7 @@
- + Expression Semantics
@@ -101,21 +101,21 @@ key types.

- + Header
 #include <boost/fusion/sequence/generation/make_set.hpp>
 
- + Example
 make_set(123, "hello", 12.5)
 
- + See also
@@ -124,7 +124,7 @@



-

[9] +

[9] set is implemented in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

diff --git a/doc/html/fusion/sequences/generation/functions/make_vector.html b/doc/html/fusion/sequences/generation/functions/make_vector.html index ae28f9be..ec3f0198 100644 --- a/doc/html/fusion/sequences/generation/functions/make_vector.html +++ b/doc/html/fusion/sequences/generation/functions/make_vector.html @@ -26,14 +26,14 @@
- + Description

Create a vector from one or more values.

- + Synopsis
@@ -53,7 +53,7 @@
 #define FUSION_MAX_VECTOR_SIZE 20
 
- + Parameters
@@ -82,7 +82,7 @@
- + Expression Semantics
@@ -96,21 +96,21 @@ Semantics: Create a vector from x0, x1,... xN.

- + Header
 #include <boost/fusion/sequence/generation/make_vector.hpp>
 
- + Example
 make_vector(123, "hello", 12.5)
 
- + See also
diff --git a/doc/html/fusion/sequences/generation/functions/tiers.html b/doc/html/fusion/sequences/generation/functions/tiers.html index 8c7536b7..8aca73a3 100644 --- a/doc/html/fusion/sequences/generation/functions/tiers.html +++ b/doc/html/fusion/sequences/generation/functions/tiers.html @@ -48,7 +48,7 @@ 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)) - [11] + [11] .

@@ -66,7 +66,7 @@ when calling functions which return sequences.

- + Ignore

@@ -81,7 +81,7 @@



-

[11] +

[11] see Boost.Ref for details about ref

diff --git a/doc/html/fusion/sequences/generation/functions/vector_tie.html b/doc/html/fusion/sequences/generation/functions/vector_tie.html index eb45acf4..2611c669 100644 --- a/doc/html/fusion/sequences/generation/functions/vector_tie.html +++ b/doc/html/fusion/sequences/generation/functions/vector_tie.html @@ -26,14 +26,14 @@
- + Description

Constructs a tie using a vector sequence.

- + Synopsis
@@ -53,7 +53,7 @@
 #define FUSION_MAX_VECTOR_SIZE 20
 
- + Parameters
@@ -82,7 +82,7 @@
- + Expression Semantics
@@ -97,14 +97,14 @@ Semantics: Create a vector of references from x0, x1,... xN.

- + Header
 #include <boost/fusion/sequence/generation/vector_tie.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/generation/metafunctions.html b/doc/html/fusion/sequences/generation/metafunctions.html
index 3143a7b0..45216962 100644
--- a/doc/html/fusion/sequences/generation/metafunctions.html
+++ b/doc/html/fusion/sequences/generation/metafunctions.html
@@ -22,19 +22,8 @@
 
PrevUpHomeNext
- + diff --git a/doc/html/fusion/sequences/generation/metafunctions/list_tie.html b/doc/html/fusion/sequences/generation/metafunctions/list_tie.html index d5f9950e..414be87f 100644 --- a/doc/html/fusion/sequences/generation/metafunctions/list_tie.html +++ b/doc/html/fusion/sequences/generation/metafunctions/list_tie.html @@ -26,14 +26,14 @@
- + Description

Returns the result type of list_tie.

- + Synopsis
@@ -52,7 +52,7 @@
 #define FUSION_MAX_LIST_SIZE 20
 
- + Parameters
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
@@ -77,7 +77,7 @@
- + Expression Semantics
@@ -92,14 +92,14 @@ Semantics: Create a list of references from T0, T1,... TN.

- + Header
 #include <boost/fusion/sequence/generation/list_tie.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_cons.html b/doc/html/fusion/sequences/generation/metafunctions/make_cons.html
index dc9b1b63..58957889 100644
--- a/doc/html/fusion/sequences/generation/metafunctions/make_cons.html
+++ b/doc/html/fusion/sequences/generation/metafunctions/make_cons.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of make_cons.

- + Synopsis
@@ -41,7 +41,7 @@
 struct make_cons;
 
- + Parameters
@@ -73,7 +73,7 @@
- + Expression Semantics
@@ -91,14 +91,14 @@ (tail).

- + Header
 #include <boost/fusion/sequence/generation/make_cons.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_list.html b/doc/html/fusion/sequences/generation/metafunctions/make_list.html
index 54e6eb09..72e0076d 100644
--- a/doc/html/fusion/sequences/generation/metafunctions/make_list.html
+++ b/doc/html/fusion/sequences/generation/metafunctions/make_list.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of make_list.

- + Synopsis
@@ -52,7 +52,7 @@
 #define FUSION_MAX_LIST_SIZE 20
 
- + Parameters
@@ -77,7 +77,7 @@
- + Expression Semantics
@@ -93,14 +93,14 @@ Semantics: Create a list from T0, T1,... TN.

- + Header
 #include <boost/fusion/sequence/generation/make_list.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_map.html b/doc/html/fusion/sequences/generation/metafunctions/make_map.html
index d70315d8..d5a34ca3 100644
--- a/doc/html/fusion/sequences/generation/metafunctions/make_map.html
+++ b/doc/html/fusion/sequences/generation/metafunctions/make_map.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of make_map.

- + Synopsis
@@ -45,7 +45,7 @@
 

The variadic function accepts 0 to FUSION_MAX_VECTOR_SIZE - [13] + [13] elements, where FUSION_MAX_VECTOR_SIZE is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE @@ -55,7 +55,7 @@ #define FUSION_MAX_VECTOR_SIZE 20

- + Parameters
@@ -91,7 +91,7 @@
- + Expression Semantics
@@ -111,21 +111,21 @@ key types.

- + Header
 #include <boost/fusion/sequence/generation/make_map.hpp>
 
- + Example
 result_of::make_map<int, double, char, double>::type
 
- + See also
@@ -134,7 +134,7 @@



-

[13] +

[13] map is implemented in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_set.html b/doc/html/fusion/sequences/generation/metafunctions/make_set.html index a94ebba7..d01b1ad4 100644 --- a/doc/html/fusion/sequences/generation/metafunctions/make_set.html +++ b/doc/html/fusion/sequences/generation/metafunctions/make_set.html @@ -26,14 +26,14 @@
- + Description

Returns the result type of make_set.

- + Synopsis
@@ -43,7 +43,7 @@
 

The variadic function accepts 0 to FUSION_MAX_VECTOR_SIZE - [12] + [12] elements, where FUSION_MAX_VECTOR_SIZE is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE @@ -53,7 +53,7 @@ #define FUSION_MAX_VECTOR_SIZE 20

- + Parameters
@@ -78,7 +78,7 @@
- + Expression Semantics
@@ -98,14 +98,14 @@ key types.

- + Header
 #include <boost/fusion/sequence/generation/make_set.hpp>
 
- + Example
@@ -113,7 +113,7 @@
 


-

[12] +

[12] set is implemented in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_vector.html b/doc/html/fusion/sequences/generation/metafunctions/make_vector.html index c0298e41..152fe79e 100644 --- a/doc/html/fusion/sequences/generation/metafunctions/make_vector.html +++ b/doc/html/fusion/sequences/generation/metafunctions/make_vector.html @@ -26,14 +26,14 @@
- + Description

Returns the result type of make_vector.

- + Synopsis
@@ -52,7 +52,7 @@
 #define FUSION_MAX_VECTOR_SIZE 20
 
- + Parameters
@@ -77,7 +77,7 @@
- + Expression Semantics
@@ -93,14 +93,14 @@ Semantics: Create a vector from T0, T1,... TN.

- + Header
 #include <boost/fusion/sequence/generation/make_list.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html b/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html
index 1bf93848..241fd60f 100644
--- a/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html
+++ b/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of vector_tie.

- + Synopsis
@@ -52,7 +52,7 @@
 #define FUSION_MAX_VECTOR_SIZE 20
 
- + Parameters
@@ -77,7 +77,7 @@
- + Expression Semantics
@@ -92,14 +92,14 @@ Semantics: Create a vector of references from T0, T1,... TN.

- + Header
 #include <boost/fusion/sequence/generation/vector_tie.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics.html b/doc/html/fusion/sequences/intrinsics.html
index 7701a5bc..605e3f5f 100644
--- a/doc/html/fusion/sequences/intrinsics.html
+++ b/doc/html/fusion/sequences/intrinsics.html
@@ -25,10 +25,6 @@
 
-

Intrinsics form the essential interface of Fusion _sequence_s. STL @@ -36,11 +32,11 @@ Intrinsic functions, unlike Algorithms, are not generic across the full Sequence repertoire. They need to be implemented for each Fusion Sequence - [5] + [5] .

- + Header

@@ -48,7 +44,7 @@
 


-

[5] +

[5] In practice, many of intrinsic functions have default implementations that will work in majority of cases

diff --git a/doc/html/fusion/sequences/intrinsics/functions.html b/doc/html/fusion/sequences/intrinsics/functions.html index 37df07d8..4abca708 100644 --- a/doc/html/fusion/sequences/intrinsics/functions.html +++ b/doc/html/fusion/sequences/intrinsics/functions.html @@ -22,22 +22,8 @@
PrevUpHomeNext
- + diff --git a/doc/html/fusion/sequences/intrinsics/functions/at.html b/doc/html/fusion/sequences/intrinsics/functions/at.html index c926fb16..fdb63ebc 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/at.html +++ b/doc/html/fusion/sequences/intrinsics/functions/at.html @@ -26,14 +26,14 @@
- + Description

Returns the N-th element from the beginning of the sequence.

- + Synopsis
@@ -46,7 +46,7 @@
 at(Sequence const& seq);
 
- + Parameters
Copyright © 2001-2005 Joel de Guzman, Dan Marsden
@@ -81,7 +81,7 @@
- + Expression Semantics
@@ -109,14 +109,14 @@ deref(advance<N>(begin(s)))
- + Header
 #include <boost/fusion/sequence/intrinsic/at.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/at_c.html b/doc/html/fusion/sequences/intrinsics/functions/at_c.html
index 4de50bbf..70e3dc17 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/at_c.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/at_c.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the N-th element from the beginning of the sequence.

- + Synopsis
@@ -46,7 +46,7 @@
 at_c(Sequence const& seq);
 
- + Parameters
@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -109,14 +109,14 @@ deref(advance<N>(begin(s)))
- + Header
 #include <boost/fusion/sequence/intrinsic/at_c.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/at_key.html b/doc/html/fusion/sequences/intrinsics/functions/at_key.html
index 7f3b1e90..970744d0 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/at_key.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/at_key.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the element associated with a Key from the sequence.

- + Synopsis
@@ -46,7 +46,7 @@
 at_key(Sequence const& seq);
 
- + Parameters
@@ -79,7 +79,7 @@
- + Expression Semantics
@@ -103,14 +103,14 @@ with Key.

- + Header
 #include <boost/fusion/sequence/intrinsic/at_key.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/back.html b/doc/html/fusion/sequences/intrinsics/functions/back.html
index dec1d102..6359c5bd 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/back.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/back.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the last element in the sequence.

- + Synopsis
@@ -46,7 +46,7 @@
 back(Sequence const& seq);
 
- + Parameters
@@ -71,7 +71,7 @@
- + Expression Semantics
@@ -95,14 +95,14 @@ in the sequence.

- + Header
 #include <boost/fusion/sequence/intrinsic/back.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/begin.html b/doc/html/fusion/sequences/intrinsics/functions/begin.html
index 09c74c3c..152b62cc 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/begin.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/begin.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns an iterator pointing to the first element in the sequence.

- + Synopsis
@@ -46,7 +46,7 @@
 begin(Sequence const& seq);
 
- + Parameters
@@ -72,7 +72,7 @@
- + Expression Semantics
@@ -102,14 +102,14 @@ to the first element in the sequence.

- + Header
 #include <boost/fusion/sequence/intrinsic/begin.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/empty.html b/doc/html/fusion/sequences/intrinsics/functions/empty.html
index 13c24ee3..09cd5a59 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/empty.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/empty.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -35,7 +35,7 @@ the sequence is empty, else, evaluates to false.

- + Synopsis
@@ -44,7 +44,7 @@
 empty(Sequence const& seq);
 
- + Parameters
@@ -69,7 +69,7 @@
- + Expression Semantics
@@ -84,14 +84,14 @@ to false.

- + Header
 #include <boost/fusion/sequence/intrinsic/empty.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/end.html b/doc/html/fusion/sequences/intrinsics/functions/end.html
index 317acb6f..6b77f893 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/end.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/end.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns an iterator pointing to one element past the end of the sequence.

- + Synopsis
@@ -46,7 +46,7 @@
 end(Sequence const& seq);
 
- + Parameters
@@ -72,7 +72,7 @@
- + Expression Semantics
@@ -102,14 +102,14 @@ to one element past the end of the sequence.

- + Header
 #include <boost/fusion/sequence/intrinsic/end.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/front.html b/doc/html/fusion/sequences/intrinsics/functions/front.html
index d3cf8e9a..12db082f 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/front.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/front.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the first element in the sequence.

- + Synopsis
@@ -46,7 +46,7 @@
 front(Sequence const& seq);
 
- + Parameters
@@ -71,7 +71,7 @@
- + Expression Semantics
@@ -95,14 +95,14 @@ in the sequence.

- + Header
 #include <boost/fusion/sequence/intrinsic/front.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/has_key.html b/doc/html/fusion/sequences/intrinsics/functions/has_key.html
index 79a52efb..61413303 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/has_key.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/has_key.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -36,7 +36,7 @@ to false.

- + Synopsis
@@ -45,7 +45,7 @@
 has_key(Sequence const& seq);
 
- + Parameters
@@ -78,7 +78,7 @@
- + Expression Semantics
@@ -93,14 +93,14 @@ associated with Key, else, evaluates to false.

- + Header
 #include <boost/fusion/sequence/intrinsic/has_key.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/functions/size.html b/doc/html/fusion/sequences/intrinsics/functions/size.html
index 34a48e38..78f03ec3 100644
--- a/doc/html/fusion/sequences/intrinsics/functions/size.html
+++ b/doc/html/fusion/sequences/intrinsics/functions/size.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ that evaluates the number of elements in the sequence.

- + Synopsis
@@ -43,7 +43,7 @@
 size(Sequence const& seq);
 
- + Parameters
@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -83,14 +83,14 @@ in the sequence.

- + Header
 #include <boost/fusion/sequence/intrinsic/size.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions.html b/doc/html/fusion/sequences/intrinsics/metafunctions.html
index eafb7ed6..8a7c356b 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions.html
@@ -22,25 +22,8 @@
 
PrevUpHomeNext
- + diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/at.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at.html index 1bb45941..eebf382e 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/at.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/at.html @@ -26,16 +26,16 @@
- + Description

Returns the result type of at - [6] + [6] .

- + Synopsis
@@ -48,7 +48,7 @@
 };
 
-

Table 1.25. Parameters

+

Table 1.25. Parameters

Copyright © 2001-2005 Joel de Guzman, Dan Marsden
@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -95,14 +95,14 @@ using at to access the Nth element of Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/at.hpp>
 
- + Example
@@ -111,7 +111,7 @@
 


-

[6] +

[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 diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html index 713f20f1..e506e5e8 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html @@ -26,16 +26,16 @@

- + Description

Returns the result type of at_c - [7] + [7] .

- + Synopsis
@@ -48,7 +48,7 @@
 };
 
-

Table 1.26. Parameters

+

Table 1.26. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -95,14 +95,14 @@ using at_c to access the Mth element of Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/at.hpp>
 
- + Example
@@ -111,7 +111,7 @@
 


-

[7] +

[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 diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html index 5eb245b7..49475de2 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html @@ -26,16 +26,16 @@

- + Description

Returns the result type of at_key - [8] + [8] .

- + Synopsis
@@ -48,7 +48,7 @@
 };
 
-

Table 1.30. Parameters

+

Table 1.30. Parameters

@@ -80,7 +80,7 @@
- + Expression Semantics
@@ -97,14 +97,14 @@ Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/at_key.hpp>
 
- + Example
@@ -113,7 +113,7 @@
 


-

[8] +

[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 diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/back.html b/doc/html/fusion/sequences/intrinsics/metafunctions/back.html index 4f79219a..e24ad24b 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/back.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/back.html @@ -26,14 +26,14 @@

- + Description

Returns the result type of back.

- + Synopsis
@@ -44,7 +44,7 @@
 };
 
-

Table 1.23. Parameters

+

Table 1.23. Parameters

@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -83,14 +83,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>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html b/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html
index d51f0dcb..ac97bfaf 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of begin.

- + Synopsis
@@ -44,7 +44,7 @@
 };
 
-

Table 1.19. Parameters

+

Table 1.19. Parameters

@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -84,14 +84,14 @@ to the first element of Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/begin.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html b/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html
index e9960fb8..04882fc1 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of empty.

- + Synopsis
@@ -44,7 +44,7 @@
 };
 
-

Table 1.21. Parameters

+

Table 1.21. Parameters

@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -84,14 +84,14 @@ mpl::false_ otherwise.

- + Header
 #include <boost/fusion/sequence/intrinsic/empty.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/end.html b/doc/html/fusion/sequences/intrinsics/metafunctions/end.html
index 94c27951..bd8d8fb5 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/end.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/end.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of end.

- + Synopsis
@@ -44,7 +44,7 @@
 };
 
-

Table 1.20. Parameters

+

Table 1.20. Parameters

@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -84,14 +84,14 @@ one past the end of Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/end.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/front.html b/doc/html/fusion/sequences/intrinsics/metafunctions/front.html
index 77a5318f..2c6a88ca 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/front.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/front.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of front.

- + Synopsis
@@ -44,7 +44,7 @@
 };
 
-

Table 1.22. Parameters

+

Table 1.22. Parameters

@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -84,14 +84,14 @@ Equivalent to result_of::deref<result_of::begin<Seq>::type>::type.

- + Header
 #include <boost/fusion/sequence/intrinsic/front.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html
index 7d63088c..41f28d74 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of has_key.

- + Synopsis
@@ -46,7 +46,7 @@
 };
 
-

Table 1.29. Parameters

+

Table 1.29. Parameters

@@ -78,7 +78,7 @@
- + Expression Semantics
@@ -95,14 +95,14 @@ mpl::false_ otherwise.

- + Header
 #include <boost/fusion/sequence/intrinsic/has_key.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/size.html b/doc/html/fusion/sequences/intrinsics/metafunctions/size.html
index b69d9396..deb58a57 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/size.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/size.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result type of size.

- + Synopsis
@@ -44,7 +44,7 @@
 };
 
-

Table 1.24. Parameters

+

Table 1.24. Parameters

@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -83,14 +83,14 @@ in Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/size.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html
index 03a77a3e..d6d28373 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the actual type at a given index from the Sequence.

- + Synopsis
@@ -46,7 +46,7 @@
 };
 
-

Table 1.27. Parameters

+

Table 1.27. Parameters

@@ -78,7 +78,7 @@
- + Expression Semantics
@@ -93,14 +93,14 @@ the Nth element of Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/value_at.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html
index f9c7a754..dc509789 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the actual type at a given index from the Sequence.

- + Synopsis
@@ -46,7 +46,7 @@
 };
 
-

Table 1.28. Parameters

+

Table 1.28. Parameters

@@ -78,7 +78,7 @@
- + Expression Semantics
@@ -93,14 +93,14 @@ the Mth element of Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/value_at.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html
index 61e44f24..b7d4d56b 100644
--- a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html
+++ b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the actual element type associated with a Key from the Sequence.

- + Synopsis
@@ -46,7 +46,7 @@
 };
 
-

Table 1.31. Parameters

+

Table 1.31. Parameters

@@ -78,7 +78,7 @@
- + Expression Semantics
@@ -94,14 +94,14 @@ in Seq.

- + Header
 #include <boost/fusion/sequence/intrinsic/value_at_key.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators.html b/doc/html/fusion/sequences/operators.html
index ea5ab678..33fc607d 100644
--- a/doc/html/fusion/sequences/operators.html
+++ b/doc/html/fusion/sequences/operators.html
@@ -25,10 +25,6 @@
 
-

These operators, like the Algorithms, work generically on all Fusion sequences. All conforming Fusion sequences diff --git a/doc/html/fusion/sequences/operators/comparison.html b/doc/html/fusion/sequences/operators/comparison.html index 6c3f945c..fc9357b8 100644 --- a/doc/html/fusion/sequences/operators/comparison.html +++ b/doc/html/fusion/sequences/operators/comparison.html @@ -25,19 +25,6 @@

-

The Comparison operators: ==, !=, <, @@ -48,7 +35,7 @@ only until the result is clear.

- + Header
diff --git a/doc/html/fusion/sequences/operators/comparison/equal.html b/doc/html/fusion/sequences/operators/comparison/equal.html
index c1ba1ff5..f9d2da7a 100644
--- a/doc/html/fusion/sequences/operators/comparison/equal.html
+++ b/doc/html/fusion/sequences/operators/comparison/equal.html
@@ -27,14 +27,14 @@
 
 
- + Description

Compare two sequences for equality.

- + Synopsis
@@ -43,7 +43,7 @@
 operator==(Seq1 const& a, Seq2 const& b);
 
- + Parameters
@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -104,14 +104,14 @@ true.

- + Header
 #include <boost/fusion/sequence/comparison/equal_to.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators/comparison/greater_than.html b/doc/html/fusion/sequences/operators/comparison/greater_than.html
index a5b9660d..b6a913fe 100644
--- a/doc/html/fusion/sequences/operators/comparison/greater_than.html
+++ b/doc/html/fusion/sequences/operators/comparison/greater_than.html
@@ -34,7 +34,7 @@
             Lexicographically compare two sequences.
           

- + Synopsis
@@ -43,7 +43,7 @@
 operator>(Seq1 const& a, Seq2 const& b);
 
- + Parameters
@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -96,14 +96,14 @@ Semantics: Returns b < a.

- + Header
 #include <boost/fusion/sequence/comparison/less_equal.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html b/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html
index 50a765b3..2105bda5 100644
--- a/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html
+++ b/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html
@@ -33,7 +33,7 @@
             Lexicographically compare two sequences.
           

- + Synopsis
@@ -42,7 +42,7 @@
 operator>=(Seq1 const& a, Seq2 const& b);
 
- + Parameters
@@ -67,7 +67,7 @@
- + Expression Semantics
@@ -95,14 +95,14 @@ Semantics: Returns !(a < b).

- + Header
 #include <boost/fusion/sequence/comparison/greater_equal.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators/comparison/less_than.html b/doc/html/fusion/sequences/operators/comparison/less_than.html
index 4a64508b..f4fa9b62 100644
--- a/doc/html/fusion/sequences/operators/comparison/less_than.html
+++ b/doc/html/fusion/sequences/operators/comparison/less_than.html
@@ -34,7 +34,7 @@
             Lexicographically compare two sequences.
           

- + Synopsis
@@ -43,7 +43,7 @@
 operator<(Seq1 const& a, Seq2 const& b);
 
- + Parameters
@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -98,14 +98,14 @@ and b.

- + Header
 #include <boost/fusion/sequence/comparison/less.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators/comparison/less_than_equal.html b/doc/html/fusion/sequences/operators/comparison/less_than_equal.html
index 561a5401..1227b615 100644
--- a/doc/html/fusion/sequences/operators/comparison/less_than_equal.html
+++ b/doc/html/fusion/sequences/operators/comparison/less_than_equal.html
@@ -34,7 +34,7 @@
             Lexicographically compare two sequences.
           

- + Synopsis
@@ -43,7 +43,7 @@
 operator<=(Seq1 const& a, Seq2 const& b);
 
- + Parameters
@@ -68,7 +68,7 @@
- + Expression Semantics
@@ -96,14 +96,14 @@ Semantics: Returns !(b < a).

- + Header
 #include <boost/fusion/sequence/comparison/less_equal.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators/comparison/not_equal.html b/doc/html/fusion/sequences/operators/comparison/not_equal.html
index 57ebe236..3dd1ee1e 100644
--- a/doc/html/fusion/sequences/operators/comparison/not_equal.html
+++ b/doc/html/fusion/sequences/operators/comparison/not_equal.html
@@ -33,7 +33,7 @@
             Compare two sequences for inequality.
           

- + Synopsis
@@ -42,7 +42,7 @@
 operator!=(Seq1 const& a, Seq2 const& b);
 
- + Parameters
@@ -67,7 +67,7 @@
- + Expression Semantics
@@ -98,14 +98,14 @@ Returns !(a == b).

- + Header
 #include <boost/fusion/sequence/comparison/not_equal_to.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators/i_o.html b/doc/html/fusion/sequences/operators/i_o.html
index 54c8afe5..f81d893a 100644
--- a/doc/html/fusion/sequences/operators/i_o.html
+++ b/doc/html/fusion/sequences/operators/i_o.html
@@ -25,10 +25,6 @@
 
-
-
in
-
out
-

The I/O operators: << and >> work generically @@ -115,7 +111,7 @@ representation may not be unambiguously parseable.

- + Header
diff --git a/doc/html/fusion/sequences/operators/i_o/in.html b/doc/html/fusion/sequences/operators/i_o/in.html
index 368ff95d..dc0b3113 100644
--- a/doc/html/fusion/sequences/operators/i_o/in.html
+++ b/doc/html/fusion/sequences/operators/i_o/in.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ stream.

- + Synopsis
@@ -43,7 +43,7 @@
 operator>>(IStream& is, Sequence& seq);
 
- + Parameters
@@ -73,7 +73,7 @@
- + Expression Semantics
@@ -89,14 +89,14 @@ e.

- + Header
 #include <boost/fusion/sequence/io/in.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/operators/i_o/out.html b/doc/html/fusion/sequences/operators/i_o/out.html
index f286699b..90ef2446 100644
--- a/doc/html/fusion/sequences/operators/i_o/out.html
+++ b/doc/html/fusion/sequences/operators/i_o/out.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ stream.

- + Synopsis
@@ -43,7 +43,7 @@
 operator<<(OStream& os, Sequence& seq);
 
- + Parameters
@@ -73,7 +73,7 @@
- + Expression Semantics
@@ -89,14 +89,14 @@ e.

- + Header
 #include <boost/fusion/sequence/io/out.hpp>
 
- + Example
diff --git a/doc/html/fusion/sequences/views.html b/doc/html/fusion/sequences/views.html
index b957719c..7d6713d4 100644
--- a/doc/html/fusion/sequences/views.html
+++ b/doc/html/fusion/sequences/views.html
@@ -25,15 +25,6 @@
 
-

Views are sequences that do not actually contain data, but instead impart an alternative presentation over the data from one or more underlying sequences. @@ -44,7 +35,7 @@ very cheap to copy and be passed around by value.

- + Header

diff --git a/doc/html/fusion/sequences/views/filter_view.html b/doc/html/fusion/sequences/views/filter_view.html
index 583daa59..4380ce34 100644
--- a/doc/html/fusion/sequences/views/filter_view.html
+++ b/doc/html/fusion/sequences/views/filter_view.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -37,14 +37,14 @@ only those elements for which its predicate evaluates to mpl::true_.

- + Header
 #include <boost/fusion/sequence/view/filter_view.hpp>
 
- + Synopsis
@@ -52,7 +52,7 @@
 struct filter_view;
 
- + Template parameters
@@ -87,7 +87,7 @@
- + Model of
- + Example
diff --git a/doc/html/fusion/sequences/views/iterator_range.html b/doc/html/fusion/sequences/views/iterator_range.html
index be29163b..5231f702 100644
--- a/doc/html/fusion/sequences/views/iterator_range.html
+++ b/doc/html/fusion/sequences/views/iterator_range.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,14 +34,14 @@ a sub-range of its underlying sequence delimited by a pair of iterators.

- + Header
 #include <boost/fusion/sequence/view/iterator_range.hpp>
 
- + Synopsis
@@ -49,7 +49,7 @@
 struct iterator_range;
 
- + Template parameters
@@ -82,7 +82,7 @@
- + Model of
- + Example
diff --git a/doc/html/fusion/sequences/views/joint_view.html b/doc/html/fusion/sequences/views/joint_view.html
index ad0153d3..5701f8ab 100644
--- a/doc/html/fusion/sequences/views/joint_view.html
+++ b/doc/html/fusion/sequences/views/joint_view.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,14 +34,14 @@ which is a concatenation of two sequences.

- + Header
 #include <boost/fusion/sequence/view/joint_view.hpp>
 
- + Synopsis
@@ -49,7 +49,7 @@
 struct joint_view;
 
- + Template parameters
@@ -86,7 +86,7 @@
- + Model of
- + Example
diff --git a/doc/html/fusion/sequences/views/reverse_view.html b/doc/html/fusion/sequences/views/reverse_view.html
index 7142b9b3..1c804ba3 100644
--- a/doc/html/fusion/sequences/views/reverse_view.html
+++ b/doc/html/fusion/sequences/views/reverse_view.html
@@ -31,14 +31,14 @@
           and the last element will be its first.
         

- + Header
 #include <boost/fusion/sequence/view/reverse_view.hpp>
 
- + Synopsis
@@ -46,7 +46,7 @@
 struct reverse_view;
 
- + Template parameters
@@ -72,7 +72,7 @@
- + Model of
- + Example
diff --git a/doc/html/fusion/sequences/views/single_view.html b/doc/html/fusion/sequences/views/single_view.html
index 6f0982a6..9cd016cc 100644
--- a/doc/html/fusion/sequences/views/single_view.html
+++ b/doc/html/fusion/sequences/views/single_view.html
@@ -30,14 +30,14 @@
           a value as a single element sequence.
         

- + Header
 #include <boost/fusion/sequence/view/single_view.hpp>
 
- + Synopsis
@@ -45,7 +45,7 @@
 struct single_view;
 
- + Template parameters
@@ -68,7 +68,7 @@
- + Model of
- + Example
diff --git a/doc/html/fusion/sequences/views/transform_view.html b/doc/html/fusion/sequences/views/transform_view.html
index ea72b071..6d891b9c 100644
--- a/doc/html/fusion/sequences/views/transform_view.html
+++ b/doc/html/fusion/sequences/views/transform_view.html
@@ -34,14 +34,14 @@
           Traversal Concept) of its underlying sequence.
         

- + Header
 #include <boost/fusion/sequence/view/transform_view.hpp>
 
- + Synopsis

@@ -59,7 +59,7 @@ struct transform_view;

- + Template parameters
@@ -114,7 +114,7 @@
- + Model of
  • @@ -169,7 +169,7 @@
- + Expression Semantics
@@ -233,7 +233,7 @@
- + Example
diff --git a/doc/html/fusion/sequences/views/zip_view.html b/doc/html/fusion/sequences/views/zip_view.html
index 6cf78446..8ef18542 100644
--- a/doc/html/fusion/sequences/views/zip_view.html
+++ b/doc/html/fusion/sequences/views/zip_view.html
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -37,14 +37,14 @@ of references to the component _sequence_s.

- + Header
 #include <boost/fusion/sequence/view/zip_view.hpp>
 
- + Synopsis
@@ -52,7 +52,7 @@
 struct zip_view;
 
- + Template parameters
@@ -77,7 +77,7 @@
- + Model of
- + Example
diff --git a/doc/html/fusion/support/category_of.html b/doc/html/fusion/support/category_of.html
index 133c72e9..21edf08a 100644
--- a/doc/html/fusion/support/category_of.html
+++ b/doc/html/fusion/support/category_of.html
@@ -26,7 +26,7 @@
 
 

- + Description

@@ -36,7 +36,7 @@ Sequence Concepts).

- + Synopsis

@@ -50,7 +50,7 @@
 }
 

- + Parameters

@@ -72,7 +72,7 @@

- + Expression Semantics

@@ -138,14 +138,14 @@ of a particular Sequence or Iterator.

- + Header

 #include <boost/fusion/support/category_of.hpp>
 

- + Example

diff --git a/doc/html/fusion/support/is_sequence.html b/doc/html/fusion/support/is_sequence.html
index 18867764..26d561ba 100644
--- a/doc/html/fusion/support/is_sequence.html
+++ b/doc/html/fusion/support/is_sequence.html
@@ -26,7 +26,7 @@
 
 

- + Description

@@ -37,7 +37,7 @@ conforming sequences.

- + Synopsis

@@ -51,7 +51,7 @@
 }
 

- + Parameters

@@ -73,7 +73,7 @@

- + Expression Semantics

@@ -90,14 +90,14 @@ otherwise.

- + Header

 #include <boost/fusion/support/is_sequence.hpp>
 

- + Example

diff --git a/doc/html/fusion/support/is_view.html b/doc/html/fusion/support/is_view.html
index 043a9bd7..33e07948 100644
--- a/doc/html/fusion/support/is_view.html
+++ b/doc/html/fusion/support/is_view.html
@@ -26,7 +26,7 @@
 
 

- + Description

@@ -40,7 +40,7 @@ specialized to accomodate clients providing Fusion conforming views.

- + Synopsis

@@ -54,7 +54,7 @@
 }
 

- + Parameters

@@ -76,7 +76,7 @@

- + Expression Semantics

@@ -92,14 +92,14 @@
         otherwise.
       

- + Header

 #include <boost/fusion/support/is_view.hpp>
 

- + Example

diff --git a/doc/html/fusion/support/pair.html b/doc/html/fusion/support/pair.html
index 1f9373e8..8f667969 100644
--- a/doc/html/fusion/support/pair.html
+++ b/doc/html/fusion/support/pair.html
@@ -26,7 +26,7 @@
 
 

- + Description

@@ -37,7 +37,7 @@ for example.

- + Synopsis

@@ -61,7 +61,7 @@
 make_pair(Second const &);
 

- + Template parameters

@@ -117,7 +117,7 @@

- + Expression Semantics

@@ -198,14 +198,14 @@

- + Header

 #include <boost/fusion/support/pair.hpp>
 

- + Example

diff --git a/doc/html/fusion/support/tag_of.html b/doc/html/fusion/support/tag_of.html
index e0800085..c9eda41b 100644
--- a/doc/html/fusion/support/tag_of.html
+++ b/doc/html/fusion/support/tag_of.html
@@ -26,7 +26,7 @@
 
 

- + Description

@@ -40,7 +40,7 @@ conforming sequences.

- + Synopsis

@@ -54,7 +54,7 @@
 }
 

- + Parameters

@@ -76,7 +76,7 @@

- + Expression Semantics

@@ -90,14 +90,14 @@
         with T.
       

- + Header

 #include <boost/fusion/support/tag_of.hpp>
 

- + Example

diff --git a/doc/html/fusion/tuples.html b/doc/html/fusion/tuples.html
index f3881d14..ce036073 100644
--- a/doc/html/fusion/tuples.html
+++ b/doc/html/fusion/tuples.html
@@ -27,6 +27,17 @@
 Tuples

diff --git a/doc/html/fusion/tuples/class_template_tuple.html b/doc/html/fusion/tuples/class_template_tuple.html index 79861bd6..7af80f62 100644 --- a/doc/html/fusion/tuples/class_template_tuple.html +++ b/doc/html/fusion/tuples/class_template_tuple.html @@ -25,17 +25,6 @@

-

Fusion's implementation of the TR1 Tuple is also a fusion

- + Synopsis

@@ -60,7 +49,7 @@
 class tuple;
 

- + Header

diff --git a/doc/html/fusion/tuples/class_template_tuple/construction.html b/doc/html/fusion/tuples/class_template_tuple/construction.html
index e83182a5..d5813ecb 100644
--- a/doc/html/fusion/tuples/class_template_tuple/construction.html
+++ b/doc/html/fusion/tuples/class_template_tuple/construction.html
@@ -27,7 +27,7 @@
 
 
- + Description

@@ -38,7 +38,7 @@ in this section.

- + Specification
diff --git a/doc/html/fusion/tuples/class_template_tuple/element_access.html b/doc/html/fusion/tuples/class_template_tuple/element_access.html index 7c6cb4dd..183de910 100644 --- a/doc/html/fusion/tuples/class_template_tuple/element_access.html +++ b/doc/html/fusion/tuples/class_template_tuple/element_access.html @@ -31,7 +31,7 @@ access">Element access
- + Description

@@ -40,7 +40,7 @@ function to provide access to it's elements by zero based numeric index.

- + Specification
diff --git a/doc/html/fusion/tuples/class_template_tuple/relational_operators.html b/doc/html/fusion/tuples/class_template_tuple/relational_operators.html
index e6559c8d..7855f775 100644
--- a/doc/html/fusion/tuples/class_template_tuple/relational_operators.html
+++ b/doc/html/fusion/tuples/class_template_tuple/relational_operators.html
@@ -30,7 +30,7 @@
         operators">Relational
         operators
- + Description

@@ -38,7 +38,7 @@ Tuple provides the standard boolean relational operators.

- + Specification
diff --git a/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html b/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html index 4aa13c50..96a62f2d 100644 --- a/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html +++ b/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html @@ -30,7 +30,7 @@ creation functions">Tuple creation functions
- + Description

@@ -40,7 +40,7 @@ functions are described in this section.

- + Specification
diff --git a/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html b/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html
index 0398f483..342a61e7 100644
--- a/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html
+++ b/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html
@@ -31,7 +31,7 @@
         helper classes">Tuple
         helper classes
 
- + Description

@@ -40,7 +40,7 @@ tuple size, and the element types.

- + Specification
diff --git a/doc/html/fusion/tuples/pairs.html b/doc/html/fusion/tuples/pairs.html
index a8c1292f..2913eb6c 100644
--- a/doc/html/fusion/tuples/pairs.html
+++ b/doc/html/fusion/tuples/pairs.html
@@ -27,7 +27,7 @@
 
 

- + Description

@@ -36,7 +36,7 @@ as if it were a 2 element tuple.

- + Specification

diff --git a/doc/html/index.html b/doc/html/index.html
index 9a712a1a..fa47d9bb 100644
--- a/doc/html/index.html
+++ b/doc/html/index.html
@@ -30,7 +30,7 @@
 
 
- +

Last revised: January 01, 2007 at 00:55:22 GMT

Last revised: January 22, 2007 at 00:36:18 GMT


From 469a4a2d7a5633a028db8e7410d5bf3bfde60e6a Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Tue, 23 Jan 2007 06:15:17 +0000 Subject: [PATCH 073/234] minor presentation tweaks [SVN r36767] --- doc/Jamfile | 3 ++- doc/algorithms.qbk | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/doc/Jamfile b/doc/Jamfile index c2c1c2f0..32d5c370 100644 --- a/doc/Jamfile +++ b/doc/Jamfile @@ -11,6 +11,7 @@ boostbook quickbook chunk.section.depth=4 chunk.first.sections=1 toc.section.depth=3 - toc.max.depth=1 + toc.max.depth=3 + generate.section.toc.level=1 ; diff --git a/doc/algorithms.qbk b/doc/algorithms.qbk index 2f959e4e..1e2f4ef8 100644 --- a/doc/algorithms.qbk +++ b/doc/algorithms.qbk @@ -116,7 +116,7 @@ Linear, exactly `__result_of_size__::value` applications of `f`. struct make_string { template - struct apply + struct result { typedef std::string type; }; @@ -172,7 +172,7 @@ Linear, exactly `__result_of_size__::value` applications of `f`. struct make_string { template - struct apply + struct result { typedef std::string type; }; @@ -1828,7 +1828,7 @@ Returns the result of type __transform__, given the sequence and __poly_func_obj [*Return type]: A model of __forward_sequence__. -[*Semantics]: Returns a sequence with values `F::apply::type` for each element type `E` in `Sequence`. +[*Semantics]: Returns a sequence with values `F::result::type` for each element type `E` in `Sequence`. [heading Complexity] Constant. From aa1d326ba492f72fb1476ff080863c745ea24b2c Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Sat, 27 Jan 2007 10:42:55 +0000 Subject: [PATCH 074/234] introduces deduce metafunctions [SVN r36811] --- include/boost/fusion/support/deduce.hpp | 87 +++++++++++++++++++ .../boost/fusion/support/deduce_sequence.hpp | 43 +++++++++ 2 files changed, 130 insertions(+) create mode 100644 include/boost/fusion/support/deduce.hpp create mode 100644 include/boost/fusion/support/deduce_sequence.hpp diff --git a/include/boost/fusion/support/deduce.hpp b/include/boost/fusion/support/deduce.hpp new file mode 100644 index 00000000..846fbc4d --- /dev/null +++ b/include/boost/fusion/support/deduce.hpp @@ -0,0 +1,87 @@ +/*============================================================================= + Copyright (c) 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). +==============================================================================*/ + +#if !defined(BOOST_FUSION_SUPPORT_DEDUCE_HPP_INCLUDED) +#define BOOST_FUSION_SUPPORT_DEDUCE_HPP_INCLUDED + +#include + +namespace boost { namespace fusion { namespace traits +{ + template struct deduce; + + //----- ---- --- -- - - - - + + // Non-references pass unchanged + + template + struct deduce + { + typedef T type; + }; + + // Keep references on mutable LValues + + template + struct deduce + { + typedef T & type; + }; + + template + struct deduce + { + typedef T volatile& type; + }; + + // Store away potential RValues + + template + struct deduce + { + typedef T type; + }; + + template + struct deduce + { + typedef T type; + }; + + // Unwrap Boost.RefS (referencee cv is deduced) + + template + struct deduce & > + { + typedef T& type; + }; + + template + struct deduce const & > + { + typedef T& type; + }; + + // Keep references on arrays, even if const + + template + struct deduce + { + typedef const T(&type)[N]; + }; + + template + struct deduce + { + typedef const volatile T(&type)[N]; + }; + +}}} + +#endif + diff --git a/include/boost/fusion/support/deduce_sequence.hpp b/include/boost/fusion/support/deduce_sequence.hpp new file mode 100644 index 00000000..5adc6b7a --- /dev/null +++ b/include/boost/fusion/support/deduce_sequence.hpp @@ -0,0 +1,43 @@ +/*============================================================================= + Copyright (c) 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). +==============================================================================*/ + +#if !defined(BOOST_FUSION_SUPPORT_DEDUCE_SEQUENCE_HPP_INCLUDED) +#define BOOST_FUSION_SUPPORT_DEDUCE_SEQUENCE_HPP_INCLUDED + +#include +#include +#include + +namespace boost { namespace fusion { namespace traits +{ + + template struct deduce_sequence; + + //----- ---- --- -- - - - - + + namespace detail + { + struct deducer + { + template + struct result + : fusion::traits::deduce + { }; + }; + } + + template + struct deduce_sequence + : result_of::as_vector< + fusion::transform_view > + { }; + +}}} + +#endif + From 1c542fa5446bf75090641481630bdbbc21834030 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Sat, 27 Jan 2007 10:49:00 +0000 Subject: [PATCH 075/234] introduces test for deduce / deduce_sequence [SVN r36812] --- test/Jamfile | 1 + test/sequence/deduce_sequence.cpp | 80 +++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 test/sequence/deduce_sequence.cpp diff --git a/test/Jamfile b/test/Jamfile index 26c62df0..f63ec6c8 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -103,6 +103,7 @@ import testing ; [ run sequence/vector_value_at.cpp : : : : ] [ run sequence/zip_view.cpp : : : : ] [ run sequence/zip_view2.cpp : : : : ] + [ run sequence/deduce_sequence.cpp : : : : ] # [ compile-fail xxx.cpp : : : : ] ; diff --git a/test/sequence/deduce_sequence.cpp b/test/sequence/deduce_sequence.cpp new file mode 100644 index 00000000..b8929977 --- /dev/null +++ b/test/sequence/deduce_sequence.cpp @@ -0,0 +1,80 @@ +/*============================================================================= + Copyright (c) 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 + +using boost::is_same; +using boost::reference_wrapper; +using boost::fusion::traits::deduce; +using boost::fusion::traits::deduce_sequence; + +namespace fusion = boost::fusion; + +template +struct test_seq_ctor +{ + typename deduce_sequence::type fsq_args; + + test_seq_ctor(Args const & args) + : fsq_args(args) + { } +}; + +#define TEST_SAME_TYPE(a,b) BOOST_TEST(( is_same< a, b >::value )) +#define TEST_SAME_ELEMENTS(a,b) BOOST_TEST(( boost::mpl::equal< a, b >::type::value )) + +typedef fusion::vector args1; +typedef fusion::vector storable1; +template struct test_seq_ctor; + +typedef fusion::vector< reference_wrapper &, reference_wrapper &, + reference_wrapper const &, reference_wrapper const & > args2; +typedef fusion::vector storable2; +template struct test_seq_ctor; + + +typedef fusion::vector args3; +typedef fusion::vector storable3; +template struct test_seq_ctor; + +typedef fusion::vector args4; +typedef args4 storable4; +template struct test_seq_ctor; + +int main() +{ + TEST_SAME_TYPE(deduce::type, int &); + TEST_SAME_TYPE(deduce::type, int volatile &); + + TEST_SAME_TYPE(deduce::type, int); + TEST_SAME_TYPE(deduce::type, int); + TEST_SAME_TYPE(deduce::type, int); + + TEST_SAME_TYPE(deduce< reference_wrapper & >::type, int &); + TEST_SAME_TYPE(deduce< reference_wrapper & >::type, int const &); + TEST_SAME_TYPE(deduce< reference_wrapper const & >::type, int &); + TEST_SAME_TYPE(deduce< reference_wrapper const & >::type, int const &); + + TEST_SAME_TYPE(deduce< int(&)[2] >::type, int(&)[2]); + TEST_SAME_TYPE(deduce< int const (&)[2] >::type, int const (&)[2]); + TEST_SAME_TYPE(deduce< int volatile (&)[2] >::type, int volatile (&)[2]); + TEST_SAME_TYPE(deduce< int const volatile (&)[2] >::type, int const volatile (&)[2]); + + TEST_SAME_ELEMENTS(deduce_sequence::type,storable1); + TEST_SAME_ELEMENTS(deduce_sequence::type,storable2); + TEST_SAME_ELEMENTS(deduce_sequence::type,storable3); + TEST_SAME_ELEMENTS(deduce_sequence::type,storable4); + + return boost::report_errors(); +} From 586440e16ef53bee15453e0184bd9e1aaa961004 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Sat, 27 Jan 2007 10:52:43 +0000 Subject: [PATCH 076/234] introduces documentation for deduce / deduce_sequence [SVN r36813] --- doc/fusion.qbk | 2 + doc/html/fusion/acknowledgements.html | 2 +- doc/html/fusion/algorithms.html | 30 ++-- doc/html/fusion/algorithms/concepts.html | 2 +- doc/html/fusion/algorithms/concepts/poly.html | 30 ++-- doc/html/fusion/algorithms/iteration.html | 4 +- .../algorithms/iteration/functions.html | 2 +- .../iteration/functions/accumulate.html | 48 ++--- .../algorithms/iteration/functions/fold.html | 42 ++--- .../iteration/functions/for_each.html | 42 ++--- .../algorithms/iteration/metafunctions.html | 2 +- .../iteration/metafunctions/accumulate.html | 40 ++--- .../iteration/metafunctions/fold.html | 40 ++--- .../iteration/metafunctions/for_each.html | 36 ++-- doc/html/fusion/algorithms/query.html | 4 +- .../fusion/algorithms/query/functions.html | 2 +- .../algorithms/query/functions/all.html | 56 +++--- .../algorithms/query/functions/any.html | 56 +++--- .../algorithms/query/functions/count.html | 46 ++--- .../algorithms/query/functions/count_if.html | 44 ++--- .../algorithms/query/functions/find.html | 42 ++--- .../algorithms/query/functions/find_if.html | 44 ++--- .../algorithms/query/functions/none.html | 56 +++--- .../algorithms/query/metafunctions.html | 2 +- .../algorithms/query/metafunctions/all.html | 34 ++-- .../algorithms/query/metafunctions/any.html | 34 ++-- .../algorithms/query/metafunctions/count.html | 30 ++-- .../query/metafunctions/count_if.html | 30 ++-- .../algorithms/query/metafunctions/find.html | 34 ++-- .../query/metafunctions/find_if.html | 36 ++-- .../algorithms/query/metafunctions/none.html | 34 ++-- .../fusion/algorithms/transformation.html | 6 +- .../algorithms/transformation/functions.html | 2 +- .../transformation/functions/clear.html | 30 ++-- .../transformation/functions/erase.html | 58 +++--- .../transformation/functions/erase_key.html | 34 ++-- .../transformation/functions/filter.html | 38 ++-- .../transformation/functions/filter_if.html | 42 ++--- .../transformation/functions/insert.html | 38 ++-- .../functions/insert_range.html | 40 ++--- .../transformation/functions/join.html | 38 ++-- .../transformation/functions/pop_back.html | 32 ++-- .../transformation/functions/pop_front.html | 32 ++-- .../transformation/functions/push_back.html | 36 ++-- .../transformation/functions/push_front.html | 36 ++-- .../transformation/functions/remove.html | 38 ++-- .../transformation/functions/remove_if.html | 40 ++--- .../transformation/functions/replace.html | 48 ++--- .../transformation/functions/replace_if.html | 48 ++--- .../transformation/functions/reverse.html | 30 ++-- .../transformation/functions/transform.html | 72 ++++---- .../transformation/functions/zip.html | 46 ++--- .../transformation/metafunctions.html | 2 +- .../transformation/metafunctions/clear.html | 24 +-- .../transformation/metafunctions/erase.html | 40 ++--- .../metafunctions/erase_key.html | 30 ++-- .../transformation/metafunctions/filter.html | 34 ++-- .../metafunctions/filter_if.html | 32 ++-- .../transformation/metafunctions/insert.html | 34 ++-- .../metafunctions/insert_range.html | 34 ++-- .../transformation/metafunctions/join.html | 22 +-- .../metafunctions/pop_back.html | 26 +-- .../metafunctions/pop_front.html | 26 +-- .../metafunctions/push_back.html | 30 ++-- .../metafunctions/push_front.html | 30 ++-- .../transformation/metafunctions/remove.html | 34 ++-- .../metafunctions/remove_if.html | 34 ++-- .../transformation/metafunctions/replace.html | 28 +-- .../metafunctions/replace_if.html | 30 ++-- .../transformation/metafunctions/reverse.html | 26 +-- .../metafunctions/transform.html | 28 +-- .../transformation/metafunctions/zip.html | 34 ++-- doc/html/fusion/change_log.html | 6 +- doc/html/fusion/extension.html | 168 +++++++++--------- doc/html/fusion/introduction.html | 34 ++-- doc/html/fusion/iterators.html | 4 +- doc/html/fusion/iterators/concepts.html | 2 +- .../concepts/bidirectional_iterator.html | 58 +++--- .../iterators/concepts/forward_iterator.html | 144 +++++++-------- .../concepts/random_access_iterator.html | 50 +++--- doc/html/fusion/iterators/functions.html | 2 +- .../fusion/iterators/functions/advance.html | 38 ++-- .../fusion/iterators/functions/advance_c.html | 38 ++-- .../fusion/iterators/functions/deref.html | 34 ++-- .../fusion/iterators/functions/distance.html | 30 ++-- doc/html/fusion/iterators/functions/next.html | 34 ++-- .../fusion/iterators/functions/prior.html | 34 ++-- doc/html/fusion/iterators/metafunctions.html | 2 +- .../iterators/metafunctions/advance.html | 42 ++--- .../iterators/metafunctions/advance_c.html | 44 ++--- .../fusion/iterators/metafunctions/deref.html | 38 ++-- .../iterators/metafunctions/distance.html | 36 ++-- .../iterators/metafunctions/equal_to.html | 40 ++--- .../fusion/iterators/metafunctions/next.html | 32 ++-- .../fusion/iterators/metafunctions/prior.html | 36 ++-- .../iterators/metafunctions/value_of.html | 38 ++-- doc/html/fusion/iterators/operators.html | 2 +- .../operators/operator_equality.html | 22 +-- .../operators/operator_inequality.html | 22 +-- .../operators/operator_unary_star.html | 32 ++-- doc/html/fusion/notes.html | 104 +++++------ doc/html/fusion/organization.html | 22 +-- doc/html/fusion/preface.html | 14 +- doc/html/fusion/quick_start.html | 110 ++++++------ doc/html/fusion/references.html | 2 +- doc/html/fusion/sequences.html | 4 +- doc/html/fusion/sequences/adapted.html | 12 +- .../sequences/adapted/boost__array.html | 24 +-- .../sequences/adapted/boost__tuple.html | 14 +- .../sequences/adapted/boost__variant.html | 14 +- .../sequences/adapted/mpl_sequence.html | 18 +- .../fusion/sequences/adapted/std__pair.html | 24 +-- doc/html/fusion/sequences/concepts.html | 6 +- .../concepts/associative_sequence.html | 72 ++++---- .../concepts/bidirectional_sequence.html | 58 +++--- .../sequences/concepts/forward_sequence.html | 116 ++++++------ .../concepts/random_access_sequence.html | 70 ++++---- doc/html/fusion/sequences/containers.html | 4 +- .../fusion/sequences/containers/cons.html | 100 +++++------ .../fusion/sequences/containers/list.html | 84 ++++----- doc/html/fusion/sequences/containers/map.html | 78 ++++---- doc/html/fusion/sequences/containers/set.html | 66 +++---- .../fusion/sequences/containers/vector.html | 74 ++++---- doc/html/fusion/sequences/conversion.html | 4 +- .../sequences/conversion/functions.html | 2 +- .../conversion/functions/as_list.html | 26 +-- .../conversion/functions/as_map.html | 34 ++-- .../conversion/functions/as_set.html | 28 +-- .../conversion/functions/as_vector.html | 26 +-- .../sequences/conversion/metafunctions.html | 2 +- .../conversion/metafunctions/as_list.html | 28 +-- .../conversion/metafunctions/as_map.html | 36 ++-- .../conversion/metafunctions/as_set.html | 30 ++-- .../conversion/metafunctions/as_vector.html | 28 +-- doc/html/fusion/sequences/generation.html | 4 +- .../sequences/generation/functions.html | 2 +- .../generation/functions/list_tie.html | 42 ++--- .../generation/functions/make_cons.html | 40 ++--- .../generation/functions/make_list.html | 46 ++--- .../generation/functions/make_map.html | 72 ++++---- .../generation/functions/make_set.html | 56 +++--- .../generation/functions/make_vector.html | 46 ++--- .../sequences/generation/functions/tiers.html | 28 +-- .../generation/functions/vector_tie.html | 42 ++--- .../sequences/generation/metafunctions.html | 2 +- .../generation/metafunctions/list_tie.html | 36 ++-- .../generation/metafunctions/make_cons.html | 30 ++-- .../generation/metafunctions/make_list.html | 36 ++-- .../generation/metafunctions/make_map.html | 56 +++--- .../generation/metafunctions/make_set.html | 46 ++--- .../generation/metafunctions/make_vector.html | 36 ++-- .../generation/metafunctions/vector_tie.html | 36 ++-- doc/html/fusion/sequences/intrinsics.html | 8 +- .../sequences/intrinsics/functions.html | 2 +- .../sequences/intrinsics/functions/at.html | 42 ++--- .../sequences/intrinsics/functions/at_c.html | 42 ++--- .../intrinsics/functions/at_key.html | 38 ++-- .../sequences/intrinsics/functions/back.html | 36 ++-- .../sequences/intrinsics/functions/begin.html | 34 ++-- .../sequences/intrinsics/functions/empty.html | 32 ++-- .../sequences/intrinsics/functions/end.html | 34 ++-- .../sequences/intrinsics/functions/front.html | 36 ++-- .../intrinsics/functions/has_key.html | 34 ++-- .../sequences/intrinsics/functions/size.html | 26 +-- .../sequences/intrinsics/metafunctions.html | 2 +- .../intrinsics/metafunctions/at.html | 42 ++--- .../intrinsics/metafunctions/at_c.html | 42 ++--- .../intrinsics/metafunctions/at_key.html | 46 ++--- .../intrinsics/metafunctions/back.html | 28 +-- .../intrinsics/metafunctions/begin.html | 32 ++-- .../intrinsics/metafunctions/empty.html | 34 ++-- .../intrinsics/metafunctions/end.html | 32 ++-- .../intrinsics/metafunctions/front.html | 30 ++-- .../intrinsics/metafunctions/has_key.html | 36 ++-- .../intrinsics/metafunctions/size.html | 28 +-- .../intrinsics/metafunctions/value_at.html | 28 +-- .../intrinsics/metafunctions/value_at_c.html | 28 +-- .../metafunctions/value_at_key.html | 30 ++-- doc/html/fusion/sequences/operators.html | 2 +- .../sequences/operators/comparison.html | 12 +- .../sequences/operators/comparison/equal.html | 44 ++--- .../operators/comparison/greater_than.html | 36 ++-- .../comparison/greater_than_equal.html | 36 ++-- .../operators/comparison/less_than.html | 40 ++--- .../operators/comparison/less_than_equal.html | 36 ++-- .../operators/comparison/not_equal.html | 34 ++-- doc/html/fusion/sequences/operators/i_o.html | 44 ++--- .../fusion/sequences/operators/i_o/in.html | 24 +-- .../fusion/sequences/operators/i_o/out.html | 24 +-- doc/html/fusion/sequences/views.html | 4 +- .../fusion/sequences/views/filter_view.html | 66 +++---- .../sequences/views/iterator_range.html | 78 ++++---- .../fusion/sequences/views/joint_view.html | 74 ++++---- .../fusion/sequences/views/reverse_view.html | 58 +++--- .../fusion/sequences/views/single_view.html | 56 +++--- .../sequences/views/transform_view.html | 104 +++++------ doc/html/fusion/sequences/views/zip_view.html | 60 +++---- doc/html/fusion/support.html | 4 +- doc/html/fusion/support/category_of.html | 30 ++-- doc/html/fusion/support/deduce.html | 98 ++++++++++ doc/html/fusion/support/deduce_sequence.html | 100 +++++++++++ doc/html/fusion/support/is_sequence.html | 38 ++-- doc/html/fusion/support/is_view.html | 36 ++-- doc/html/fusion/support/pair.html | 98 +++++----- doc/html/fusion/support/tag_of.html | 30 ++-- doc/html/fusion/tuples.html | 6 +- .../fusion/tuples/class_template_tuple.html | 8 +- .../class_template_tuple/construction.html | 56 +++--- .../class_template_tuple/element_access.html | 40 ++--- .../relational_operators.html | 132 +++++++------- .../tuple_creation_functions.html | 26 +-- .../tuple_helper_classes.html | 30 ++-- doc/html/fusion/tuples/pairs.html | 44 ++--- doc/html/index.html | 8 +- doc/support.qbk | 90 ++++++++++ 215 files changed, 4061 insertions(+), 3767 deletions(-) create mode 100644 doc/html/fusion/support/deduce.html create mode 100644 doc/html/fusion/support/deduce_sequence.html diff --git a/doc/fusion.qbk b/doc/fusion.qbk index 27f3ccd7..032bafa1 100644 --- a/doc/fusion.qbk +++ b/doc/fusion.qbk @@ -50,6 +50,8 @@ [def __is_view__ [link fusion.support.is_view `is_view`]] [def __tag_of__ [link fusion.support.tag_of `tag_of`]] [def __category_of__ [link fusion.support.category_of `category_of`]] +[def __deduce__ [link fusion.support.deduce `deduce`]] +[def __deduce_sequence__ [link fusion.support.deduce_sequence `deduce_sequence`]] [def __fusion_pair__ [link fusion.support.pair `fusion::pair`]] [def __pair__ [link fusion.support.pair `pair`]] [def __fusion_make_pair__ [link fusion.support.pair `make_pair`]] diff --git a/doc/html/fusion/acknowledgements.html b/doc/html/fusion/acknowledgements.html index 04b602c0..16c64ee6 100644 --- a/doc/html/fusion/acknowledgements.html +++ b/doc/html/fusion/acknowledgements.html @@ -3,7 +3,7 @@ Acknowledgements - + diff --git a/doc/html/fusion/algorithms.html b/doc/html/fusion/algorithms.html index 10c67c44..4eca50a1 100644 --- a/doc/html/fusion/algorithms.html +++ b/doc/html/fusion/algorithms.html @@ -3,7 +3,7 @@ Algorithms - +

- + Lazy Evaluation

@@ -61,39 +61,39 @@ fusion algorithms are functional in nature such that algorithms are non mutating (no side effects). However, due to the high cost of returning full sequences such as vectors and lists, Views are returned from Fusion - algorithms instead. For example, the transform algorithm does not actually - return a transformed version of the original sequence. transform returns a transform_view. This view holds a + algorithms instead. For example, the transform algorithm does not actually + return a transformed version of the original sequence. transform returns a transform_view. This view holds a reference to the original sequence plus the transform function. Iteration over - the transform_view + the transform_view will apply the transform function over the sequence elements on demand. This lazy evaluation scheme allows us to chain as many algorithms as we want without incurring a high runtime penalty.

- + Sequence Extension

The lazy evaluation scheme where Algorithms return Views also allows operations - such as push_back to be totally generic. In - Fusion, push_back is actually a generic algorithm - that works on all sequences. Given an input sequence s - and a value x, Fusion's push_back algorithm simply returns - a joint_view: - a view that holds a reference to the original sequence s - and the value x. Functions + such as push_back to be totally generic. In + Fusion, push_back is actually a generic algorithm + that works on all sequences. Given an input sequence s + and a value x, Fusion's push_back 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 + 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 functions to convert back to the original sequence type.

- + Header

diff --git a/doc/html/fusion/algorithms/concepts.html b/doc/html/fusion/algorithms/concepts.html
index f5fae0ac..5c7fa706 100644
--- a/doc/html/fusion/algorithms/concepts.html
+++ b/doc/html/fusion/algorithms/concepts.html
@@ -3,7 +3,7 @@
 
 Concepts
 
-
+
 
 
 
diff --git a/doc/html/fusion/algorithms/concepts/poly.html b/doc/html/fusion/algorithms/concepts/poly.html
index 3b42cb0f..ccd7313a 100644
--- a/doc/html/fusion/algorithms/concepts/poly.html
+++ b/doc/html/fusion/algorithms/concepts/poly.html
@@ -4,7 +4,7 @@
  Polymorphic Function
         Object
 
-
+
 
 
 
@@ -29,39 +29,39 @@
         Object"> Polymorphic Function
         Object
 
- + Description

- A type of function object with a nested metafunction result. - result returns the result + A type of function object with a nested metafunction result. + result returns the result type of calling the function object, given the argument types.

Notation

-
F
+
F
A Polymorphic Function Object type
-
f
+
f
A Polymorphic Function Object
-
T1 - ...TN
+
T1 + ...TN
Arbitrary types
-
t1 - ...tN
+
t1 + ...tN
- Objects with types T1 ...TN + Objects with types T1 ...TN
- + Refinement of
@@ -69,7 +69,7 @@ MPL Metafunction Class

- + Expression requirements
@@ -86,8 +86,8 @@ Complexity -f(t1, ...tN) -F::result<T1, ...TN>::type +f(t1, ...tN) +F::result<T1, ...TN>::type Unspecified diff --git a/doc/html/fusion/algorithms/iteration.html b/doc/html/fusion/algorithms/iteration.html index 3444f50f..6580a839 100644 --- a/doc/html/fusion/algorithms/iteration.html +++ b/doc/html/fusion/algorithms/iteration.html @@ -3,7 +3,7 @@ Iteration - +

- + Header

diff --git a/doc/html/fusion/algorithms/iteration/functions.html b/doc/html/fusion/algorithms/iteration/functions.html
index 782ff9c7..db876984 100644
--- a/doc/html/fusion/algorithms/iteration/functions.html
+++ b/doc/html/fusion/algorithms/iteration/functions.html
@@ -3,7 +3,7 @@
 
 Functions
 
-
+
 
 
 
diff --git a/doc/html/fusion/algorithms/iteration/functions/accumulate.html b/doc/html/fusion/algorithms/iteration/functions/accumulate.html
index 97c5bc9e..ac01f7bf 100644
--- a/doc/html/fusion/algorithms/iteration/functions/accumulate.html
+++ b/doc/html/fusion/algorithms/iteration/functions/accumulate.html
@@ -3,7 +3,7 @@
 
 accumulate
 
-
+
 
 
 
@@ -26,18 +26,18 @@
 
 
- + Description

Repeatedly applies binary Polymorphic - Function Object f - to each element of a sequence and the previous state. accumulate is equivalent to - fold. + Function Object f + to each element of a sequence and the previous state. accumulate is equivalent to + fold.

- + Synopsis
@@ -46,11 +46,11 @@
     typename State,
     typename F
     >
-typename result_of::accumulate<Sequence, State, F>::type accumulate(
+typename result_of::accumulate<Sequence, State, F>::type accumulate(
     Sequence& seq, State const& initial_state, F const& f);
 
-

Table 1.33. Parameters

+

Table 1.33. Parameters

@@ -64,24 +64,24 @@ - + - + - +
seqseq A model of Forward - Sequence, f(eN ....f(e2,f(e1,initial_state))) must be a valid expression for - each element e1 to - eN in seq + Sequence, f(eN ....f(e2,f(e1,initial_state))) must be a valid expression for + each element e1 to + eN in seq Operation's argument
initial_stateinitial_state Any type Initial state
ff A model of binary Polymorphic @@ -93,7 +93,7 @@
- + Expression Semantics
@@ -101,28 +101,28 @@ accumulate(seq, initial_state, f);

- Return type: Any type + Return type: Any type

- Semantics: Equivalent to f(eN ....f(e2,f(e1,initial_state))) - where e1 ...eN are the elements of seq. + Semantics: Equivalent to f(eN ....f(e2,f(e1,initial_state))) + where e1 ...eN are the elements of seq.

- + Complexity

- Linear, exactly result_of::size<Sequence>::value applications of f. + Linear, exactly result_of::size<Sequence>::value applications of f.

- + Header
 #include <boost/fusion/algorithm/iteration/accumulate.hpp>
 
- + Example
@@ -141,8 +141,8 @@
     }
 };
 ...
-const vector<int,int> vec(1,2);
-assert(accumulate(vec,std::string(""), make_string()) == "12");
+const vector<int,int> vec(1,2);
+assert(accumulate(vec,std::string(""), make_string()) == "12");
 
diff --git a/doc/html/fusion/algorithms/iteration/functions/fold.html b/doc/html/fusion/algorithms/iteration/functions/fold.html index b2e78889..b30a6802 100644 --- a/doc/html/fusion/algorithms/iteration/functions/fold.html +++ b/doc/html/fusion/algorithms/iteration/functions/fold.html @@ -3,7 +3,7 @@ fold - + @@ -26,17 +26,17 @@
- + Description

Repeatedly applies binary Polymorphic - Function Object f + Function Object f to each element of a sequence and the previous state.

- + Synopsis
@@ -45,11 +45,11 @@
     typename State,
     typename F
     >
-typename result_of::fold<Sequence, State, F>::type fold(
+typename result_of::fold<Sequence, State, F>::type fold(
     Sequence& seq, State const& initial_state, F const& f);
 
-

Table 1.32. Parameters

+

Table 1.32. Parameters

@@ -63,23 +63,23 @@ - + - + - +
seqseq A model of Forward - Sequence,f(e) must be a valid expression for each - element e in seq + Sequence,f(e) must be a valid expression for each + element e in seq Operation's argument
initial_stateinitial_state Any type Initial state
ff A model of binary Polymorphic @@ -91,7 +91,7 @@
- + Expression Semantics
@@ -99,28 +99,28 @@ fold(seq, initial_state, f);

- Return type: Any type + Return type: Any type

- Semantics: Equivalent to f(eN ....f(e2,f(e1,initial_state))) - where e1 ...eN are the elements of seq. + Semantics: Equivalent to f(eN ....f(e2,f(e1,initial_state))) + where e1 ...eN are the elements of seq.

- + Complexity

- Linear, exactly result_of::size<Sequence>::value applications of f. + Linear, exactly result_of::size<Sequence>::value applications of f.

- + Header
 #include <boost/fusion/algorithm/iteration/fold.hpp>
 
- + Example
@@ -139,8 +139,8 @@
     }
 };
 ...
-const vector<int,int> vec(1,2);
-assert(fold(vec,std::string(""), make_string()) == "12");
+const vector<int,int> vec(1,2);
+assert(fold(vec,std::string(""), make_string()) == "12");
 
diff --git a/doc/html/fusion/algorithms/iteration/functions/for_each.html b/doc/html/fusion/algorithms/iteration/functions/for_each.html index bba62f2e..f7a70ce0 100644 --- a/doc/html/fusion/algorithms/iteration/functions/for_each.html +++ b/doc/html/fusion/algorithms/iteration/functions/for_each.html @@ -3,7 +3,7 @@ for_each - + @@ -26,14 +26,14 @@
- + Description

Applies a unary function object to each element of a sequence.

- + Synopsis
@@ -41,11 +41,11 @@
     typename Sequence,
     typename F
     >
-typename result_of::for_each<Sequence, F>::type for_each(
+typename result_of::for_each<Sequence, F>::type for_each(
     Sequence& seq, F const& f);
 
-

Table 1.34. Parameters

+

Table 1.34. Parameters

@@ -59,17 +59,17 @@ - + - + @@ -78,36 +78,36 @@
seqseq A model of Forward - Sequence, f(e) must be a valid expression for each - element e in seq + Sequence, f(e) must be a valid expression for each + element e in seq Operation's argument
ff A unary function object Operation's argument
- + Expression Semantics
-for_each(seq, f);
+for_each(seq, f);
 

- Return type: void + Return type: void

- Semantics: Calls f(e) for each element e - in seq. + Semantics: Calls f(e) for each element e + in seq.

- + Complexity

- Linear, exactly result_of::size<Sequence>::value applications of f. + Linear, exactly result_of::size<Sequence>::value applications of f.

- + Header
 #include <boost/fusion/algorithm/iteration/for_each.hpp>
 
- + Example
@@ -120,9 +120,9 @@
     }
 };
 ...
-vector<int,int> vec(1,2);
-for_each(vec, increment());
-assert(vec == make_vector(2,3));
+vector<int,int> vec(1,2);
+for_each(vec, increment());
+assert(vec == make_vector(2,3));
 
diff --git a/doc/html/fusion/algorithms/iteration/metafunctions.html b/doc/html/fusion/algorithms/iteration/metafunctions.html index 8eb211d8..9eef8ac5 100644 --- a/doc/html/fusion/algorithms/iteration/metafunctions.html +++ b/doc/html/fusion/algorithms/iteration/metafunctions.html @@ -3,7 +3,7 @@ Metafunctions - + diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html b/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html index 8b65f9b9..a99b637c 100644 --- a/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html +++ b/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html @@ -3,7 +3,7 @@ accumulate - + @@ -26,14 +26,14 @@
- + Description

- Returns the result type of accumulate. + Returns the result type of accumulate.

- + Synopsis
@@ -47,7 +47,7 @@
 };
 
-

Table 1.36. Parameters

+

Table 1.36. Parameters

@@ -61,7 +61,7 @@ - + - + - +
SequenceSequence A model of Forward @@ -70,15 +70,15 @@ The sequence to iterate
StateState Any type The initial state for the first application of - F + F
FF A model of binary Polymorphic @@ -91,34 +91,34 @@
- + Expression Semantics
-result_of::accumulate<Sequence, State, F>::type
+result_of::accumulate<Sequence, State, F>::type
 

- Return type: Any 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 + Semantics: Returns the result of applying + accumulate to a sequence + of type Sequence, with + an initial state of type State and binary Polymorphic - Function Object of type F. + Function Object of type F.

- + Complexity

- Linear, exactly result_of::size<Sequence>::value applications of F. + Linear, exactly result_of::size<Sequence>::value applications of F.

- + Header
diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/fold.html b/doc/html/fusion/algorithms/iteration/metafunctions/fold.html
index 5f99bbe2..7fc8eb99 100644
--- a/doc/html/fusion/algorithms/iteration/metafunctions/fold.html
+++ b/doc/html/fusion/algorithms/iteration/metafunctions/fold.html
@@ -3,7 +3,7 @@
 
 fold
 
-
+
 
 
 
@@ -26,14 +26,14 @@
 
 
- + Description

- Returns the result type of fold. + Returns the result type of fold.

- + Synopsis
@@ -47,7 +47,7 @@
 };
 
-

Table 1.35. Parameters

+

Table 1.35. Parameters

@@ -61,7 +61,7 @@ - + - + - +
SequenceSequence A model of Forward @@ -70,15 +70,15 @@ The sequence to iterate
StateState Any type The initial state for the first application of - F + F
FF A model of binary Polymorphic @@ -91,34 +91,34 @@
- + Expression Semantics
-result_of::fold<Sequence, State, F>::type
+result_of::fold<Sequence, State, F>::type
 

- Return type: Any 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 + Semantics: Returns the result of applying + fold to a sequence of + type Sequence, with an + initial state of type State and binary Polymorphic - Function Object of type F. + Function Object of type F.

- + Complexity

- Linear, exactly result_of::size<Sequence>::value applications of F. + Linear, exactly result_of::size<Sequence>::value applications of F.

- + Header
diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html b/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html
index 67b0f947..6c18dfa8 100644
--- a/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html
+++ b/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html
@@ -3,7 +3,7 @@
 
 for_each
 
-
+
 
 
 
@@ -26,15 +26,15 @@
 
 

- A metafunction returning the result type of applying for_each to a sequence. The - return type of for_each is always void. + A metafunction returning the result type of applying for_each to a sequence. The + return type of for_each is always void.

- + Description
- + Synopsis
@@ -48,7 +48,7 @@
 };
 
-

Table 1.37. Parameters

+

Table 1.37. Parameters

@@ -62,7 +62,7 @@ - + - + @@ -80,32 +80,32 @@
SequenceSequence A model of Forward @@ -71,7 +71,7 @@ Operation's argument
FF Any type Operation's argument
- + Expression Semantics
-result_of::for_each<Sequence, F>::type
+result_of::for_each<Sequence, F>::type
 

- Return type: void. + Return type: void.

- Semantics: Returns the return type of - for_each for a sequence of type - Sequence and a unary - function object F. The - return type is always void. + Semantics: Returns the return type of + for_each for a sequence of type + Sequence and a unary + function object F. The + return type is always void.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/query.html b/doc/html/fusion/algorithms/query.html
index e8c47055..50b675e5 100644
--- a/doc/html/fusion/algorithms/query.html
+++ b/doc/html/fusion/algorithms/query.html
@@ -3,7 +3,7 @@
 
 Query
 
-
+
 
 
 
@@ -29,7 +29,7 @@
         The query algorithms provide support for searching and analyzing sequences.
       

- + Header

diff --git a/doc/html/fusion/algorithms/query/functions.html b/doc/html/fusion/algorithms/query/functions.html
index f06fb915..d078caff 100644
--- a/doc/html/fusion/algorithms/query/functions.html
+++ b/doc/html/fusion/algorithms/query/functions.html
@@ -3,7 +3,7 @@
 
 Functions
 
-
+
 
 
 
diff --git a/doc/html/fusion/algorithms/query/functions/all.html b/doc/html/fusion/algorithms/query/functions/all.html
index 9a6ccdb5..0b6790f5 100644
--- a/doc/html/fusion/algorithms/query/functions/all.html
+++ b/doc/html/fusion/algorithms/query/functions/all.html
@@ -3,7 +3,7 @@
 
 all
 
-
+
 
 
 
@@ -26,18 +26,18 @@
 
 
- + Description

- For a sequence seq and - unary function object f, - all returns true if - f returns true for every - element of seq. + For a sequence seq and + unary function object f, + all returns true if + f returns true for every + element of seq.

- + Synopsis
@@ -45,11 +45,11 @@
     typename Sequence,
     typename F
     >
-typename result_of::all<Sequence,F>::type all(
+typename result_of::all<Sequence,F>::type all(
     Sequence const& seq, F f);
 
-

Table 1.39. Parameters

+

Table 1.39. Parameters

@@ -63,19 +63,19 @@ - + - + @@ -84,38 +84,38 @@
seqseq A model of Forward - Sequence, f(e) is a valid expression, convertible - to bool, for every element - e in seq + Sequence, f(e) is a valid expression, convertible + to bool, for every element + e in seq The sequence to search
ff A unary function object The search predicate
- + Expression Semantics
-all(seq, f);
+all(seq, f);
 

- Return type: bool + Return type: bool

- Semantics: Returns true if and only - if f(e) - evaluates to true for every - element e in seq. + Semantics: Returns true if and only + if f(e) + evaluates to true for every + element e in seq.

- + Complexity

- Linear. At most result_of::size<Sequence>::value comparisons. + Linear. At most result_of::size<Sequence>::value comparisons.

- + Header
 #include <boost/fusion/algorithm/query/all.hpp>
 
- + Example
@@ -128,8 +128,8 @@
     }
 };
 ...
-assert(all(make_vector(1,3), odd()));
-assert(!all(make_vector(1,2), odd()));
+assert(all(make_vector(1,3), odd()));
+assert(!all(make_vector(1,2), odd()));
 
diff --git a/doc/html/fusion/algorithms/query/functions/any.html b/doc/html/fusion/algorithms/query/functions/any.html index 723ff918..12f4df59 100644 --- a/doc/html/fusion/algorithms/query/functions/any.html +++ b/doc/html/fusion/algorithms/query/functions/any.html @@ -3,7 +3,7 @@ any - + @@ -26,18 +26,18 @@
- + Description

- For a sequence seq and - unary function object f, - any returns true if - f returns true for at - least one element of seq. + For a sequence seq and + unary function object f, + any returns true if + f returns true for at + least one element of seq.

- + Synopsis
@@ -45,11 +45,11 @@
     typename Sequence,
     typename F
     >
-typename result_of::any<Sequence,F>::type any(
+typename result_of::any<Sequence,F>::type any(
     Sequence const& seq, F f);
 
-

Table 1.38. Parameters

+

Table 1.38. Parameters

@@ -63,19 +63,19 @@ - + - + @@ -84,38 +84,38 @@
seqseq A model of Forward - Sequence, f(e) must be a valid expression, convertible - to bool, for each element - e in seq + Sequence, f(e) must be a valid expression, convertible + to bool, for each element + e in seq The sequence to search
ff A unary function object The search predicate
- + Expression semantics
-any(seq, f);
+any(seq, f);
 

- Return type: bool + Return type: bool

- Semantics: Returns true if and only - if f(e) - evaluates to true for some - element e in seq. + Semantics: Returns true if and only + if f(e) + evaluates to true for some + element e in seq.

- + Complexity

- Linear. At most result_of::size<Sequence>::value comparisons. + Linear. At most result_of::size<Sequence>::value comparisons.

- + Header
 #include <boost/fusion/algorithm/query/any.hpp>
 
- + Example
@@ -128,8 +128,8 @@
     }
 };
 ...
-assert(any(make_vector(1,2), odd()));
-assert(!any(make_vector(2,4), odd()));
+assert(any(make_vector(1,2), odd()));
+assert(!any(make_vector(2,4), odd()));
 
diff --git a/doc/html/fusion/algorithms/query/functions/count.html b/doc/html/fusion/algorithms/query/functions/count.html index 6978a201..6e68ca75 100644 --- a/doc/html/fusion/algorithms/query/functions/count.html +++ b/doc/html/fusion/algorithms/query/functions/count.html @@ -3,7 +3,7 @@ count - + @@ -26,14 +26,14 @@
- + Description

Returns the number of elements of a given type within a sequence.

- + Synopsis
@@ -41,11 +41,11 @@
     typename Sequence,
     typename T
     >
-typename result_of::count<Sequence, T>::type count(
+typename result_of::count<Sequence, T>::type count(
     Sequence const& seq, T const& t);
 
-

Table 1.43. Parameters

+

Table 1.43. Parameters

@@ -59,20 +59,20 @@ - + - + @@ -81,42 +81,42 @@
seqseq A model of Forward - Sequence, e == t - must be a valid expression, convertible to bool, - for each element e - in seq + Sequence, e == t + must be a valid expression, convertible to bool, + for each element e + in seq The sequence to search
TT Any type The type to count
- + Expression Semantics
-count(seq, t);
+count(seq, t);
 

- Return type: int + Return type: int

- Semantics: Returns the number of elements - of type T and equal to - t in seq. + Semantics: Returns the number of elements + of type T and equal to + t in seq.

- + Complexity

- Linear. At most result_of::size<Sequence>::value comparisons. + Linear. At most result_of::size<Sequence>::value comparisons.

- + Header
 #include <boost/fusion/algorithm/query/count.hpp>
 
- + Example
-const vector<double,int,int> vec(1.0,2,3);
-assert(count(vec,2) == 1);
+const vector<double,int,int> vec(1.0,2,3);
+assert(count(vec,2) == 1);
 
diff --git a/doc/html/fusion/algorithms/query/functions/count_if.html b/doc/html/fusion/algorithms/query/functions/count_if.html index 682accd5..7707c100 100644 --- a/doc/html/fusion/algorithms/query/functions/count_if.html +++ b/doc/html/fusion/algorithms/query/functions/count_if.html @@ -3,7 +3,7 @@ count_if - + @@ -26,15 +26,15 @@
- + Description

Returns the number of elements within a sequence with a type for which - a given unary function object evaluates to true. + a given unary function object evaluates to true.

- + Synopsis
@@ -42,11 +42,11 @@
     typename Sequence,
     typename F
     >
-typename result_of::count_if<Sequence, F>::type count_if(
+typename result_of::count_if<Sequence, F>::type count_if(
     Sequence const& seq, F f);
 
-

Table 1.44. Parameters

+

Table 1.44. Parameters

@@ -60,19 +60,19 @@ - + - + @@ -81,41 +81,41 @@
seqseq A model of Forward - Sequence, f(e) is a valid expression, convertible - to bool, for each element - e in seq + Sequence, f(e) is a valid expression, convertible + to bool, for each element + e in seq The sequence to search
ff A unary function object The search predicate
- + Expression Semantics
-count_if(seq, f)
+count_if(seq, f)
 

- Return type: int + Return type: int

- Semantics: Returns the number of elements - in seq where f evaluates to true. + Semantics: Returns the number of elements + in seq where f evaluates to true.

- + Complexity

- Linear. At most result_of::size<Sequence>::value comparisons. + Linear. At most result_of::size<Sequence>::value comparisons.

- + Header
 #include <boost/fusion/algorithm/query/count_if.hpp>
 
- + Example
-const vector<int,int,int> vec(1,2,3);
-assert(count_if(vec,odd()) == 2);
+const vector<int,int,int> vec(1,2,3);
+assert(count_if(vec,odd()) == 2);
 
diff --git a/doc/html/fusion/algorithms/query/functions/find.html b/doc/html/fusion/algorithms/query/functions/find.html index aeb1aa68..f29167f7 100644 --- a/doc/html/fusion/algorithms/query/functions/find.html +++ b/doc/html/fusion/algorithms/query/functions/find.html @@ -3,7 +3,7 @@ find - + @@ -26,14 +26,14 @@
- + Description

Finds the first element of a given type within a sequence.

- + Synopsis
@@ -50,7 +50,7 @@
 unspecified find(Sequence& seq);
 
-

Table 1.41. Parameters

+

Table 1.41. Parameters

@@ -64,7 +64,7 @@ - + - + @@ -82,45 +82,45 @@
seqseq A model of Forward @@ -73,7 +73,7 @@ The sequence to search
TT Any type The type to search for
- + Expression Semantics
-find<T>(seq)
+find<T>(seq)
 

- Return type: A model of the same iterator - category as the iterators of seq. + Return type: A model of the same iterator + category as the iterators of seq.

- Semantics: Returns an iterator to the - first element of seq - of type T, or end(seq) if there is no such element. Equivalent - to find_if<boost::is_same<_, T> >(seq) + Semantics: Returns an iterator to the + first element of seq + of type T, or end(seq) if there is no such element. Equivalent + to find_if<boost::is_same<_, T> >(seq)

- + Complexity

- Linear. At most result_of::size<Sequence>::value comparisons. + Linear. At most result_of::size<Sequence>::value comparisons.

- + Header
 #include <boost/fusion/algorithm/query/find.hpp>
 
- + Example
-const vector<char,int> vec('a','0');
-assert(*find<int>(vec) == '0');
-assert(find<double>(vec) == end(vec));
+const vector<char,int> vec('a','0');
+assert(*find<int>(vec) == '0');
+assert(find<double>(vec) == end(vec));
 
diff --git a/doc/html/fusion/algorithms/query/functions/find_if.html b/doc/html/fusion/algorithms/query/functions/find_if.html index 928020a8..498c7ea8 100644 --- a/doc/html/fusion/algorithms/query/functions/find_if.html +++ b/doc/html/fusion/algorithms/query/functions/find_if.html @@ -3,7 +3,7 @@ find_if - + @@ -27,14 +27,14 @@ find_if

Finds the first element within a sequence with a type for which a given - MPL Lambda Expression evaluates to boost::mpl::true_. + MPL Lambda Expression evaluates to boost::mpl::true_.

- + Description
- + Synopsis
@@ -51,7 +51,7 @@
 unspecified find_if(Sequence& seq);
 
-

Table 1.42. Parameters

+

Table 1.42. Parameters

@@ -65,7 +65,7 @@ - + - + @@ -83,46 +83,46 @@
seqseq A model of Forward @@ -74,7 +74,7 @@ The sequence to search
FF A unary MPL Lambda Expression The search predicate
- + Expression Semantics
-find_if<F>(seq)
+find_if<F>(seq)
 

- Return type: An iterator of the same - iterator category as the iterators of seq. + Return type: An iterator of the same + iterator category as the iterators of seq.

- Semantics: Returns the first element - of seq for which MPL - Lambda Expression F evaluates - to boost::mpl::true_, or end(seq) + Semantics: Returns the first element + of seq for which MPL + Lambda Expression F evaluates + to boost::mpl::true_, or end(seq) if there is no such element.

- + Complexity

- Linear. At most result_of::size<Sequence>::value comparisons. + Linear. At most result_of::size<Sequence>::value comparisons.

- + Header
 #include <boost/fusion/algorithm/query/find_if.hpp>
 
- + Example
-const vector<double,int> vec(1.0,2);
-assert(*find_if<is_integral<mpl::_> >(vec) == 2);
-assert(find_if<is_class<mpl::_> >(vec) == end(vec));
+const vector<double,int> vec(1.0,2);
+assert(*find_if<is_integral<mpl::_> >(vec) == 2);
+assert(find_if<is_class<mpl::_> >(vec) == end(vec));
 
diff --git a/doc/html/fusion/algorithms/query/functions/none.html b/doc/html/fusion/algorithms/query/functions/none.html index 1f831020..0c4b0cd0 100644 --- a/doc/html/fusion/algorithms/query/functions/none.html +++ b/doc/html/fusion/algorithms/query/functions/none.html @@ -3,7 +3,7 @@ none - + @@ -26,18 +26,18 @@
- + Description

- For a sequence seq and - unary function object f, - none returns true if - f returns false for every - element of seq. + For a sequence seq and + unary function object f, + none returns true if + f returns false for every + element of seq.

- + Synopsis
@@ -45,11 +45,11 @@
     typename Sequence,
     typename F
     >
-typename result_of::none<Sequence,F>::type none(
+typename result_of::none<Sequence,F>::type none(
     Sequence const& seq, F f);
 
-

Table 1.40. Parameters

+

Table 1.40. Parameters

@@ -63,19 +63,19 @@ - + - + @@ -84,38 +84,38 @@
seqseq A model of Forward - Sequence, f(e) is a valid expression, convertible - to bool, for every element - e in seq + Sequence, f(e) is a valid expression, convertible + to bool, for every element + e in seq The sequence to search
ff A unary function object The search predicate
- + Expression Semantics
-none(seq, f);
+none(seq, f);
 

- Return type: bool + Return type: bool

- Semantics: Returns true if and only - if f(e) - evaluates to false for every - element e in seq. Result equivalent to !any(seq, f). + Semantics: Returns true if and only + if f(e) + evaluates to false for every + element e in seq. Result equivalent to !any(seq, f).

- + Complexity

- Linear. At most result_of::size<Sequence>::value comparisons. + Linear. At most result_of::size<Sequence>::value comparisons.

- + Header
 #include <boost/fusion/algorithm/query/none.hpp>
 
- + Example
@@ -128,8 +128,8 @@
     }
 };
 ...
-assert(none(make_vector(2,4), odd()));
-assert(!none(make_vector(1,2), odd()));
+assert(none(make_vector(2,4), odd()));
+assert(!none(make_vector(1,2), odd()));
 
diff --git a/doc/html/fusion/algorithms/query/metafunctions.html b/doc/html/fusion/algorithms/query/metafunctions.html index 02299291..d803200f 100644 --- a/doc/html/fusion/algorithms/query/metafunctions.html +++ b/doc/html/fusion/algorithms/query/metafunctions.html @@ -3,7 +3,7 @@ Metafunctions - + diff --git a/doc/html/fusion/algorithms/query/metafunctions/all.html b/doc/html/fusion/algorithms/query/metafunctions/all.html index b3f12915..eadff0c9 100644 --- a/doc/html/fusion/algorithms/query/metafunctions/all.html +++ b/doc/html/fusion/algorithms/query/metafunctions/all.html @@ -3,7 +3,7 @@ all - + @@ -26,14 +26,14 @@
- + Description

- A metafunction returning the result type of all. + A metafunction returning the result type of all.

- + Synopsis
@@ -47,7 +47,7 @@
 };
 
-

Table 1.46. Parameters

+

Table 1.46. Parameters

@@ -61,7 +61,7 @@ - + - +
SequenceSequence A model of Forward @@ -70,7 +70,7 @@ Operation's argument
FF A model of unary Polymorphic @@ -82,34 +82,34 @@
- + Expression Semantics
-result_of::all<Sequence, F>::type
+result_of::all<Sequence, F>::type
 

- Return type: bool. + Return type: bool.

- Semantics: Returns the return type of - all - given a sequence of type Sequence + Semantics: Returns the return type of + all + given a sequence of type Sequence and a unary Polymorphic - Function Object of type F. - The return type is always bool. + Function Object of type F. + The return type is always bool.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/query/metafunctions/any.html b/doc/html/fusion/algorithms/query/metafunctions/any.html
index b0de23a9..d72d800d 100644
--- a/doc/html/fusion/algorithms/query/metafunctions/any.html
+++ b/doc/html/fusion/algorithms/query/metafunctions/any.html
@@ -3,7 +3,7 @@
 
 any
 
-
+
 
 
 
@@ -26,14 +26,14 @@
 
 
- + Description

- A metafunction returning the result type of any. + A metafunction returning the result type of any.

- + Synopsis
@@ -47,7 +47,7 @@
 };
 
-

Table 1.45. Parameters

+

Table 1.45. Parameters

@@ -61,7 +61,7 @@ - + - +
SequenceSequence A model of Forward @@ -70,7 +70,7 @@ Operation's argument
FF A model of unary Polymorphic @@ -82,34 +82,34 @@
- + Expression Semantics
-result_of::any<Sequence, F>::type
+result_of::any<Sequence, F>::type
 

- Return type: bool. + Return type: bool.

- Semantics: Returns the return type of - any - given a sequence of type Sequence + Semantics: Returns the return type of + any + given a sequence of type Sequence and a unary Polymorphic - Function Object of type F. - The return type is always bool. + Function Object of type F. + The return type is always bool.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/query/metafunctions/count.html b/doc/html/fusion/algorithms/query/metafunctions/count.html
index bde12281..2dc89381 100644
--- a/doc/html/fusion/algorithms/query/metafunctions/count.html
+++ b/doc/html/fusion/algorithms/query/metafunctions/count.html
@@ -3,7 +3,7 @@
 
 count
 
-
+
 
 
 
@@ -26,15 +26,15 @@
 
 
- + Description

- A metafunction that returns the result type of count + A metafunction that returns the result type of count given the sequence and search types.

- + Synopsis
@@ -48,7 +48,7 @@
 };
 
-

Table 1.50. Parameters

+

Table 1.50. Parameters

@@ -63,7 +63,7 @@ - + - + @@ -81,30 +81,30 @@
SequenceSequence A model of Forward @@ -72,7 +72,7 @@ Operation's argument
TT Any type Operation's argument
- + Expression Semantics
-result_of::count<T>::type
+result_of::count<T>::type
 

- Return type: int. + Return type: int.

- Semantics: Returns the return type of - count. The return type is always - int. + Semantics: Returns the return type of + count. The return type is always + int.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/query/metafunctions/count_if.html b/doc/html/fusion/algorithms/query/metafunctions/count_if.html
index 3e8180f5..2d5aea46 100644
--- a/doc/html/fusion/algorithms/query/metafunctions/count_if.html
+++ b/doc/html/fusion/algorithms/query/metafunctions/count_if.html
@@ -3,7 +3,7 @@
 
 count_if
 
-
+
 
 
 
@@ -26,15 +26,15 @@
 
 
- + Description

- A metafunction that returns the result type of count_if + A metafunction that returns the result type of count_if given the sequence and predicate types.

- + Synopsis
@@ -48,7 +48,7 @@
 };
 
-

Table 1.51. Parameters

+

Table 1.51. Parameters

@@ -62,7 +62,7 @@ - + - + @@ -80,30 +80,30 @@
SequenceSequence A model of Forward @@ -71,7 +71,7 @@ Operation's argument
PredPred A unary function object Operation's argument
- + Expression Semantics
-result_of::count_if<Sequence, Pred>::type
+result_of::count_if<Sequence, Pred>::type
 

- Return type: int. + Return type: int.

- Semantics: Returns the return type of - count_if. The return type is - always int. + Semantics: Returns the return type of + count_if. The return type is + always int.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/query/metafunctions/find.html b/doc/html/fusion/algorithms/query/metafunctions/find.html
index f75b8d2d..a30c2f8e 100644
--- a/doc/html/fusion/algorithms/query/metafunctions/find.html
+++ b/doc/html/fusion/algorithms/query/metafunctions/find.html
@@ -3,7 +3,7 @@
 
 find
 
-
+
 
 
 
@@ -26,15 +26,15 @@
 
 
- + Description

- Returns the result type of find, + Returns the result type of find, given the sequence and search types.

- + Synopsis
@@ -48,7 +48,7 @@
 };
 
-

Table 1.48. Parameters

+

Table 1.48. Parameters

@@ -62,7 +62,7 @@ - + - + @@ -80,31 +80,31 @@
SequenceSequence Model of Forward @@ -71,7 +71,7 @@ Operation's argument
TT Any type Operation's argument
- + Expression Semantics
-result_of::find<Sequence, T>::type
+result_of::find<Sequence, T>::type
 

- Return type: A model of the same iterator - category as the iterators of Sequence. + Return type: A model of the same iterator + category as the iterators of Sequence.

- Semantics: Returns an iterator to the - first element of type T - in Sequence, or result_of::end<Sequence>::type if there is no such element. + Semantics: Returns an iterator to the + first element of type T + in Sequence, or result_of::end<Sequence>::type if there is no such element.

- + Complexity

- Linear, at most result_of::size<Sequence>::value comparisons. + Linear, at most result_of::size<Sequence>::value comparisons.

- + Header
diff --git a/doc/html/fusion/algorithms/query/metafunctions/find_if.html b/doc/html/fusion/algorithms/query/metafunctions/find_if.html
index 19143c34..a063defa 100644
--- a/doc/html/fusion/algorithms/query/metafunctions/find_if.html
+++ b/doc/html/fusion/algorithms/query/metafunctions/find_if.html
@@ -3,7 +3,7 @@
 
 find_if
 
-
+
 
 
 
@@ -26,15 +26,15 @@
 
 
- + Description

- Returns the result type of find_if + Returns the result type of find_if given the sequence and predicate types.

- + Synopsis
@@ -48,7 +48,7 @@
 };
 
-

Table 1.49. Parameters

+

Table 1.49. Parameters

@@ -62,7 +62,7 @@ - + - + @@ -80,32 +80,32 @@
SequenceSequence A model of Forward @@ -71,7 +71,7 @@ Operation's argument
PredPred A model of MPL Lambda Expression Operation's arguments
- + Expression Semantics
-result_of::find_if<Sequence, Pred>::type
+result_of::find_if<Sequence, Pred>::type
 

- Return type: A model of the same iterator - category as the iterators of Sequence. + Return type: A model of the same iterator + category as the iterators of Sequence.

- Semantics: Returns an iterator to the - first element in Sequence - for which Pred evaluates - to true. Returns result_of::end<Sequence>::type if there is no such element. + Semantics: Returns an iterator to the + first element in Sequence + for which Pred evaluates + to true. Returns result_of::end<Sequence>::type if there is no such element.

- + Complexity

- Linear. At most result_of::size<Sequence>::value comparisons. + Linear. At most result_of::size<Sequence>::value comparisons.

- + Header
diff --git a/doc/html/fusion/algorithms/query/metafunctions/none.html b/doc/html/fusion/algorithms/query/metafunctions/none.html
index 40c2f431..05d9cd69 100644
--- a/doc/html/fusion/algorithms/query/metafunctions/none.html
+++ b/doc/html/fusion/algorithms/query/metafunctions/none.html
@@ -3,7 +3,7 @@
 
 none
 
-
+
 
 
 
@@ -26,14 +26,14 @@
 
 
- + Description

- A metafunction returning the result type of none. + A metafunction returning the result type of none.

- + Synopsis
@@ -47,7 +47,7 @@
 };
 
-

Table 1.47. Parameters

+

Table 1.47. Parameters

@@ -61,7 +61,7 @@ - + - +
SequenceSequence A model of Forward @@ -70,7 +70,7 @@ Operation's argument
FF A model of unary Polymorphic @@ -82,34 +82,34 @@
- + Expression Semantics
-result_of::none<Sequence, F>::type
+result_of::none<Sequence, F>::type
 

- Return type: bool. + Return type: bool.

- Semantics: Returns the return type of - none given a sequence of type - Sequence and a unary + Semantics: Returns the return type of + none given a sequence of type + Sequence and a unary Polymorphic Function - Object of type F. - The return type is always bool. + Object of type F. + The return type is always bool.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation.html b/doc/html/fusion/algorithms/transformation.html
index 2c166c81..4b0a2eec 100644
--- a/doc/html/fusion/algorithms/transformation.html
+++ b/doc/html/fusion/algorithms/transformation.html
@@ -3,7 +3,7 @@
 
 Transformation
 
-
+
 
 
 
@@ -35,14 +35,14 @@
 [Note]
 Note
 
-

+

As the transformation algorithms return views onto their input arguments, it is important that the lifetime of the input arguments is greater than the period during which you wish to use the results.

- + Header

diff --git a/doc/html/fusion/algorithms/transformation/functions.html b/doc/html/fusion/algorithms/transformation/functions.html
index 92367af0..5b87440b 100644
--- a/doc/html/fusion/algorithms/transformation/functions.html
+++ b/doc/html/fusion/algorithms/transformation/functions.html
@@ -3,7 +3,7 @@
 
 Functions
 
-
+
 
 
 
diff --git a/doc/html/fusion/algorithms/transformation/functions/clear.html b/doc/html/fusion/algorithms/transformation/functions/clear.html
index 4ac56bf1..4b1ef20a 100644
--- a/doc/html/fusion/algorithms/transformation/functions/clear.html
+++ b/doc/html/fusion/algorithms/transformation/functions/clear.html
@@ -3,7 +3,7 @@
 
 clear
 
-
+
 
 
 
@@ -26,24 +26,24 @@
 
 
- + Description

- clear returns an empty sequence. + clear returns an empty sequence.

- + Synposis
 template<
     typename Sequence
     >
-typename result_of::clear<Sequence const>::type clear(Sequence const& seq);
+typename result_of::clear<Sequence const>::type clear(Sequence const& seq);
 
-

Table 1.61. Parameters

+

Table 1.61. Parameters

@@ -56,7 +56,7 @@ - +
Description
seqseq A model of Forward @@ -67,42 +67,42 @@
- + Expression Semantics
-clear(seq);
+clear(seq);
 

- Return type: A model of Return type: A model of Forward Sequence.

- Expression Semantics: Returns a sequence + Expression Semantics: Returns a sequence with no elements.

- + Complexity

Constant.

- + Header
 #include <boost/fusion/algorithm/transformation/clear.hpp>
 
- + Example
-assert(clear(make_vector(1,2,3)) == make_vector());
+assert(clear(make_vector(1,2,3)) == make_vector());
 
diff --git a/doc/html/fusion/algorithms/transformation/functions/erase.html b/doc/html/fusion/algorithms/transformation/functions/erase.html index 38dc9e81..c193c91c 100644 --- a/doc/html/fusion/algorithms/transformation/functions/erase.html +++ b/doc/html/fusion/algorithms/transformation/functions/erase.html @@ -3,7 +3,7 @@ erase - + @@ -26,7 +26,7 @@
- + Description

@@ -34,7 +34,7 @@ those at a specified iterator, or between two iterators.

- + Synposis
@@ -42,7 +42,7 @@
     typename Sequence,
     typename First
     >
-typename result_of::erase<Sequence const, First>::type erase(
+typename result_of::erase<Sequence const, First>::type erase(
     Sequence const& seq, First const& it1);
 
 template<
@@ -50,11 +50,11 @@
     typename First,
     typename Last
     >
-typename result_of::erase<Sequence const, First, Last>::type erase(
+typename result_of::erase<Sequence const, First, Last>::type erase(
     Sequence const& seq, First const& it1, Last const& it2);
 
-

Table 1.62. Parameters

+

Table 1.62. Parameters

@@ -68,7 +68,7 @@ - + - + - - + -
seqseq A model of Forward @@ -77,82 +77,82 @@ Operation's argument
it1it1 A model of Forward Iterator Iterator into seq +Iterator into seq
it2it2 A model of Forward Iterator Iterator into seq - after it1 +Iterator into seq + after it1
- + Expression Semantics
-erase(seq, pos);
+erase(seq, pos);
 

- Return type: A model of Return type: A model of Forward Sequence.

- Semantics: Returns a new sequence, containing - all the elements of seq - except the element at pos. + Semantics: Returns a new sequence, containing + all the elements of seq + except the element at pos.

-erase(seq, first, last);
+erase(seq, first, last);
 

- Return type: A model of Return type: A model of Forward Sequence.

- Semantics: Returns a new sequence, with - all the elements of seq, - in their original order, except those in the range [first,last). + Semantics: Returns a new sequence, with + all the elements of seq, + 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>
 
- + Example
-const vector<int, double, char> vec(1, 2.0, 'c');
-assert(erase(vec, next(begin(vec))) == make_vector(1, 'c'));
-assert(erase(vec, next(begin(vec)), end(vec)) == make_vector(1));
+const vector<int, double, char> vec(1, 2.0, 'c');
+assert(erase(vec, next(begin(vec))) == make_vector(1, 'c'));
+assert(erase(vec, next(begin(vec)), end(vec)) == make_vector(1));
 
diff --git a/doc/html/fusion/algorithms/transformation/functions/erase_key.html b/doc/html/fusion/algorithms/transformation/functions/erase_key.html index 421651d8..a493fce7 100644 --- a/doc/html/fusion/algorithms/transformation/functions/erase_key.html +++ b/doc/html/fusion/algorithms/transformation/functions/erase_key.html @@ -3,7 +3,7 @@ erase_key - + @@ -26,20 +26,20 @@
- + Description

For an Associative - Sequence seq, + Sequence seq, returns a Forward Sequence containing all the elements of the original except those with a given key.

- + Synposis
@@ -50,7 +50,7 @@
 typename result_of::erase_key<Sequence const, Key>::type erase_key(Sequence const& seq);
 
-

Table 1.63. Parameters

+

Table 1.63. Parameters

@@ -64,7 +64,7 @@ - + - + @@ -82,43 +82,43 @@
seqseq A model of Associative @@ -73,7 +73,7 @@ Operation's argument
KeyKey Any type Key to erase
- + Expression Semantics
-erase_key<Key>(seq);
+erase_key<Key>(seq);
 

- Return type: A model of Return type: A model of Forward Sequence.

- Semantics: Returns a new sequence, containing - all the elements of seq, - except those with key Key. + Semantics: Returns a new sequence, containing + all the elements of seq, + except those with key Key.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/erase_key.hpp>
 
- + Example
-assert(erase_key<int>(make_map<int, long>('a', 'b')) == make_map<long>('b'));
+assert(erase_key<int>(make_map<int, long>('a', 'b')) == make_map<long>('b'));
 
diff --git a/doc/html/fusion/algorithms/transformation/functions/filter.html b/doc/html/fusion/algorithms/transformation/functions/filter.html index 4d7e6c36..ff587307 100644 --- a/doc/html/fusion/algorithms/transformation/functions/filter.html +++ b/doc/html/fusion/algorithms/transformation/functions/filter.html @@ -3,7 +3,7 @@ filter - + @@ -26,7 +26,7 @@
- + Description

@@ -34,7 +34,7 @@ the elements of a specified type.

- + Synopsis
@@ -42,10 +42,10 @@
     typename T,
     typename Sequence
     >
-typename result_of::filter<Sequence const, T>::type filter(Sequence const& seq);
+typename result_of::filter<Sequence const, T>::type filter(Sequence const& seq);
 
-

Table 1.52. Parameters

+

Table 1.52. Parameters

@@ -59,7 +59,7 @@ - + - + @@ -77,45 +77,45 @@
seqseq A model of Forward @@ -68,7 +68,7 @@ Operation's argument
TT Any type The type to retain
- + Expression Semantics
-filter<T>(seq);
+filter<T>(seq);
 

- Return type: A model of Return type: A model of Forward Sequence.

- Semantics: Returns a sequence containing - all the elements of seq - of type T. Equivalent - to filter_if<boost::same_type<_, T> >(seq). + Semantics: Returns a sequence containing + all the elements of seq + of type T. Equivalent + 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>
 
- + Example
-const vector<int,int,long,long> vec(1,2,3,4);
-assert(filter<int>(vec) == make_vector(1,2));
+const vector<int,int,long,long> vec(1,2,3,4);
+assert(filter<int>(vec) == make_vector(1,2));
 
diff --git a/doc/html/fusion/algorithms/transformation/functions/filter_if.html b/doc/html/fusion/algorithms/transformation/functions/filter_if.html index 87dd2b39..e332b6e2 100644 --- a/doc/html/fusion/algorithms/transformation/functions/filter_if.html +++ b/doc/html/fusion/algorithms/transformation/functions/filter_if.html @@ -3,7 +3,7 @@ filter_if - + @@ -26,16 +26,16 @@
- + Description

- For a given sequence, filter_if returns a new sequences + For a given sequence, filter_if returns a new sequences containing only the elements with types for which a given MPL Lambda - Expression evaluates to boost::mpl::true_. + Expression evaluates to boost::mpl::true_.

- + Synopsis
@@ -43,10 +43,10 @@
     typename Pred,
     typename Sequence
     >
-typename result_of::filter_if<Sequence const, Pred>::type filter_if(Sequence const& seq);
+typename result_of::filter_if<Sequence const, Pred>::type filter_if(Sequence const& seq);
 
-

Table 1.53. Parameters

+

Table 1.53. Parameters

@@ -60,7 +60,7 @@ - + - +
seqseq A model of Forward @@ -69,7 +69,7 @@ Operation's argument
PredPred A unary MPL Lambda Expression The predicate to filter @@ -79,46 +79,46 @@
- + Expression Semantics
-filter_if<Pred>(seq);
+filter_if<Pred>(seq);
 

- Return type: A model of Return type: A model of Forward Sequence.

- Semantics: Returns a sequence containing - all the elements of seq - with types for which Pred - evaluates to boost::mpl::true_. The order of the retained elements + Semantics: Returns a sequence containing + all the elements of seq + with types for which Pred + evaluates to boost::mpl::true_. The order of the retained elements 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>
 
- + Example
-const vector<int,int,double,double> vec(1,2,3.0,4.0);
-assert(filter_if<is_integral<mpl::_> >(vec) == make_vector(1,2));
+const vector<int,int,double,double> vec(1,2,3.0,4.0);
+assert(filter_if<is_integral<mpl::_> >(vec) == make_vector(1,2));
 
diff --git a/doc/html/fusion/algorithms/transformation/functions/insert.html b/doc/html/fusion/algorithms/transformation/functions/insert.html index ad128d66..4bf2a286 100644 --- a/doc/html/fusion/algorithms/transformation/functions/insert.html +++ b/doc/html/fusion/algorithms/transformation/functions/insert.html @@ -3,7 +3,7 @@ insert - + @@ -26,7 +26,7 @@
- + Description

@@ -34,7 +34,7 @@ element inserted the position described by a given iterator.

- + Synposis
@@ -46,7 +46,7 @@
 unspecified insert(Sequence const& seq, Pos const& pos, T const& t);
 
-

Table 1.64. Parameters

+

Table 1.64. Parameters

@@ -60,7 +60,7 @@ - + - + - + @@ -87,46 +87,46 @@
seqseq A model of Forward @@ -69,7 +69,7 @@ Operation's argument
pospos A model of Forward @@ -78,7 +78,7 @@ The position to insert at
tt Any type The value to insert
- + Expression Semantics
-insert(seq, p, t);
+insert(seq, p, t);
 

- Return type: A model of Return type: A model of Forward Sequence.

- Semantics: Returns a new sequence, containing - all the elements of seq, + Semantics: Returns a new sequence, containing + all the elements of seq, in their original order, and a new element with the type and value of - t inserted at iterator - pos. + t inserted at iterator + pos.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/insert.hpp>
 
- + Example
-const vector<int,int> vec(1,2);
-assert(insert(vec, next(begin(vec)), 3) == make_vector(1,3,2));
+const vector<int,int> vec(1,2);
+assert(insert(vec, next(begin(vec)), 3) == make_vector(1,3,2));
 
diff --git a/doc/html/fusion/algorithms/transformation/functions/insert_range.html b/doc/html/fusion/algorithms/transformation/functions/insert_range.html index c4981fcb..6cce0051 100644 --- a/doc/html/fusion/algorithms/transformation/functions/insert_range.html +++ b/doc/html/fusion/algorithms/transformation/functions/insert_range.html @@ -3,7 +3,7 @@ insert_range - + @@ -26,7 +26,7 @@
- + Description

@@ -34,7 +34,7 @@ iterator.

- + Synposis
@@ -43,11 +43,11 @@
     typename Pos,
     typename Range
     >
-typename result_of::insert_range<Sequence const, Pos, Range>::type insert_range(
+typename result_of::insert_range<Sequence const, Pos, Range>::type insert_range(
     Sequence const& seq, Pos const& pos, Range const& range);
 
-

Table 1.65. Parameters

+

Table 1.65. Parameters

@@ -61,7 +61,7 @@ - + - + - +
seqseq A model of Forward @@ -70,7 +70,7 @@ Operation's argument
pospos A model of Forward @@ -79,7 +79,7 @@ The position to insert at
rangerange A model of Forward @@ -91,46 +91,46 @@
- + Expression Semantics
-insert(seq, pos, range);
+insert(seq, pos, range);
 

- Return type: A model of Return type: A model of Forward Sequence.

- Semantics: Returns a new sequence, containing - all the elements of seq, - and the elements of range - inserted at iterator pos. + Semantics: Returns a new sequence, containing + all the elements of seq, + and the elements of range + inserted at iterator pos. 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>
 
- + Example
-const vector<int,int> vec(1,2);
-assert(insert_range(vec, next(begin(vec)), make_vector(3,4)) == make_vector(1,3,4,2));
+const vector<int,int> vec(1,2);
+assert(insert_range(vec, next(begin(vec)), make_vector(3,4)) == make_vector(1,3,4,2));
 
diff --git a/doc/html/fusion/algorithms/transformation/functions/join.html b/doc/html/fusion/algorithms/transformation/functions/join.html index a8c6a16c..addbb517 100644 --- a/doc/html/fusion/algorithms/transformation/functions/join.html +++ b/doc/html/fusion/algorithms/transformation/functions/join.html @@ -3,7 +3,7 @@ join - + @@ -26,7 +26,7 @@
- + Description

@@ -34,17 +34,17 @@ first followed by the elements of the second.

- + Synopsis
 template<
     typename LhSequence,
     typename RhSequence>
-typename result_of::join<LhSequence, RhSequence>::type join(LhSequence const& lhs, RhSequence const& rhs);
+typename result_of::join<LhSequence, RhSequence>::type join(LhSequence const& lhs, RhSequence const& rhs);
 
-

Table 1.66. Parameters

+

Table 1.66. Parameters

@@ -58,7 +58,7 @@ - + - +
lhslhs A model of Forward @@ -67,7 +67,7 @@ Operation's argument
rhsrhs A model of Forward @@ -79,46 +79,46 @@
- + Expression Semantics
-join(lhs, rhs);
+join(lhs, rhs);
 

- Return type: A model of Return type: A model of Forward Sequence.

- Semantics: Returns a sequence containing - all the elements of lhs - followed by all the elements of rhs. + Semantics: Returns a sequence containing + all the elements of lhs + followed by all the elements of rhs. The order of th elements is preserved.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/join.hpp>
 
- + Example
-vector<int,char> v1(1, 'a');
-vector<int,char> v2(2, 'b');
-assert(join(v1, v2) == make_vector(1,'a',2,'b'));
+vector<int,char> v1(1, 'a');
+vector<int,char> v2(2, 'b');
+assert(join(v1, v2) == make_vector(1,'a',2,'b'));
 
diff --git a/doc/html/fusion/algorithms/transformation/functions/pop_back.html b/doc/html/fusion/algorithms/transformation/functions/pop_back.html index 744f3b18..49cec13c 100644 --- a/doc/html/fusion/algorithms/transformation/functions/pop_back.html +++ b/doc/html/fusion/algorithms/transformation/functions/pop_back.html @@ -3,7 +3,7 @@ pop_back - + @@ -26,24 +26,24 @@
- + Description

Returns a new sequence, with the last element of the original removed.

- + Synopsis
 template<
     typename Sequence
     >
-typename result_of::pop_back<Sequence const>::type pop_back(Sequence const& seq);
+typename result_of::pop_back<Sequence const>::type pop_back(Sequence const& seq);
 
-

Table 1.68. Parameters

+

Table 1.68. Parameters

@@ -56,7 +56,7 @@ - +
Description
seqseq A model of Forward @@ -67,44 +67,44 @@
- + Expression Semantics
-pop_back(seq);
+pop_back(seq);
 

- Return type: A model of Return type: A model of Forward Sequence.

- Semantics: Returns a new sequence containing - all the elements of seq, + Semantics: Returns a new sequence containing + all the elements of seq, except the last element. The elements in the new sequence are in the - same order as they were in seq. + 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>
 
- + Example
-assert(___pop_back__(make_vector(1,2,3)) == make_vector(1,2));
+assert(___pop_back__(make_vector(1,2,3)) == make_vector(1,2));
 
diff --git a/doc/html/fusion/algorithms/transformation/functions/pop_front.html b/doc/html/fusion/algorithms/transformation/functions/pop_front.html index 19d8c169..03accb92 100644 --- a/doc/html/fusion/algorithms/transformation/functions/pop_front.html +++ b/doc/html/fusion/algorithms/transformation/functions/pop_front.html @@ -3,7 +3,7 @@ pop_front - + @@ -26,24 +26,24 @@
- + Description

Returns a new sequence, with the first element of the original removed.

- + Synopsis
 template<
     typename Sequence
     >
-typename result_of::pop_front<Sequence const>::type pop_front(Sequence const& seq);
+typename result_of::pop_front<Sequence const>::type pop_front(Sequence const& seq);
 
-

Table 1.69. Parameters

+

Table 1.69. Parameters

@@ -56,7 +56,7 @@ - +
Description
seqseq A model of Forward @@ -67,44 +67,44 @@
- + Expression Semantics
-pop_front(seq);
+pop_front(seq);
 

- Return type: A model of Return type: A model of Forward Sequence.

- Semantics: Returns a new sequence containing - all the elements of seq, + Semantics: Returns a new sequence containing + all the elements of seq, except the first element. The elements in the new sequence are in the - same order as they were in seq. + 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>
 
- + Example
-assert(pop_front(make_vector(1,2,3)) == make_vector(2,3));
+assert(pop_front(make_vector(1,2,3)) == make_vector(2,3));
 
diff --git a/doc/html/fusion/algorithms/transformation/functions/push_back.html b/doc/html/fusion/algorithms/transformation/functions/push_back.html index 367cac27..6937d725 100644 --- a/doc/html/fusion/algorithms/transformation/functions/push_back.html +++ b/doc/html/fusion/algorithms/transformation/functions/push_back.html @@ -3,7 +3,7 @@ push_back - + @@ -26,14 +26,14 @@
- + Description

Returns a new sequence with an element added at the end.

- + Synopsis
@@ -41,11 +41,11 @@
     typename Sequence,
     typename T
     >
-typename result_of::push_back<Sequence, T>::type push_back(
+typename result_of::push_back<Sequence, T>::type push_back(
     Sequence const& seq, T const& t);
 
-

Table 1.70. Parameters

+

Table 1.70. Parameters

@@ -59,7 +59,7 @@ - + - + @@ -77,44 +77,44 @@
seqseq A model of Forward @@ -68,7 +68,7 @@ Operation's argument
tt Any type The value to add to the end
- + Expression Semantics
-push_back(seq, t);
+push_back(seq, t);
 

- Return type: A model of Return type: A model of Forward Sequence.

- Semantics: Returns a new sequence, containing - all the elements of seq, - and new element t appended - to the end. The elements are in the same order as they were in seq. + Semantics: Returns a new sequence, containing + all the elements of seq, + and new element t appended + 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>
 
- + Example
-assert(push_back(make_vector(1,2,3),4) == make_vector(1,2,3,4));
+assert(push_back(make_vector(1,2,3),4) == make_vector(1,2,3,4));
 
diff --git a/doc/html/fusion/algorithms/transformation/functions/push_front.html b/doc/html/fusion/algorithms/transformation/functions/push_front.html index 0742ff0a..a4e3951d 100644 --- a/doc/html/fusion/algorithms/transformation/functions/push_front.html +++ b/doc/html/fusion/algorithms/transformation/functions/push_front.html @@ -3,7 +3,7 @@ push_front - + @@ -26,14 +26,14 @@
- + Description

Returns a new sequence with an element added at the beginning.

- + Synopsis
@@ -41,11 +41,11 @@
     typename Sequence,
     typename T
     >
-typename result_of::push_front<Sequence, T>::type push_front(
+typename result_of::push_front<Sequence, T>::type push_front(
     Sequence const& seq, T const& t);
 
-

Table 1.71. Parameters

+

Table 1.71. Parameters

@@ -59,7 +59,7 @@ - + - + @@ -77,45 +77,45 @@
seqseq A model of Forward @@ -68,7 +68,7 @@ Operation's argument
tt Any type The value to add to the beginning
- + Expression Semantics
-push_back(seq, t);
+push_back(seq, t);
 

- Return type: A model of Return type: A model of Forward Sequence.

- Semantics: Returns a new sequence, containing - all the elements of seq, - and new element t appended + Semantics: Returns a new sequence, containing + all the elements of seq, + and new element t appended to the beginning. The elements are in the same order as they were in - seq. + seq.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/push_front.hpp>
 
- + Example
-assert(push_front(make_vector(1,2,3),0) == make_vector(0,1,2,3));
+assert(push_front(make_vector(1,2,3),0) == make_vector(0,1,2,3));
 
diff --git a/doc/html/fusion/algorithms/transformation/functions/remove.html b/doc/html/fusion/algorithms/transformation/functions/remove.html index 2a88a993..5f691391 100644 --- a/doc/html/fusion/algorithms/transformation/functions/remove.html +++ b/doc/html/fusion/algorithms/transformation/functions/remove.html @@ -3,7 +3,7 @@ remove - + @@ -26,7 +26,7 @@
- + Description

@@ -34,7 +34,7 @@ except those of a given type.

- + Synopsis
@@ -42,10 +42,10 @@
     typename T,
     typename Sequence
     >
-typename result_of::remove<Sequence const, T>::type replace(Sequence const& seq);
+typename result_of::remove<Sequence const, T>::type replace(Sequence const& seq);
 
-

Table 1.58. Parameters

+

Table 1.58. Parameters

@@ -59,7 +59,7 @@ - + - + @@ -77,45 +77,45 @@
seqseq A model of Forward @@ -68,7 +68,7 @@ Operation's argument
TT Any type Type to remove
- + Expression Semantics
-remove<T>(seq);
+remove<T>(seq);
 

- Return type: A model of Return type: A model of Forward Sequence.

- Semantics: Returns a new sequence, containing - all the elements of seq, - in their original order, except those of type T. - Equivalent to remove_if<boost::is_same<_,T> >(seq). + Semantics: Returns a new sequence, containing + all the elements of seq, + in their original order, except those of type T. + 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>
 
- + Example
-const vector<int,double> vec(1,2.0);
-assert(remove<double>(vec) == make_vector(1));
+const vector<int,double> vec(1,2.0);
+assert(remove<double>(vec) == make_vector(1));
 
diff --git a/doc/html/fusion/algorithms/transformation/functions/remove_if.html b/doc/html/fusion/algorithms/transformation/functions/remove_if.html index 68fea876..236acfa6 100644 --- a/doc/html/fusion/algorithms/transformation/functions/remove_if.html +++ b/doc/html/fusion/algorithms/transformation/functions/remove_if.html @@ -3,7 +3,7 @@ remove_if - + @@ -26,15 +26,15 @@
- + Description

Returns a new sequence, containing all the elements of the original except - those where a given unary function object evaluates to true. + those where a given unary function object evaluates to true.

- + Synopsis
@@ -42,10 +42,10 @@
     typename Pred,
     typename Sequence
     >
-typename result_of::remove_if<Sequence const, Pred>::type remove_if(Sequence const& seq);
+typename result_of::remove_if<Sequence const, Pred>::type remove_if(Sequence const& seq);
 
-

Table 1.59. Parameters

+

Table 1.59. Parameters

@@ -59,7 +59,7 @@ - + - + @@ -77,46 +77,46 @@
seqseq A model of Forward @@ -68,7 +68,7 @@ Operation's argument
PredPred A model of unary MPL Lambda Expression Removal predicate
- + Expression Semantics
-remove_if<Pred>(seq);
+remove_if<Pred>(seq);
 

- Return type: A model of Return type: A model of Forward Sequence.

- Semantics: Returns a new sequence, containing - all the elements of seq, + Semantics: Returns a new sequence, containing + all the elements of seq, in their original order, except those elements with types for which - Pred evaluates to boost::mpl::true_. Equivalent to filter<boost::mpl::not_<Pred> - >(seq). + Pred evaluates to boost::mpl::true_. Equivalent to filter<boost::mpl::not_<Pred> + >(seq).

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/remove_if.hpp>
 
- + Example
-const vector<int,double> vec(1,2.0);
-assert(remove_if<is_floating_point<mpl::_> >(vec) == make_vector(1));
+const vector<int,double> vec(1,2.0);
+assert(remove_if<is_floating_point<mpl::_> >(vec) == make_vector(1));
 
diff --git a/doc/html/fusion/algorithms/transformation/functions/replace.html b/doc/html/fusion/algorithms/transformation/functions/replace.html index 753f7e22..3921ab16 100644 --- a/doc/html/fusion/algorithms/transformation/functions/replace.html +++ b/doc/html/fusion/algorithms/transformation/functions/replace.html @@ -3,7 +3,7 @@ replace - + @@ -26,7 +26,7 @@
- + Description

@@ -34,7 +34,7 @@ a new value.

- + Synopsis
@@ -42,11 +42,11 @@
     typename Sequence,
     typename T
     >
-typename result_of::replace<Sequence const, T>::type replace(
+typename result_of::replace<Sequence const, T>::type replace(
     Sequence const& seq, T const& old_value, T const& new_value);
 
-

Table 1.56. Parameters

+

Table 1.56. Parameters

@@ -60,27 +60,27 @@ - + - + - + @@ -89,44 +89,44 @@
seqseq A model of Forward - Sequence, e == old_value - is a valid expression, convertible to bool, - for each element e - in seq with type - convertible to T + Sequence, e == old_value + is a valid expression, convertible to bool, + for each element e + in seq with type + convertible to T Operation's argument
old_valueold_value Any type Value to replace
new_valuenew_value Any type Replacement value
- + Expression Semantics
-replace(seq, old_value, new_value);
+replace(seq, old_value, new_value);
 

- Return type: A model of Return type: A model of Forward Sequence.

- Semantics: Returns a new sequence with - all the values of seq - with new_value assigned - to elements with the same type and equal to old_value. + Semantics: Returns a new sequence with + all the values of seq + with new_value assigned + 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>
 
- + Example
-assert(replace(make_vector(1,2), 2, 3) == make_vector(1,3));
+assert(replace(make_vector(1,2), 2, 3) == make_vector(1,3));
 
diff --git a/doc/html/fusion/algorithms/transformation/functions/replace_if.html b/doc/html/fusion/algorithms/transformation/functions/replace_if.html index ca807d8f..16926287 100644 --- a/doc/html/fusion/algorithms/transformation/functions/replace_if.html +++ b/doc/html/fusion/algorithms/transformation/functions/replace_if.html @@ -3,7 +3,7 @@ replace_if - + @@ -26,16 +26,16 @@
- + Description

Replaces each element of a given sequence for which an unary function - object evaluates to true + object evaluates to true replaced with a new value.

- + Synopsis
@@ -43,11 +43,11 @@
     typename Sequence,
     typename F,
     typename T>
-typename result_of::replace_if<Sequence const, F, T>::type replace_if(
+typename result_of::replace_if<Sequence const, F, T>::type replace_if(
     Sequence const& seq, F f, T const& new_value);
 
-

Table 1.57. Parameters

+

Table 1.57. Parameters

@@ -61,7 +61,7 @@ - + - + - + @@ -88,41 +88,41 @@
seqseq A model of Forward @@ -70,16 +70,16 @@ Operation's argument
ff A - function object for which f(e) is a valid expression, convertible - to bool, for each element - e in seq + function object for which f(e) is a valid expression, convertible + to bool, for each element + e in seq Operation's argument
new_valuenew_value Any type Replacement value
- + Expression Semantics
-replace_if(seq, f, new_value);
+replace_if(seq, f, new_value);
 

- Return type: A model of Return type: A model of Forward Sequence.

- Semantics: Returns a new sequence with - all the elements of seq, - with new_value assigned - to each element for which f - evaluates to true. + Semantics: Returns a new sequence with + all the elements of seq, + with new_value assigned + to each element for which f + evaluates to true.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/replace_if.hpp>
 
- + Example
@@ -135,7 +135,7 @@
     }
 };
 ...
-assert(replace_if(make_vector(1,2), odd(), 3) == make_vector(3,2));
+assert(replace_if(make_vector(1,2), odd(), 3) == make_vector(3,2));
 
diff --git a/doc/html/fusion/algorithms/transformation/functions/reverse.html b/doc/html/fusion/algorithms/transformation/functions/reverse.html index d5b7f11a..62a583cb 100644 --- a/doc/html/fusion/algorithms/transformation/functions/reverse.html +++ b/doc/html/fusion/algorithms/transformation/functions/reverse.html @@ -3,7 +3,7 @@ reverse - + @@ -26,24 +26,24 @@
- + Description

Returns a new sequence with the elements of the original in reverse order.

- + Synposis
 template<
     typename Sequence
     >
-typename result_of::reverse<Sequence const>::type reverse(Sequence const& seq);
+typename result_of::reverse<Sequence const>::type reverse(Sequence const& seq);
 
-

Table 1.60. Parameters

+

Table 1.60. Parameters

@@ -56,7 +56,7 @@ - +
Description
seqseq A model of Bidirectional @@ -67,43 +67,43 @@
- + Expression Semantics
-reverse(seq);
+reverse(seq);
 

- Return type: A model of Return type: A model of Bidirectional Sequence.

- Semantics: Returns a new sequence containing - all the elements of seq + Semantics: Returns a new sequence containing + all the elements of seq in reverse order.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/reverse.hpp>
 
- + Example
-assert(reverse(make_vector(1,2,3)) == make_vector(3,2,1));
+assert(reverse(make_vector(1,2,3)) == make_vector(3,2,1));
 
diff --git a/doc/html/fusion/algorithms/transformation/functions/transform.html b/doc/html/fusion/algorithms/transformation/functions/transform.html index 06d0e990..9e8798e0 100644 --- a/doc/html/fusion/algorithms/transformation/functions/transform.html +++ b/doc/html/fusion/algorithms/transformation/functions/transform.html @@ -3,7 +3,7 @@ transform - + @@ -26,19 +26,19 @@
- + Description

- For a sequence seq and + For a sequence seq and Polymorphic Function - Object F, transform returns a new sequence with - elements created by applying F - to each element of seq. + Object F, transform returns a new sequence with + elements created by applying F + to each element of seq.

- + Unary version synopsis
@@ -47,11 +47,11 @@ typenameSequence,typenameF> -typenameresult_of::transform<Sequenceconst,F>::typetransform( +typenameresult_of::transform<Sequenceconst,F>::typetransform(Sequenceconst&seq,Ff);
-

Table 1.54. Parameters

+

Table 1.54. Parameters

@@ -65,7 +65,7 @@ - + - + @@ -88,25 +88,25 @@
seqseq A model of Forward @@ -74,12 +74,12 @@ Operation's argument
ff A model of unary Polymorphic - Function Object where f(e) is a valid expression for each element - e of seq + Function Object where f(e) is a valid expression for each element + e of seq Transformation function
- + Expression Semantics
-transform(seq, f);
+transform(seq, f);
 

- Return type: A model of Return type: A model of Forward Sequence

- Semantics: Returns a new sequence, containing - the return values of f(e) for each element e - within seq. + Semantics: Returns a new sequence, containing + the return values of f(e) for each element e + within seq.

- + Binary version synopsis
@@ -116,11 +116,11 @@ typename Sequence2, typename F > -typename result_of::transform<Sequence1 const, Sequence2 const, F>::type transform( +typename result_of::transform<Sequence1 const, Sequence2 const, F>::type transform( Sequence1 const& seq1, Sequence2 const& seq2, F f);
-

Table 1.55. Parameters

+

Table 1.55. Parameters

@@ -134,7 +134,7 @@ - + - + - + @@ -166,31 +166,31 @@
seq1seq1 A model of Forward @@ -143,7 +143,7 @@ Operation's argument
seq2seq2 A model of Forward @@ -152,13 +152,13 @@ Operation's argument
ff A model of binary Polymorphic - Function Object where f(e1, e2) is a valid expression for each pair - of elements e1 and - e2 of seq1 and seq2 + Function Object where f(e1, e2) is a valid expression for each pair + of elements e1 and + e2 of seq1 and seq2 respectively Transformation function

- Return type: A model of Return type: A model of Forward Sequence.

- Semantics: Returns a new sequence, containing - the return values of f(e1, e2) for each pair of elements e1 and e2 - within seq1 and seq2 respectively. + Semantics: Returns a new sequence, containing + the return values of f(e1, e2) for each pair of elements e1 and e2 + within seq1 and seq2 respectively.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/transform.hpp>
 
- + Example
@@ -209,7 +209,7 @@
     };
 };
 ...
-assert(transform(make_vector(1,2,3), triple()) == make_vector(3,6,9));
+assert(transform(make_vector(1,2,3), triple()) == make_vector(3,6,9));
 
diff --git a/doc/html/fusion/algorithms/transformation/functions/zip.html b/doc/html/fusion/algorithms/transformation/functions/zip.html index 4bd5fc12..2efc5375 100644 --- a/doc/html/fusion/algorithms/transformation/functions/zip.html +++ b/doc/html/fusion/algorithms/transformation/functions/zip.html @@ -3,7 +3,7 @@ zip - + @@ -26,7 +26,7 @@
- + Description

@@ -34,7 +34,7 @@ of the members of the component sequences.

- + Synopsis
@@ -44,11 +44,11 @@
     ...
     typename SequenceN
     >
-typename result_of::zip<Sequence1, Sequence2, ... SequenceN>::type 
+typename result_of::zip<Sequence1, Sequence2, ... SequenceN>::type 
 zip(Sequence1 const& seq1, Sequence2 const& seq2, ... SequenceN const& seqN);
 
-

Table 1.67. Parameters

+

Table 1.67. Parameters

@@ -62,7 +62,7 @@ - + - + - + - + @@ -123,7 +123,7 @@
-seq1 to seqN +seq1 to seqN Each sequence is a model of
- + Expression Semantics
-zip(seq1, seq2, ... seqN);
+zip(seq1, seq2, ... seqN);
 

- Return type: A model of Return type: A model of Forward Sequence.

- Semantics: Returns a sequence containing - tuples of elements from sequences seq1 - to seqN. For example, - applying zip to tuples (1, 2, 3) - and ('a', 'b', - 'c') - would return ((1, 'a'),(2, 'b'),(3, - 'c')) + Semantics: Returns a sequence containing + tuples of elements from sequences seq1 + to seqN. For example, + applying zip to tuples (1, 2, 3) + and ('a', 'b', + 'c') + would return ((1, 'a'),(2, 'b'),(3, + 'c'))

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
 #include <boost/fusion/algorithm/transformation/zip.hpp>
 
- + Example
-vector<int,char> v1(1, 'a');
-vector<int,char> v2(2, 'b');
-assert(zip(v1, v2) == make_vector(make_vector(1, 2),make_vector('a', 'b'));
+vector<int,char> v1(1, 'a');
+vector<int,char> v2(2, 'b');
+assert(zip(v1, v2) == make_vector(make_vector(1, 2),make_vector('a', 'b'));
 
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions.html b/doc/html/fusion/algorithms/transformation/metafunctions.html index 9bbf8a1e..8394ae79 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions.html @@ -3,7 +3,7 @@ Metafunctions - + diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/clear.html b/doc/html/fusion/algorithms/transformation/metafunctions/clear.html index c6805831..4b7ccbd4 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions/clear.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions/clear.html @@ -3,7 +3,7 @@ clear - + @@ -26,15 +26,15 @@
- + Description

- Returns the result type of clear, given the input sequence + Returns the result type of clear, given the input sequence type.

- + Synopsis
@@ -47,7 +47,7 @@
 };
 
-

Table 1.80. Parameters

+

Table 1.80. Parameters

@@ -60,7 +60,7 @@ - + @@ -68,30 +68,30 @@
Description
SequenceSequence Any type Operation's argument
- + Expression Semantics
-result_of::clear<Sequence>::type
+result_of::clear<Sequence>::type
 

- Return type: A model of Return type: A model of Forward Sequence.

- Semantics: Returns an empty sequence. + Semantics: Returns an empty sequence.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/erase.html b/doc/html/fusion/algorithms/transformation/metafunctions/erase.html
index 927c3c3c..9848b0ef 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/erase.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/erase.html
@@ -3,7 +3,7 @@
 
 erase
 
-
+
 
 
 
@@ -26,15 +26,15 @@
 
 

- Returns the result type of erase, given the input sequence + Returns the result type of erase, given the input sequence and range delimiting iterator types.

- + Description
- + Synopsis
@@ -48,7 +48,7 @@
 };
 
-

Table 1.81. Parameters

+

Table 1.81. Parameters

@@ -62,7 +62,7 @@ - + - + - +
SequenceSequence A model of Forward @@ -71,7 +71,7 @@ Operation's argument
It1It1 A model of Forward @@ -80,7 +80,7 @@ Operation's argument
It2It2 A model of Forward @@ -92,44 +92,44 @@
- + Expression Semantics
-result_of::erase<Sequence, It1>::type
+result_of::erase<Sequence, It1>::type
 

- Return type: A model of Return type: A model of Forward Sequence.

- Semantics: Returns a new sequence with - the element at It1 removed. + Semantics: Returns a new sequence with + the element at It1 removed.

-result_of::erase<Sequence, It1, It2>::type
+result_of::erase<Sequence, It1, It2>::type
 

- Return type: A model of Return type: A model of Forward Sequence.

- Semantics: Returns a new sequence with - the elements between It1 - and It2 removed. + Semantics: Returns a new sequence with + the elements between It1 + and It2 removed.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html b/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html
index 8152721a..d7bb8e8a 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html
@@ -3,7 +3,7 @@
 
 erase_key
 
-
+
 
 
 
@@ -26,15 +26,15 @@
 
 
- + Description

- Returns the result type of erase_key, given the sequence + Returns the result type of erase_key, given the sequence and key types.

- + Synopsis
@@ -48,7 +48,7 @@
 };
 
-

Table 1.82. Parameters

+

Table 1.82. Parameters

@@ -62,7 +62,7 @@ - + - + @@ -80,32 +80,32 @@
SequenceSequence A model of Associative @@ -71,7 +71,7 @@ Operation's argument
KeyKey Any type Key type
- + Expression Semantics
-result_of::erase_key<Sequence, Key>::type
+result_of::erase_key<Sequence, Key>::type
 

- Return type: A model of Return type: A model of Associative Sequence.

- Semantics: Returns a sequence with the - elements of Sequence, - except those with key Key. + Semantics: Returns a sequence with the + elements of Sequence, + except those with key Key.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/filter.html b/doc/html/fusion/algorithms/transformation/metafunctions/filter.html
index daec1dca..a513f25a 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/filter.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/filter.html
@@ -3,7 +3,7 @@
 
 filter
 
-
+
 
 
 
@@ -26,15 +26,15 @@
 
 
- + Description

- Returns the result type of filter given the sequence type + Returns the result type of filter given the sequence type and type to retain.

- + Synopsis
@@ -48,7 +48,7 @@
 };
 
-

Table 1.72. Parameter

+

Table 1.72. Parameter

@@ -62,7 +62,7 @@ - + - + @@ -80,34 +80,34 @@
SequenceSequence A model of Forward @@ -71,7 +71,7 @@ Operation's argument
TT Any type Type to retain
- + Expression Semantics
-result_of::filter<Sequence, T>::type
+result_of::filter<Sequence, T>::type
 

- Return type: A model of Return type: A model of Forward Sequence.

- Semantics: Returns a sequence containing - the elements of Sequence - that are of type T. Equivalent - to result_of::filter_if<Sequence, - boost::is_same<mpl::_, T> >::type. + Semantics: Returns a sequence containing + the elements of Sequence + that are of type T. Equivalent + to result_of::filter_if<Sequence, + boost::is_same<mpl::_, T> >::type.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html
index 97dbbebf..5156495c 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html
@@ -3,7 +3,7 @@
 
 filter_if
 
-
+
 
 
 
@@ -26,15 +26,15 @@
 
 
- + Description

- Returns the result type of filter_if given the sequence + Returns the result type of filter_if given the sequence and unary MPL Lambda Expression predicate type.

- + Synopsis
@@ -48,7 +48,7 @@
 };
 
-

Table 1.73. Parameter

+

Table 1.73. Parameter

@@ -62,7 +62,7 @@ - + - + @@ -80,33 +80,33 @@
SequenceSequence A model of Forward @@ -71,7 +71,7 @@ Operation's argument
PredPred A unary MPL Lambda Expression Type to retain
- + Expression Semantics
-result_of::filter_if<Sequence, Pred>::type
+result_of::filter_if<Sequence, Pred>::type
 

- Return type: A model of Return type: A model of Forward Sequence.

- Semantics: Returns a sequence containing - the elements of Sequence - for which Pred evaluates - to boost::mpl::true_. + Semantics: Returns a sequence containing + the elements of Sequence + for which Pred evaluates + to boost::mpl::true_.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/insert.html b/doc/html/fusion/algorithms/transformation/metafunctions/insert.html
index 25743178..f380369b 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/insert.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/insert.html
@@ -3,7 +3,7 @@
 
 insert
 
-
+
 
 
 
@@ -26,15 +26,15 @@
 
 
- + Description

- Returns the result type of insert, given the sequence, + Returns the result type of insert, given the sequence, position iterator and insertion types.

- + Synopsis
@@ -49,7 +49,7 @@
 };
 
-

Table 1.83. Parameters

+

Table 1.83. Parameters

@@ -63,7 +63,7 @@ - + - + - + @@ -90,33 +90,33 @@
SequenceSequence A model of Forward @@ -72,7 +72,7 @@ Operation's argument
PositionPosition A model of Forward @@ -81,7 +81,7 @@ Operation's argument
TT Any type Operation's argument
- + Expression Semantics
-result_of::insert<Sequence, Position, T>::type
+result_of::insert<Sequence, Position, T>::type
 

- Return type: A model of Return type: A model of Forward Sequence.

- Semantics: Returns a sequence with an - element of type T inserted - at position Position - in Sequence. + Semantics: Returns a sequence with an + element of type T inserted + at position Position + in Sequence.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html b/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html
index 19d2b878..832f3de5 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html
@@ -3,7 +3,7 @@
 
 insert_range
 
-
+
 
 
 
@@ -26,15 +26,15 @@
 
 
- + Description

- Returns the result type of insert_range, given the input + Returns the result type of insert_range, given the input sequence, position iterator and insertion range types.

- + Synopsis
@@ -49,7 +49,7 @@
 };
 
-

Table 1.84. Parameters

+

Table 1.84. Parameters

@@ -63,7 +63,7 @@ - + - + - +
SequenceSequence A model of Forward @@ -72,7 +72,7 @@ Operation's argument
PositionPosition A model of Forward @@ -81,7 +81,7 @@ Operation's argument
RangeRange A model of Forward @@ -93,33 +93,33 @@
- + Expression Semantics
-result_of::insert_range<Sequence, Position, Range>::type
+result_of::insert_range<Sequence, Position, Range>::type
 

- Return type: A model of Return type: A model of Forward Sequence.

- Semantics: Returns a sequence with the - elements of Range inserted - at position Position - into Sequence. + Semantics: Returns a sequence with the + elements of Range inserted + at position Position + into Sequence.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/join.html b/doc/html/fusion/algorithms/transformation/metafunctions/join.html
index c817b13a..bbb47996 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/join.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/join.html
@@ -3,7 +3,7 @@
 
 join
 
-
+
 
 
 
@@ -26,14 +26,14 @@
 
 
- + Description

Returns the result of joining 2 sequences, given the sequence types.

- + Synopsis
@@ -47,33 +47,33 @@
 };
 
- + Expression Semantics
-result_of::join<LhSequence, RhSequence>::type
+result_of::join<LhSequence, RhSequence>::type
 

- Return type: A model of Return type: A model of Forward Sequence.

- Semantics: Returns a sequence containing - the elements of LhSequence - followed by the elements of RhSequence. + Semantics: Returns a sequence containing + the elements of LhSequence + followed by the elements of RhSequence. The order of the elements in the 2 sequences is preserved.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html b/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html
index 19937af4..cd882ed8 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html
@@ -3,7 +3,7 @@
 
 pop_back
 
-
+
 
 
 
@@ -26,15 +26,15 @@
 
 
- + Description

- Returns the result type of pop_back, given the input sequence + Returns the result type of pop_back, given the input sequence type.

- + Synopsis
@@ -47,7 +47,7 @@
 };
 
-

Table 1.85. Parameters

+

Table 1.85. Parameters

@@ -60,7 +60,7 @@ - +
Description
SequenceSequence A model of Forward @@ -71,32 +71,32 @@
- + Expression Semantics
-result_of::pop_back<Sequence>::type
+result_of::pop_back<Sequence>::type
 

- Return type: A model of Return type: A model of Forward Sequence.

- Semantics: Returns a sequence with all - the elements of Sequence + Semantics: Returns a sequence with all + the elements of Sequence except the last element.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html b/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html
index dec81c11..015eea3d 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html
@@ -3,7 +3,7 @@
 
 pop_front
 
-
+
 
 
 
@@ -26,15 +26,15 @@
 
 
- + Description

- Returns the result type of pop_front, given the input sequence + Returns the result type of pop_front, given the input sequence type.

- + Synopsis
@@ -47,7 +47,7 @@
 };
 
-

Table 1.86. Parameters

+

Table 1.86. Parameters

@@ -60,7 +60,7 @@ - +
Description
SequenceSequence A model of Forward @@ -71,32 +71,32 @@
- + Expression Semantics
-result_of::pop_front<Sequence>::type
+result_of::pop_front<Sequence>::type
 

- Return type: A model of Return type: A model of Forward Sequence.

- Semantics: Returns a sequence with all - the elements of Sequence + Semantics: Returns a sequence with all + the elements of Sequence except the first element.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html b/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html
index 3be4a2bb..c55e4b15 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html
@@ -3,7 +3,7 @@
 
 push_back
 
-
+
 
 
 
@@ -26,15 +26,15 @@
 
 
- + Description

- Returns the result type of push_back, given the types of + Returns the result type of push_back, given the types of the input sequence and element to push.

- + Synopsis
@@ -48,7 +48,7 @@
 };
 
-

Table 1.87. Parameters

+

Table 1.87. Parameters

@@ -62,7 +62,7 @@ - + - + @@ -80,33 +80,33 @@
SequenceSequence A model of Forward @@ -71,7 +71,7 @@ Operation's argument
TT Any type Operation's argument
- + Expression Semantics
-result_of::push_back<Sequence, T>::type
+result_of::push_back<Sequence, T>::type
 

- Return type: A model of Return type: A model of Forward Sequence.

- Semantics: Returns a sequence with the - elements of Sequence - and an element of type T + Semantics: Returns a sequence with the + elements of Sequence + and an element of type T added to the end.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html b/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html
index 083047b2..6a7f294c 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html
@@ -3,7 +3,7 @@
 
 push_front
 
-
+
 
 
 
@@ -26,15 +26,15 @@
 
 
- + Description

- Returns the result type of push_front, given the types + Returns the result type of push_front, given the types of the input sequence and element to push.

- + Synopsis
@@ -48,7 +48,7 @@
 };
 
-

Table 1.88. Parameters

+

Table 1.88. Parameters

@@ -62,7 +62,7 @@ - + - + @@ -80,33 +80,33 @@
SequenceSequence A model of Forward @@ -71,7 +71,7 @@ Operation's argument
TT Any type Operation's argument
- + Expression Semantics
-result_of::push_front<Sequence, T>::type
+result_of::push_front<Sequence, T>::type
 

- Return type: A model of Return type: A model of Forward Sequence.

- Semantics: Returns a sequence with the - elements of Sequence - and an element of type T + Semantics: Returns a sequence with the + elements of Sequence + and an element of type T added to the beginning.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/remove.html b/doc/html/fusion/algorithms/transformation/metafunctions/remove.html
index d8221aba..34f3bbd1 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/remove.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/remove.html
@@ -3,7 +3,7 @@
 
 remove
 
-
+
 
 
 
@@ -26,15 +26,15 @@
 
 
- + Description

- Returns the result type of remove, given the sequence and + Returns the result type of remove, given the sequence and removal types.

- + Synopsis
@@ -48,7 +48,7 @@
 };
 
-

Table 1.77. Parameters

+

Table 1.77. Parameters

@@ -62,7 +62,7 @@ - + - + @@ -80,34 +80,34 @@
SequenceSequence A model of Forward @@ -71,7 +71,7 @@ Operation's argument
TT Any type Remove elements of this type
- + Expression Semantics
-result_of::remove<Sequence, T>::type
+result_of::remove<Sequence, T>::type
 

- Return type: A model of Return type: A model of Forward Sequence.

- Semantics: Returns a sequence containing - the elements of Sequence - not of type T. Equivalent - to result_of::replace_if<Sequence, - boost::is_same<mpl::_, T> >::type. + Semantics: Returns a sequence containing + the elements of Sequence + not of type T. Equivalent + to result_of::replace_if<Sequence, + boost::is_same<mpl::_, T> >::type.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html
index ceaccb9b..0a8f37c1 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html
@@ -3,7 +3,7 @@
 
 remove_if
 
-
+
 
 
 
@@ -26,15 +26,15 @@
 
 
- + Description

- Returns the result type of remove_if, given the input sequence + Returns the result type of remove_if, given the input sequence and unary MPL Lambda Expression predicate types.

- + Synopsis
@@ -48,7 +48,7 @@
 };
 
-

Table 1.78. Parameters

+

Table 1.78. Parameters

@@ -62,7 +62,7 @@ - + - +
SequenceSequence A model of Forward @@ -71,44 +71,44 @@ Operation's argument
PredPred A model of unary MPL Lambda Expression Remove elements - which evaluate to boost::mpl::true_ + which evaluate to boost::mpl::true_
- + Expression Semantics
-result_of::remove_if<Sequence, Pred>::type
+result_of::remove_if<Sequence, Pred>::type
 

- Return type: A model of Return type: A model of Forward Sequence.

- Semantics: Returns a sequence containing - the elements of Sequence - for which Pred evaluates - to boost::mpl::false_. + Semantics: Returns a sequence containing + the elements of Sequence + for which Pred evaluates + to boost::mpl::false_.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/replace.html b/doc/html/fusion/algorithms/transformation/metafunctions/replace.html
index 0df9019b..af8c55ac 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/replace.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/replace.html
@@ -3,7 +3,7 @@
 
 replace
 
-
+
 
 
 
@@ -26,15 +26,15 @@
 
 
- + Description

- Returns the result type of replace, given the types of + Returns the result type of replace, given the types of the input sequence and element to replace.

- + Synopsis
@@ -48,7 +48,7 @@
 };
 
-

Table 1.75. Parameters

+

Table 1.75. Parameters

@@ -62,7 +62,7 @@ - + - + @@ -80,31 +80,31 @@
SequenceSequence A model of Forward @@ -71,7 +71,7 @@ Operation's argument
TT Any type The type of the search and replacement objects
- + Expression Semantics
-result_of::replace<Sequence,T>::type
+result_of::replace<Sequence,T>::type
 

- Return type: A model of Return type: A model of Forward Sequence.

- Semantics: Returns the return type of - replace. + Semantics: Returns the return type of + replace.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html
index da9ba87a..3465b4d0 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html
@@ -3,7 +3,7 @@
 
 replace_if
 
-
+
 
 
 
@@ -26,17 +26,17 @@
 
 
- + Description

- Returns the result type of replace_if, given the types + Returns the result type of replace_if, given the types of the sequence, Polymorphic Function Object predicate and replacement object.

- + Synopsis
@@ -50,7 +50,7 @@
 };
 
-

Table 1.76. Parameters

+

Table 1.76. Parameters

@@ -64,7 +64,7 @@ - + - + - + @@ -91,31 +91,31 @@
SequenceSequence A model of Forward @@ -73,7 +73,7 @@ Operation's argument
FF A model of unary Polymorphic @@ -82,7 +82,7 @@ Replacement predicate
TT Any type The type of the replacement object
- + Expression Semantics
-result_of::replace_if<Sequence,F,T>::type
+result_of::replace_if<Sequence,F,T>::type
 

- Return type: A model of Return type: A model of Forward Sequence.

- Semantics: Returns the return type of - replace_if. + Semantics: Returns the return type of + replace_if.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html b/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html
index 87169d88..855a6168 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html
@@ -3,7 +3,7 @@
 
 reverse
 
-
+
 
 
 
@@ -26,15 +26,15 @@
 
 
- + Description

- Returns the result type of reverse, given the input sequence + Returns the result type of reverse, given the input sequence type.

- + Synopsis
@@ -47,7 +47,7 @@
 };
 
-

Table 1.79. Parameters

+

Table 1.79. Parameters

@@ -60,7 +60,7 @@ - +
Description
SequenceSequence A model of Bidirectional @@ -71,31 +71,31 @@
- + Expression Semantics
-result_of::reverse<Sequence>::type
+result_of::reverse<Sequence>::type
 

- Return type: A model of Return type: A model of Bidirectional Sequence.

- Semantics: Returns a sequence with the - elements in the reverse order to Sequence. + Semantics: Returns a sequence with the + elements in the reverse order to Sequence.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/transform.html b/doc/html/fusion/algorithms/transformation/metafunctions/transform.html
index 2ce102e5..3a11c276 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/transform.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/transform.html
@@ -3,7 +3,7 @@
 
 transform
 
-
+
 
 
 
@@ -26,17 +26,17 @@
 
 
- + Description

- Returns the result of type transform, given the sequence + Returns the result of type transform, given the sequence and Polymorphic Function Object types.

- + Synopsis
@@ -50,7 +50,7 @@
 };
 
-

Table 1.74. Parameters

+

Table 1.74. Parameters

@@ -64,7 +64,7 @@ - + - +
SequenceSequence A model of Forward @@ -72,7 +72,7 @@ Operation's argument
FF A model of unary Polymorphic @@ -84,31 +84,31 @@
- + Expression Semantics
-result_of::transform<Sequence, F>::type
+result_of::transform<Sequence, F>::type
 

- Return type: A model of Return type: A model of Forward Sequence.

- Semantics: Returns a sequence with values - F::result<E>::type for each element type E in Sequence. + Semantics: Returns a sequence with values + F::result<E>::type for each element type E in Sequence.

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/zip.html b/doc/html/fusion/algorithms/transformation/metafunctions/zip.html
index 40113c95..3742232a 100644
--- a/doc/html/fusion/algorithms/transformation/metafunctions/zip.html
+++ b/doc/html/fusion/algorithms/transformation/metafunctions/zip.html
@@ -3,7 +3,7 @@
 
 zip
 
-
+
 
 
 
@@ -26,7 +26,7 @@
 
 
- + Description

@@ -34,7 +34,7 @@ of the members of the component sequences.

- + Synopsis
@@ -50,37 +50,37 @@
 };
 
- + Expression Semantics
-result_of::zip<Sequence1, Sequence2, ... SequenceN>::type
+result_of::zip<Sequence1, Sequence2, ... SequenceN>::type
 

- Return type: A model of the most restrictive - traversal category of sequences Sequence1 - to SequenceN. + Return type: A model of the most restrictive + traversal category of sequences Sequence1 + to SequenceN.

- Semantics: Return a sequence containing + Semantics: Return a sequence containing tuples of elements from each sequence. For example, applying zip to tuples - (1, 2, - 3) - and ('a', 'b', - 'c') - would return ((1, 'a'),(2, 'b'),(3, - 'c')) + (1, 2, + 3) + and ('a', 'b', + 'c') + would return ((1, 'a'),(2, 'b'),(3, + 'c'))

- + Complexity

Constant.

- + Header
diff --git a/doc/html/fusion/change_log.html b/doc/html/fusion/change_log.html
index 8da6cb1f..d3079150 100644
--- a/doc/html/fusion/change_log.html
+++ b/doc/html/fusion/change_log.html
@@ -3,7 +3,7 @@
 
 Change log
 
-
+
 
 
 
@@ -30,11 +30,11 @@
     

  • - Sep 27, 2006: Added boost::tuple + Sep 27, 2006: Added boost::tuple support.
  • - Nov 17, 2006: Added boost::variant + Nov 17, 2006: Added boost::variant support.
diff --git a/doc/html/fusion/extension.html b/doc/html/fusion/extension.html index e9a1928b..627fbd55 100644 --- a/doc/html/fusion/extension.html +++ b/doc/html/fusion/extension.html @@ -3,7 +3,7 @@ Extension - + @@ -27,8 +27,8 @@ Extension

The Fusion library is designed to be extensible, new sequences types can easily - be added. In fact, the library support for std::pair, - boost::array and MPL + be added. In fact, the library support for std::pair, + boost::array and MPL sequences is entirely provided using the extension mechanism.

@@ -48,7 +48,7 @@

- + Our example

@@ -73,14 +73,14 @@

We are going to pretend that this type has been provided by a 3rd party library, and therefore cannot be modified. We shall work through all the necessary steps - to enable example_struct to + to enable example_struct to serve as an Associative Sequence as described in the Quick Start guide.

- + Enabling Tag Dispatching

@@ -95,9 +95,9 @@ }

- Next we need to enable the traits::tag_of + Next we need to enable the traits::tag_of metafunction to return our newly chosen tag type for operations involving our - sequence. This is done by specializing traits::tag_of + sequence. This is done by specializing traits::tag_of for our sequence type.

@@ -112,8 +112,8 @@
 }}}
 

- traits::tag_of also has a second template argument, - that can be used in conjuction with boost::enable_if + traits::tag_of also has a second template argument, + that can be used in conjuction with boost::enable_if to provide tag support for groups of related types. This feature is not necessary for our sequence, but for an example see the code in:

@@ -121,7 +121,7 @@ #include <boost/fusion/sequence/adapted/mpl/tag_of.hpp>

- + Designing a suitable iterator

@@ -131,9 +131,9 @@ access iterator in our example.

- We will use a simple design, in which the 2 members of example_struct - are given numbered indices, 0 for name - and 1 for age respectively. + We will use a simple design, in which the 2 members of example_struct + are given numbered indices, 0 for name + and 1 for age respectively.

 template<typename Struct, int Pos>
@@ -160,37 +160,37 @@
         of the current element.
       
 
  • - The typedefs struct_type - and index provide convenient + The typedefs struct_type + and index provide convenient access to information we will need later in the implementation.
  • - The typedef category allows - the traits::category_of + The typedef category allows + the traits::category_of metafunction to establish the traversal category of the iterator.
  • - The constructor stores a reference to the example_struct + The constructor stores a reference to the example_struct being iterated over.
  • We also need to enable tag dispatching for our iterator type, with another specialization - of traits::tag_of. + of traits::tag_of.

    In isolation, the iterator implementation is pretty dry. Things should become clearer as we add features to our implementation.

    - + A first couple of instructive features

    - To start with, we will get the result_of::value_of metafunction working. To - do this, we provide a specialization of the boost::fusion::extension::value_of_impl + To start with, we will get the result_of::value_of metafunction working. To + do this, we provide a specialization of the boost::fusion::extension::value_of_impl template for our iterator's tag type.

    @@ -215,29 +215,29 @@
     

    The implementation itself is pretty simple, it just uses 2 partial specializations - to provide the type of the 2 different members of example_struct, + to provide the type of the 2 different members of example_struct, based on the index of the iterator.

    - To understand how value_of_impl - is used by the library we will look at the implementation of value_of: + To understand how value_of_impl + is used by the library we will look at the implementation of value_of:

     template <typename Iterator>
    -struct value_of
    +struct value_of
         : extension::value_of_impl<typename detail::tag_of<Iterator>::type>::
             template apply<Iterator>
     {};
     

    - So value_of + So value_of uses tag dispatching to select an MPL Metafunction Class to provide its functionality. You will notice this pattern throughout the implementation of Fusion.

    Ok, lets enable dereferencing of our iterator. In this case we must provide - a suitable specialization of deref_impl. + a suitable specialization of deref_impl.

     template<>
    @@ -275,17 +275,17 @@
     }
     

    - The use of deref_impl is very - similar to that of value_of_impl, - but it also provides some runtime functionality this time via the call static member function. To see how - deref_impl is used, lets have - a look at the implementation of deref: + The use of deref_impl is very + similar to that of value_of_impl, + but it also provides some runtime functionality this time via the call static member function. To see how + deref_impl is used, lets have + a look at the implementation of deref:

     namespace result_of
     {
         template <typename Iterator>
    -    struct deref
    +    struct deref
             : extension::deref_impl<typename detail::tag_of<Iterator>::type>::
                 template apply<Iterator>
         {};
    @@ -293,24 +293,24 @@
     
     template <typename Iterator>
     typename result_of::deref<Iterator>::type
    -deref(Iterator const& i)
    +deref(Iterator const& i)
     {
         typedef result_of::deref<Iterator> deref_meta;
         return deref_meta::call(i);
     }
     

    - So again result_of::deref uses tag - dispatching in exactly the same way as the value_of implementation. The runtime - functionality used by deref is provided by the call static function of the selected MPL + So again result_of::deref uses tag + dispatching in exactly the same way as the value_of implementation. The runtime + functionality used by deref is provided by the call static function of the selected MPL Metafunction Class.

    - The actual implementation of deref_impl - is slightly more complex than that of value_of_impl. - We also need to implement the call + The actual implementation of deref_impl + is slightly more complex than that of value_of_impl. + We also need to implement the call function, which returns a reference to the appropriate member of the underlying - sequence. We also require a little bit of metaprogramming to return const references if the underlying sequence + sequence. We also require a little bit of metaprogramming to return const references if the underlying sequence is const.

    @@ -318,23 +318,23 @@ -
    [Note] Note

    +

    Although there is a fair amount of left to do to produce a fully fledged - Fusion sequence, value_of and deref illustrate all the signficant + Fusion sequence, value_of and deref illustrate all the signficant concepts required. The remainder of the process is very repetitive, simply - requiring implementation of a suitable xxxx_impl - for each feature xxxx. + requiring implementation of a suitable xxxx_impl + for each feature xxxx.

    - + Implementing the remaining iterator functionality

    - Ok, now we have seen the way value_of and deref work, everything else will work + Ok, now we have seen the way value_of and deref work, everything else will work in pretty much the same way. Lets start with forward iteration, by providing - a next_impl: + a next_impl:

     template<>
    @@ -356,40 +356,40 @@
     };
     

    - This should be very familiar from our deref_impl + This should be very familiar from our deref_impl implementation, we will be using this approach again and again now. Our design - is simply to increment the index + is simply to increment the index counter to move on to the next element. The various other iterator manipulations - we need to perform will all just involve simple calculations with the index variables. + we need to perform will all just involve simple calculations with the index variables.

    - We also need to provide a suitable equal_to_impl + We also need to provide a suitable equal_to_impl so that iterators can be correctly compared. A Bidirectional - Iterator will also need an implementation of prior_impl. + Iterator will also need an implementation of prior_impl. For a Random - Access Iterator distance_impl - and advance_impl also need + Access Iterator distance_impl + and advance_impl also need to be provided in order to satisfy the necessary complexity guarantees. As our iterator is a Random Access Iterator we will have to implement all of these functions.

    - Full implementations of prior_impl, - advance_impl, distance_impl and equal_to_impl + Full implementations of prior_impl, + advance_impl, distance_impl and equal_to_impl are provided in the example code.

    - + Implementing the intrinsic functions of the sequence

    In order that Fusion can correctly identify our sequence as a Fusion sequence, - we need to enable is_sequence - for our sequence type. As usual we just create an impl + we need to enable is_sequence + for our sequence type. As usual we just create an impl type specialized for our sequence tag:

    @@ -401,14 +401,14 @@
     };
     

    - We've some similar formalities to complete, providing category_of_impl - so Fusion can correctly identify our sequence type, and is_view_impl + We've some similar formalities to complete, providing category_of_impl + so Fusion can correctly identify our sequence type, and is_view_impl so Fusion can correctly identify our sequence as not being a View type. Implementations are provide in the example code.

    Now we've completed some formalities, on to more interesting features. Lets - get begin working so that we can get an + get begin working so that we can get an iterator to start accessing the data in our sequence.

    @@ -431,32 +431,32 @@
     

    The implementation uses the same ideas we have applied throughout, in this case we are just creating one of the iterators we developed earlier, pointing - to the first element in the sequence. The implementation of end is very similar, and is provided + to the first element in the sequence. The implementation of end is very similar, and is provided in the example code.

    For our Random - Access Sequence we will also need to implement size_impl, - value_at_impl and at_impl. + Access Sequence we will also need to implement size_impl, + value_at_impl and at_impl.

    - + Enabling our type as an associative container

    - In order for example_struct + In order for example_struct to serve as an associative container, we need to enable 3 lookup features, - at_key, value_at_key and has_key. We also need to provide an - implementation of the is_associative + at_key, value_at_key and has_key. We also need to provide an + implementation of the is_associative trait so that our sequence can be correctly identified as an associative container.

    - To implement at_key_impl we - need to associate the fields::age and - fields::age types described in the Quick - Start guide with the appropriate members of example_struct. + To implement at_key_impl we + need to associate the fields::age and + fields::age types described in the Quick + Start guide with the appropriate members of example_struct. Our implementation is as follows:

    @@ -499,15 +499,15 @@
     

    Its all very similar to the implementations we've seen previously, such as - deref_impl and value_of_impl. Instead of identifying the - members by index or position, we are now selecting them using the types fields::name and fields::age. The - implementations of value_at_key_impl - and has_key_impl are equally + deref_impl and value_of_impl. Instead of identifying the + members by index or position, we are now selecting them using the types fields::name and fields::age. The + implementations of value_at_key_impl + and has_key_impl are equally straightforward, and are provided in the example code, along with an implementation - of is_associative_impl. + of is_associative_impl.

    - + Summary

    @@ -517,8 +517,8 @@ pattern.

    - The support for std::pair, MPL - sequences, and boost::array all use the same approach, and provide + The support for std::pair, MPL + sequences, and boost::array all use the same approach, and provide additional examples of the approach for a variety of types.

    diff --git a/doc/html/fusion/introduction.html b/doc/html/fusion/introduction.html index 593c454c..52f9b4fd 100644 --- a/doc/html/fusion/introduction.html +++ b/doc/html/fusion/introduction.html @@ -3,7 +3,7 @@ Introduction - + @@ -29,9 +29,9 @@ An advantage other languages such as Python and Lisp/ Scheme, ML and Haskell, etc., over C++ is the ability to have heterogeneous containers that can hold arbitrary element types. All the containers in the standard library can only - hold a specific type. A vector<int> - can only hold ints. A list<X> can - only hold elements of type X, + hold a specific type. A vector<int> + can only hold ints. A list<X> can + only hold elements of type X, and so on.

    @@ -41,8 +41,8 @@ on virtual functions to provide polymorphic behavior since the actual type is erased as soon as you store a pointer to a derived class to a pointer to its base. The held objects must be related: you cannot hold objects of unrelated - types such as char, int, class - X, float, + types such as char, int, class + X, float, etc. Oh sure you can use something like Boost.Any to hold arbitrary types, but then you pay more in terms of runtime costs and due to the fact that you practically erased all type information, you'll have @@ -51,7 +51,7 @@

    The Boost.Tuple library written by Jaakko - Jarvi provides heterogeneous containers in C++. The tuple + Jarvi provides heterogeneous containers in C++. The tuple is a basic data structure that can hold heterogeneous types. It's a good first step, but it's not complete. What's missing are the algorithms. It's nice that we can store and retrieve data to and from tuples, pass them around as arguments @@ -89,23 +89,23 @@ fusion algorithms are functional in nature such that algorithms are non mutating (no side effects). However, due to the high cost of returning full sequences such as vectors and lists, Views are returned from Fusion - algorithms instead. For example, the transform algorithm does not actually - return a transformed version of the original sequence. transform returns a transform_view. This view holds a + algorithms instead. For example, the transform algorithm does not actually + return a transformed version of the original sequence. transform returns a transform_view. This view holds a reference to the original sequence plus the transform function. Iteration over - the transform_view + the transform_view will apply the transform function over the sequence elements on demand. This lazy evaluation scheme allows us to chain as many algorithms as we want without incurring a high runtime penalty.

    The lazy evaluation scheme where algorithms return views - allows operations such as push_back to be totally generic. In - Fusion, push_back is actually a generic algorithm - that works on all sequences. Given an input sequence s - and a value x, Fusion's push_back algorithm simply returns - a joint_view: - a view that holds a reference to the original sequence s - and the value x. Functions + allows operations such as push_back to be totally generic. In + Fusion, push_back is actually a generic algorithm + that works on all sequences. Given an input sequence s + and a value x, Fusion's push_back 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.

    diff --git a/doc/html/fusion/iterators.html b/doc/html/fusion/iterators.html index 8db61de3..803e4890 100644 --- a/doc/html/fusion/iterators.html +++ b/doc/html/fusion/iterators.html @@ -3,7 +3,7 @@ Iterators - + @@ -74,7 +74,7 @@ Sequence.

    - + Header

    diff --git a/doc/html/fusion/iterators/concepts.html b/doc/html/fusion/iterators/concepts.html
    index 536779b6..cab63e13 100644
    --- a/doc/html/fusion/iterators/concepts.html
    +++ b/doc/html/fusion/iterators/concepts.html
    @@ -3,7 +3,7 @@
     
     Concepts
     
    -
    +
     
     
     
    diff --git a/doc/html/fusion/iterators/concepts/bidirectional_iterator.html b/doc/html/fusion/iterators/concepts/bidirectional_iterator.html
    index 4d2bdf8f..6a7520b6 100644
    --- a/doc/html/fusion/iterators/concepts/bidirectional_iterator.html
    +++ b/doc/html/fusion/iterators/concepts/bidirectional_iterator.html
    @@ -4,7 +4,7 @@
     Bidirectional
             Iterator
     
    -
    +
     
     
     Bidirectional
             Iterator
     
    - + Description

    @@ -41,27 +41,27 @@

    Notation

    -
    i
    +
    i
    A Bidirectional Iterator
    -
    I
    +
    I
    A Bidirectional Iterator type
    -
    M
    +
    M
    An MPL integral constant
    -
    N
    +
    N
    An integral constant
    - + Refinement of
    @@ -70,7 +70,7 @@ Iterator">Forward Iterator

    - + Expression requirements
    @@ -93,28 +93,28 @@
    next(i)next(i) Bidirectional Iterator Constant
    prior(i)prior(i) Bidirectional Iterator Constant
    advance_c<N>(i)advance_c<N>(i) Bidirectional Iterator Constant
    advance<M>(i)advance<M>(i) Bidirectional Iterator
    - + Meta Expressions
    @@ -137,13 +137,13 @@ Compile Time Complexity -result_of::prior<I>::type +result_of::prior<I>::type Amortized constant time
    - + Expression Semantics
    @@ -163,14 +163,14 @@ Semantics -prior(i) +prior(i) An - iterator to the element preceding i + iterator to the element preceding i
    - + Invariants

    @@ -179,44 +179,44 @@ Iterator, the following invariants always hold:

    - + Models
    diff --git a/doc/html/fusion/iterators/concepts/forward_iterator.html b/doc/html/fusion/iterators/concepts/forward_iterator.html index 14b486e5..a5dd580b 100644 --- a/doc/html/fusion/iterators/concepts/forward_iterator.html +++ b/doc/html/fusion/iterators/concepts/forward_iterator.html @@ -4,7 +4,7 @@ Forward Iterator - + @@ -30,7 +30,7 @@ Iterator">Forward Iterator
    - + Description

    @@ -41,29 +41,29 @@

    Notation

    -
    i, - j
    +
    i, + j
    Forward Iterators
    -
    I, - J
    +
    I, + J
    Forward Iterator types
    -
    M
    +
    M
    An MPL integral constant
    -
    N
    +
    N
    An integral constant
    - + Expression requirements
    @@ -85,56 +85,56 @@ - + - + - + - + - + - - + + - - + + - - + +
    next(i)next(i) Forward Iterator Constant
    i == - ji == + j Convertible to bool Constant
    i != - ji != + j Convertible to bool Constant
    advance_c<N>(i)advance_c<N>(i) Forward Iterator Constant
    advance<M>(i)advance<M>(i) Forward Iterator Constant
    distance(i, j)result_of::distance<I, J>::typedistance(i, j)result_of::distance<I, J>::type Constant
    deref(i)result_of::deref<I>::typederef(i)result_of::deref<I>::type Constant
    *iresult_of::deref<I>::type*iresult_of::deref<I>::type Constant
    - + Meta Expressions
    @@ -149,41 +149,41 @@ -result_of::next<I>::type +result_of::next<I>::type Amortized constant time -result_of::equal_to<I, J>::type +result_of::equal_to<I, J>::type Amortized constant time -result_of::advance_c<I, N>::type +result_of::advance_c<I, N>::type Linear -result_of::advance<I ,M>::type +result_of::advance<I ,M>::type Linear -result_of::distance<I ,J>::type +result_of::distance<I ,J>::type Linear -result_of::deref<I>::type +result_of::deref<I>::type Amortized constant time -result_of::value_of<I>::type +result_of::value_of<I>::type Amortized constant time
    - + Expression Semantics
    @@ -198,136 +198,136 @@ -next(i) +next(i) An - iterator to the element following i + iterator to the element following i -i == - j +i == + j Iterator equality comparison -i != - j +i != + j Iterator inequality comparison -advance_c<N>(i) +advance_c<N>(i) An - iterator n elements after i + iterator n elements after i in the sequence -advance<M>(i) +advance<M>(i) Equivalent - to advance_c<M::value>(i) + to advance_c<M::value>(i) -distance(i, j) +distance(i, j) The - number of elements between i - and j + number of elements between i + and j -deref(i) +deref(i) The - element at positioni + element at positioni -*i +*i Equivalent - to deref(i) + to deref(i)
    - + Invariants

    The following invariants always hold:

      -
    • !(i - == j) == (i != j)
    • -
    • next(i) == advance_c<1>(i)
    • -
    • distance(i, advance_c<N>(i)) == N
    • +
    • !(i + == j) == (i != j)
    • +
    • next(i) == advance_c<1>(i)
    • +
    • distance(i, advance_c<N>(i)) == N
    • - Using next to traverse the + Using next to traverse the sequence will never return to a previously seen position
    • -deref(i) - is equivalent to *i +deref(i) + is equivalent to *i
    • - If i == - j then *i is equivalent to *j + If i == + j then *i is equivalent to *j
    - + Models
    diff --git a/doc/html/fusion/iterators/concepts/random_access_iterator.html b/doc/html/fusion/iterators/concepts/random_access_iterator.html index a72f3b19..03698f45 100644 --- a/doc/html/fusion/iterators/concepts/random_access_iterator.html +++ b/doc/html/fusion/iterators/concepts/random_access_iterator.html @@ -4,7 +4,7 @@ Random Access Iterator - + Random Access Iterator
    - + Description

    @@ -41,29 +41,29 @@

    Notation

    -
    i, - j
    +
    i, + j
    Random Access Iterators
    -
    I, - J
    +
    I, + J
    Random Access Iterator types
    -
    M
    +
    M
    An MPL integral constant
    -
    N
    +
    N
    An integral constant
    - + Refinement of
    @@ -73,7 +73,7 @@ Iterator

    - + Expression requirements
    @@ -96,28 +96,28 @@ -next(i) +next(i) Random Access Iterator Constant -prior(i) +prior(i) Random Access Iterator Constant -advance_c<N>(i) +advance_c<N>(i) Random Access Iterator Constant -advance<M>(i) +advance<M>(i) Random Access Iterator @@ -126,7 +126,7 @@
    - + Meta Expressions
    @@ -141,53 +141,53 @@ -result_of::advance_c<I, N>::type +result_of::advance_c<I, N>::type Amortized constant time -result_of::advance<I, M>::type +result_of::advance<I, M>::type Amortized constant time -result_of::distance<I ,J>::type +result_of::distance<I ,J>::type Amortized constant time
    - + Models
    diff --git a/doc/html/fusion/iterators/functions/advance_c.html b/doc/html/fusion/iterators/functions/advance_c.html index bef51485..1c1031bf 100644 --- a/doc/html/fusion/iterators/functions/advance_c.html +++ b/doc/html/fusion/iterators/functions/advance_c.html @@ -3,7 +3,7 @@ advance_c - + @@ -26,14 +26,14 @@
    - + Description

    Moves an iterator by a specified distance.

    - + Synopsis
    @@ -41,10 +41,10 @@
         typename I,
         int N
         >
    -typename result_of::advance_c<I, N>::type advance_c(I const& i); 
    +typename result_of::advance_c<I, N>::type advance_c(I const& i); 
     
    -

    Table 1.7. Parameters

    +

    Table 1.7. Parameters

    @@ -58,7 +58,7 @@ - + - + @@ -76,42 +76,42 @@
    ii Model of Forward @@ -67,7 +67,7 @@ Iterator to move relative to
    NN Integer constant Number of positions to move
    - + Expression Semantics
    -advance_c<N>(i);
    +advance_c<N>(i);
     

    - Return type: A model of the same iterator - concept as i. + Return type: A model of the same iterator + concept as i.

    - Semantics: Returns an iterator to the - element N positions from - i. If i + Semantics: Returns an iterator to the + element N positions from + i. If i is a Bidirectional - Iterator then N + Iterator then N may be negative.

    - + Header
     #include <boost/fusion/iterator/advance.hpp>
     
    - + Example
    -typedef vector<int,int,int> vec;
    +typedef vector<int,int,int> vec;
     
     vec v(1,2,3);
    -assert(deref(advance_c<2>(begin(v))) == 3);
    +assert(deref(advance_c<2>(begin(v))) == 3);
     
    diff --git a/doc/html/fusion/iterators/functions/deref.html b/doc/html/fusion/iterators/functions/deref.html index 22b3c745..f5a02e20 100644 --- a/doc/html/fusion/iterators/functions/deref.html +++ b/doc/html/fusion/iterators/functions/deref.html @@ -3,7 +3,7 @@ deref - + @@ -26,24 +26,24 @@
    - + Description

    Deferences an iterator.

    - + Synopsis
     template<
         typename I
         >
    -typename result_of::deref<I>::type deref(I const& i);
    +typename result_of::deref<I>::type deref(I const& i);
     
    -

    Table 1.2. Parameters

    +

    Table 1.2. Parameters

    @@ -56,7 +56,7 @@ - +
    Description
    ii Model of Forward @@ -67,39 +67,39 @@
    - + Expression Semantics
    -deref(i);
    +deref(i);
     

    - Return type: result_of::deref<I>::type + Return type: result_of::deref<I>::type

    - Semantics: Dereferences the iterator - i. + Semantics: Dereferences the iterator + i.

    - + Header
     #include <boost/fusion/iterator/deref.hpp>
     
    - + Example
    -typedef vector<int,int&> vec;
    +typedef vector<int,int&> vec;
     
     int i(0);
     vec v(1,i);
    -assert(deref(begin(v)) == 1);
    -assert(deref(next(begin(v))) == 0);
    -assert(&(deref(next(begin(v)))) == &i);
    +assert(deref(begin(v)) == 1);
    +assert(deref(next(begin(v))) == 0);
    +assert(&(deref(next(begin(v)))) == &i);
     
    diff --git a/doc/html/fusion/iterators/functions/distance.html b/doc/html/fusion/iterators/functions/distance.html index c51d20fc..2ea11ce9 100644 --- a/doc/html/fusion/iterators/functions/distance.html +++ b/doc/html/fusion/iterators/functions/distance.html @@ -3,7 +3,7 @@ distance - + @@ -26,14 +26,14 @@
    - + Description

    Returns the distance between 2 iterators.

    - + Synopsis
    @@ -41,10 +41,10 @@
         typename I,
         typename J
         >
    -typename result_of::distance<I, J>::type distance(I const& i, J const& j);
    +typename result_of::distance<I, J>::type distance(I const& i, J const& j);
     
    -

    Table 1.5. Parameters

    +

    Table 1.5. Parameters

    @@ -58,7 +58,7 @@
    -i, j +i, j Models of Forward @@ -69,36 +69,36 @@
    - + Expression Semantics
    -distance(i,j);
    +distance(i,j);
     

    - Return type: int + Return type: int

    - Semantics: Returns the distance between - iterators i and j. + Semantics: Returns the distance between + iterators i and j.

    - + Header
     #include <boost/fusion/iterator/distance.hpp>
     
    - + Example
    -typedef vector<int,int,int> vec;
    +typedef vector<int,int,int> vec;
     
     vec v(1,2,3);
    -assert(distance(begin(v), next(next(begin(v)))) == 2);
    +assert(distance(begin(v), next(next(begin(v)))) == 2);
     
    diff --git a/doc/html/fusion/iterators/functions/next.html b/doc/html/fusion/iterators/functions/next.html index c2f20d04..3e97c886 100644 --- a/doc/html/fusion/iterators/functions/next.html +++ b/doc/html/fusion/iterators/functions/next.html @@ -3,7 +3,7 @@ next - + @@ -26,24 +26,24 @@
    - + Description

    Moves an iterator 1 position forwards.

    - + Synopsis
     template<
         typename I
         >
    -typename result_of::next<I>::type next(I const& i);
    +typename result_of::next<I>::type next(I const& i);
     
    -

    Table 1.3. Parameters

    +

    Table 1.3. Parameters

    @@ -56,7 +56,7 @@ - +
    Description
    ii Model of Forward @@ -67,7 +67,7 @@
    - + Expression Semantics
    @@ -75,31 +75,31 @@ next(i);

    - Return type: A model of the same iterator - concept as i. + Return type: A model of the same iterator + concept as i.

    - Semantics: Returns an iterator to the - next element after i. + Semantics: Returns an iterator to the + next element after i.

    - + Header
     #include <boost/fusion/iterator/next.hpp>
     
    - + Example
    -typedef vector<int,int,int> vec;
    +typedef vector<int,int,int> vec;
     
     vec v(1,2,3);
    -assert(deref(begin(v)) == 1);
    -assert(deref(next(begin(v))) == 2);
    -assert(deref(next(next(begin(v)))) == 3);
    +assert(deref(begin(v)) == 1);
    +assert(deref(next(begin(v))) == 2);
    +assert(deref(next(next(begin(v)))) == 3);
     
    diff --git a/doc/html/fusion/iterators/functions/prior.html b/doc/html/fusion/iterators/functions/prior.html index a2316015..50fba0bd 100644 --- a/doc/html/fusion/iterators/functions/prior.html +++ b/doc/html/fusion/iterators/functions/prior.html @@ -3,7 +3,7 @@ prior - + @@ -26,24 +26,24 @@
    - + Description

    Moves an iterator 1 position backwards.

    - + Synopsis
     template<
         typename I
         >
    -typename result_of::prior<I>::type prior(I const& i);
    +typename result_of::prior<I>::type prior(I const& i);
     
    -

    Table 1.4. Parameters

    +

    Table 1.4. Parameters

    @@ -56,7 +56,7 @@ - +
    Description
    ii Model of Bidirectional @@ -67,38 +67,38 @@
    - + Expression Semantics
    -prior(i);
    +prior(i);
     

    - Return type: A model of the same iterator - concept as i. + Return type: A model of the same iterator + concept as i.

    - Semantics: Returns an iterator to the - element prior to i. + Semantics: Returns an iterator to the + element prior to i.

    - + Header
     #include <boost/fusion/iterator/prior.hpp>
     
    - + Example
    -typedef vector<int,int> vec;
    +typedef vector<int,int> vec;
     
     vec v(1,2);
    -assert(deref(next(begin(v))) == 2);
    -assert(deref(prior(next(begin(v)))) == 1);
    +assert(deref(next(begin(v))) == 2);
    +assert(deref(prior(next(begin(v)))) == 1);
     
    diff --git a/doc/html/fusion/iterators/metafunctions.html b/doc/html/fusion/iterators/metafunctions.html index 0ed7798f..8e05863c 100644 --- a/doc/html/fusion/iterators/metafunctions.html +++ b/doc/html/fusion/iterators/metafunctions.html @@ -3,7 +3,7 @@ Metafunctions - +advance - + @@ -26,14 +26,14 @@
    - + Description

    Moves an iterator a specified distance.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.17. Parameters

    +

    Table 1.17. Parameters

    @@ -61,7 +61,7 @@ - + - + @@ -79,43 +79,43 @@
    II Model of Forward @@ -70,7 +70,7 @@ Iterator to move relative to
    MM Model of MPL Integral Constant Number of positions to move
    - + Expression Semantics
    -result_of::advance<I,M>::type
    +result_of::advance<I,M>::type
     

    - Return type: A model of the same iterator - concept as I. + Return type: A model of the same iterator + concept as I.

    - Semantics: Returns an iterator a distance - M from I. - If I is a Semantics: Returns an iterator a distance + M from I. + If I is a Bidirectional - Iterator then M + Iterator then M may be negative.

    - + Header
     #include <boost/fusion/iterator/advance.hpp>
     
    - + Example
    -typedef vector<int,double,char> vec;
    -typedef result_of::begin<vec>::type first;
    -typedef result_of::next<first>::type second;
    -typedef result_of::next<second>::type third;
    +typedef vector<int,double,char> vec;
    +typedef result_of::begin<vec>::type first;
    +typedef result_of::next<first>::type second;
    +typedef result_of::next<second>::type third;
     
    -BOOST_MPL_ASSERT((result_of::equal_to<result_of::advance<first, boost::mpl::int_<2> >::type, third>));
    +BOOST_MPL_ASSERT((result_of::equal_to<result_of::advance<first, boost::mpl::int_<2> >::type, third>));
     
    diff --git a/doc/html/fusion/iterators/metafunctions/advance_c.html b/doc/html/fusion/iterators/metafunctions/advance_c.html index cd6a7141..fa9687f5 100644 --- a/doc/html/fusion/iterators/metafunctions/advance_c.html +++ b/doc/html/fusion/iterators/metafunctions/advance_c.html @@ -3,7 +3,7 @@ advance_c - + @@ -26,14 +26,14 @@
    - + Description

    Moves an iterator by a specified distance.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.18. Parameters

    +

    Table 1.18. Parameters

    @@ -61,7 +61,7 @@ - + - + @@ -79,43 +79,43 @@
    II Model of Forward @@ -70,7 +70,7 @@ Iterator to move relative to
    NN Integer constant Number of positions to move
    - + Expression Semantics
    -result_of::advance_c<I, N>::type
    +result_of::advance_c<I, N>::type
     

    - Return type: A model of the same iterator - concept as I. + Return type: A model of the same iterator + concept as I.

    - Semantics: Returns an iterator a distance - N from I. - If I is a Semantics: Returns an iterator a distance + N from I. + If I is a Bidirectional - Iterator then N - may be negative. Equivalent to result_of::advance<I, boost::mpl::int_<N> >::type. + Iterator then N + may be negative. Equivalent to result_of::advance<I, boost::mpl::int_<N> >::type.

    - + Header
     #include <boost/fusion/iterator/advance.hpp>
     
    - + Example
    -typedef vector<int,double,char> vec;
    -typedef result_of::begin<vec>::type first;
    -typedef result_of::next<first>::type second;
    -typedef result_of::next<second>::type third;
    +typedef vector<int,double,char> vec;
    +typedef result_of::begin<vec>::type first;
    +typedef result_of::next<first>::type second;
    +typedef result_of::next<second>::type third;
     
    -BOOST_MPL_ASSERT((result_of::equal_to<result_of::advance_c<first, 2>::type, third>));
    +BOOST_MPL_ASSERT((result_of::equal_to<result_of::advance_c<first, 2>::type, third>));
     
    diff --git a/doc/html/fusion/iterators/metafunctions/deref.html b/doc/html/fusion/iterators/metafunctions/deref.html index 0025a8ec..fadd6460 100644 --- a/doc/html/fusion/iterators/metafunctions/deref.html +++ b/doc/html/fusion/iterators/metafunctions/deref.html @@ -3,7 +3,7 @@ deref - + @@ -26,14 +26,14 @@
    - + Description

    Returns the type that will be returned by dereferencing an iterator.

    - + Synposis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.12. Parameters

    +

    Table 1.12. Parameters

    @@ -59,7 +59,7 @@ - +
    Description
    II Model of Forward @@ -70,42 +70,42 @@
    - + Expression Semantics
    -result_of::deref<I>::type
    +result_of::deref<I>::type
     

    - Return type: Any type + Return type: Any type

    - Semantics: Returns the result of dereferencing - an iterator of type I. + Semantics: Returns the result of dereferencing + an iterator of type I.

    - + Header
     #include <boost/fusion/iterator/deref.hpp>
     
    - + Example
    -typedef vector<int,int&> vec;
    +typedef vector<int,int&> vec;
     typedef const vec const_vec;
    -typedef result_of::begin<vec>::type first;
    -typedef result_of::next<first>::type second;
    +typedef result_of::begin<vec>::type first;
    +typedef result_of::next<first>::type second;
     
    -typedef result_of::begin<const_vec>::type const_first;
    -typedef result_of::next<const_first>::type const_second;
    +typedef result_of::begin<const_vec>::type const_first;
    +typedef result_of::next<const_first>::type const_second;
     
    -BOOST_MPL_ASSERT((boost::is_same<result_of::deref<first>::type, int&>));
    -BOOST_MPL_ASSERT((boost::is_same<result_of::deref<second>::type, int&>));
    +BOOST_MPL_ASSERT((boost::is_same<result_of::deref<first>::type, int&>));
    +BOOST_MPL_ASSERT((boost::is_same<result_of::deref<second>::type, int&>));
     
    diff --git a/doc/html/fusion/iterators/metafunctions/distance.html b/doc/html/fusion/iterators/metafunctions/distance.html index 1a94543b..4ab01b83 100644 --- a/doc/html/fusion/iterators/metafunctions/distance.html +++ b/doc/html/fusion/iterators/metafunctions/distance.html @@ -3,7 +3,7 @@ distance - + @@ -26,14 +26,14 @@
    - + Description

    Returns the distance between two iterators.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.16. Parameters

    +

    Table 1.16. Parameters

    @@ -61,7 +61,7 @@
    -I, J +I, J Models of Forward @@ -72,38 +72,38 @@
    - + Expression Semantics
    -result_of::distance<I, J>::type
    +result_of::distance<I, J>::type
     

    - Return type: A model of MPL Integral Constant. + Return type: A model of MPL Integral Constant.

    - Semantics: Returns the distance between - iterators of types I and - J. + Semantics: Returns the distance between + iterators of types I and + J.

    - + Header
     #include <boost/fusion/iterator/distance.hpp>
     
    - + Example
    -typedef vector<int,double,char> vec;
    -typedef result_of::begin<vec>::type first;
    -typedef result_of::next<first>::type second;
    -typedef result_of::next<second>::type third;
    -typedef result_of::distance<first,third>::type dist;
    +typedef vector<int,double,char> vec;
    +typedef result_of::begin<vec>::type first;
    +typedef result_of::next<first>::type second;
    +typedef result_of::next<second>::type third;
    +typedef result_of::distance<first,third>::type dist;
     
     BOOST_MPL_ASSERT_RELATION(dist::value, ==, 2);
     
    diff --git a/doc/html/fusion/iterators/metafunctions/equal_to.html b/doc/html/fusion/iterators/metafunctions/equal_to.html index 7ddaef92..57fa267a 100644 --- a/doc/html/fusion/iterators/metafunctions/equal_to.html +++ b/doc/html/fusion/iterators/metafunctions/equal_to.html @@ -3,7 +3,7 @@ equal_to - + @@ -26,15 +26,15 @@
    - + Description

    - Returns a true-valued MPL Integral Constant if I - and J are equal. + Returns a true-valued MPL Integral Constant if I + and J are equal.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.15. Parameters

    +

    Table 1.15. Parameters

    @@ -62,7 +62,7 @@
    -I, J +I, J Any fusion iterators Operation's @@ -71,38 +71,38 @@
    - + Expression Semantics
    -result_of::equal_to<I, J>::type
    +result_of::equal_to<I, J>::type
     

    - Return type: A model of MPL Integral Constant. + Return type: A model of MPL Integral Constant.

    - Semantics: Returns boost::mpl::true_ - if I and J are iterators to the same position. - Returns boost::mpl::false_ otherwise. + Semantics: Returns boost::mpl::true_ + if I and J are iterators to the same position. + Returns boost::mpl::false_ otherwise.

    - + Header
     #include <boost/fusion/iterator/equal_to.hpp>
     
    - + Example
    -typedef vector<int,double> vec;
    -typedef result_of::begin<vec>::type first;
    -typedef result_of::end<vec>::type last;
    -BOOST_MPL_ASSERT((result_of::equal_to<first, first>));
    -BOOST_MPL_ASSERT_NOT((result_of::equal_to<first,last>));
    +typedef vector<int,double> vec;
    +typedef result_of::begin<vec>::type first;
    +typedef result_of::end<vec>::type last;
    +BOOST_MPL_ASSERT((result_of::equal_to<first, first>));
    +BOOST_MPL_ASSERT_NOT((result_of::equal_to<first,last>));
     
    diff --git a/doc/html/fusion/iterators/metafunctions/next.html b/doc/html/fusion/iterators/metafunctions/next.html index 03e72360..b34759aa 100644 --- a/doc/html/fusion/iterators/metafunctions/next.html +++ b/doc/html/fusion/iterators/metafunctions/next.html @@ -3,7 +3,7 @@ next - + @@ -26,14 +26,14 @@
    - + Description

    Returns the type of the next iterator in a sequence.

    - + Synposis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.13. Parameters

    +

    Table 1.13. Parameters

    @@ -59,7 +59,7 @@ - +
    Description
    II Model of Forward @@ -70,37 +70,37 @@
    - + Expression Semantics
    -result_of::next<I>::type
    +result_of::next<I>::type
     

    - Return type: A model of the same iterator - concept as I. + Return type: A model of the same iterator + concept as I.

    - Semantics: Returns an iterator to the - next element in the sequence after I. + Semantics: Returns an iterator to the + next element in the sequence after I.

    - + Header
     #include <boost/fusion/iterator/next.hpp>
     
    - + Example
    -typedef vector<int,double> vec;
    -typedef result_of::next<result_of::begin<vec>::type>::type second;
    +typedef vector<int,double> vec;
    +typedef result_of::next<result_of::begin<vec>::type>::type second;
     
    -BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<second>::type, double>));
    +BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<second>::type, double>));
     
    diff --git a/doc/html/fusion/iterators/metafunctions/prior.html b/doc/html/fusion/iterators/metafunctions/prior.html index 832f7ecc..f998da78 100644 --- a/doc/html/fusion/iterators/metafunctions/prior.html +++ b/doc/html/fusion/iterators/metafunctions/prior.html @@ -3,7 +3,7 @@ prior - + @@ -26,14 +26,14 @@
    - + Description

    Returns the type of the previous iterator in a sequence.

    - + Synopsis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.14. Parameters

    +

    Table 1.14. Parameters

    @@ -59,7 +59,7 @@ - +
    Description
    II Model of Bidirectional @@ -70,40 +70,40 @@
    - + Expression Semantics
    -result_of::prior<I>::type
    +result_of::prior<I>::type
     

    - Return type: A model of the same iterator - concept as I. + Return type: A model of the same iterator + concept as I.

    - Semantics: Returns an iterator to the - previous element in the sequence before I. + Semantics: Returns an iterator to the + previous element in the sequence before I.

    - + Header
     #include <boost/fusion/iterator/prior.hpp>
     
    - + Example
    -typedef vector<int,double> vec;
    -typedef result_of::next<result_of::begin<vec>::type>::type second;
    +typedef vector<int,double> vec;
    +typedef result_of::next<result_of::begin<vec>::type>::type second;
     
    -BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<second>::type, double>));
    +BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<second>::type, double>));
     
    -typedef result_of::prior<second>::type first;
    -BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<first>::type, int>));
    +typedef result_of::prior<second>::type first;
    +BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<first>::type, int>));
     
    diff --git a/doc/html/fusion/iterators/metafunctions/value_of.html b/doc/html/fusion/iterators/metafunctions/value_of.html index f3cdebb4..ee96e0e1 100644 --- a/doc/html/fusion/iterators/metafunctions/value_of.html +++ b/doc/html/fusion/iterators/metafunctions/value_of.html @@ -3,7 +3,7 @@ value_of - + @@ -26,14 +26,14 @@
    - + Description

    Returns the type stored at the position of an iterator.

    - + Synopsis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.11. Parameters

    +

    Table 1.11. Parameters

    @@ -59,7 +59,7 @@ - +
    Description
    II Model of Forward @@ -70,40 +70,40 @@
    - + Expression Semantics
    -result_of::value_of<I>::type
    +result_of::value_of<I>::type
     

    - Return type: Any type + Return type: Any type

    - Semantics: Returns the type stored in - a sequence at iterator position I. + Semantics: Returns the type stored in + a sequence at iterator position I.

    - + Header
     #include <boost/fusion/iterator/value_of.hpp>
     
    - + Example
    -typedef vector<int,int&,const int&> vec;
    -typedef result_of::begin<vec>::type first;
    -typedef result_of::next<first>::type second;
    -typedef result_of::next<second>::type third;
    +typedef vector<int,int&,const int&> vec;
    +typedef result_of::begin<vec>::type first;
    +typedef result_of::next<first>::type second;
    +typedef result_of::next<second>::type third;
     
    -BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<first>::type, int>));
    -BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<second>::type, int&>));
    -BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<third>::type, const int&>));
    +BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<first>::type, int>));
    +BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<second>::type, int&>));
    +BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<third>::type, const int&>));
     
    diff --git a/doc/html/fusion/iterators/operators.html b/doc/html/fusion/iterators/operators.html index 54740099..625fcc0c 100644 --- a/doc/html/fusion/iterators/operators.html +++ b/doc/html/fusion/iterators/operators.html @@ -3,7 +3,7 @@ Operators - + diff --git a/doc/html/fusion/iterators/operators/operator_equality.html b/doc/html/fusion/iterators/operators/operator_equality.html index af003353..999131e2 100644 --- a/doc/html/fusion/iterators/operators/operator_equality.html +++ b/doc/html/fusion/iterators/operators/operator_equality.html @@ -4,7 +4,7 @@ Operator == - + Operator ==
    - + Description

    Compares 2 iterators for equality.

    - + Synopsis
    @@ -49,7 +49,7 @@
     unspecified operator==(I const& i, J const& i);
     
    -

    Table 1.9. Parameters

    +

    Table 1.9. Parameters

    @@ -63,7 +63,7 @@
    -i, j +i, j Any fusion iterators Operation's @@ -72,7 +72,7 @@
    - + Expression Semantics
    @@ -80,15 +80,15 @@ i == j

    - Return type: Convertible to bool. + Return type: Convertible to bool.

    - Semantics: Equivalent to result_of::equal_to<I,J>::value - where I and J are the types of i - and j respectively. + Semantics: Equivalent to result_of::equal_to<I,J>::value + where I and J are the types of i + and j respectively.

    - + Header
    diff --git a/doc/html/fusion/iterators/operators/operator_inequality.html b/doc/html/fusion/iterators/operators/operator_inequality.html
    index 0c9316e9..115065f3 100644
    --- a/doc/html/fusion/iterators/operators/operator_inequality.html
    +++ b/doc/html/fusion/iterators/operators/operator_inequality.html
    @@ -4,7 +4,7 @@
      Operator
             !=
     
    -
    +
     
     
      Operator
             !=
     
    - + Description

    Compares 2 iterators for inequality.

    - + Synopsis
    @@ -48,7 +48,7 @@
     unspecified operator==(I const& i, J const& i);
     
    -

    Table 1.10. Parameters

    +

    Table 1.10. Parameters

    @@ -62,7 +62,7 @@
    -i, j +i, j Any fusion iterators Operation's @@ -71,20 +71,20 @@
    - + Expression Semantics

    - Return type: Convertible to bool. + Return type: Convertible to bool.

    - Semantics: Equivalent to !result_of::equal_to<I,J>::value - where I and J are the types of i - and j respectively. + Semantics: Equivalent to !result_of::equal_to<I,J>::value + where I and J are the types of i + and j respectively.

    - + Header
    diff --git a/doc/html/fusion/iterators/operators/operator_unary_star.html b/doc/html/fusion/iterators/operators/operator_unary_star.html
    index 3262b0c3..bf405c7c 100644
    --- a/doc/html/fusion/iterators/operators/operator_unary_star.html
    +++ b/doc/html/fusion/iterators/operators/operator_unary_star.html
    @@ -4,7 +4,7 @@
      Operator
             *
     
    -
    +
     
     
     
    @@ -30,24 +30,24 @@
             *"> Operator
             *
     
    - + Description

    Dereferences an iterator.

    - + Synopsis
     template<
         typename I
         >
    -typename result_of::deref<I>::type operator*(unspecified<I> const& i);
    +typename result_of::deref<I>::type operator*(unspecified<I> const& i);
     
    -

    Table 1.8. Parameters

    +

    Table 1.8. Parameters

    @@ -60,7 +60,7 @@ - +
    Description
    ii Model of Forward @@ -71,7 +71,7 @@
    - + Expression Semantics
    @@ -79,31 +79,31 @@ *i

    - Return type: Equivalent to the return - type of deref(i). + Return type: Equivalent to the return + type of deref(i).

    - Semantics: Equivalent to deref(i). + Semantics: Equivalent to deref(i).

    - + Header
     #include <boost/fusion/iterator/deref.hpp>
     
    - + Example
    -typedef vector<int,int&> vec;
    +typedef vector<int,int&> vec;
     
     int i(0);
     vec v(1,i);
    -assert(*begin(v) == 1);
    -assert(*next(begin(v)) == 0);
    -assert(&(*next(begin(v))) == &i);
    +assert(*begin(v) == 1);
    +assert(*next(begin(v)) == 0);
    +assert(&(*next(begin(v))) == &i);
     
    diff --git a/doc/html/fusion/notes.html b/doc/html/fusion/notes.html index ce7942bc..d184d4ae 100644 --- a/doc/html/fusion/notes.html +++ b/doc/html/fusion/notes.html @@ -3,7 +3,7 @@ Notes - + @@ -26,30 +26,30 @@

    - + Recursive Inlined Functions

    - An interesting peculiarity of functions like at when applied to a at when applied to a Forward - Sequence like list is that what could have been + Sequence like list is that what could have been linear runtime complexity effectively becomes constant O(1) due to compiler optimization of C++ inlined functions, however deeply recursive (up to a certain compiler limit of course). Compile time complexity remains linear.

    - + Overloaded Functions

    Associative sequences use function overloading to implement membership testing and type associated key lookup. This amounts to constant runtime and amortized - constant compile time complexities. There is an overloaded function, f(k), for each key type k. The compiler chooses the appropriate function - given a key, k. + constant compile time complexities. There is an overloaded function, f(k), for each key type k. The compiler chooses the appropriate function + given a key, k.

    - + Tag Dispatching

    @@ -68,7 +68,7 @@

    - For example, the fusion result_of::begin metafunction + For example, the fusion result_of::begin metafunction is implemented as follows:

    @@ -86,22 +86,22 @@
         

    1. -Sequence is the type for - which a suitable implementation of result_of::begin_impl +Sequence is the type for + which a suitable implementation of result_of::begin_impl is required
    2. -traits::tag_of is the metafunction that associates - Sequence with an appropriate +traits::tag_of is the metafunction that associates + Sequence with an appropriate tag
    3. -result_of::begin_impl is the template which is specialized +result_of::begin_impl is the template which is specialized to provide an implementation for each tag type

    - + Extensibility

    @@ -113,13 +113,13 @@ and MPL on account of the lazy nature of fusion Algorithms. STL - containers extend themselves in place though member functions such as push_back and insert. MPL + containers extend themselves in place though member functions such as push_back and insert. MPL sequences, on the other hand, are extended through "intrinsic" functions that actually return whole sequences. MPL is purely functional and can not have side effects. For example, MPL's - push_back does not actually - mutate an mpl::vector. It can't do that. Instead, it returns - an extended mpl::vector. + push_back does not actually + mutate an mpl::vector. It can't do that. Instead, it returns + an extended mpl::vector.

    Like MPL, Fusion @@ -129,51 +129,51 @@ are sequences that do not actually contain data, but instead impart an alternative presentation over the data from one or more underlying sequences. Views are proxies. They provide an efficient yet purely functional way to work on - potentially expensive sequence operations. For example, given a vector, Fusion's push_back returns a joint_view, instead of an actual extended - vector. - A joint_view + potentially expensive sequence operations. For example, given a vector, Fusion's push_back returns a joint_view, instead of an actual extended + vector. + A joint_view holds a reference to the original sequence plus the appended data --making it very cheap to pass around.

    - + Element Conversion

    - Functions that take in elemental values to form sequences (e.g. make_list) convert their arguments + Functions that take in elemental values to form sequences (e.g. make_list) convert their arguments to something suitable to be stored as a sequence element. In general, the element types are stored as plain values. Example:

    -make_list(1, 'x')
    +make_list(1, 'x')
     

    - returns a list<int, - char>. + returns a list<int, + char>.

    There are a few exceptions, however.

    - Arrays: + Arrays:

    Array arguments are deduced to reference to const types. For example - [14] + [14] :

    -make_list("Donald", "Daisy")
    +make_list("Donald", "Daisy")
     

    - creates a list + creates a list of type

    -list<const char (&)[7], const char (&)[6]>
    +list<const char (&)[7], const char (&)[6]>
     

    - Function pointers: + Function pointers:

    Function pointers are deduced to the plain non-reference type (i.e. to plain @@ -182,38 +182,38 @@

     void f(int i);
       ...
    -make_list(&f);
    +make_list(&f);
     

    - creates a list + creates a list of type

    -list<void (*)(int)>
    +list<void (*)(int)>
     

    - + boost::ref

    - Fusion's generation functions (e.g. make_list) by default stores the element + Fusion's generation functions (e.g. make_list) by default stores the element types as plain non-reference types. Example:

     void foo(const A& a, B& b) {
         ...
    -    make_list(a, b)
    +    make_list(a, b)
     

    - creates a list + creates a list of type

    -list<A, B>
    +list<A, B>
     

    - Sometimes the plain non-reference type is not desired. You can use boost::ref - and boost::cref to store references or const references + Sometimes the plain non-reference type is not desired. You can use boost::ref + and boost::cref to store references or const references (respectively) instead. The mechanism does not compromise const correctness since a const object wrapped with ref results in a tuple element with const reference type (see the fifth code line below). Examples: @@ -223,11 +223,11 @@

     A a; B b; const A ca = a;
    -make_list(cref(a), b);          // creates list<const A&, B>
    -make_list(ref(a), b);           // creates list<A&, B>
    -make_list(ref(a), cref(b));     // creates list<A&, const B&>
    -make_list(cref(ca));            // creates list<const A&>
    -make_list(ref(ca));             // creates list<const A&>
    +make_list(cref(a), b);          // creates list<const A&, B>
    +make_list(ref(a), b);           // creates list<A&, B>
    +make_list(ref(a), cref(b));     // creates list<A&, const B&>
    +make_list(cref(ca));            // creates list<const A&>
    +make_list(ref(ca));             // creates list<const A&>
     

    See Boost.Ref for @@ -235,11 +235,11 @@



    -

    [14] +

    [14] 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). + 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 6db1b1f6..dd298da5 100644 --- a/doc/html/fusion/organization.html +++ b/doc/html/fusion/organization.html @@ -3,7 +3,7 @@ Organization - + @@ -34,7 +34,7 @@ The library is organized in three layers:

    - + Layers

    @@ -50,7 +50,7 @@ against.

    - + Directory

      @@ -76,7 +76,7 @@
      • adapted -
          +
          • array
          • @@ -93,7 +93,7 @@
          • container -
              +
              • list
              • @@ -125,7 +125,7 @@
              • view -
                  +
                  • filter_view
                  • @@ -159,11 +159,11 @@

                  - + Example

                  - If, for example, you want to use list, + If, for example, you want to use list, depending on the granularity that you desire, you may do so by including one of

                  @@ -174,13 +174,13 @@

    The first includes all sequences. The second includes all of sequence containers. - The third includes only list - [3] + The third includes only list + [3] .



    -

    [3] +

    [3] 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 bfcc85b5..edafa8cd 100644 --- a/doc/html/fusion/preface.html +++ b/doc/html/fusion/preface.html @@ -3,7 +3,7 @@ Preface - + @@ -29,10 +29,10 @@ Algorithms + Data Structures = Programs.

    - --Niklaus Wirth + --Niklaus Wirth

    - + Description

    @@ -50,7 +50,7 @@ of compile time metaprogramming with runtime programming.

    - + Motivation

    @@ -76,7 +76,7 @@ an instant AHA! moment.

    - + How to use this manual

    @@ -84,7 +84,7 @@ icons precede some text to indicate:

    -

    Table 1.1. Icons

    +

    Table 1.1. Icons

    @@ -130,7 +130,7 @@ Tools.

    - + Support

    diff --git a/doc/html/fusion/quick_start.html b/doc/html/fusion/quick_start.html index cc0940d7..61ae0b8b 100644 --- a/doc/html/fusion/quick_start.html +++ b/doc/html/fusion/quick_start.html @@ -3,7 +3,7 @@ Quick Start - + @@ -27,39 +27,39 @@ Quick Start

    I assume the reader is already familiar with tuples (Boost.Tuple) - and its ancestor std::pair. The tuple is a generalization of std::pair + and its ancestor std::pair. The tuple is a generalization of std::pair for multiple heterogeneous elements (triples, quadruples, etc.). The tuple - is more or less a synonym for fusion's vector. + is more or less a synonym for fusion's vector.

    For starters, we shall include all of Fusion's _sequence_s - [1] + [1] :

     #include <boost/fusion/sequence.hpp>
     

    - Let's begin with a vector - [2] + Let's begin with a vector + [2] :

    -vector<int, char, std::string> stuff(1, 'x', "howdy");
    -int i = at_c<0>(stuff);
    -char ch = at_c<1>(stuff);
    -std::string s = at_c<2>(stuff);
    +vector<int, char, std::string> stuff(1, 'x', "howdy");
    +int i = at_c<0>(stuff);
    +char ch = at_c<1>(stuff);
    +std::string s = at_c<2>(stuff);
     

    - Just replace tuple for vector - and get for at_c and this is exactly like + Just replace tuple for vector + and get for at_c and this is exactly like Boost.Tuple. Actually, either names can be used interchangeably. Yet, the similarity ends - there. You can do a lot more with Fusion vector or tuple. + there. You can do a lot more with Fusion vector or tuple. Let's see some examples.

    - + Print the vector as XML

    @@ -91,38 +91,38 @@ Now, finally:

    -for_each(stuff, print_xml());
    +for_each(stuff, print_xml());
     

    - That's it! for_each is a fusion algorithm. + That's it! for_each is a fusion algorithm. It is a generic algorithm similar to STL's. It iterates over the sequence and calls a user supplied function. In our case, - it calls print_xml's operator() for - each element in stuff. + it calls print_xml's operator() for + each element in stuff.

    -
    [Caution] Caution

    - The result of typeid(x).name() is platform specific. The code here is +

    + The result of typeid(x).name() is platform specific. The code here is just for exposition. Of course you already know that :-)

    - for_each is generic. With - print_xml, you can use it to + for_each is generic. With + print_xml, you can use it to print just about any Fusion Sequence.

    - + Print only pointers

    Let's get a little cleverer. Say we wish to write a generic function that takes in an arbitrary sequence and XML prints only those elements - which are pointers. Ah, easy. First, let's include the is_pointer + which are pointers. Ah, easy. First, let's include the is_pointer boost type trait:

    @@ -135,36 +135,36 @@
     template <typename Sequence>
     void xml_print_pointers(Sequence const& seq)
     {
    -    for_each(filter_if<boost::is_pointer<_> >(seq), print_xml());
    +    for_each(filter_if<boost::is_pointer<_> >(seq), print_xml());
     }
     

    - filter_if is another Fusion - algorithm. It returns a filter_view, a conforming Fusion sequence. + filter_if is another Fusion + algorithm. It returns a filter_view, a conforming Fusion sequence. This view reflects only those elements that pass the given predicate. In this - case, the predicate is boost::is_pointer<_>. - This "filtered view" is then passed to the for_each algorithm, which then prints + case, the predicate is boost::is_pointer<_>. + This "filtered view" is then passed to the for_each algorithm, which then prints the "filtered view" as XML.

    Easy, right?

    - + Associative tuples

    Ok, moving on...

    - Apart from vector, fusion has a couple + Apart from vector, fusion has a couple of other sequence types to choose from. Each sequence has its own characteristics. - We have list, set, map, plus a multitude of views that provide various ways to present + We have list, set, map, plus a multitude of views that provide various ways to present the sequences.

    - Fusion's map associate types with elements. - It can be used as a cleverer replacement of the struct. + Fusion's map associate types with elements. + It can be used as a cleverer replacement of the struct. Example:

    @@ -174,32 +174,32 @@
         struct age;
     }
     
    -typedef map<
    -    fusion::pair<fields::name, std::string>
    -  , fusion::pair<fields::age, int> > 
    +typedef map<
    +    fusion::pair<fields::name, std::string>
    +  , fusion::pair<fields::age, int> > 
     person;
     

    - map + map is an associative sequence. Its elements are Fusion pairs which differ somewhat - from std::pair. Fusion pairs only contain one member, + from std::pair. Fusion pairs only contain one member, with the type of their second template parameter. The first type parameter of the pair is used as an index to the associated element in the sequence. - For example, given a a_person - of type, person, you can do: + For example, given a a_person + of type, person, you can do:

     using namespace fields;
    -std::string person_name = at_key<name>(a_person);
    -int person_age = at_key<age>(a_person);
    +std::string person_name = at_key<name>(a_person);
    +int person_age = at_key<age>(a_person);
     

    - Why go through all this trouble, you say? Well, for one, unlike the struct, we are dealing with a generic data structure. + Why go through all this trouble, you say? Well, for one, unlike the struct, we are dealing with a generic data structure. There are a multitude of facilities available at your disposal provided out of the box with fusion or written by others. With these facilities, introspection comes for free, for example. We can write one serialization function (well, two, if you consider loading and saving) that will work for all your fusion - maps. + maps. Example:

    @@ -215,17 +215,17 @@
     template <typename Stuff>
     void save(Stuff const& stuff)
     {
    -    for_each(stuff, saver());
    +    for_each(stuff, saver());
     }
     

    - The save function is generic - and will work for all types of stuff - regardless if it is a person, - a dog or a whole alternate_universe. + The save function is generic + and will work for all types of stuff + regardless if it is a person, + a dog or a whole alternate_universe.

    - + Tip of the Iceberg

    @@ -236,14 +236,14 @@



    -

    [1] +

    [1] There are finer grained header files available if you wish to have more control over which components to include (see section Orgainization for details).

    -

    [2] - 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 +

    [2] + 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.

    diff --git a/doc/html/fusion/references.html b/doc/html/fusion/references.html index ef4f7188..3655c26e 100644 --- a/doc/html/fusion/references.html +++ b/doc/html/fusion/references.html @@ -3,7 +3,7 @@ References - + diff --git a/doc/html/fusion/sequences.html b/doc/html/fusion/sequences.html index 191065dd..9970dbc1 100644 --- a/doc/html/fusion/sequences.html +++ b/doc/html/fusion/sequences.html @@ -3,7 +3,7 @@ Sequences - + @@ -95,7 +95,7 @@ type that can be used to iterate through the Sequence's elements.

    - + Header

    diff --git a/doc/html/fusion/sequences/adapted.html b/doc/html/fusion/sequences/adapted.html
    index f7f9cd89..c13a9200 100644
    --- a/doc/html/fusion/sequences/adapted.html
    +++ b/doc/html/fusion/sequences/adapted.html
    @@ -3,7 +3,7 @@
     
     Adapted
     
    -
    +
     
     
     
    @@ -26,18 +26,18 @@
     
     

    - Fusion provides a couple of adapters for other sequences such as std::pair, + Fusion provides a couple of adapters for other sequences such as std::pair, MPL sequences, - and boost::array. These adapters are written using + and boost::array. These adapters are written using Fusion's non-intrusive Extension mechanism. If you wish to use these sequences with fusion, simply include the necessary files and they will be regarded as first-class, fully conforming fusion sequences - [4] + [4] .

    - + Header

    @@ -45,7 +45,7 @@
     


    -

    [4] +

    [4] Fusion sequences may also be adapted as fully conforming MPL sequences (see Intrinsics). That way, we can have 2-way adaptation to and from MPL diff --git a/doc/html/fusion/sequences/adapted/boost__array.html b/doc/html/fusion/sequences/adapted/boost__array.html index 42004874..574ac5e0 100644 --- a/doc/html/fusion/sequences/adapted/boost__array.html +++ b/doc/html/fusion/sequences/adapted/boost__array.html @@ -3,7 +3,7 @@ boost::array - + @@ -26,41 +26,41 @@

    - This module provides adapters for boost::array. - Including the module header makes boost::array + This module provides adapters for boost::array. + Including the module header makes boost::array a fully conforming Random Access Sequence.

    - + Header
     #include <boost/fusion/sequence/adapted/array.hpp>
     
    - + Model of
    - + Example
     boost::array<int,3> arr = {{1,2,3}};
     
    -std::cout << *begin(arr) << std::endl;
    -std::cout << *next(begin(arr)) << std::endl;
    -std::cout << *advance_c<2>(begin(arr)) << std::endl;
    -std::cout << *prior(end(arr)) << std::endl;
    -std::cout << at_c<2>(arr) << std::endl;
    +std::cout << *begin(arr) << std::endl;
    +std::cout << *next(begin(arr)) << std::endl;
    +std::cout << *advance_c<2>(begin(arr)) << std::endl;
    +std::cout << *prior(end(arr)) << std::endl;
    +std::cout << at_c<2>(arr) << std::endl;
     
    - + See also

    diff --git a/doc/html/fusion/sequences/adapted/boost__tuple.html b/doc/html/fusion/sequences/adapted/boost__tuple.html index d161ce16..7d31fed4 100644 --- a/doc/html/fusion/sequences/adapted/boost__tuple.html +++ b/doc/html/fusion/sequences/adapted/boost__tuple.html @@ -3,7 +3,7 @@ boost::tuple - + @@ -26,27 +26,27 @@

    - This module provides adapters for boost::tuple. - Including the module header makes boost::tuple + This module provides adapters for boost::tuple. + Including the module header makes boost::tuple a fully conforming Forward Sequence.

    - + Header
     #include <boost/fusion/sequence/adapted/boost_tuple.hpp>
     
    - + Model of
    - + Example
    @@ -55,7 +55,7 @@
     std::cout << *boost::fusion::next(boost::fusion::begin(example_tuple)) << '\n';
     
    - + See also

    diff --git a/doc/html/fusion/sequences/adapted/boost__variant.html b/doc/html/fusion/sequences/adapted/boost__variant.html index fd3e7416..28aedfc1 100644 --- a/doc/html/fusion/sequences/adapted/boost__variant.html +++ b/doc/html/fusion/sequences/adapted/boost__variant.html @@ -3,7 +3,7 @@ boost::variant - + @@ -26,8 +26,8 @@

    - This module provides adapters for boost::variant. - Including the module header makes boost::variant + This module provides adapters for boost::variant. + Including the module header makes boost::variant a fully conforming Forward Sequence. The variant acts as a sequence of the types that can be @@ -36,21 +36,21 @@ value of that type.

    - + Header
     #include <boost/fusion/sequence/adapted/variant.hpp>
     
    - + Model of
    - + Example
    @@ -60,7 +60,7 @@
     std::cout << example_variant << '\n';
     
    - + See also

    diff --git a/doc/html/fusion/sequences/adapted/mpl_sequence.html b/doc/html/fusion/sequences/adapted/mpl_sequence.html index 184b5522..1b050496 100644 --- a/doc/html/fusion/sequences/adapted/mpl_sequence.html +++ b/doc/html/fusion/sequences/adapted/mpl_sequence.html @@ -3,7 +3,7 @@ mpl sequence - + @@ -31,14 +31,14 @@ sequences fully conforming fusion sequences.

    - + Header
     #include <boost/fusion/sequence/adapted/mpl.hpp>
     
    - + Model of
      @@ -62,21 +62,21 @@
    - + Example
     mpl::vector_c<int, 123, 456> vec_c;
     fusion::vector2<int, long> v(vec_c);
    -std::cout << at_c<0>(v) << std::endl;
    -std::cout << at_c<1>(v) << std::endl;
    +std::cout << at_c<0>(v) << std::endl;
    +std::cout << at_c<1>(v) << std::endl;
     
     v = mpl::vector_c<int, 456, 789>();
    -std::cout << at_c<0>(v) << std::endl;
    -std::cout << at_c<1>(v) << std::endl;
    +std::cout << at_c<0>(v) << std::endl;
    +std::cout << at_c<1>(v) << std::endl;
     
    - + See also

    diff --git a/doc/html/fusion/sequences/adapted/std__pair.html b/doc/html/fusion/sequences/adapted/std__pair.html index e079ae74..8b89c766 100644 --- a/doc/html/fusion/sequences/adapted/std__pair.html +++ b/doc/html/fusion/sequences/adapted/std__pair.html @@ -3,7 +3,7 @@ std::pair - + @@ -26,44 +26,44 @@

    - This module provides adapters for std::pair. - Including the module header makes std::pair + This module provides adapters for std::pair. + Including the module header makes std::pair a fully conforming Random Access Sequence.

    - + Header
     #include <boost/fusion/sequence/adapted/std_pair.hpp>
     
    - + Model of
    - + Example
     std::pair<int, std::string> p(123, "Hola!!!");
    -std::cout << at_c<0>(p) << std::endl;
    -std::cout << at_c<1>(p) << std::endl;
    +std::cout << at_c<0>(p) << std::endl;
    +std::cout << at_c<1>(p) << std::endl;
     std::cout << p << std::endl;
     
    - + See also

    - std::pair, - TR1 - and std::pair + std::pair, + TR1 + and std::pair

    diff --git a/doc/html/fusion/sequences/concepts.html b/doc/html/fusion/sequences/concepts.html index 680b35ac..f4706530 100644 --- a/doc/html/fusion/sequences/concepts.html +++ b/doc/html/fusion/sequences/concepts.html @@ -3,7 +3,7 @@ Concepts - + @@ -30,7 +30,7 @@ Fusion Sequences are organized into a hierarchy of concepts.

    - + Traversal

    @@ -48,7 +48,7 @@ Sequence. These concepts pertain to sequence traversal.

    - + Associativity

    diff --git a/doc/html/fusion/sequences/concepts/associative_sequence.html b/doc/html/fusion/sequences/concepts/associative_sequence.html index f54484d0..3222fdc8 100644 --- a/doc/html/fusion/sequences/concepts/associative_sequence.html +++ b/doc/html/fusion/sequences/concepts/associative_sequence.html @@ -4,7 +4,7 @@ Associative Sequence - + Associative Sequence

    - + Description

    @@ -48,30 +48,30 @@

    Notation

    -
    s
    +
    s
    An Associative Sequence
    -
    S
    +
    S
    An Associative Sequence type
    -
    K
    +
    K
    An arbitrary key type
    -
    o
    +
    o
    An arbitrary object
    -
    e
    +
    e
    A Sequence element
    - + Valid Expressions
    @@ -94,34 +94,34 @@ - + - + - +
    has_key<K>(s)has_key<K>(s) MPL Boolean Constant. Convertible to bool.   Constant
    at_key<K>(s)at_key<K>(s) Any type   Constant
    at_key<K>(s) = oat_key<K>(s) = o Any type -s - is mutable and e = o, - where e is the first +s + is mutable and e = o, + where e is the first element in the sequence, is a valid expression. Constant
    - + Result Type Expressions
    @@ -136,32 +136,32 @@ -result_of::has_key<S, K>::type +result_of::has_key<S, K>::type Amortized constant time -result_of::at_key<S, K>::type +result_of::at_key<S, K>::type Amortized constant time -result_of::value_at_key<S, K>::type +result_of::value_at_key<S, K>::type Amortized constant time

    - note result_of::at_key<S, K> returns the actual type returned by - at_key<K>(s). In + note result_of::at_key<S, K> returns the actual type returned by + at_key<K>(s). In most cases, this is a reference. Hence, there is no way to know the exact - element type using result_of::at_key<S, K>.The element at K + element type using result_of::at_key<S, K>.The element at K may actually be a reference to begin with. For this purpose, you can use - result_of::value_at_key<S, N>. + result_of::value_at_key<S, N>.

    - + Expression Semantics
    @@ -176,30 +176,30 @@ -has_key<K>(s) +has_key<K>(s) A - boolean Integral Constant c - such that c::value == - true if and only if there - is one or more elements with the key k - in s; see has_key. + boolean Integral Constant c + such that c::value == + true if and only if there + is one or more elements with the key k + in s; see has_key. -at_key<K>(s) +at_key<K>(s) The - element associated with the key K - in the sequence s; - see at. + element associated with the key K + in the sequence s; + see at.
    - + Models
    diff --git a/doc/html/fusion/sequences/concepts/bidirectional_sequence.html b/doc/html/fusion/sequences/concepts/bidirectional_sequence.html index af10787a..7796468b 100644 --- a/doc/html/fusion/sequences/concepts/bidirectional_sequence.html +++ b/doc/html/fusion/sequences/concepts/bidirectional_sequence.html @@ -4,7 +4,7 @@ Bidirectional Sequence - +Bidirectional Sequence
    - + Description

    @@ -42,7 +42,7 @@ Iterator.

    - + Refinement of
    @@ -53,26 +53,26 @@

    Notation

    -
    s
    +
    s
    A Forward Sequence
    -
    S
    +
    S
    A Forward Sequence type
    -
    o
    +
    o
    An arbitrary object
    -
    e
    +
    e
    A Sequence element
    - + Valid Expressions
    @@ -97,7 +97,7 @@ - + @@ -105,7 +105,7 @@ - + @@ -113,27 +113,27 @@ - + - +
    begin(s)begin(s) Bidirectional IteratorConstant
    end(s)end(s) Bidirectional IteratorConstant
    back(s)back(s) Any type   Constant
    back(s) = oback(s) = o Any type -s - is mutable and e = o, - where e is the first +s + is mutable and e = o, + where e is the first element in the sequence, is a valid expression. Constant
    - + Result Type Expressions
    @@ -148,24 +148,24 @@ -result_of::begin<S>::type +result_of::begin<S>::type Amortized constant time -result_of::end<S>::type +result_of::end<S>::type Amortized constant time -result_of::back<S>::type +result_of::back<S>::type Amortized constant time
    - + Expression Semantics
    @@ -185,28 +185,28 @@ Semantics -back(s) +back(s) The - last element in the sequence; see back. + last element in the sequence; see back.
    - + Models
    diff --git a/doc/html/fusion/sequences/concepts/forward_sequence.html b/doc/html/fusion/sequences/concepts/forward_sequence.html index b6003f02..bb169036 100644 --- a/doc/html/fusion/sequences/concepts/forward_sequence.html +++ b/doc/html/fusion/sequences/concepts/forward_sequence.html @@ -4,7 +4,7 @@ Forward Sequence - + @@ -30,7 +30,7 @@ Sequence">Forward Sequence
    - + Description

    @@ -43,26 +43,26 @@

    Notation

    -
    s
    +
    s
    A Forward Sequence
    -
    S
    +
    S
    A Forward Sequence type
    -
    o
    +
    o
    An arbitrary object
    -
    e
    +
    e
    A Sequence element
    - + Valid Expressions
    @@ -85,55 +85,55 @@ - + - + - + - + - + - +
    begin(s)begin(s) Forward Iterator   Constant
    end(s)end(s) Forward Iterator   Constant
    size(s)size(s) MPL Integral Constant. Convertible to int.   Constant
    empty(s)empty(s) MPL Boolean Constant. Convertible to bool.   Constant
    front(s)front(s) Any type   Constant
    front(s) = ofront(s) = o Any type -s - is mutable and e = o, - where e is the first +s + is mutable and e = o, + where e is the first element in the sequence, is a valid expression. Constant
    - + Result Type Expressions
    @@ -148,32 +148,32 @@ -result_of::begin<S>::type +result_of::begin<S>::type Amortized constant time -result_of::end<S>::type +result_of::end<S>::type Amortized constant time -result_of::size<S>::type +result_of::size<S>::type Unspecified -result_of::empty<S>::type +result_of::empty<S>::type Constant time -result_of::front<S>::type +result_of::front<S>::type Amortized constant time
    - + Expression Semantics
    @@ -188,37 +188,37 @@ -begin(s) +begin(s) An - iterator to the first element of the sequence; see begin. + iterator to the first element of the sequence; see begin. -end(s) +end(s) A - past-the-end iterator to the sequence; see end. + past-the-end iterator to the sequence; see end. -size(s) +size(s) The - size of the sequence; see size. + size of the sequence; see size. -empty(s) +empty(s) A - boolean Integral Constant c - such that c::value == - true if and only if the sequence - is empty; see empty. + boolean Integral Constant c + such that c::value == + true if and only if the sequence + is empty; see empty. -front(s) +front(s) The - first element in the sequence; see front. + first element in the sequence; see front.
    - + Invariants

    @@ -226,41 +226,41 @@

    • -[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. + 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 + Two different iterations through s will access its elements in the same order.
    - + Models
    diff --git a/doc/html/fusion/sequences/concepts/random_access_sequence.html b/doc/html/fusion/sequences/concepts/random_access_sequence.html index f60100af..3ddad493 100644 --- a/doc/html/fusion/sequences/concepts/random_access_sequence.html +++ b/doc/html/fusion/sequences/concepts/random_access_sequence.html @@ -4,7 +4,7 @@ Random Access Sequence - +Random Access Sequence
    - + Description

    @@ -43,7 +43,7 @@ sequence elements.

    - + Refinement of
    @@ -55,30 +55,30 @@

    Notation

    -
    s
    +
    s
    A Random Access Sequence
    -
    S
    +
    S
    A Random Access Sequence type
    -
    N
    +
    N
    An integral constant
    -
    o
    +
    o
    An arbitrary object
    -
    e
    +
    e
    A Sequence element
    - + Valid Expressions
    @@ -103,7 +103,7 @@ - + @@ -111,7 +111,7 @@ - + @@ -119,27 +119,27 @@ - + - +
    begin(s)begin(s) Random Access IteratorConstant
    end(s)end(s) Random Access IteratorConstant
    at<N>(s)at<N>(s) Any type   Constant
    at<N>(s) = oat<N>(s) = o Any type -s - is mutable and e = o, - where e is the first +s + is mutable and e = o, + where e is the first element in the sequence, is a valid expression. Constant
    - + Result Type Expressions
    @@ -154,37 +154,37 @@ -result_of::begin<S>::type +result_of::begin<S>::type Amortized constant time -result_of::end<S>::type +result_of::end<S>::type Amortized constant time -result_of::at<S, N>::type +result_of::at<S, N>::type Amortized constant time -result_of::value_at<S, N>::type +result_of::value_at<S, N>::type Amortized constant time

    - note result_of::at<S, N> returns the actual type returned by - at<N>(s). In + note result_of::at<S, N> returns the actual type returned by + at<N>(s). In most cases, this is a reference. Hence, there is no way to know the exact - element type using result_of::at<S, N>.The element at N + element type using result_of::at<S, N>.The element at N may actually be a reference to begin with. For this purpose, you can use - result_of::value_at<S, N>. + result_of::value_at<S, N>.

    - + Expression Semantics
    @@ -204,28 +204,28 @@ Semantics -at<N>(s) +at<N>(s) The - Nth element from the beginning of the sequence; see at. + Nth element from the beginning of the sequence; see at.
    - + Models
    diff --git a/doc/html/fusion/sequences/containers.html b/doc/html/fusion/sequences/containers.html index 0f2be65c..1903e964 100644 --- a/doc/html/fusion/sequences/containers.html +++ b/doc/html/fusion/sequences/containers.html @@ -3,7 +3,7 @@ Containers - +STL.

    - + Header

    diff --git a/doc/html/fusion/sequences/containers/cons.html b/doc/html/fusion/sequences/containers/cons.html
    index f9793a55..16484259 100644
    --- a/doc/html/fusion/sequences/containers/cons.html
    +++ b/doc/html/fusion/sequences/containers/cons.html
    @@ -3,7 +3,7 @@
     
     cons
     
    -
    +
     
     
     
    @@ -26,29 +26,29 @@
     
     
    - + Description

    - cons is a simple cons is a simple Forward Sequence. - It is a lisp style recursive list structure where car - is the head and cdr - is the tail: usually another cons structure or nil: the empty list. Fusion's list is built on top of this more - primitive data structure. It is more efficient than vector when the target sequence + It is a lisp style recursive list structure where car + is the head and cdr + is the tail: usually another cons structure or nil: the empty list. Fusion's list is built on top of this more + primitive data structure. It is more efficient than vector when the target sequence is constructed piecemeal (a data at a time). The runtime cost of access to each element is peculiarly constant (see Recursive Inlined Functions).

    - + Header
     #include <boost/fusion/sequence/container/list/cons.hpp>
     
    - + Synopsis
    @@ -56,7 +56,7 @@
     struct cons;
     
    - + Template parameters
    @@ -73,21 +73,21 @@
    - + - + - +
    CarCar Head type  
    CdrCdr Tail typenilnil
    - + Model of
    - + Expression Semantics
    @@ -150,71 +150,71 @@ -nil() +nil() Creates an empty list. -C() +C() Creates a cons with default constructed elements. -C(car) +C(car) Creates - a cons with car head + a cons with car head and default constructed tail. -C(car, - cdr) +C(car, + cdr) Creates - a cons with car head - and cdr tail. + a cons with car head + and cdr tail. -C(s) +C(s) Copy constructs a cons from a Forward - Sequence, s. + Sequence, s. -l = - s +l = + s Assigns - to a cons, l, from + to a cons, l, from a Forward - Sequence, s. + Sequence, s. -at<N>(l) +at<N>(l) The - Nth element from the beginning of the sequence; see at. + Nth element from the beginning of the sequence; see at.

    - note at<N>(l) is + note at<N>(l) is provided for convenience and compatibility with the original Boost.Tuple - library, despite cons being + library, despite cons being a Forward Sequence - only (at is supposed to + only (at is supposed to be a Random - Access Sequence requirement). The runtime complexity of at is constant (see Recursive + Access Sequence requirement). The runtime complexity of at is constant (see Recursive Inlined Functions).

    - + Example
     cons<int, cons<float> > l(12, cons<float>(5.5f));
    -std::cout << at<0>(l) << std::endl;
    -std::cout << at<1>(l) << std::endl;
    +std::cout << at<0>(l) << std::endl;
    +std::cout << at<1>(l) << std::endl;
     
    diff --git a/doc/html/fusion/sequences/containers/list.html b/doc/html/fusion/sequences/containers/list.html index 6753b09c..dbb35b9e 100644 --- a/doc/html/fusion/sequences/containers/list.html +++ b/doc/html/fusion/sequences/containers/list.html @@ -3,7 +3,7 @@ list - + @@ -26,19 +26,19 @@
    - + Description

    - list is a list is a Forward - Sequence of heterogenous typed data built on top of cons. It is more efficient than - vector + Sequence of heterogenous typed data built on top of cons. It is more efficient than + vector when the target sequence is constructed piecemeal (a data at a time). The runtime cost of access to each element is peculiarly constant (see Recursive Inlined Functions).

    - + Header
    @@ -46,7 +46,7 @@
     #include <boost/fusion/sequence/container/list/list_forward.hpp>
     
    - + Synopsis
    @@ -60,24 +60,24 @@
     struct list;
     

    - The variadic class interface accepts 0 - to FUSION_MAX_LIST_SIZE - elements, where FUSION_MAX_LIST_SIZE - is a user definable predefined maximum that defaults to 10. + The variadic class interface accepts 0 + to FUSION_MAX_LIST_SIZE + elements, where FUSION_MAX_LIST_SIZE + is a user definable predefined maximum that defaults to 10. Example:

     list<int, char, double>
     

    - You may define the preprocessor constant FUSION_MAX_LIST_SIZE + You may define the preprocessor constant FUSION_MAX_LIST_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_LIST_SIZE 20
     
    - + Template parameters
    @@ -94,14 +94,14 @@
    -T0...TN +T0...TN Element types unspecified-type
    - + Model of
    - + Expression Semantics
    @@ -155,58 +155,58 @@ -L() +L() Creates a list with default constructed elements. -L(e0, e1,... - en) +L(e0, e1,... + en) Creates - a list with elements e0...en. + a list with elements e0...en. -L(s) +L(s) Copy constructs a list from a Forward - Sequence, s. + Sequence, s. -l = - s +l = + s Assigns - to a list, l, from + to a list, l, from a Forward - Sequence, s. + Sequence, s. -at<N>(l) +at<N>(l) The - Nth element from the beginning of the sequence; see at. + Nth element from the beginning of the sequence; see at.

    - note at<n>(l) is + note at<n>(l) is provided for convenience and compatibility with the original Boost.Tuple - library, despite list being + library, despite list being a Forward Sequence - only (at is supposed to be a at is supposed to be a Random - Access Sequence requirement). The runtime complexity of at is constant (see Recursive + Access Sequence requirement). The runtime complexity of at is constant (see Recursive Inlined Functions).

    - + Example
     list<int, float> l(12, 5.5f);
    -std::cout << at<0>(l) << std::endl;
    -std::cout << at<1>(l) << std::endl;
    +std::cout << at<0>(l) << std::endl;
    +std::cout << at<1>(l) << std::endl;
     
    diff --git a/doc/html/fusion/sequences/containers/map.html b/doc/html/fusion/sequences/containers/map.html index afcaac73..65fd428a 100644 --- a/doc/html/fusion/sequences/containers/map.html +++ b/doc/html/fusion/sequences/containers/map.html @@ -3,7 +3,7 @@ map - + @@ -26,14 +26,14 @@
    - + Description

    map is an Associative Sequence of heteregenous typed data elements. Each element is a - key/data pair (see fusion::pair) + key/data pair (see fusion::pair) where the key has no data (type only). Type identity is used to impose an equivalence relation on keys. A map may contain at most one element for each key. Membership testing and element key lookup has constant runtime @@ -41,14 +41,14 @@ Functions).

    - + Header
     #include <boost/fusion/sequence/container/map.hpp>
     
    - + Synopsis
    @@ -62,24 +62,24 @@
     struct map;
     

    - The variadic class interface accepts 0 - to FUSION_MAX_MAP_SIZE - elements, where FUSION_MAX_MAP_SIZE - is a user definable predefined maximum that defaults to 10. + The variadic class interface accepts 0 + to FUSION_MAX_MAP_SIZE + elements, where FUSION_MAX_MAP_SIZE + is a user definable predefined maximum that defaults to 10. Example:

    -map<pair<int, char>, pair<char, char>, pair<double, char> >
    +map<pair<int, char>, pair<char, char>, pair<double, char> >
     

    - You may define the preprocessor constant FUSION_MAX_MAP_SIZE + You may define the preprocessor constant FUSION_MAX_MAP_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_MAP_SIZE 20
     
    - + Template parameters
    @@ -96,14 +96,14 @@
    -T0...TN +T0...TN Element types unspecified-type
    - + Model of
      @@ -116,19 +116,19 @@

      Notation

      -
      M
      +
      M
      - A map type + A map type
      -
      m
      +
      m
      - An instance of map + An instance of map
      -
      e0...en
      +
      e0...en
      - Heterogeneous key/value pairs (see fusion::pair) + Heterogeneous key/value pairs (see fusion::pair)
      -
      s
      +
      s
      A Forward @@ -137,7 +137,7 @@
      - + Expression Semantics
      @@ -160,50 +160,50 @@ -M() +M() Creates a map with default constructed elements. -M(e0, e1,... - en) +M(e0, e1,... + en) Creates - a map with element pairs e0...en. + a map with element pairs e0...en. -M(s) +M(s) Copy constructs a map from a Forward - Sequence s. + Sequence s. -m = - s +m = + s Assigns - to a map, m, from + to a map, m, from a Forward - Sequence s. + Sequence s.
    - + Example
     typedef map<
    -    pair<int, char>
    -  , pair<double, std::string> > 
    +    pair<int, char>
    +  , pair<double, std::string> > 
     map_type;
     
     map_type m(
    -    make_pair<int>('X')
    -  , make_pair<double>("Men"));
    +    make_pair<int>('X')
    +  , make_pair<double>("Men"));
     
    -std::cout << at<int>(m) << std::endl;
    -std::cout << at<double>(m) << std::endl;
    +std::cout << at<int>(m) << std::endl;
    +std::cout << at<double>(m) << std::endl;
     
    diff --git a/doc/html/fusion/sequences/containers/set.html b/doc/html/fusion/sequences/containers/set.html index e10255df..b1b20551 100644 --- a/doc/html/fusion/sequences/containers/set.html +++ b/doc/html/fusion/sequences/containers/set.html @@ -3,7 +3,7 @@ set - + @@ -26,7 +26,7 @@
    - + Description

    @@ -39,14 +39,14 @@ Functions).

    - + Header
     #include <boost/fusion/sequence/container/set.hpp>
     
    - + Synopsis
    @@ -60,24 +60,24 @@
     struct set;
     

    - The variadic class interface accepts 0 - to FUSION_MAX_SET_SIZE - elements, where FUSION_MAX_SET_SIZE - is a user definable predefined maximum that defaults to 10. + The variadic class interface accepts 0 + to FUSION_MAX_SET_SIZE + elements, where FUSION_MAX_SET_SIZE + is a user definable predefined maximum that defaults to 10. Example:

     set<int, char, double>
     

    - You may define the preprocessor constant FUSION_MAX_SET_SIZE + You may define the preprocessor constant FUSION_MAX_SET_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_SET_SIZE 20
     
    - + Template parameters
    @@ -94,14 +94,14 @@
    -T0...TN +T0...TN Element types unspecified-type
    - + Model of
      @@ -114,19 +114,19 @@

      Notation

      -
      S
      +
      S
      - A set type + A set type
      -
      s
      +
      s
      - An instance of set + An instance of set
      -
      e0...en
      +
      e0...en
      Heterogeneous values
      -
      fs
      +
      fs
      A Forward @@ -135,7 +135,7 @@
      - + Expression Semantics
      @@ -158,44 +158,44 @@ -S() +S() Creates a set with default constructed elements. -S(e0, e1,... - en) +S(e0, e1,... + en) Creates - a set with elements e0...en. + a set with elements e0...en. -S(fs) +S(fs) Copy constructs a set from a Forward - Sequence fs. + Sequence fs. -s = - fs +s = + fs Assigns - to a set, s, from + to a set, s, from a Forward - Sequence fs. + Sequence fs.
    - + Example
     typedef set<int, float> S;
     S s(12, 5.5f);
    -std::cout << at_key<int>(s) << std::endl;
    -std::cout << at_key<float>(s) << std::endl;
    -std::cout << result_of::has_key<S, double>::value << std::endl;
    +std::cout << at_key<int>(s) << std::endl;
    +std::cout << at_key<float>(s) << std::endl;
    +std::cout << result_of::has_key<S, double>::value << std::endl;
     
    diff --git a/doc/html/fusion/sequences/containers/vector.html b/doc/html/fusion/sequences/containers/vector.html index f6dedc7e..26c5f28b 100644 --- a/doc/html/fusion/sequences/containers/vector.html +++ b/doc/html/fusion/sequences/containers/vector.html @@ -3,7 +3,7 @@ vector - + @@ -26,20 +26,20 @@
    - + Description

    - vector is a vector is a Random Access Sequence of heterogenous typed data structured as a simple - struct where each element - is held as a member variable. vector + struct where each element + is held as a member variable. vector is the simplest of the Fusion sequence container, and in many cases the most efficient.

    - + Header
    @@ -54,11 +54,11 @@
     #include <boost/fusion/sequence/container/vector/vector50.hpp>
     
    - + Synopsis

    - Numbered forms + Numbered forms

     template <>
    @@ -79,7 +79,7 @@
     struct vectorN;
     

    - Variadic form + Variadic form

     template <
    @@ -98,24 +98,24 @@
     vector3<int, char, double>
     

    - The variadic form accepts 0 - to FUSION_MAX_VECTOR_SIZE - elements, where FUSION_MAX_VECTOR_SIZE - is a user definable predefined maximum that defaults to 10. + The variadic form accepts 0 + to FUSION_MAX_VECTOR_SIZE + elements, where FUSION_MAX_VECTOR_SIZE + is a user definable predefined maximum that defaults to 10. Example:

     vector<int, char, double>
     

    - You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE + You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Template parameters
    @@ -132,14 +132,14 @@
    -T0...TN +T0...TN Element types unspecified
    - + Model of
    - + Expression Semantics
    @@ -190,42 +190,42 @@ -V() +V() Creates a vector with default constructed elements. -V(e0, e1,... - en) +V(e0, e1,... + en) Creates - a vector with elements e0...en. + a vector with elements e0...en. -V(s) +V(s) Copy constructs a vector from a Forward - Sequence, s. + Sequence, s. -v = - s +v = + s Assigns - to a vector, v, from + to a vector, v, from a Forward - Sequence, s. + Sequence, s.
    - + Example
     vector<int, float> v(12, 5.5f);
    -std::cout << at_c<0>(v) << std::endl;
    -std::cout << at_c<1>(v) << std::endl;
    +std::cout << at_c<0>(v) << std::endl;
    +std::cout << at_c<1>(v) << std::endl;
     
    diff --git a/doc/html/fusion/sequences/conversion.html b/doc/html/fusion/sequences/conversion.html index cdaaa073..ad693af2 100644 --- a/doc/html/fusion/sequences/conversion.html +++ b/doc/html/fusion/sequences/conversion.html @@ -3,7 +3,7 @@ Conversion - + @@ -30,7 +30,7 @@ types using one of these conversion functions.

    - + Header

    diff --git a/doc/html/fusion/sequences/conversion/functions.html b/doc/html/fusion/sequences/conversion/functions.html
    index 404581af..14fc2751 100644
    --- a/doc/html/fusion/sequences/conversion/functions.html
    +++ b/doc/html/fusion/sequences/conversion/functions.html
    @@ -3,7 +3,7 @@
     
     Functions
     
    -
    +
     
     
     
    diff --git a/doc/html/fusion/sequences/conversion/functions/as_list.html b/doc/html/fusion/sequences/conversion/functions/as_list.html
    index ae25a601..4b372ec8 100644
    --- a/doc/html/fusion/sequences/conversion/functions/as_list.html
    +++ b/doc/html/fusion/sequences/conversion/functions/as_list.html
    @@ -3,7 +3,7 @@
     
     as_list
     
    -
    +
     
     
     
    @@ -26,14 +26,14 @@
     
     
    - + Description

    - Convert a fusion sequence to a list. + Convert a fusion sequence to a list.

    - + Synopsis
    @@ -46,7 +46,7 @@
     as_list(Sequence const& seq);
     
    - + Parameters
    @@ -61,14 +61,14 @@ - +
    Description
    seqseq An instance of Sequence The sequence to convert.
    - + Expression Semantics
    @@ -76,25 +76,25 @@ as_list(seq);

    - Return type: result_of::as_list<Sequence>::type + Return type: result_of::as_list<Sequence>::type

    - Semantics: Convert a fusion sequence, - seq, to a list. + Semantics: Convert a fusion sequence, + seq, to a list.

    - + Header
     #include <boost/fusion/sequence/conversion/as_list.hpp>
     
    - + Example
    -as_list(make_vector('x', 123, "hello"))
    +as_list(make_vector('x', 123, "hello"))
     
    diff --git a/doc/html/fusion/sequences/conversion/functions/as_map.html b/doc/html/fusion/sequences/conversion/functions/as_map.html index 9c0abf91..56d87d8b 100644 --- a/doc/html/fusion/sequences/conversion/functions/as_map.html +++ b/doc/html/fusion/sequences/conversion/functions/as_map.html @@ -3,7 +3,7 @@ as_map - + @@ -26,14 +26,14 @@
    - + Description

    - Convert a fusion sequence to a map. + Convert a fusion sequence to a map.

    - + Synopsis
    @@ -46,7 +46,7 @@
     as_map(Sequence const& seq);
     
    - + Parameters
    @@ -61,14 +61,14 @@ - +
    Description
    seqseq An instance of Sequence The sequence to convert.
    - + Expression Semantics
    @@ -76,32 +76,32 @@ as_map(seq);

    - Return type: result_of::as_map<Sequence>::type + Return type: result_of::as_map<Sequence>::type

    - Semantics: Convert a fusion sequence, - seq, to a map. + Semantics: Convert a fusion sequence, + seq, to a map.

    - Precondition: The elements of the sequence + Precondition: The elements of the sequence are assumed to be __fusionpair_s. - There may be no duplicate fusion::pair key types. + There may be no duplicate fusion::pair key types.

    - + Header
     #include <boost/fusion/sequence/conversion/as_map.hpp>
     
    - + Example
    -as_map(make_vector(
    -    make_pair<int>('X')
    -  , make_pair<double>("Men")))
    +as_map(make_vector(
    +    make_pair<int>('X')
    +  , make_pair<double>("Men")))
     
    diff --git a/doc/html/fusion/sequences/conversion/functions/as_set.html b/doc/html/fusion/sequences/conversion/functions/as_set.html index 202bd698..f8d50c64 100644 --- a/doc/html/fusion/sequences/conversion/functions/as_set.html +++ b/doc/html/fusion/sequences/conversion/functions/as_set.html @@ -3,7 +3,7 @@ as_set - + @@ -26,14 +26,14 @@
    - + Description

    - Convert a fusion sequence to a set. + Convert a fusion sequence to a set.

    - + Synopsis
    @@ -46,7 +46,7 @@
     as_set(Sequence const& seq);
     
    - + Parameters
    @@ -61,14 +61,14 @@ - +
    Description
    seqseq An instance of Sequence The sequence to convert.
    - + Expression Semantics
    @@ -76,29 +76,29 @@ as_set(seq);

    - Return type: result_of::as_set<Sequence>::type + Return type: result_of::as_set<Sequence>::type

    - Semantics: Convert a fusion sequence, - seq, to a set. + Semantics: Convert a fusion sequence, + seq, to a set.

    - Precondition: There may be no duplicate + Precondition: There may be no duplicate key types.

    - + Header
     #include <boost/fusion/sequence/conversion/as_set.hpp>
     
    - + Example
    -as_set(make_vector('x', 123, "hello"))
    +as_set(make_vector('x', 123, "hello"))
     
    diff --git a/doc/html/fusion/sequences/conversion/functions/as_vector.html b/doc/html/fusion/sequences/conversion/functions/as_vector.html index d7f4f246..27d96ff3 100644 --- a/doc/html/fusion/sequences/conversion/functions/as_vector.html +++ b/doc/html/fusion/sequences/conversion/functions/as_vector.html @@ -3,7 +3,7 @@ as_vector - + @@ -26,14 +26,14 @@
    - + Description

    - Convert a fusion sequence to a vector. + Convert a fusion sequence to a vector.

    - + Synopsis
    @@ -46,7 +46,7 @@
     as_vector(Sequence const& seq);
     
    - + Parameters
    @@ -61,14 +61,14 @@ - +
    Description
    seqseq An instance of Sequence The sequence to convert.
    - + Expression Semantics
    @@ -76,25 +76,25 @@ as_vector(seq);

    - Return type: result_of::as_vector<Sequence>::type + Return type: result_of::as_vector<Sequence>::type

    - Semantics: Convert a fusion sequence, - seq, to a vector. + Semantics: Convert a fusion sequence, + seq, to a vector.

    - + Header
     #include <boost/fusion/sequence/conversion/as_vector.hpp>
     
    - + Example
    -as_vector(make_list('x', 123, "hello"))
    +as_vector(make_list('x', 123, "hello"))
     
    diff --git a/doc/html/fusion/sequences/conversion/metafunctions.html b/doc/html/fusion/sequences/conversion/metafunctions.html index 101ffa07..8a243b2b 100644 --- a/doc/html/fusion/sequences/conversion/metafunctions.html +++ b/doc/html/fusion/sequences/conversion/metafunctions.html @@ -3,7 +3,7 @@ Metafunctions - + diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_list.html b/doc/html/fusion/sequences/conversion/metafunctions/as_list.html index e4962648..912a0c22 100644 --- a/doc/html/fusion/sequences/conversion/metafunctions/as_list.html +++ b/doc/html/fusion/sequences/conversion/metafunctions/as_list.html @@ -3,7 +3,7 @@ as_list - + @@ -26,14 +26,14 @@
    - + Description

    - Returns the result type of as_list. + Returns the result type of as_list.

    - + Synopsis
    @@ -41,7 +41,7 @@
     struct as_list;
     
    - + Parameters
    @@ -56,7 +56,7 @@ - + @@ -65,7 +65,7 @@
    Description
    SequenceSequence A fusion Sequence
    - + Expression Semantics
    @@ -73,26 +73,26 @@ result_of::as_list<Sequence>::type;

    - Return type: A list with same elements as the - input sequence, Sequence. + Return type: A list with same elements as the + input sequence, Sequence.

    - Semantics: Convert a fusion sequence, - Sequence, to a list. + Semantics: Convert a fusion sequence, + Sequence, to a list.

    - + Header
     #include <boost/fusion/sequence/conversion/as_list.hpp>
     
    - + Example
    -result_of::as_list<vector<char, int> >::type
    +result_of::as_list<vector<char, int> >::type
     
    diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_map.html b/doc/html/fusion/sequences/conversion/metafunctions/as_map.html index 968323ab..3b202701 100644 --- a/doc/html/fusion/sequences/conversion/metafunctions/as_map.html +++ b/doc/html/fusion/sequences/conversion/metafunctions/as_map.html @@ -3,7 +3,7 @@ as_map - + @@ -26,14 +26,14 @@
    - + Description

    - Returns the result type of as_map. + Returns the result type of as_map.

    - + Synopsis
    @@ -41,7 +41,7 @@
     struct as_map;
     
    - + Parameters
    @@ -56,7 +56,7 @@ - + @@ -65,7 +65,7 @@
    Description
    SequenceSequence A fusion Sequence
    - + Expression Semantics
    @@ -73,33 +73,33 @@ result_of::as_map<Sequence>::type;

    - Return type: A map with same elements as the - input sequence, Sequence. + Return type: A map with same elements as the + input sequence, Sequence.

    - Semantics: Convert a fusion sequence, - Sequence, to a map. + Semantics: Convert a fusion sequence, + Sequence, to a map.

    - Precondition: The elements of the sequence + Precondition: The elements of the sequence are assumed to be __fusionpair_s. - There may be no duplicate fusion::pair key types. + There may be no duplicate fusion::pair key types.

    - + Header
     #include <boost/fusion/sequence/conversion/as_map.hpp>
     
    - + Example
    -result_of::as_map<vector<
    -    fusion::pair<int, char>
    -  , fusion::pair<double, std::string> > >::type
    +result_of::as_map<vector<
    +    fusion::pair<int, char>
    +  , fusion::pair<double, std::string> > >::type
     
    diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_set.html b/doc/html/fusion/sequences/conversion/metafunctions/as_set.html index f0be2ba7..9cc12e95 100644 --- a/doc/html/fusion/sequences/conversion/metafunctions/as_set.html +++ b/doc/html/fusion/sequences/conversion/metafunctions/as_set.html @@ -3,7 +3,7 @@ as_set - + @@ -26,14 +26,14 @@
    - + Description

    - Returns the result type of as_set. + Returns the result type of as_set.

    - + Synopsis
    @@ -41,7 +41,7 @@
     struct as_set;
     
    - + Parameters
    @@ -56,7 +56,7 @@ - + @@ -65,7 +65,7 @@
    Description
    SequenceSequence A fusion Sequence
    - + Expression Semantics
    @@ -73,30 +73,30 @@ result_of::as_set<Sequence>::type;

    - Return type: A set with same elements as the - input sequence, Sequence. + Return type: A set with same elements as the + input sequence, Sequence.

    - Semantics: Convert a fusion sequence, - Sequence, to a set. + Semantics: Convert a fusion sequence, + Sequence, to a set.

    - Precondition: There may be no duplicate + Precondition: There may be no duplicate key types.

    - + Header
     #include <boost/fusion/sequence/conversion/as_set.hpp>
     
    - + Example
    -result_of::as_set<vector<char, int> >::type
    +result_of::as_set<vector<char, int> >::type
     
    diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html b/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html index 1bcd0458..3fb76d1e 100644 --- a/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html +++ b/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html @@ -3,7 +3,7 @@ as_vector - + @@ -26,14 +26,14 @@
    - + Description

    - Returns the result type of as_vector. + Returns the result type of as_vector.

    - + Synopsis
    @@ -41,7 +41,7 @@
     struct as_vector;
     
    - + Parameters
    @@ -56,7 +56,7 @@ - + @@ -65,7 +65,7 @@
    Description
    SequenceSequence A fusion Sequence
    - + Expression Semantics
    @@ -73,26 +73,26 @@ result_of::as_vector<Sequence>::type;

    - Return type: A vector with same elements as - the input sequence, Sequence. + Return type: A vector with same elements as + the input sequence, Sequence.

    - Semantics: Convert a fusion sequence, - Sequence, to a vector. + Semantics: Convert a fusion sequence, + Sequence, to a vector.

    - + Header
     #include <boost/fusion/sequence/conversion/as_vector.hpp>
     
    - + Example
    -result_of::as_vector<list<char, int> >::type
    +result_of::as_vector<list<char, int> >::type
     
    diff --git a/doc/html/fusion/sequences/generation.html b/doc/html/fusion/sequences/generation.html index d628ce29..571cc872 100644 --- a/doc/html/fusion/sequences/generation.html +++ b/doc/html/fusion/sequences/generation.html @@ -3,7 +3,7 @@ Generation - + @@ -29,7 +29,7 @@ These are the functions that you can use to generate various forms of Containers from elemental values.

    - + Header

    diff --git a/doc/html/fusion/sequences/generation/functions.html b/doc/html/fusion/sequences/generation/functions.html
    index dae0210f..e73ed298 100644
    --- a/doc/html/fusion/sequences/generation/functions.html
    +++ b/doc/html/fusion/sequences/generation/functions.html
    @@ -3,7 +3,7 @@
     
     Functions
     
    -
    +
     
     
     
    diff --git a/doc/html/fusion/sequences/generation/functions/list_tie.html b/doc/html/fusion/sequences/generation/functions/list_tie.html
    index 78909415..f0ba9623 100644
    --- a/doc/html/fusion/sequences/generation/functions/list_tie.html
    +++ b/doc/html/fusion/sequences/generation/functions/list_tie.html
    @@ -3,7 +3,7 @@
     
     list_tie
     
    -
    +
     
     
     
    @@ -26,34 +26,34 @@
     
     
    - + Description

    - Constructs a tie using a list sequence. + Constructs a tie using a list sequence.

    - + Synopsis
     template <typename T0, typename T1,... typename TN>
    -list<T0&, T1&,... TN&>
    +list<T0&, T1&,... TN&>
     list_tie(T0& x0, T1& x1... TN& xN);
     

    - The variadic function accepts 0 - to FUSION_MAX_LIST_SIZE - elements, where FUSION_MAX_LIST_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_LIST_SIZE + The variadic function accepts 0 + to FUSION_MAX_LIST_SIZE + elements, where FUSION_MAX_LIST_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_LIST_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -68,21 +68,21 @@ - + xN
    Description
    x0, +x0, x1,... - xN Instances - of T0, + of T0, T1,... - TN + TN The - arguments to list_tie + arguments to list_tie
    - + Expression Semantics
    @@ -90,21 +90,21 @@ list_tie(x0, x1,... xN);

    - Return type: list<T0&, T1&,... + Return type: list<T0&, T1&,... TN&>

    - Semantics: Create a list of references from x0, x1,... xN. + Semantics: Create a list of references from x0, x1,... xN.

    - + Header
     #include <boost/fusion/sequence/generation/list_tie.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/generation/functions/make_cons.html b/doc/html/fusion/sequences/generation/functions/make_cons.html
    index 2ebc58db..8b1759d4 100644
    --- a/doc/html/fusion/sequences/generation/functions/make_cons.html
    +++ b/doc/html/fusion/sequences/generation/functions/make_cons.html
    @@ -3,7 +3,7 @@
     
     make_cons
     
    -
    +
     
     
     
    @@ -26,29 +26,29 @@
     
     
    - + Description

    - Create a cons from car - (head) and optional cdr + Create a cons from car + (head) and optional cdr (tail).

    - + Synopsis
     template <typename Car>
    -typename result_of::make_cons<Car>::type
    +typename result_of::make_cons<Car>::type
     make_cons(Car const& car);
     
     template <typename Car, typename Cdr>
    -typename result_of::make_cons<Car, Cdr>::type
    +typename result_of::make_cons<Car, Cdr>::type
     make_cons(Car const& car, Cdr const& cdr);
     
    - + Parameters
    @@ -64,17 +64,17 @@ - + - + @@ -82,7 +82,7 @@
    carcar Instance - of Car + of Car The list's head
    cdrcdr Instance - of Cdr + of Cdr The list's tail (optional)
    - + Expression Semantics
    @@ -90,34 +90,34 @@ make_cons(car, cdr);

    - Return type: result_of::make_cons<Car, Cdr>::type or result_of::make_cons<Car>::type + Return type: result_of::make_cons<Car, Cdr>::type or result_of::make_cons<Car>::type

    - Semantics: Create a cons from car - (head) and optional cdr + Semantics: Create a cons from car + (head) and optional cdr (tail).

    - + Header
     #include <boost/fusion/sequence/generation/make_cons.hpp>
     
    - + Example
     make_cons('x', make_cons(123))
     
    - + See also

    - boost::ref + boost::ref

    diff --git a/doc/html/fusion/sequences/generation/functions/make_list.html b/doc/html/fusion/sequences/generation/functions/make_list.html index 04532684..9c312a3c 100644 --- a/doc/html/fusion/sequences/generation/functions/make_list.html +++ b/doc/html/fusion/sequences/generation/functions/make_list.html @@ -3,7 +3,7 @@ make_list - + @@ -26,34 +26,34 @@
    - + Description

    - Create a list from one or more values. + Create a list from one or more values.

    - + Synopsis
     template <typename T0, typename T1,... typename TN>
    -typename result_of::make_list<T0, T1,... TN>::type
    +typename result_of::make_list<T0, T1,... TN>::type
     make_list(T0 const& x0, T1 const& x1... TN const& xN);
     

    - The variadic function accepts 0 - to FUSION_MAX_LIST_SIZE - elements, where FUSION_MAX_LIST_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_LIST_SIZE + The variadic function accepts 0 + to FUSION_MAX_LIST_SIZE + elements, where FUSION_MAX_LIST_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_LIST_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -68,21 +68,21 @@ - + xN
    Description
    x0, +x0, x1,... - xN Instances - of T0, + of T0, T1,... - TN + TN The - arguments to make_list + arguments to make_list
    - + Expression Semantics
    @@ -90,32 +90,32 @@ make_list(x0, x1,... xN);

    - Return type: result_of::make_list<T0, T1,... TN>::type + Return type: result_of::make_list<T0, T1,... TN>::type

    - Semantics: Create a list from x0, x1,... xN. + Semantics: Create a list from x0, x1,... xN.

    - + Header
     #include <boost/fusion/sequence/generation/make_list.hpp>
     
    - + Example
     make_list(123, "hello", 12.5)
     
    - + See also

    - boost::ref + boost::ref

    diff --git a/doc/html/fusion/sequences/generation/functions/make_map.html b/doc/html/fusion/sequences/generation/functions/make_map.html index c0d068d0..fc3de043 100644 --- a/doc/html/fusion/sequences/generation/functions/make_map.html +++ b/doc/html/fusion/sequences/generation/functions/make_map.html @@ -3,7 +3,7 @@ make_map - + @@ -26,38 +26,38 @@
    - + Description

    - Create a map from one or more key/data + Create a map from one or more key/data pairs.

    - + Synopsis
     template <
         typename K0, typename K1,... typename KN
       , typename T0, typename T1,... typename TN>
    -typename result_of::make_map<K0, K0,... KN, T0, T1,... TN>::type
    +typename result_of::make_map<K0, K0,... KN, T0, T1,... TN>::type
     make_map(T0 const& x0, T1 const& x1... TN const& xN);
     

    - The variadic function accepts 0 - to FUSION_MAX_VECTOR_SIZE - [10] - elements, where FUSION_MAX_VECTOR_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_VECTOR_SIZE + The variadic function accepts 0 + to FUSION_MAX_VECTOR_SIZE + [10] + elements, where FUSION_MAX_VECTOR_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_VECTOR_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -73,31 +73,31 @@ - + KN - - + xN
    K0, +K0, K1,... - KN The key typesKeys associated with x0, x1,... xN +Keys associated with x0, x1,... xN
    x0, +x0, x1,... - xN Instances - of T0, + of T0, T1,... - TN + TN The - arguments to make_map + arguments to make_map
    - + Expression Semantics
    @@ -105,48 +105,48 @@ make_map<K0, K1,... KN>(x0, x1,... xN);

    - Return type: result_of::make_map<K0, K0,... KN, T0, T1,... TN>::type + Return type: result_of::make_map<K0, K0,... KN, T0, T1,... TN>::type

    - Semantics: Create a map from K0, K1,... KN - keys and x0, + Semantics: Create a map from K0, K1,... KN + keys and x0, x1,... - xN data. + xN data.

    - Precondition: There may be no duplicate + Precondition: There may be no duplicate key types.

    - + Header
     #include <boost/fusion/sequence/generation/make_map.hpp>
     
    - + Example
     make_map(
    -    make_pair<int>('X')
    -  , make_pair<double>("Men"))
    +    make_pair<int>('X')
    +  , make_pair<double>("Men"))
     
    - + See also

    - boost::ref, - fusion::pair + boost::ref, + fusion::pair



    -

    [10] - map is implemented - in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE +

    [10] + map is implemented + in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

    diff --git a/doc/html/fusion/sequences/generation/functions/make_set.html b/doc/html/fusion/sequences/generation/functions/make_set.html index c871086e..b08d0fe9 100644 --- a/doc/html/fusion/sequences/generation/functions/make_set.html +++ b/doc/html/fusion/sequences/generation/functions/make_set.html @@ -3,7 +3,7 @@ make_set - + @@ -26,35 +26,35 @@
    - + Description

    - Create a set from one or more values. + Create a set from one or more values.

    - + Synopsis
     template <typename T0, typename T1,... typename TN>
    -typename result_of::make_set<T0, T1,... TN>::type
    +typename result_of::make_set<T0, T1,... TN>::type
     make_set(T0 const& x0, T1 const& x1... TN const& xN);
     

    - The variadic function accepts 0 - to FUSION_MAX_VECTOR_SIZE - [9] - elements, where FUSION_MAX_VECTOR_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_VECTOR_SIZE + The variadic function accepts 0 + to FUSION_MAX_VECTOR_SIZE + [9] + elements, where FUSION_MAX_VECTOR_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_VECTOR_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -69,21 +69,21 @@ - + xN
    Description
    x0, +x0, x1,... - xN Instances - of T0, + of T0, T1,... - TN + TN The - arguments to make_set + arguments to make_set
    - + Expression Semantics
    @@ -91,42 +91,42 @@ make_set(x0, x1,... xN);

    - Return type: result_of::make_set<T0, T1,... TN>::type + Return type: result_of::make_set<T0, T1,... TN>::type

    - Semantics: Create a set from x0, x1,... xN. + Semantics: Create a set from x0, x1,... xN.

    - Precondition: There may be no duplicate + Precondition: There may be no duplicate key types.

    - + Header
     #include <boost/fusion/sequence/generation/make_set.hpp>
     
    - + Example
     make_set(123, "hello", 12.5)
     
    - + See also

    - boost::ref + boost::ref



    -

    [9] - set is implemented - in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE +

    [9] + set is implemented + in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

    diff --git a/doc/html/fusion/sequences/generation/functions/make_vector.html b/doc/html/fusion/sequences/generation/functions/make_vector.html index ec3f0198..8b29da34 100644 --- a/doc/html/fusion/sequences/generation/functions/make_vector.html +++ b/doc/html/fusion/sequences/generation/functions/make_vector.html @@ -3,7 +3,7 @@ make_vector - + @@ -26,34 +26,34 @@
    - + Description

    - Create a vector from one or more values. + Create a vector from one or more values.

    - + Synopsis
     template <typename T0, typename T1,... typename TN>
    -typename result_of::make_vector<T0, T1,... TN>::type
    +typename result_of::make_vector<T0, T1,... TN>::type
     make_vector(T0 const& x0, T1 const& x1... TN const& xN);
     

    - The variadic function accepts 0 - to FUSION_MAX_VECTOR_SIZE - elements, where FUSION_MAX_VECTOR_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_VECTOR_SIZE + The variadic function accepts 0 + to FUSION_MAX_VECTOR_SIZE + elements, where FUSION_MAX_VECTOR_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_VECTOR_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -68,21 +68,21 @@ - + xN
    Description
    x0, +x0, x1,... - xN Instances - of T0, + of T0, T1,... - TN + TN The - arguments to make_vector + arguments to make_vector
    - + Expression Semantics
    @@ -90,32 +90,32 @@ make_vector(x0, x1,... xN);

    - Return type: result_of::make_vector<T0, T1,... TN>::type + Return type: result_of::make_vector<T0, T1,... TN>::type

    - Semantics: Create a vector from x0, x1,... xN. + Semantics: Create a vector from x0, x1,... xN.

    - + Header
     #include <boost/fusion/sequence/generation/make_vector.hpp>
     
    - + Example
     make_vector(123, "hello", 12.5)
     
    - + See also

    - boost::ref + boost::ref

    diff --git a/doc/html/fusion/sequences/generation/functions/tiers.html b/doc/html/fusion/sequences/generation/functions/tiers.html index 8aca73a3..b5f71500 100644 --- a/doc/html/fusion/sequences/generation/functions/tiers.html +++ b/doc/html/fusion/sequences/generation/functions/tiers.html @@ -3,7 +3,7 @@ Tiers - + @@ -32,8 +32,8 @@ flavors.

    Example: @@ -41,14 +41,14 @@

     int i; char c; double d; 
       ...
    -vector_tie(i, c, a);
    +vector_tie(i, c, a);
     

    - 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)) - [11] + 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)) + [11] .

    @@ -57,7 +57,7 @@

     int i; char c; double d; 
    -vector_tie(i, c, d) = make_vector(1,'a', 5.5);
    +vector_tie(i, c, d) = make_vector(1,'a', 5.5);
     std::cout << i << " " <<  c << " " << d;
     

    @@ -66,7 +66,7 @@ when calling functions which return sequences.

    - + Ignore

    @@ -77,13 +77,13 @@

     char c;
    -vector_tie(ignore, c) = make_vector(1, 'a');
    +vector_tie(ignore, c) = make_vector(1, 'a');
     


    -

    [11] +

    [11] see Boost.Ref - for details about ref + for details about ref

    diff --git a/doc/html/fusion/sequences/generation/functions/vector_tie.html b/doc/html/fusion/sequences/generation/functions/vector_tie.html index 2611c669..d1138c46 100644 --- a/doc/html/fusion/sequences/generation/functions/vector_tie.html +++ b/doc/html/fusion/sequences/generation/functions/vector_tie.html @@ -3,7 +3,7 @@ vector_tie - + @@ -26,34 +26,34 @@
    - + Description

    - Constructs a tie using a vector sequence. + Constructs a tie using a vector sequence.

    - + Synopsis
     template <typename T0, typename T1,... typename TN>
    -vector<T0&, T1&,... TN&>
    +vector<T0&, T1&,... TN&>
     vector_tie(T0& x0, T1& x1... TN& xN);
     

    - The variadic function accepts 0 - to FUSION_MAX_VECTOR_SIZE - elements, where FUSION_MAX_VECTOR_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_VECTOR_SIZE + The variadic function accepts 0 + to FUSION_MAX_VECTOR_SIZE + elements, where FUSION_MAX_VECTOR_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_VECTOR_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -68,21 +68,21 @@ - + xN
    Description
    x0, +x0, x1,... - xN Instances - of T0, + of T0, T1,... - TN + TN The - arguments to vector_tie + arguments to vector_tie
    - + Expression Semantics
    @@ -90,21 +90,21 @@ vector_tie(x0, x1,... xN);

    - Return type: vector<T0&, T1&,... + Return type: vector<T0&, T1&,... TN&>

    - Semantics: Create a vector of references from x0, x1,... xN. + Semantics: Create a vector of references from x0, x1,... xN.

    - + Header
     #include <boost/fusion/sequence/generation/vector_tie.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/generation/metafunctions.html b/doc/html/fusion/sequences/generation/metafunctions.html
    index 45216962..f8d07677 100644
    --- a/doc/html/fusion/sequences/generation/metafunctions.html
    +++ b/doc/html/fusion/sequences/generation/metafunctions.html
    @@ -3,7 +3,7 @@
     
     MetaFunctions
     
    -
    +
     
     
     
    diff --git a/doc/html/fusion/sequences/generation/metafunctions/list_tie.html b/doc/html/fusion/sequences/generation/metafunctions/list_tie.html
    index 414be87f..003e5ede 100644
    --- a/doc/html/fusion/sequences/generation/metafunctions/list_tie.html
    +++ b/doc/html/fusion/sequences/generation/metafunctions/list_tie.html
    @@ -3,7 +3,7 @@
     
     list_tie
     
    -
    +
     
     
     
    @@ -26,14 +26,14 @@
     
     
    - + Description

    - Returns the result type of list_tie. + Returns the result type of list_tie.

    - + Synopsis
    @@ -41,18 +41,18 @@
     struct list_tie;
     

    - The variadic function accepts 0 - to FUSION_MAX_LIST_SIZE - elements, where FUSION_MAX_LIST_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_LIST_SIZE + The variadic function accepts 0 + to FUSION_MAX_LIST_SIZE + elements, where FUSION_MAX_LIST_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_LIST_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -67,17 +67,17 @@ - + TN -
    Description
    T0, +T0, T1,... - TN Any typeThe arguments to list_tie +The arguments to list_tie
    - + Expression Semantics
    @@ -85,21 +85,21 @@ result_of::list_tie<T0, T1,... TN>::type;

    - Return type: list<T0&, T1&,... + Return type: list<T0&, T1&,... TN&>

    - Semantics: Create a list of references from T0, T1,... TN. + Semantics: Create a list of references from T0, T1,... TN.

    - + Header
     #include <boost/fusion/sequence/generation/list_tie.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_cons.html b/doc/html/fusion/sequences/generation/metafunctions/make_cons.html
    index 58957889..e7e9865d 100644
    --- a/doc/html/fusion/sequences/generation/metafunctions/make_cons.html
    +++ b/doc/html/fusion/sequences/generation/metafunctions/make_cons.html
    @@ -3,7 +3,7 @@
     
     make_cons
     
    -
    +
     
     
     
    @@ -26,14 +26,14 @@
     
     
    - + Description

    - Returns the result type of make_cons. + Returns the result type of make_cons.

    - + Synopsis
    @@ -41,7 +41,7 @@
     struct make_cons;
     
    - + Parameters
    @@ -57,15 +57,15 @@ - + - + @@ -73,7 +73,7 @@
    CarCar Any type The list's head type
    CdrCdr A - cons + cons The list's tail type (optional)
    - + Expression Semantics
    @@ -81,24 +81,24 @@ result_of::make_cons<Car, Cdr>::type

    - Return type: A cons with head element, Car, of type converted following the + Return type: A cons with head element, Car, of type converted following the rules for element - conversion, and tail, Cdr. + conversion, and tail, Cdr.

    - Semantics: Create a cons from Car - (head) and optional Cdr + Semantics: Create a cons from Car + (head) and optional Cdr (tail).

    - + Header
     #include <boost/fusion/sequence/generation/make_cons.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_list.html b/doc/html/fusion/sequences/generation/metafunctions/make_list.html
    index 72e0076d..bc2b6d5c 100644
    --- a/doc/html/fusion/sequences/generation/metafunctions/make_list.html
    +++ b/doc/html/fusion/sequences/generation/metafunctions/make_list.html
    @@ -3,7 +3,7 @@
     
     make_list
     
    -
    +
     
     
     
    @@ -26,14 +26,14 @@
     
     
    - + Description

    - Returns the result type of make_list. + Returns the result type of make_list.

    - + Synopsis
    @@ -41,18 +41,18 @@
     struct make_list;
     

    - The variadic function accepts 0 - to FUSION_MAX_LIST_SIZE - elements, where FUSION_MAX_LIST_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_LIST_SIZE + The variadic function accepts 0 + to FUSION_MAX_LIST_SIZE + elements, where FUSION_MAX_LIST_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_LIST_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -67,17 +67,17 @@ - + TN -
    Description
    T0, +T0, T1,... - TN Any typeTemplate arguments to make_list +Template arguments to make_list
    - + Expression Semantics
    @@ -85,22 +85,22 @@ result_of::make_list<T0, T1,... TN>::type

    - Return type: A list with elements of types + Return type: A list with elements of types converted following the rules for element conversion.

    - Semantics: Create a list from T0, T1,... TN. + Semantics: Create a list from T0, T1,... TN.

    - + Header
     #include <boost/fusion/sequence/generation/make_list.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_map.html b/doc/html/fusion/sequences/generation/metafunctions/make_map.html
    index d5a34ca3..881dd3f4 100644
    --- a/doc/html/fusion/sequences/generation/metafunctions/make_map.html
    +++ b/doc/html/fusion/sequences/generation/metafunctions/make_map.html
    @@ -3,7 +3,7 @@
     
     make_map
     
    -
    +
     
     
     
    @@ -26,14 +26,14 @@
     
     
    - + Description

    - Returns the result type of make_map. + Returns the result type of make_map.

    - + Synopsis
    @@ -43,19 +43,19 @@
     struct make_map;
     

    - The variadic function accepts 0 - to FUSION_MAX_VECTOR_SIZE - [13] - elements, where FUSION_MAX_VECTOR_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_VECTOR_SIZE + The variadic function accepts 0 + to FUSION_MAX_VECTOR_SIZE + [13] + elements, where FUSION_MAX_VECTOR_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_VECTOR_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -71,27 +71,27 @@ - + KN - - + TN -
    K0, +K0, K1,... - KN Any typeKeys associated with T0, T1,... TN +Keys associated with T0, T1,... TN
    T0, +T0, T1,... - TN Any typeData associated with keys K0, K1,... KN +Data associated with keys K0, K1,... KN
    - + Expression Semantics
    @@ -99,44 +99,44 @@ resulf_of::make_map<K0, K1,... KN, T0, T1,... TN>::type;

    - Return type: result_of::make_map<K0, K0,... KN, T0, T1,... TN>::type + Return type: result_of::make_map<K0, K0,... KN, T0, T1,... TN>::type

    - Semantics: A map with fusion::pair elements where the second_type is converted following + Semantics: A map with fusion::pair elements where the second_type is converted following the rules for element conversion.

    - Precondition: There may be no duplicate + Precondition: There may be no duplicate key types.

    - + Header
     #include <boost/fusion/sequence/generation/make_map.hpp>
     
    - + Example
     result_of::make_map<int, double, char, double>::type
     
    - + See also

    - fusion::pair + fusion::pair



    -

    [13] - map is implemented - in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE +

    [13] + map is implemented + in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

    diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_set.html b/doc/html/fusion/sequences/generation/metafunctions/make_set.html index d01b1ad4..136ce48f 100644 --- a/doc/html/fusion/sequences/generation/metafunctions/make_set.html +++ b/doc/html/fusion/sequences/generation/metafunctions/make_set.html @@ -3,7 +3,7 @@ make_set - + @@ -26,14 +26,14 @@
    - + Description

    - Returns the result type of make_set. + Returns the result type of make_set.

    - + Synopsis
    @@ -41,19 +41,19 @@
     struct make_set;
     

    - The variadic function accepts 0 - to FUSION_MAX_VECTOR_SIZE - [12] - elements, where FUSION_MAX_VECTOR_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_VECTOR_SIZE + The variadic function accepts 0 + to FUSION_MAX_VECTOR_SIZE + [12] + elements, where FUSION_MAX_VECTOR_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_VECTOR_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -68,17 +68,17 @@ - + TN -
    Description
    T0, +T0, T1,... - TN Any typeThe arguments to make_set +The arguments to make_set
    - + Expression Semantics
    @@ -86,26 +86,26 @@ result_of::make_set<T0, T1,... TN>::type

    - Return type: A set with elements of types converted + Return type: A set with elements of types converted following the rules for element conversion.

    - Semantics: Create a set from T0, T1,... TN. + Semantics: Create a set from T0, T1,... TN.

    - Precondition: There may be no duplicate + Precondition: There may be no duplicate key types.

    - + Header
     #include <boost/fusion/sequence/generation/make_set.hpp>
     
    - + Example
    @@ -113,9 +113,9 @@
     


    -

    [12] - set is implemented - in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE +

    [12] + set is implemented + in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

    diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_vector.html b/doc/html/fusion/sequences/generation/metafunctions/make_vector.html index 152fe79e..c161aa85 100644 --- a/doc/html/fusion/sequences/generation/metafunctions/make_vector.html +++ b/doc/html/fusion/sequences/generation/metafunctions/make_vector.html @@ -3,7 +3,7 @@ make_vector - + @@ -26,14 +26,14 @@
    - + Description

    - Returns the result type of make_vector. + Returns the result type of make_vector.

    - + Synopsis
    @@ -41,18 +41,18 @@
     struct make_vector;
     

    - The variadic function accepts 0 - to FUSION_MAX_VECTOR_SIZE - elements, where FUSION_MAX_VECTOR_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_VECTOR_SIZE + The variadic function accepts 0 + to FUSION_MAX_VECTOR_SIZE + elements, where FUSION_MAX_VECTOR_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_VECTOR_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -67,17 +67,17 @@ - + TN -
    Description
    T0, +T0, T1,... - TN Any typeTemplate arguments to make_vector +Template arguments to make_vector
    - + Expression Semantics
    @@ -85,22 +85,22 @@ result_of::make_vector<T0, T1,... TN>::type

    - Return type: A vector with elements of types + Return type: A vector with elements of types converted following the rules for element conversion.

    - Semantics: Create a vector from T0, T1,... TN. + Semantics: Create a vector from T0, T1,... TN.

    - + Header
     #include <boost/fusion/sequence/generation/make_list.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html b/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html
    index 241fd60f..b914d310 100644
    --- a/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html
    +++ b/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html
    @@ -3,7 +3,7 @@
     
     vector_tie
     
    -
    +
     
     
     
    @@ -26,14 +26,14 @@
     
     
    - + Description

    - Returns the result type of vector_tie. + Returns the result type of vector_tie.

    - + Synopsis
    @@ -41,18 +41,18 @@
     struct vector_tie;
     

    - The variadic function accepts 0 - to FUSION_MAX_VECTOR_SIZE - elements, where FUSION_MAX_VECTOR_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_VECTOR_SIZE + The variadic function accepts 0 + to FUSION_MAX_VECTOR_SIZE + elements, where FUSION_MAX_VECTOR_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_VECTOR_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -67,17 +67,17 @@ - + TN -
    Description
    T0, +T0, T1,... - TN Any typeThe arguments to vector_tie +The arguments to vector_tie
    - + Expression Semantics
    @@ -85,21 +85,21 @@ result_of::vector_tie<T0, T1,... TN>::type;

    - Return type: vector<T0&, T1&,... + Return type: vector<T0&, T1&,... TN&>

    - Semantics: Create a vector of references from T0, T1,... TN. + Semantics: Create a vector of references from T0, T1,... TN.

    - + Header
     #include <boost/fusion/sequence/generation/vector_tie.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/intrinsics.html b/doc/html/fusion/sequences/intrinsics.html
    index 605e3f5f..786e6747 100644
    --- a/doc/html/fusion/sequences/intrinsics.html
    +++ b/doc/html/fusion/sequences/intrinsics.html
    @@ -3,7 +3,7 @@
     
     Intrinsics
     
    -
    +
     
     
     
    @@ -32,11 +32,11 @@
             Intrinsic functions, unlike Algorithms,
             are not generic across the full Sequence
             repertoire. They need to be implemented for each Fusion Sequence
    -        [5]
    +        [5]
             .
           

    - + Header

    @@ -44,7 +44,7 @@
     


    -

    [5] +

    [5] In practice, many of intrinsic functions have default implementations that will work in majority of cases

    diff --git a/doc/html/fusion/sequences/intrinsics/functions.html b/doc/html/fusion/sequences/intrinsics/functions.html index 4abca708..63da28f7 100644 --- a/doc/html/fusion/sequences/intrinsics/functions.html +++ b/doc/html/fusion/sequences/intrinsics/functions.html @@ -3,7 +3,7 @@ Functions - + diff --git a/doc/html/fusion/sequences/intrinsics/functions/at.html b/doc/html/fusion/sequences/intrinsics/functions/at.html index fdb63ebc..5c737b51 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/at.html +++ b/doc/html/fusion/sequences/intrinsics/functions/at.html @@ -3,7 +3,7 @@ at - + @@ -26,27 +26,27 @@
    - + Description

    Returns the N-th element from the beginning of the sequence.

    - + Synopsis
     template <typename N, typename Sequence>
    -typename result_of::at<Sequence, N>::type
    +typename result_of::at<Sequence, N>::type
     at(Sequence& seq);
     
     template <typename N, typename Sequence>
    -typename result_of::at<Sequence const, N>::type
    +typename result_of::at<Sequence const, N>::type
     at(Sequence const& seq);
     
    - + Parameters
    @@ -62,7 +62,7 @@ - + - + @@ -81,7 +81,7 @@
    seqseq Model of Random @@ -71,7 +71,7 @@ The sequence we wish to investigate.
    NN An MPL integral constant
    - + Expression Semantics
    @@ -89,38 +89,38 @@ at<N>(seq);

    - Return type: Returns a reference to - the N-th element from the beginning of the sequence seq - if seq is mutable and - e = - o, where e + Return type: Returns a reference to + the N-th element from the beginning of the sequence seq + if seq is mutable and + e = + o, where e is the N-th element from the beginning of the sequence, is a valid expression. Else, returns a type convertable to the N-th element from the beginning of the sequence.

    - Precondition: 0 - <= N::value < size(s) + Precondition: 0 + <= N::value < size(s)

    - Semantics: Equivalent to + Semantics: Equivalent to

    -deref(advance<N>(begin(s)))
    +deref(advance<N>(begin(s)))
     
    - + Header
     #include <boost/fusion/sequence/intrinsic/at.hpp>
     
    - + Example
    -vector<int, int, int> v(1, 2, 3);
    +vector<int, int, int> v(1, 2, 3);
     assert(at<mpl::int_<1> >(v) == 2);
     
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/at_c.html b/doc/html/fusion/sequences/intrinsics/functions/at_c.html index 70e3dc17..4a3b3dbd 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/at_c.html +++ b/doc/html/fusion/sequences/intrinsics/functions/at_c.html @@ -3,7 +3,7 @@ at_c - + @@ -26,27 +26,27 @@
    - + Description

    Returns the N-th element from the beginning of the sequence.

    - + Synopsis
     template <int N, typename Sequence>
    -typename result_of::at_c<Sequence, N>::type
    +typename result_of::at_c<Sequence, N>::type
     at_c(Sequence& seq);
     
     template <int N, typename Sequence>
    -typename result_of::at_c<Sequence const, N>::type
    +typename result_of::at_c<Sequence const, N>::type
     at_c(Sequence const& seq);
     
    - + Parameters
    @@ -62,7 +62,7 @@ - + - +
    seqseq Model of Random @@ -71,7 +71,7 @@ The sequence we wish to investigate.
    NN An integral constant An index from the beginning of @@ -80,7 +80,7 @@
    - + Expression Semantics
    @@ -88,39 +88,39 @@ at_c<N>(seq);

    - Return type: Returns a reference to - the N-th element from the beginning of the sequence seq - if seq is mutable and - e = - o, where e + Return type: Returns a reference to + the N-th element from the beginning of the sequence seq + if seq is mutable and + e = + o, where e is the N-th element from the beginning of the sequence, is a valid expression. Else, returns a type convertable to the N-th element from the beginning of the sequence.

    - Precondition: 0 + Precondition: 0 <= N - < size(s) + < size(s)

    - Semantics: Equivalent to + Semantics: Equivalent to

    -deref(advance<N>(begin(s)))
    +deref(advance<N>(begin(s)))
     
    - + Header
     #include <boost/fusion/sequence/intrinsic/at_c.hpp>
     
    - + Example
    -vector<int, int, int> v(1, 2, 3);
    +vector<int, int, int> v(1, 2, 3);
     assert(at_c<1>(v) == 2);
     
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/at_key.html b/doc/html/fusion/sequences/intrinsics/functions/at_key.html index 970744d0..5053a3e4 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/at_key.html +++ b/doc/html/fusion/sequences/intrinsics/functions/at_key.html @@ -3,7 +3,7 @@ at_key - + @@ -26,27 +26,27 @@
    - + Description

    Returns the element associated with a Key from the sequence.

    - + Synopsis
     template <typename Key, typename Sequence>
    -typename result_of::at_key<Sequence, Key>::type
    +typename result_of::at_key<Sequence, Key>::type
     at_key(Sequence& seq);
     
     template <typename Key, typename Sequence>
    -typename result_of::at_key<Sequence const, Key>::type
    +typename result_of::at_key<Sequence const, Key>::type
     at_key(Sequence const& seq);
     
    - + Parameters
    @@ -62,7 +62,7 @@ - + - + @@ -79,7 +79,7 @@
    seqseq Model of Associative @@ -71,7 +71,7 @@ The sequence we wish to investigate.
    KeyKey Any type The queried key.
    - + Expression Semantics
    @@ -87,34 +87,34 @@ at_key<Key>(seq);

    - Return type: Returns a reference to - the element associated with Key from the sequence seq - if seq is mutable and - e = - o, where e + Return type: Returns a reference to + the element associated with Key from the sequence seq + if seq is mutable and + e = + o, where e is the element associated with Key, is a valid expression. Else, returns a type convertable to the element associated with Key.

    - Precondition: has_key<Key>(seq) == true + Precondition: has_key<Key>(seq) == true

    - Semantics: Returns the element associated + Semantics: Returns the element associated with Key.

    - + Header
     #include <boost/fusion/sequence/intrinsic/at_key.hpp>
     
    - + Example
    -set<int, char, bool> s(1, 'x', true);
    +set<int, char, bool> s(1, 'x', true);
     assert(at_key<char>(s) == 'x');
     
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/back.html b/doc/html/fusion/sequences/intrinsics/functions/back.html index 6359c5bd..b9cce96d 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/back.html +++ b/doc/html/fusion/sequences/intrinsics/functions/back.html @@ -3,7 +3,7 @@ back - + @@ -26,27 +26,27 @@
    - + Description

    Returns the last element in the sequence.

    - + Synopsis
     template <typename Sequence>
    -typename result_of::back<Sequence>::type
    +typename result_of::back<Sequence>::type
     back(Sequence& seq);
     
     template <typename Sequence>
    -typename result_of::back<Sequence const>::type
    +typename result_of::back<Sequence const>::type
     back(Sequence const& seq);
     
    - + Parameters
    @@ -61,7 +61,7 @@ - +
    Description
    seqseq Model of Bidirectional @@ -71,7 +71,7 @@
    - + Expression Semantics
    @@ -79,34 +79,34 @@ back(seq);

    - Return type: Returns a reference to - the last element in the sequence seq - if seq is mutable and - e = - o, where e + Return type: Returns a reference to + the last element in the sequence seq + if seq is mutable and + e = + o, where e is the last element in the sequence, is a valid expression. Else, returns a type convertable to the last element in the sequence.

    - Precondition: empty(seq) == false + Precondition: empty(seq) == false

    - Semantics: Returns the last element + Semantics: Returns the last element in the sequence.

    - + Header
     #include <boost/fusion/sequence/intrinsic/back.hpp>
     
    - + Example
    -vector<int, int, int> v(1, 2, 3);
    +vector<int, int, int> v(1, 2, 3);
     assert(back(v) == 3);
     
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/begin.html b/doc/html/fusion/sequences/intrinsics/functions/begin.html index 152b62cc..4b5ca969 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/begin.html +++ b/doc/html/fusion/sequences/intrinsics/functions/begin.html @@ -3,7 +3,7 @@ begin - + @@ -26,27 +26,27 @@
    - + Description

    Returns an iterator pointing to the first element in the sequence.

    - + Synopsis
     template <typename Sequence>
    -typename result_of::begin<Sequence>::type
    +typename result_of::begin<Sequence>::type
     begin(Sequence& seq);
     
     template <typename Sequence>
    -typename result_of::begin<Sequence const>::type
    +typename result_of::begin<Sequence const>::type
     begin(Sequence const& seq);
     
    - + Parameters
    @@ -61,7 +61,7 @@ - +
    Description
    seqseq Model of Forward @@ -72,7 +72,7 @@
    - + Expression Semantics
    @@ -80,41 +80,41 @@ begin(seq);

    - Return type: Return type: Forward - Iterator if seq + Iterator if seq is a Forward Sequence else, Bidirectional - Iterator if seq + Iterator if seq is a Bidirectional Sequence else, Random - Access Iterator if seq + Access Iterator if seq is a Random Access Sequence.

    - Semantics: Returns an iterator pointing + Semantics: Returns an iterator pointing to the first element in the sequence.

    - + Header
     #include <boost/fusion/sequence/intrinsic/begin.hpp>
     
    - + Example
    -vector<int, int, int> v(1, 2, 3);
    -assert(deref(begin(v)) == 1);
    +vector<int, int, int> v(1, 2, 3);
    +assert(deref(begin(v)) == 1);
     
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/empty.html b/doc/html/fusion/sequences/intrinsics/functions/empty.html index 09cd5a59..c588b6e0 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/empty.html +++ b/doc/html/fusion/sequences/intrinsics/functions/empty.html @@ -3,7 +3,7 @@ empty - + @@ -26,25 +26,25 @@
    - + Description

    - Returns a type convertible to bool - that evaluates to true if - the sequence is empty, else, evaluates to false. + Returns a type convertible to bool + that evaluates to true if + the sequence is empty, else, evaluates to false.

    - + Synopsis
     template <typename Sequence>
    -typename result_of::empty<Sequence>::type
    +typename result_of::empty<Sequence>::type
     empty(Sequence const& seq);
     
    - + Parameters
    @@ -59,7 +59,7 @@ - +
    Description
    seqseq Model of Forward @@ -69,7 +69,7 @@
    - + Expression Semantics
    @@ -77,25 +77,25 @@ empty(seq);

    - Return type: Convertible to bool. + Return type: Convertible to bool.

    - Semantics: Evaluates to true if the sequence is empty, else, evaluates - to false. + Semantics: Evaluates to true if the sequence is empty, else, evaluates + to false.

    - + Header
     #include <boost/fusion/sequence/intrinsic/empty.hpp>
     
    - + Example
    -vector<int, int, int> v(1, 2, 3);
    +vector<int, int, int> v(1, 2, 3);
     assert(empty(v) == false);
     
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/end.html b/doc/html/fusion/sequences/intrinsics/functions/end.html index 6b77f893..160f93ac 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/end.html +++ b/doc/html/fusion/sequences/intrinsics/functions/end.html @@ -3,7 +3,7 @@ end - + @@ -26,27 +26,27 @@
    - + Description

    Returns an iterator pointing to one element past the end of the sequence.

    - + Synopsis
     template <typename Sequence>
    -typename result_of::end<Sequence>::type
    +typename result_of::end<Sequence>::type
     end(Sequence& seq);
     
     template <typename Sequence>
    -typename result_of::end<Sequence const>::type
    +typename result_of::end<Sequence const>::type
     end(Sequence const& seq);
     
    - + Parameters
    @@ -61,7 +61,7 @@ - +
    Description
    seqseq Model of Forward @@ -72,7 +72,7 @@
    - + Expression Semantics
    @@ -80,41 +80,41 @@ end(seq);

    - Return type: Return type: Forward - Iterator if seq + Iterator if seq is a Forward Sequence else, Bidirectional - Iterator if seq + Iterator if seq is a Bidirectional Sequence else, Random - Access Iterator if seq + Access Iterator if seq is a Random Access Sequence.

    - Semantics: Returns an iterator pointing + Semantics: Returns an iterator pointing to one element past the end of the sequence.

    - + Header
     #include <boost/fusion/sequence/intrinsic/end.hpp>
     
    - + Example
    -vector<int, int, int> v(1, 2, 3);
    -assert(deref(prior(end(v))) == 3);
    +vector<int, int, int> v(1, 2, 3);
    +assert(deref(prior(end(v))) == 3);
     
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/front.html b/doc/html/fusion/sequences/intrinsics/functions/front.html index 12db082f..c6fcd9c2 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/front.html +++ b/doc/html/fusion/sequences/intrinsics/functions/front.html @@ -3,7 +3,7 @@ front - + @@ -26,27 +26,27 @@
    - + Description

    Returns the first element in the sequence.

    - + Synopsis
     template <typename Sequence>
    -typename result_of::front<Sequence>::type
    +typename result_of::front<Sequence>::type
     front(Sequence& seq);
     
     template <typename Sequence>
    -typename result_of::front<Sequence const>::type
    +typename result_of::front<Sequence const>::type
     front(Sequence const& seq);
     
    - + Parameters
    @@ -61,7 +61,7 @@ - +
    Description
    seqseq Model of Forward @@ -71,7 +71,7 @@
    - + Expression Semantics
    @@ -79,34 +79,34 @@ front(seq);

    - Return type: Returns a reference to - the first element in the sequence seq - if seq is mutable and - e = - o, where e + Return type: Returns a reference to + the first element in the sequence seq + if seq is mutable and + e = + o, where e is the first element in the sequence, is a valid expression. Else, returns a type convertable to the first element in the sequence.

    - Precondition: empty(seq) == false + Precondition: empty(seq) == false

    - Semantics: Returns the first element + Semantics: Returns the first element in the sequence.

    - + Header
     #include <boost/fusion/sequence/intrinsic/front.hpp>
     
    - + Example
    -vector<int, int, int> v(1, 2, 3);
    +vector<int, int, int> v(1, 2, 3);
     assert(front(v) == 1);
     
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/has_key.html b/doc/html/fusion/sequences/intrinsics/functions/has_key.html index 61413303..8225595b 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/has_key.html +++ b/doc/html/fusion/sequences/intrinsics/functions/has_key.html @@ -3,7 +3,7 @@ has_key - + @@ -26,26 +26,26 @@
    - + Description

    - Returns a type convertible to bool - that evaluates to true if + Returns a type convertible to bool + that evaluates to true if the sequence contains an element associated with a Key, else, evaluates - to false. + to false.

    - + Synopsis
     template <typename Key, typename Sequence>
    -typename result_of::has_key<Sequence, Key>::type
    +typename result_of::has_key<Sequence, Key>::type
     has_key(Sequence const& seq);
     
    - + Parameters
    @@ -61,7 +61,7 @@ - + - + @@ -78,7 +78,7 @@
    seqseq Model of Associative @@ -70,7 +70,7 @@ The sequence we wish to investigate.
    KeyKey Any type The queried key.
    - + Expression Semantics
    @@ -86,25 +86,25 @@ has_key<Key>(seq);

    - Return type: Convertible to bool. + Return type: Convertible to bool.

    - Semantics: Evaluates to true if the sequence contains an element - associated with Key, else, evaluates to false. + Semantics: Evaluates to true if the sequence contains an element + associated with Key, else, evaluates to false.

    - + Header
     #include <boost/fusion/sequence/intrinsic/has_key.hpp>
     
    - + Example
    -set<int, char, bool> s(1, 'x', true);
    +set<int, char, bool> s(1, 'x', true);
     assert(has_key<char>(s) == true);
     
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/size.html b/doc/html/fusion/sequences/intrinsics/functions/size.html index 78f03ec3..69662615 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/size.html +++ b/doc/html/fusion/sequences/intrinsics/functions/size.html @@ -3,7 +3,7 @@ size - + @@ -26,24 +26,24 @@
    - + Description

    - Returns a type convertible to int + Returns a type convertible to int that evaluates the number of elements in the sequence.

    - + Synopsis
     template <typename Sequence>
    -typename result_of::size<Sequence>::type
    +typename result_of::size<Sequence>::type
     size(Sequence const& seq);
     
    - + Parameters
    @@ -58,7 +58,7 @@ - +
    Description
    seqseq Model of Forward @@ -68,7 +68,7 @@
    - + Expression Semantics
    @@ -76,25 +76,25 @@ size(seq);

    - Return type: Convertible to int. + Return type: Convertible to int.

    - Semantics: Returns the number of elements + Semantics: Returns the number of elements in the sequence.

    - + Header
     #include <boost/fusion/sequence/intrinsic/size.hpp>
     
    - + Example
    -vector<int, int, int> v(1, 2, 3);
    +vector<int, int, int> v(1, 2, 3);
     assert(size(v) == 3);
     
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions.html b/doc/html/fusion/sequences/intrinsics/metafunctions.html index 8a7c356b..348a1a5d 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions.html @@ -3,7 +3,7 @@ Metafunctions - + diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/at.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at.html index eebf382e..e356df69 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/at.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/at.html @@ -3,7 +3,7 @@ at - + @@ -26,16 +26,16 @@
    - + Description

    - Returns the result type of at - [6] + Returns the result type of at + [6] .

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.25. Parameters

    +

    Table 1.25. Parameters

    @@ -62,7 +62,7 @@ - + - + @@ -80,7 +80,7 @@
    SeqSeq A model of Forward @@ -71,7 +71,7 @@ Argument sequence
    NN An MPL Integral Constant Index of element
    - + Expression Semantics
    @@ -88,34 +88,34 @@ result_of::at<Seq, N>::type

    - Return type: Any type. + Return type: Any type.

    - Semantics: Returns the result type of - using at to access the Nth element of Seq. + Semantics: Returns the result type of + using at to access the Nth element of Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/at.hpp>
     
    - + Example
    -typedef vector<int,float,char> vec;
    -BOOST_MPL_ASSERT((boost::is_same<result_of::at<vec, boost::mpl::int_<1> >::type, float&>));
    +typedef vector<int,float,char> vec;
    +BOOST_MPL_ASSERT((boost::is_same<result_of::at<vec, boost::mpl::int_<1> >::type, float&>));
     


    -

    [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/sequences/intrinsics/metafunctions/at_c.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html index e506e5e8..f997107b 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html @@ -3,7 +3,7 @@ at_c - + @@ -26,16 +26,16 @@
    - + Description

    - Returns the result type of at_c - [7] + Returns the result type of at_c + [7] .

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.26. Parameters

    +

    Table 1.26. Parameters

    @@ -62,7 +62,7 @@ - + - + @@ -80,7 +80,7 @@
    SeqSeq A model of Forward @@ -71,7 +71,7 @@ Argument sequence
    MM Positive integer index Index of element
    - + Expression Semantics
    @@ -88,34 +88,34 @@ result_of::at_c<Seq, M>::type

    - Return type: Any type + Return type: Any type

    - Semantics: Returns the result type of - using at_c to access the Mth element of Seq. + Semantics: Returns the result type of + using at_c to access the Mth element of Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/at.hpp>
     
    - + Example
    -typedef vector<int,float,char> vec;
    -BOOST_MPL_ASSERT((boost::is_same<result_of::at_c<vec, 1>::type, float&>));
    +typedef vector<int,float,char> vec;
    +BOOST_MPL_ASSERT((boost::is_same<result_of::at_c<vec, 1>::type, float&>));
     


    -

    [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/sequences/intrinsics/metafunctions/at_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html index 49475de2..85ed0556 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html @@ -3,7 +3,7 @@ at_key - + @@ -26,16 +26,16 @@
    - + Description

    - Returns the result type of at_key - [8] + Returns the result type of at_key + [8] .

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.30. Parameters

    +

    Table 1.30. Parameters

    @@ -62,7 +62,7 @@ - + - + @@ -80,7 +80,7 @@
    SeqSeq A model of Forward @@ -71,7 +71,7 @@ Argument sequence
    KeyKey Any type Key type
    - + Expression Semantics
    @@ -88,36 +88,36 @@ result_of::at_key<Seq, Key>::type

    - Return type: Any type. + Return type: Any type.

    - Semantics: Returns the result of using - at_key to access the element - with key type Key in - Seq. + Semantics: Returns the result of using + at_key to access the element + with key type Key in + Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/at_key.hpp>
     
    - + Example
    -typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
    -BOOST_MPL_ASSERT((boost::is_same<result_of::at_key<mymap, int>::type, char&>));
    +typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
    +BOOST_MPL_ASSERT((boost::is_same<result_of::at_key<mymap, int>::type, char&>));
     


    -

    [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/sequences/intrinsics/metafunctions/back.html b/doc/html/fusion/sequences/intrinsics/metafunctions/back.html index e24ad24b..74b82d55 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/back.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/back.html @@ -3,7 +3,7 @@ back - + @@ -26,14 +26,14 @@
    - + Description

    - Returns the result type of back. + Returns the result type of back.

    - + Synopsis
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.23. Parameters

    +

    Table 1.23. Parameters

    @@ -57,7 +57,7 @@ - +
    Description
    SeqSeq A model of Forward @@ -68,7 +68,7 @@
    - + Expression Semantics
    @@ -76,26 +76,26 @@ result_of::back<Seq>::type

    - Return type: Any type + Return type: Any type

    - Semantics: The type returned by dereferencing - an iterator to the last element in the sequence. Equivalent to result_of::deref<result_of::prior<result_of::end<Seq>::type>::type>::type. + Semantics: The type returned by dereferencing + 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>
     
    - + Example
    -typedef vector<int,char> vec;
    -BOOST_MPL_ASSERT((boost::is_same<result_of::back<vec>::type, char&>));
    +typedef vector<int,char> vec;
    +BOOST_MPL_ASSERT((boost::is_same<result_of::back<vec>::type, char&>));
     
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html b/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html index ac97bfaf..6bcd07bf 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html @@ -3,7 +3,7 @@ begin - + @@ -26,14 +26,14 @@
    - + Description

    - Returns the result type of begin. + Returns the result type of begin.

    - + Synopsis
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.19. Parameters

    +

    Table 1.19. Parameters

    @@ -57,7 +57,7 @@ - +
    Description
    SeqSeq A model of Forward @@ -68,7 +68,7 @@
    - + Expression Semantics
    @@ -76,28 +76,28 @@ result_of::begin<Seq>::type

    - Return type: An iterator modelling the - same traversal concept as Seq. + Return type: An iterator modelling the + same traversal concept as Seq.

    - Semantics: Returns the type of an iterator - to the first element of Seq. + Semantics: Returns the type of an iterator + to the first element of Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/begin.hpp>
     
    - + Example
    -typedef vector<int> vec;
    -typedef result_of::begin<vec>::type it;
    -BOOST_MPL_ASSERT((boost::is_same<result_of::deref<it>::type, int&>))
    +typedef vector<int> vec;
    +typedef result_of::begin<vec>::type it;
    +BOOST_MPL_ASSERT((boost::is_same<result_of::deref<it>::type, int&>))
     
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html b/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html index 04882fc1..3dd1fd1e 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html @@ -3,7 +3,7 @@ empty - + @@ -26,14 +26,14 @@
    - + Description

    - Returns the result type of empty. + Returns the result type of empty.

    - + Synopsis
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.21. Parameters

    +

    Table 1.21. Parameters

    @@ -57,7 +57,7 @@ - +
    Description
    SeqSeq A model of Forward @@ -68,7 +68,7 @@
    - + Expression Semantics
    @@ -76,30 +76,30 @@ result_of::empty<Seq>::type

    - Return type: An MPL Integral Constant + Return type: An MPL Integral Constant

    - Semantics: Returns mpl::true_ - if Seq has zero elements, - mpl::false_ otherwise. + Semantics: Returns mpl::true_ + if Seq has zero elements, + mpl::false_ otherwise.

    - + Header
     #include <boost/fusion/sequence/intrinsic/empty.hpp>
     
    - + Example
    -typedef vector<> empty_vec;
    -typedef vector<int,float,char> vec;
    +typedef vector<> empty_vec;
    +typedef vector<int,float,char> vec;
     
    -BOOST_MPL_ASSERT((result_of::empty<empty_vec>));
    -BOOST_MPL_ASSERT_NOT((result_of::empty<vec>));
    +BOOST_MPL_ASSERT((result_of::empty<empty_vec>));
    +BOOST_MPL_ASSERT_NOT((result_of::empty<vec>));
     
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/end.html b/doc/html/fusion/sequences/intrinsics/metafunctions/end.html index bd8d8fb5..0fb1222c 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/end.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/end.html @@ -3,7 +3,7 @@ end - + @@ -26,14 +26,14 @@
    - + Description

    - Returns the result type of end. + Returns the result type of end.

    - + Synopsis
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.20. Parameters

    +

    Table 1.20. Parameters

    @@ -57,7 +57,7 @@ - +
    Description
    SeqSeq A model of Forward @@ -68,7 +68,7 @@
    - + Expression Semantics
    @@ -76,28 +76,28 @@ result_of::end<Seq>::type

    - Return type: A model of the same traversal - concept as Seq. + Return type: A model of the same traversal + concept as Seq.

    - Semantics: Returns the type of an iterator - one past the end of Seq. + Semantics: Returns the type of an iterator + one past the end of Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/end.hpp>
     
    - + Example
    -typedef vector<int> vec;
    -typedef result_of::prior<result_of::end<vec>::type>::type first;
    -BOOST_MPL_ASSERT((result_of::equal_to<first, result_of::begin<vec>::type>))
    +typedef vector<int> vec;
    +typedef result_of::prior<result_of::end<vec>::type>::type first;
    +BOOST_MPL_ASSERT((result_of::equal_to<first, result_of::begin<vec>::type>))
     
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/front.html b/doc/html/fusion/sequences/intrinsics/metafunctions/front.html index 2c6a88ca..d1fadda7 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/front.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/front.html @@ -3,7 +3,7 @@ front - + @@ -26,14 +26,14 @@
    - + Description

    - Returns the result type of front. + Returns the result type of front.

    - + Synopsis
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.22. Parameters

    +

    Table 1.22. Parameters

    @@ -57,7 +57,7 @@ - +
    Description
    SeqSeq A model of Forward @@ -68,7 +68,7 @@
    - + Expression Semantics
    @@ -76,27 +76,27 @@ result_of::front<Seq>::type

    - Return type: Any type + Return type: Any type

    - Semantics: The type returned by dereferencing - an iterator to the first element in Seq. - Equivalent to result_of::deref<result_of::begin<Seq>::type>::type. + Semantics: The type returned by dereferencing + an iterator to the first element in Seq. + Equivalent to result_of::deref<result_of::begin<Seq>::type>::type.

    - + Header
     #include <boost/fusion/sequence/intrinsic/front.hpp>
     
    - + Example
    -typedef vector<int,char> vec;
    -BOOST_MPL_ASSERT((boost::is_same<result_of::front<vec>::type, int&>));
    +typedef vector<int,char> vec;
    +BOOST_MPL_ASSERT((boost::is_same<result_of::front<vec>::type, int&>));
     
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html index 41f28d74..4a9deae3 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html @@ -3,7 +3,7 @@ has_key - + @@ -26,14 +26,14 @@
    - + Description

    - Returns the result type of has_key. + Returns the result type of has_key.

    - + Synopsis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.29. Parameters

    +

    Table 1.29. Parameters

    @@ -60,7 +60,7 @@ - + - + @@ -78,7 +78,7 @@
    SeqSeq A model of Forward @@ -69,7 +69,7 @@ Argument sequence
    KeyKey Any type Key type
    - + Expression Semantics
    @@ -86,29 +86,29 @@ result_of::has_key<Seq, Key>::type

    - Return type: An MPL Integral Constant. + Return type: An MPL Integral Constant.

    - Semantics: Returns mpl::true_ - if Seq contains an element - with key type Key, returns - mpl::false_ otherwise. + Semantics: Returns mpl::true_ + if Seq contains an element + with key type Key, returns + mpl::false_ otherwise.

    - + Header
     #include <boost/fusion/sequence/intrinsic/has_key.hpp>
     
    - + Example
    -typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
    -BOOST_MPL_ASSERT((result_of::has_key<mymap, int>));
    -BOOST_MPL_ASSERT_NOT((result_of::has_key<mymap, void*>));
    +typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
    +BOOST_MPL_ASSERT((result_of::has_key<mymap, int>));
    +BOOST_MPL_ASSERT_NOT((result_of::has_key<mymap, void*>));
     
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/size.html b/doc/html/fusion/sequences/intrinsics/metafunctions/size.html index deb58a57..09dd4a2e 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/size.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/size.html @@ -3,7 +3,7 @@ size - + @@ -26,14 +26,14 @@
    - + Description

    - Returns the result type of size. + Returns the result type of size.

    - + Synopsis
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.24. Parameters

    +

    Table 1.24. Parameters

    @@ -57,7 +57,7 @@ - +
    Description
    SeqSeq A model of Forward @@ -68,7 +68,7 @@
    - + Expression Semantics
    @@ -76,26 +76,26 @@ result_of::size<Seq>::type

    - Return type: An MPL Integral Constant. + Return type: An MPL Integral Constant.

    - Semantics: Returns the number of elements - in Seq. + Semantics: Returns the number of elements + in Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/size.hpp>
     
    - + Example
    -typedef vector<int,float,char> vec;
    -typedef result_of::size<vec>::type size_mpl_integral_constant;
    +typedef vector<int,float,char> vec;
    +typedef result_of::size<vec>::type size_mpl_integral_constant;
     BOOST_MPL_ASSERT_RELATION(size_mpl_integral_constant::value, ==, 3);
     
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html index d6d28373..1ee056b3 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html @@ -3,7 +3,7 @@ value_at - + @@ -26,14 +26,14 @@
    - + Description

    Returns the actual type at a given index from the Sequence.

    - + Synopsis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.27. Parameters

    +

    Table 1.27. Parameters

    @@ -60,7 +60,7 @@ - + - + @@ -78,7 +78,7 @@
    SeqSeq A model of Forward @@ -69,7 +69,7 @@ Argument sequence
    NN An MPL Integral Constant Index of element
    - + Expression Semantics
    @@ -86,26 +86,26 @@ result_of::value_at<Seq, N>::type

    - Return type: Any type. + Return type: Any type.

    - Semantics: Returns the actual type at - the Nth element of Seq. + Semantics: Returns the actual type at + the Nth element of Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/value_at.hpp>
     
    - + Example
    -typedef vector<int,float,char> vec;
    -BOOST_MPL_ASSERT((boost::is_same<result_of::value_at<vec, boost::mpl::int_<1> >::type, float>));
    +typedef vector<int,float,char> vec;
    +BOOST_MPL_ASSERT((boost::is_same<result_of::value_at<vec, boost::mpl::int_<1> >::type, float>));
     
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html index dc509789..157a98a3 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html @@ -3,7 +3,7 @@ value_at_c - + @@ -26,14 +26,14 @@
    - + Description

    Returns the actual type at a given index from the Sequence.

    - + Synopsis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.28. Parameters

    +

    Table 1.28. Parameters

    @@ -60,7 +60,7 @@ - + - + @@ -78,7 +78,7 @@
    SeqSeq A model of Forward @@ -69,7 +69,7 @@ Argument sequence
    MM Positive integer index Index of element
    - + Expression Semantics
    @@ -86,26 +86,26 @@ result_of::value_at_c<Seq, M>::type

    - Return type: Any type + Return type: Any type

    - Semantics: Returns the actual type at - the Mth element of Seq. + Semantics: Returns the actual type at + the Mth element of Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/value_at.hpp>
     
    - + Example
    -typedef vector<int,float,char> vec;
    -BOOST_MPL_ASSERT((boost::is_same<result_of::value_at_c<vec, 1>::type, float>));
    +typedef vector<int,float,char> vec;
    +BOOST_MPL_ASSERT((boost::is_same<result_of::value_at_c<vec, 1>::type, float>));
     
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html index b7d4d56b..434cdf2a 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html @@ -3,7 +3,7 @@ value_at_key - + @@ -26,14 +26,14 @@
    - + Description

    Returns the actual element type associated with a Key from the Sequence.

    - + Synopsis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.31. Parameters

    +

    Table 1.31. Parameters

    @@ -60,7 +60,7 @@ - + - + @@ -78,7 +78,7 @@
    SeqSeq A model of Forward @@ -69,7 +69,7 @@ Argument sequence
    KeyKey Any type Key type
    - + Expression Semantics
    @@ -86,27 +86,27 @@ result_of::value_at_key<Seq, Key>::type

    - Return type: Any type. + Return type: Any type.

    - Semantics: Returns the actual element - type associated with key type Key - in Seq. + Semantics: Returns the actual element + type associated with key type Key + in Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/value_at_key.hpp>
     
    - + Example
    -typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
    -BOOST_MPL_ASSERT((boost::is_same<result_of::at_key<mymap, int>::type, char>));
    +typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
    +BOOST_MPL_ASSERT((boost::is_same<result_of::at_key<mymap, int>::type, char>));
     
    diff --git a/doc/html/fusion/sequences/operators.html b/doc/html/fusion/sequences/operators.html index 33fc607d..65fec471 100644 --- a/doc/html/fusion/sequences/operators.html +++ b/doc/html/fusion/sequences/operators.html @@ -3,7 +3,7 @@ Operators - + diff --git a/doc/html/fusion/sequences/operators/comparison.html b/doc/html/fusion/sequences/operators/comparison.html index fc9357b8..2f7a05d4 100644 --- a/doc/html/fusion/sequences/operators/comparison.html +++ b/doc/html/fusion/sequences/operators/comparison.html @@ -3,7 +3,7 @@ Comparison - + @@ -26,16 +26,16 @@

    - The Comparison operators: ==, - !=, <, - <=, >= - and >= work generically + The Comparison operators: ==, + !=, <, + <=, >= + and >= work generically on all Fusion sequences. Comparison operators are "short- circuited": elementary comparisons start from the first elements and are performed only until the result is clear.

    - + Header
    diff --git a/doc/html/fusion/sequences/operators/comparison/equal.html b/doc/html/fusion/sequences/operators/comparison/equal.html
    index f9d2da7a..6b32830c 100644
    --- a/doc/html/fusion/sequences/operators/comparison/equal.html
    +++ b/doc/html/fusion/sequences/operators/comparison/equal.html
    @@ -3,7 +3,7 @@
     
     equal
     
    -
    +
     
     
     
    @@ -27,14 +27,14 @@
     
     
    - + Description

    Compare two sequences for equality.

    - + Synopsis
    @@ -43,7 +43,7 @@
     operator==(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -58,8 +58,8 @@ - + @@ -68,7 +68,7 @@
    Description
    a, - ba, + b Instances of Sequence
    - + Expression Semantics
    @@ -76,16 +76,16 @@ a == b

    - Return type: bool + Return type: bool

    - Requirements: + Requirements:

    - For each element, e1, - in sequence a, and for - each element, e2, in - sequence b, a == b is a valid expression returning a + For each element, e1, + in sequence a, and for + each element, e2, in + sequence b, a == b is a valid expression returning a type that is convertible to bool.

    @@ -93,30 +93,30 @@ compile time error.

    - Semantics: + Semantics:

    - For each element, e1, - in sequence a, and for - each element, e2, in - sequence b, e1 == e2 returns true. For any 2 zero length + For each element, e1, + in sequence a, and for + each element, e2, in + sequence b, e1 == e2 returns true. For any 2 zero length _sequence_s, e and f, e == f returns true.

    - + Header
     #include <boost/fusion/sequence/comparison/equal_to.hpp>
     
    - + Example
    -vector<int, char> v1(5, 'a');
    -vector<int, char> v2(5, 'a');
    +vector<int, char> v1(5, 'a');
    +vector<int, char> v2(5, 'a');
     assert(v1 == v2);
     
    diff --git a/doc/html/fusion/sequences/operators/comparison/greater_than.html b/doc/html/fusion/sequences/operators/comparison/greater_than.html index b6a913fe..10187349 100644 --- a/doc/html/fusion/sequences/operators/comparison/greater_than.html +++ b/doc/html/fusion/sequences/operators/comparison/greater_than.html @@ -4,7 +4,7 @@ greater than - +
    - + Synopsis
    @@ -43,7 +43,7 @@
     operator>(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -58,8 +58,8 @@ - + @@ -68,7 +68,7 @@
    Description
    a, - ba, + b Instances of Sequence
    - + Expression Semantics
    @@ -76,16 +76,16 @@ a > b

    - Return type: bool + Return type: bool

    - Requirements: + Requirements:

    - For each element, e1, - in sequence a, and for - each element, e2, in - sequence b, a < b is a valid expression returning a + For each element, e1, + in sequence a, and for + each element, e2, in + sequence b, a < b is a valid expression returning a type that is convertible to bool.

    @@ -93,23 +93,23 @@ compile time error.

    - Semantics: Returns b < a. + Semantics: Returns b < a.

    - + Header
     #include <boost/fusion/sequence/comparison/less_equal.hpp>
     
    - + Example
    -vector<int, float> v1(4, 3.3f);
    -vector<short, float> v2(5, 3.3f);
    -vector<long, double> v3(5, 4.4);
    +vector<int, float> v1(4, 3.3f);
    +vector<short, float> v2(5, 3.3f);
    +vector<long, double> v3(5, 4.4);
     assert(v2 > v1);
     assert(v3 > v2);
     
    diff --git a/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html b/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html index 2105bda5..b4cdbf9f 100644 --- a/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html +++ b/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html @@ -4,7 +4,7 @@ greater than equal - +
    - + Synopsis
    @@ -42,7 +42,7 @@
     operator>=(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -57,8 +57,8 @@ - + @@ -67,7 +67,7 @@
    Description
    a, - ba, + b Instances of Sequence
    - + Expression Semantics
    @@ -75,16 +75,16 @@ a >= b

    - Return type: bool + Return type: bool

    - Requirements: + Requirements:

    - For each element, e1, - in sequence a, and for - each element, e2, in - sequence b, a < b is a valid expression returning a + For each element, e1, + in sequence a, and for + each element, e2, in + sequence b, a < b is a valid expression returning a type that is convertible to bool.

    @@ -92,23 +92,23 @@ compile time error.

    - Semantics: Returns !(a < b). + Semantics: Returns !(a < b).

    - + Header
     #include <boost/fusion/sequence/comparison/greater_equal.hpp>
     
    - + Example
    -vector<int, float> v1(4, 3.3f);
    -vector<short, float> v2(5, 3.3f);
    -vector<long, double> v3(5, 4.4);
    +vector<int, float> v1(4, 3.3f);
    +vector<short, float> v2(5, 3.3f);
    +vector<long, double> v3(5, 4.4);
     assert(v2 >= v1);
     assert(v3 >= v2);
     
    diff --git a/doc/html/fusion/sequences/operators/comparison/less_than.html b/doc/html/fusion/sequences/operators/comparison/less_than.html index f4fa9b62..299f685d 100644 --- a/doc/html/fusion/sequences/operators/comparison/less_than.html +++ b/doc/html/fusion/sequences/operators/comparison/less_than.html @@ -4,7 +4,7 @@ less than - +
    - + Synopsis
    @@ -43,7 +43,7 @@
     operator<(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -58,8 +58,8 @@ - + @@ -68,7 +68,7 @@
    Description
    a, - ba, + b Instances of Sequence
    - + Expression Semantics
    @@ -76,16 +76,16 @@ a < b

    - Return type: bool + Return type: bool

    - Requirements: + Requirements:

    - For each element, e1, - in sequence a, and for - each element, e2, in - sequence b, a < b is a valid expression returning a + For each element, e1, + in sequence a, and for + each element, e2, in + sequence b, a < b is a valid expression returning a type that is convertible to bool.

    @@ -93,25 +93,25 @@ compile time error.

    - Semantics: Returns the lexicographical - comparison of between a - and b. + Semantics: Returns the lexicographical + comparison of between a + and b.

    - + Header
     #include <boost/fusion/sequence/comparison/less.hpp>
     
    - + Example
    -vector<int, float> v1(4, 3.3f);
    -vector<short, float> v2(5, 3.3f);
    -vector<long, double> v3(5, 4.4);
    +vector<int, float> v1(4, 3.3f);
    +vector<short, float> v2(5, 3.3f);
    +vector<long, double> v3(5, 4.4);
     assert(v1 < v2);
     assert(v2 < v3);
     
    diff --git a/doc/html/fusion/sequences/operators/comparison/less_than_equal.html b/doc/html/fusion/sequences/operators/comparison/less_than_equal.html index 1227b615..a4862309 100644 --- a/doc/html/fusion/sequences/operators/comparison/less_than_equal.html +++ b/doc/html/fusion/sequences/operators/comparison/less_than_equal.html @@ -4,7 +4,7 @@ less than equal - +
    - + Synopsis
    @@ -43,7 +43,7 @@
     operator<=(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -58,8 +58,8 @@ - + @@ -68,7 +68,7 @@
    Description
    a, - ba, + b Instances of Sequence
    - + Expression Semantics
    @@ -76,16 +76,16 @@ a <= b

    - Return type: bool + Return type: bool

    - Requirements: + Requirements:

    - For each element, e1, - in sequence a, and for - each element, e2, in - sequence b, a < b is a valid expression returning a + For each element, e1, + in sequence a, and for + each element, e2, in + sequence b, a < b is a valid expression returning a type that is convertible to bool.

    @@ -93,23 +93,23 @@ compile time error.

    - Semantics: Returns !(b < a). + Semantics: Returns !(b < a).

    - + Header
     #include <boost/fusion/sequence/comparison/less_equal.hpp>
     
    - + Example
    -vector<int, float> v1(4, 3.3f);
    -vector<short, float> v2(5, 3.3f);
    -vector<long, double> v3(5, 4.4);
    +vector<int, float> v1(4, 3.3f);
    +vector<short, float> v2(5, 3.3f);
    +vector<long, double> v3(5, 4.4);
     assert(v1 <= v2);
     assert(v2 <= v3);
     
    diff --git a/doc/html/fusion/sequences/operators/comparison/not_equal.html b/doc/html/fusion/sequences/operators/comparison/not_equal.html index 3dd1ee1e..a4c1e8f6 100644 --- a/doc/html/fusion/sequences/operators/comparison/not_equal.html +++ b/doc/html/fusion/sequences/operators/comparison/not_equal.html @@ -4,7 +4,7 @@ not equal - + @@ -33,7 +33,7 @@ Compare two sequences for inequality.

    - + Synopsis
    @@ -42,7 +42,7 @@
     operator!=(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -57,8 +57,8 @@ - + @@ -67,7 +67,7 @@
    Description
    a, - ba, + b Instances of Sequence
    - + Expression Semantics
    @@ -75,16 +75,16 @@ a != b

    - Return type: bool + Return type: bool

    - Requirements: + Requirements:

    - For each element, e1, - in sequence a, and for - each element, e2, in - sequence b, a == b is a valid expression returning a + For each element, e1, + in sequence a, and for + each element, e2, in + sequence b, a == b is a valid expression returning a type that is convertible to bool.

    @@ -92,25 +92,25 @@ compile time error.

    - Semantics: + Semantics:

    Returns !(a == b).

    - + Header
     #include <boost/fusion/sequence/comparison/not_equal_to.hpp>
     
    - + Example
    -vector<int, char> v3(5, 'b');
    -vector<int, char> t4(2, 'a');
    +vector<int, char> v3(5, 'b');
    +vector<int, char> t4(2, 'a');
     assert(v1 != v3);
     assert(v1 != t4);
     assert(!(v1 != v2));
    diff --git a/doc/html/fusion/sequences/operators/i_o.html b/doc/html/fusion/sequences/operators/i_o.html
    index f81d893a..56a002b4 100644
    --- a/doc/html/fusion/sequences/operators/i_o.html
    +++ b/doc/html/fusion/sequences/operators/i_o.html
    @@ -3,7 +3,7 @@
     
     I/O
     
    -
    +
     
     
     
    @@ -26,25 +26,25 @@
     
     

    - The I/O operators: << - and >> work generically - on all Fusion sequences. The global operator<< has been overloaded for generic + The I/O operators: << + and >> work generically + on all Fusion sequences. The global operator<< has been overloaded for generic output streams such that _sequence_s - are output by recursively calling operator<< for each element. Analogously, - the global operator>> + are output by recursively calling operator<< for each element. Analogously, + the global operator>> has been overloaded to extract _sequence_s - from generic input streams by recursively calling operator>> for each element. + from generic input streams by recursively calling operator>> for each element.

    The default delimiter between the elements is space, and the Sequence is enclosed in parenthesis. For Example:

    -vector<float, int, std::string> a(1.0f, 2, std::string("Howdy folks!");
    +vector<float, int, std::string> a(1.0f, 2, std::string("Howdy folks!");
     cout << a; 
     

    - outputs the vector as: (1.0 2 Howdy folks!) + outputs the vector as: (1.0 2 Howdy folks!)

    The library defines three manipulators for changing the default behavior: @@ -52,23 +52,23 @@

    Manipulators

    -
    tuple_open(arg)
    +
    tuple_open(arg)
    Defines the character that is output before the first element.
    -
    tuple_close(arg)
    +
    tuple_close(arg)
    Defines the character that is output after the last element.
    -
    tuple_delimiter(arg)
    +
    tuple_delimiter(arg)
    Defines the delimiter character between elements.

    - The argument to tuple_open, - tuple_close and tuple_delimiter may be a char, wchar_t, + The argument to tuple_open, + tuple_close and tuple_delimiter may be a char, wchar_t, a C-string, or a wide C-string.

    @@ -78,12 +78,12 @@ std::cout << tuple_open('[') << tuple_close(']') << tuple_delimiter(", ") << a;

    - outputs the same vector, a + outputs the same vector, a as: [1.0, 2, Howdy folks!]

    - The same manipulators work with operator>> and istream - as well. Suppose the std::cin + The same manipulators work with operator>> and istream + as well. Suppose the std::cin stream contains the following data:

    @@ -93,8 +93,8 @@
               The code:
             

    -vector<int, int, int> i;
    -vector<int, int> j;
    +vector<int, int, int> i;
    +vector<int, int> j;
     
     std::cin >> i;
     std::cin >> set_open('[') >> set_close(']') >> set_delimiter(':');
    @@ -102,16 +102,16 @@
     

    reads the data into the _vector_s - i and j. + i and j.

    Note that extracting _sequence_s - with std::string or C-style string elements does + with std::string or C-style string elements does not generally work, since the streamed Sequence representation may not be unambiguously parseable.

    - + Header
    diff --git a/doc/html/fusion/sequences/operators/i_o/in.html b/doc/html/fusion/sequences/operators/i_o/in.html
    index dc0b3113..64e8c2f0 100644
    --- a/doc/html/fusion/sequences/operators/i_o/in.html
    +++ b/doc/html/fusion/sequences/operators/i_o/in.html
    @@ -3,7 +3,7 @@
     
     in
     
    -
    +
     
     
     
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -34,7 +34,7 @@ stream.

    - + Synopsis
    @@ -43,7 +43,7 @@
     operator>>(IStream& is, Sequence& seq);
     
    - + Parameters
    @@ -73,7 +73,7 @@
    - + Expression Semantics
    @@ -81,26 +81,26 @@ is >> seq

    - Return type: IStream& + Return type: IStream&

    - Semantics: For each element, e, in sequence, seq, - call is >> - e. + Semantics: For each element, e, in sequence, seq, + call is >> + e.

    - + Header
     #include <boost/fusion/sequence/io/in.hpp>
     
    - + Example
    -vector<int, std::string, char> v;
    +vector<int, std::string, char> v;
     std::cin >> v;
     
    diff --git a/doc/html/fusion/sequences/operators/i_o/out.html b/doc/html/fusion/sequences/operators/i_o/out.html index 90ef2446..b8db9e21 100644 --- a/doc/html/fusion/sequences/operators/i_o/out.html +++ b/doc/html/fusion/sequences/operators/i_o/out.html @@ -3,7 +3,7 @@ out - + @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ stream.

    - + Synopsis
    @@ -43,7 +43,7 @@
     operator<<(OStream& os, Sequence& seq);
     
    - + Parameters
    @@ -73,7 +73,7 @@
    - + Expression Semantics
    @@ -81,26 +81,26 @@ os << seq

    - Return type: OStream& + Return type: OStream&

    - Semantics: For each element, e, in sequence, seq, - call os << - e. + Semantics: For each element, e, in sequence, seq, + call os << + e.

    - + Header
     #include <boost/fusion/sequence/io/out.hpp>
     
    - + Example
    -std::cout << make_vector(123, "Hello", 'x') << std::endl;
    +std::cout << make_vector(123, "Hello", 'x') << std::endl;
     
    diff --git a/doc/html/fusion/sequences/views.html b/doc/html/fusion/sequences/views.html index 7d6713d4..86d6506f 100644 --- a/doc/html/fusion/sequences/views.html +++ b/doc/html/fusion/sequences/views.html @@ -3,7 +3,7 @@ Views - + @@ -35,7 +35,7 @@ very cheap to copy and be passed around by value.

    - + Header

    diff --git a/doc/html/fusion/sequences/views/filter_view.html b/doc/html/fusion/sequences/views/filter_view.html
    index 4380ce34..7e425c8f 100644
    --- a/doc/html/fusion/sequences/views/filter_view.html
    +++ b/doc/html/fusion/sequences/views/filter_view.html
    @@ -3,7 +3,7 @@
     
     filter_view
     
    -
    +
     
     
     
    @@ -26,25 +26,25 @@
     
     
    - + Description

    - filter_view is a view into + filter_view is a view into a subset of its underlying sequence's elements satisfying a given predicate (an MPL metafunction). - The filter_view presents - only those elements for which its predicate evaluates to mpl::true_. + The filter_view presents + only those elements for which its predicate evaluates to mpl::true_.

    - + Header
     #include <boost/fusion/sequence/view/filter_view.hpp>
     
    - + Synopsis
    @@ -52,7 +52,7 @@
     struct filter_view;
     
    - + Template parameters
    @@ -69,7 +69,7 @@
    - + - +
    SequenceSequence A Forward @@ -78,16 +78,16 @@  
    PredPred Unary - Metafunction returning an mpl::bool_ + Metafunction returning an mpl::bool_  
    - + Model of
    - + Expression Semantics
    @@ -134,30 +134,30 @@ -F(s) +F(s) Creates - a filter_view given - a sequence, s. + a filter_view given + a sequence, s. -F(f) +F(f) Copy - constructs a filter_view - from another filter_view, - f. + constructs a filter_view + from another filter_view, + f. -f = - f2 +f = + f2 Assigns - to a filter_view, - f, from another - filter_view, f2. + to a filter_view, + f, from another + filter_view, f2.
    - + Example
    @@ -165,7 +165,7 @@
     using boost::mpl::not_;
     using boost::is_class;
     
    -typedef vector<std::string, char, long, bool, double> vector_type;
    +typedef vector<std::string, char, long, bool, double> vector_type;
     
     vector_type v("a-string", '@', 987654, true, 6.6);
     filter_view<vector_type const, not_<is_class<_> > > view(v);
    diff --git a/doc/html/fusion/sequences/views/iterator_range.html b/doc/html/fusion/sequences/views/iterator_range.html
    index 5231f702..8beb71ae 100644
    --- a/doc/html/fusion/sequences/views/iterator_range.html
    +++ b/doc/html/fusion/sequences/views/iterator_range.html
    @@ -3,7 +3,7 @@
     
     iterator_range
     
    -
    +
     
     
     
    @@ -26,22 +26,22 @@
     
     
    - + Description

    - iterator_range presents + iterator_range presents a sub-range of its underlying sequence delimited by a pair of iterators.

    - + Header
     #include <boost/fusion/sequence/view/iterator_range.hpp>
     
    - + Synopsis
    @@ -49,7 +49,7 @@
     struct iterator_range;
     
    - + Template parameters
    @@ -66,14 +66,14 @@ -First +First A fusion Iterator   -Last +Last A fusion Iterator @@ -82,7 +82,7 @@
    - + Model of
    - + Expression Semantics
    @@ -131,43 +131,43 @@ -IR(f, l) +IR(f, l) Creates - an iterator_range - given iterators, f - and l. + an iterator_range + given iterators, f + and l. -IR(ir) +IR(ir) Copy - constructs an iterator_range - from another iterator_range, - ir. + constructs an iterator_range + from another iterator_range, + ir. -ir = - ir2 +ir = + ir2 Assigns - to a iterator_range, - ir, from another - iterator_range, - ir2. + to a iterator_range, + ir, from another + iterator_range, + ir2.
    - + Example
     char const* s = "Ruby";
    -typedef vector<int, char, double, char const*> vector_type;
    +typedef vector<int, char, double, char const*> vector_type;
     vector_type vec(1, 'x', 3.3, s);
     
    -typedef result_of::begin<vector_type>::type A;
    -typedef result_of::end<vector_type>::type B;
    -typedef result_of::next<A>::type C;
    -typedef result_of::prior<B>::type D;
    +typedef result_of::begin<vector_type>::type A;
    +typedef result_of::end<vector_type>::type B;
    +typedef result_of::next<A>::type C;
    +typedef result_of::prior<B>::type D;
     
     C c(vec);
     D d(vec);
    diff --git a/doc/html/fusion/sequences/views/joint_view.html b/doc/html/fusion/sequences/views/joint_view.html
    index 5701f8ab..cb8979ba 100644
    --- a/doc/html/fusion/sequences/views/joint_view.html
    +++ b/doc/html/fusion/sequences/views/joint_view.html
    @@ -3,7 +3,7 @@
     
     joint_view
     
    -
    +
     
     
     
    @@ -26,22 +26,22 @@
     
     
    - + Description

    - joint_view presents a view + joint_view presents a view which is a concatenation of two sequences.

    - + Header
     #include <boost/fusion/sequence/view/joint_view.hpp>
     
    - + Synopsis
    @@ -49,7 +49,7 @@
     struct joint_view;
     
    - + Template parameters
    @@ -66,7 +66,7 @@ -Sequence1 +Sequence1 A Forward @@ -75,7 +75,7 @@   -Sequence2 +Sequence2 A Forward @@ -86,7 +86,7 @@
    - + Model of
    - + Expression Semantics
    @@ -135,39 +135,39 @@ -JV(s1, s2) +JV(s1, s2) Creates - a joint_view given - sequences, s1 and - s2. + a joint_view given + sequences, s1 and + s2. -JV(jv) +JV(jv) Copy - constructs a joint_view - from another joint_view, - jv. + constructs a joint_view + from another joint_view, + jv. -jv = - jv2 +jv = + jv2 Assigns - to a joint_view, - jv, from another - joint_view, jv2. + to a joint_view, + jv, from another + joint_view, jv2.
    - + Example
    -vector<int, char> v1(3, 'x');
    -vector<std::string, int> v2("hello", 123);
    +vector<int, char> v1(3, 'x');
    +vector<std::string, int> v2("hello", 123);
     joint_view<
    -    vector<int, char>
    -  , vector<std::string, int>
    +    vector<int, char>
    +  , vector<std::string, int>
     > view(v1, v2);
     std::cout << view << std::endl;
     
    diff --git a/doc/html/fusion/sequences/views/reverse_view.html b/doc/html/fusion/sequences/views/reverse_view.html index 1c804ba3..006a525a 100644 --- a/doc/html/fusion/sequences/views/reverse_view.html +++ b/doc/html/fusion/sequences/views/reverse_view.html @@ -3,7 +3,7 @@ reverse_view - + @@ -26,19 +26,19 @@

    - reverse_view presents a + reverse_view presents a reversed view of underlying sequence. The first element will be its last and the last element will be its first.

    - + Header
     #include <boost/fusion/sequence/view/reverse_view.hpp>
     
    - + Synopsis
    @@ -46,7 +46,7 @@
     struct reverse_view;
     
    - + Template parameters
    @@ -62,7 +62,7 @@ Default -Sequence +Sequence A Bidirectional @@ -72,7 +72,7 @@
    - + Model of
    - + Expression Semantics
    @@ -118,34 +118,34 @@ -RV(s) +RV(s) Creates - a unary reverse_view - given sequence, s. + a unary reverse_view + given sequence, s. -RV(rv) +RV(rv) Copy - constructs a reverse_view - from another reverse_view, - rv. + constructs a reverse_view + from another reverse_view, + rv. -rv = - rv2 +rv = + rv2 Assigns - to a reverse_view, - rv, from another - reverse_view, rv2. + to a reverse_view, + rv, from another + reverse_view, rv2.
    - + Example
    -typedef vector<int, short, double> vector_type;
    +typedef vector<int, short, double> vector_type;
     vector_type vec(2, 5, 3.3);
     
     reverse_view<vector_type> reverse(vec);
    diff --git a/doc/html/fusion/sequences/views/single_view.html b/doc/html/fusion/sequences/views/single_view.html
    index 9cd016cc..6a0dd254 100644
    --- a/doc/html/fusion/sequences/views/single_view.html
    +++ b/doc/html/fusion/sequences/views/single_view.html
    @@ -3,7 +3,7 @@
     
     single_view
     
    -
    +
     
     
     
    @@ -26,18 +26,18 @@
     
     

    - single_view is a view into + single_view is a view into a value as a single element sequence.

    - + Header
     #include <boost/fusion/sequence/view/single_view.hpp>
     
    - + Synopsis
    @@ -45,7 +45,7 @@
     struct single_view;
     
    - + Template parameters
    @@ -61,14 +61,14 @@ Default -T +T Any type  
    - + Model of
    - + Expression Semantics
    @@ -113,30 +113,30 @@ -S(x) +S(x) Creates - a single_view from - x. + a single_view from + x. -S(s) +S(s) Copy - constructs a single_view - from another single_view, - s. + constructs a single_view + from another single_view, + s. -s = - s2 +s = + s2 Assigns - to a single_view, - s, from another - single_view, s2. + to a single_view, + s, from another + single_view, s2.
    - + Example
    diff --git a/doc/html/fusion/sequences/views/transform_view.html b/doc/html/fusion/sequences/views/transform_view.html
    index 6d891b9c..1690d8d8 100644
    --- a/doc/html/fusion/sequences/views/transform_view.html
    +++ b/doc/html/fusion/sequences/views/transform_view.html
    @@ -3,7 +3,7 @@
     
     transform_view
     
    -
    +
     
     
     
    @@ -26,40 +26,40 @@
     
     

    - transform_view presents + transform_view presents a transformed view of its underlying sequence given a unary Polymorphic - Function Object. The transform_view + Function Object. The transform_view inherits the traversal characteristics (see Sequence Traversal Concept) of its underlying sequence.

    - + Header
     #include <boost/fusion/sequence/view/transform_view.hpp>
     
    - + Synopsis

    - Unary Version + Unary Version

     template <typename Sequence, typename F>
     struct transform_view;
     

    - Binary Version + Binary Version

     template <typename Sequence1, typename Sequence2, typename F>
     struct transform_view;
     
    - + Template parameters
    @@ -76,7 +76,7 @@ -Sequence +Sequence A Forward @@ -85,7 +85,7 @@   -Sequence1 +Sequence1 A Forward @@ -94,7 +94,7 @@   -Sequence2 +Sequence2 A Forward @@ -103,7 +103,7 @@   -F +F A Polymorphic Function @@ -114,7 +114,7 @@
    - + Model of
    • @@ -131,45 +131,45 @@

      Notation

      -
      TV
      +
      TV
      - A transform_view type + A transform_view type
      -
      BTV
      +
      BTV
      - A binary transform_view + A binary transform_view type
      -
      UTV
      +
      UTV
      - A unary transform_view + A unary transform_view type
      -
      f
      +
      f
      - An instance of F + An instance of F
      -
      s
      +
      s
      - An instance of Sequence + An instance of Sequence
      -
      s1
      +
      s1
      - An instance of Sequence1 + An instance of Sequence1
      -
      s2
      +
      s2
      - An instance of Sequence2 + An instance of Sequence2
      -
      tv, - tv2
      +
      tv, + tv2
      - Instances of transform_view + Instances of transform_view
      - + Expression Semantics
      @@ -196,44 +196,44 @@ -UTV(s, f) +UTV(s, f) Creates - a unary transform_view - given sequence, s + a unary transform_view + given sequence, s and unary Polymorphic - Function Object, f. + Function Object, f. -BTV(s1, s2, f) +BTV(s1, s2, f) Creates - a binary transform_view - given sequences, s1 - and s2 and unary + a binary transform_view + given sequences, s1 + and s2 and unary Polymorphic Function - Object, f. + Object, f. -TV(tv) +TV(tv) Copy - constructs a transform_view - from another transform_view, - tv. + constructs a transform_view + from another transform_view, + tv. -tv = - tv2 +tv = + tv2 Assigns - to a transform_view, - tv, from another - transform_view, - tv2. + to a transform_view, + tv, from another + transform_view, + tv2.
    - + Example
    @@ -252,7 +252,7 @@
         }
     };
     
    -typedef vector<int, short, double> vector_type;
    +typedef vector<int, short, double> vector_type;
     vector_type vec(2, 5, 3.3);
     
     transform_view<vector_type, square> transform(vec, square());
    diff --git a/doc/html/fusion/sequences/views/zip_view.html b/doc/html/fusion/sequences/views/zip_view.html
    index 8ef18542..ab689851 100644
    --- a/doc/html/fusion/sequences/views/zip_view.html
    +++ b/doc/html/fusion/sequences/views/zip_view.html
    @@ -3,7 +3,7 @@
     
     zip_view
     
    -
    +
     
     
     
    @@ -26,25 +26,25 @@
     
     
    - + Description

    - zip_view presents a view + zip_view presents a view which iterates over a collection of _sequence_s - in parallel. A zip_view + in parallel. A zip_view is constructed from a Sequence of references to the component _sequence_s.

    - + Header
     #include <boost/fusion/sequence/view/zip_view.hpp>
     
    - + Synopsis
    @@ -52,7 +52,7 @@
     struct zip_view;
     
    - + Template parameters
    @@ -68,7 +68,7 @@ Default -Sequences +Sequences A Forward @@ -77,7 +77,7 @@
    - + Model of
    - + Expression Semantics
    @@ -122,36 +122,36 @@ -ZV(s) +ZV(s) Creates - a zip_view given + a zip_view given a sequence of references to the component _sequence_s. -ZV(zv1) +ZV(zv1) Copy - constructs a zip_view - from another zip_view, - zv. + constructs a zip_view + from another zip_view, + zv. -zv1 = - zv2 +zv1 = + zv2 Assigns - to a zip_view, zv, from another zip_view, zv2. + to a zip_view, zv, from another zip_view, zv2.
    - + Example
    -typedef vector<int,int> vec1;
    -typedef vector<char,char> vec2;
    +typedef vector<int,int> vec1;
    +typedef vector<char,char> vec2;
     vec1 v1(1,2);
     vec2 v2('a','b');
    -typedef vector<vec1&, vec2&> sequences;
    +typedef vector<vec1&, vec2&> sequences;
     std::cout << zip_view<sequences>(sequences(v1, v2)) << std::endl; // ((1 a) (2 b))
     
    diff --git a/doc/html/fusion/support.html b/doc/html/fusion/support.html index 532ba0f4..dfaeb458 100644 --- a/doc/html/fusion/support.html +++ b/doc/html/fusion/support.html @@ -3,7 +3,7 @@ Support - + @@ -30,6 +30,8 @@
    is_view
    tag_of
    category_of
    +
    deduce
    +
    deduce_sequence
    pair

    diff --git a/doc/html/fusion/support/category_of.html b/doc/html/fusion/support/category_of.html index 21edf08a..946b613e 100644 --- a/doc/html/fusion/support/category_of.html +++ b/doc/html/fusion/support/category_of.html @@ -3,11 +3,11 @@ category_of - + - + @@ -20,13 +20,13 @@


    -PrevUpHomeNext +PrevUpHomeNext

    - + Description

    @@ -36,7 +36,7 @@ Sequence Concepts).

    - + Synopsis

    @@ -50,7 +50,7 @@
     }
     

    - + Parameters

    @@ -65,14 +65,14 @@ - +
    Description
    TT Any type The type to query.

    - + Expression Semantics

    @@ -80,7 +80,7 @@ typedef traits::category_of<T>::type category;

    - Return type: + Return type:

    For Iterators, the return type is derived from one of: @@ -134,24 +134,24 @@ }}

    - Semantics: Establishes the conceptual classification + Semantics: Establishes the conceptual classification of a particular Sequence or Iterator.

    - + Header

     #include <boost/fusion/support/category_of.hpp>
     

    - + Example

     using boost::is_base_of;
    -typedef traits::category_of<list<> >::type list_category;
    -typedef traits::category_of<vector<> >::type vector_category;
    +typedef traits::category_of<list<> >::type list_category;
    +typedef traits::category_of<vector<> >::type vector_category;
     BOOST_MPL_ASSERT(( is_base_of<forward_traversal_tag, list_category> ));
     BOOST_MPL_ASSERT(( is_base_of<random_access_traversal_tag, vector_category> ));
     
    @@ -162,7 +162,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/support/deduce.html b/doc/html/fusion/support/deduce.html new file mode 100644 index 00000000..4dcb19d2 --- /dev/null +++ b/doc/html/fusion/support/deduce.html @@ -0,0 +1,98 @@ + + + +deduce + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +

    + + Description +

    +

    + Metafunction to apply element + conversion to the full argument type. +

    +

    + It removes references to const, + references to array types are kept, even if the array is const. + Reference wrappers are removed (see boost::ref). +

    +

    + + Header +

    +
    +#include <boost/fusion/support/deduce.hpp>
    +
    +

    + + Synopsis +

    +
    +namespace traits
    +{
    +    template <typename T> 
    +    struct deduce
    +    {
    +        typedef unspecified type;
    +    };
    +}
    +
    +

    + + Example +

    +
    +template <typename T>
    +struct holder
    +{
    +    typename traits::deduce<T const &>::type element;
    +
    +    holder(T const & a)
    +      : element(a)
    +    { }
    +};
    +
    +template <typename T>
    +holder<T> make_holder(T const & a)
    +{
    +    return holder<T>(a);
    +}
    +
    +

    + + See also +

    + +
    + + + +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/support/deduce_sequence.html b/doc/html/fusion/support/deduce_sequence.html new file mode 100644 index 00000000..71ad1355 --- /dev/null +++ b/doc/html/fusion/support/deduce_sequence.html @@ -0,0 +1,100 @@ + + + +deduce_sequence + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +

    + + Description +

    +

    + Applies element + conversion to each element in a Forward + Sequence. The resulting type is a Random + Access Sequence that provides a converting constructor accepting the + original type as its argument. +

    +

    + + Header +

    +
    +#include <boost/fusion/support/deduce_sequence.hpp>
    +
    +

    + + Synopsis +

    +
    +namespace traits
    +{
    +    template <class Sequence> 
    +    struct deduce_sequence
    +    {
    +        typedef unspecified type;
    +    };
    +}
    +
    +

    + + Example +

    +
    +template <class Seq>
    +struct holder
    +{
    +    typename traits::deduce_sequence<Seq>::type element;
    +
    +    holder(Seq const & a)
    +      : element(a)
    +    { }
    +};
    +
    +template <typename T0, typename T1>
    +holder< vector<T0 const &, T1 const &> > 
    +make_holder(T0 const & a0, T1 const & a1)
    +{
    +    typedef vector<T0 const &, T1 const &> arg_vec_t;
    +    return holder<arg_vec_t>( arg_vec_t(a0,a1) ); 
    +}
    +
    +

    + + See also +

    + +
    + + + +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/support/is_sequence.html b/doc/html/fusion/support/is_sequence.html index 26d561ba..33939468 100644 --- a/doc/html/fusion/support/is_sequence.html +++ b/doc/html/fusion/support/is_sequence.html @@ -3,7 +3,7 @@ is_sequence - + @@ -26,18 +26,18 @@

    - + Description

    - Metafunction that evaluates to mpl::true_ - if a certain type T is a - conforming Fusion Sequence, mpl::false_ + Metafunction that evaluates to mpl::true_ + if a certain type T is a + conforming Fusion Sequence, mpl::false_ otherwise. This may be specialized to accomodate clients which provide Fusion conforming sequences.

    - + Synopsis

    @@ -51,7 +51,7 @@
     }
     

    - + Parameters

    @@ -66,14 +66,14 @@ - +
    Description
    TT Any type The type to query.

    - + Expression Semantics

    @@ -81,32 +81,32 @@ typedef traits::is_sequence<T>::type c;

    - Return type: An MPL Boolean Constant. + Return type: An MPL Boolean Constant.

    - Semantics: Metafunction that evaluates to - mpl::true_ if a certain type T - is a conforming Fusion sequence, mpl::false_ + Semantics: Metafunction that evaluates to + mpl::true_ if a certain type T + is a conforming Fusion sequence, mpl::false_ otherwise.

    - + Header

     #include <boost/fusion/support/is_sequence.hpp>
     

    - + Example

     BOOST_MPL_ASSERT_NOT(( traits::is_sequence< std::vector<int> > ));
     BOOST_MPL_ASSERT_NOT(( is_sequence< int > ));
    -BOOST_MPL_ASSERT(( traits::is_sequence<list<> > ));
    -BOOST_MPL_ASSERT(( traits::is_sequence<list<int> > ));
    -BOOST_MPL_ASSERT(( traits::is_sequence<vector<> > ));
    -BOOST_MPL_ASSERT(( traits::is_sequence<vector<int> > ));
    +BOOST_MPL_ASSERT(( traits::is_sequence<list<> > ));
    +BOOST_MPL_ASSERT(( traits::is_sequence<list<int> > ));
    +BOOST_MPL_ASSERT(( traits::is_sequence<vector<> > ));
    +BOOST_MPL_ASSERT(( traits::is_sequence<vector<int> > ));
     
    diff --git a/doc/html/fusion/support/is_view.html b/doc/html/fusion/support/is_view.html index 33e07948..c93d22a3 100644 --- a/doc/html/fusion/support/is_view.html +++ b/doc/html/fusion/support/is_view.html @@ -3,7 +3,7 @@ is_view - + @@ -26,21 +26,21 @@

    - + Description

    - Metafunction that evaluates to mpl::true_ - if a certain type T is a - conforming Fusion View, mpl::false_ + Metafunction that evaluates to mpl::true_ + if a certain type T is a + conforming Fusion View, mpl::false_ otherwise. A view is a specialized sequence that does not actually contain data. Views hold sequences which may be other views. In general, views are held by other views by value, while non-views are held by other views by - reference. is_view may be + reference. is_view may be specialized to accomodate clients providing Fusion conforming views.

    - + Synopsis

    @@ -54,7 +54,7 @@
     }
     

    - + Parameters

    @@ -69,37 +69,37 @@ - +
    Description
    TT Any type The type to query.

    - + Expression Semantics

     typedef traits::is_view<T>::type c;
     

    - Return type: An MPL Boolean Constant. + Return type: An MPL Boolean Constant.

    - Semantics: Metafunction that evaluates to - mpl::true_ if a certain type T - is a conforming Fusion view, mpl::false_ + Semantics: Metafunction that evaluates to + mpl::true_ if a certain type T + is a conforming Fusion view, mpl::false_ otherwise.

    - + Header

     #include <boost/fusion/support/is_view.hpp>
     

    - + Example

    @@ -108,8 +108,8 @@
     
     using boost::mpl::_
     using boost::is_pointer;
    -typedef vector<int*, char, long*, bool, double> vector_type;
    -typedef filter_view<vector_type, is_pointer<_> > filter_view_type;
    +typedef vector<int*, char, long*, bool, double> vector_type;
    +typedef filter_view<vector_type, is_pointer<_> > filter_view_type;
     BOOST_MPL_ASSERT(( traits::is_view<filter_view_type> ));
     
    diff --git a/doc/html/fusion/support/pair.html b/doc/html/fusion/support/pair.html index 8f667969..9bccda5f 100644 --- a/doc/html/fusion/support/pair.html +++ b/doc/html/fusion/support/pair.html @@ -3,10 +3,10 @@ pair - + - + @@ -20,24 +20,24 @@
    -PrevUpHomeNext +PrevUpHomeNext

    - + Description

    - Fusion pair type is a half - runtime pair. A half runtime pair is similar to a std::pair, - but, unlike std::pair, + Fusion pair type is a half + runtime pair. A half runtime pair is similar to a std::pair, + but, unlike std::pair, the first type does not have data. It is used as elements in _map_s, for example.

    - + Synopsis

    @@ -61,7 +61,7 @@
     make_pair(Second const &);
     

    - + Template parameters

    @@ -88,36 +88,36 @@

    Notation

    -
    P
    +
    P
    Fusion pair type
    -
    p, - p2
    +
    p, + p2
    Fusion pairs
    -
    F, - S
    +
    F, + S
    Arbitrary types
    -
    s
    +
    s
    - Value of type S + Value of type S
    -
    o
    +
    o
    Output stream
    -
    i
    +
    i
    Input stream

    - + Expression Semantics

    @@ -131,81 +131,81 @@ - + - + - + - + + a pair given value for the second type, s. - + + constructs a pair from another pair, p2. - + + a pair, p1, from another pair, p2. - - + + - - + + - + - +
    P::first_typeP::first_type The type - of the first template parameter, F, - equivalent to result_of::first<P>::type. + of the first template parameter, F, + equivalent to result_of::first<P>::type.
    P::second_typeP::second_type The type - of the second template parameter, S, - equivalent to result_of::second<P>::type. + of the second template parameter, S, + equivalent to result_of::second<P>::type.
    P()P() Default construction.
    P(s)P(s) Construct - a pair given value for the second type, s.
    P(p2)P(p2) Copy - constructs a pair from another pair, p2.
    p = - p2p = + p2 Assigns - a pair, p1, from another pair, p2.
    make_pair<F>(s) Make a pair given the first - type, F, and a value - for the second type, s. - The second type assumes the type of s + type, F, and a value + for the second type, s. + The second type assumes the type of s
    o << - pOutput p to output stream, o.o << + pOutput p to output stream, o.
    i >> - pInput p from input stream, i.i >> + pInput p from input stream, i.
    p == - p2p == + p2 Tests two pairs for equality.
    p != - p2p != + p2 Tests two pairs for inequality.

    - + Header

     #include <boost/fusion/support/pair.hpp>
     

    - + Example

    @@ -221,7 +221,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/support/tag_of.html b/doc/html/fusion/support/tag_of.html index c9eda41b..e93a5a8a 100644 --- a/doc/html/fusion/support/tag_of.html +++ b/doc/html/fusion/support/tag_of.html @@ -3,7 +3,7 @@ tag_of - + @@ -26,7 +26,7 @@

    - + Description

    @@ -40,7 +40,7 @@ conforming sequences.

    - + Synopsis

    @@ -54,7 +54,7 @@
     }
     

    - + Parameters

    @@ -69,42 +69,42 @@ - +
    Description
    TT Any type The type to query.

    - + Expression Semantics

     typedef traits::tag_of<T>::type tag;
     

    - Return type: Any type. + Return type: Any type.

    - Semantics: Returns the tag type associated - with T. + Semantics: Returns the tag type associated + with T.

    - + Header

     #include <boost/fusion/support/tag_of.hpp>
     

    - + Example

    -typedef traits::tag_of<list<> >::type tag1;
    -typedef traits::tag_of<list<int> >::type tag2;
    -typedef traits::tag_of<vector<> >::type tag3;
    -typedef traits::tag_of<vector<int> >::type tag4;
    +typedef traits::tag_of<list<> >::type tag1;
    +typedef traits::tag_of<list<int> >::type tag2;
    +typedef traits::tag_of<vector<> >::type tag3;
    +typedef traits::tag_of<vector<int> >::type tag4;
     
     BOOST_MPL_ASSERT((boost::is_same<tag1, tag2>));
     BOOST_MPL_ASSERT((boost::is_same<tag3, tag4>));
    diff --git a/doc/html/fusion/tuples.html b/doc/html/fusion/tuples.html
    index ce036073..524c8fe7 100644
    --- a/doc/html/fusion/tuples.html
    +++ b/doc/html/fusion/tuples.html
    @@ -3,7 +3,7 @@
     
     Tuples
     
    -
    +
     
     
     
    @@ -43,12 +43,12 @@
     

    The TR1 technical report describes extensions to the C++ standard library. Many of these extensions will be considered for the next iteration of the C++ - standard. TR1 describes a tuple type, and support for treating std::pair + standard. TR1 describes a tuple type, and support for treating std::pair as a type of tuple.

    Fusion provides full support for the TR1 - Tuple interface, and the extended uses of std::pair described + Tuple interface, and the extended uses of std::pair described in the TR1 document.

    diff --git a/doc/html/fusion/tuples/class_template_tuple.html b/doc/html/fusion/tuples/class_template_tuple.html index 7af80f62..0307c66d 100644 --- a/doc/html/fusion/tuples/class_template_tuple.html +++ b/doc/html/fusion/tuples/class_template_tuple.html @@ -3,7 +3,7 @@ Class template tuple - + @@ -33,11 +33,11 @@ beyond that required by TR1.

    - Currently tuple is basically a synonym for vector, although this may be changed + Currently tuple is basically a synonym for vector, although this may be changed in future releases of fusion.

    - + Synopsis

    @@ -49,7 +49,7 @@
     class tuple;
     

    - + Header

    diff --git a/doc/html/fusion/tuples/class_template_tuple/construction.html b/doc/html/fusion/tuples/class_template_tuple/construction.html
    index d5813ecb..bffa97bf 100644
    --- a/doc/html/fusion/tuples/class_template_tuple/construction.html
    +++ b/doc/html/fusion/tuples/class_template_tuple/construction.html
    @@ -3,7 +3,7 @@
     
     Construction
     
    -
    +
     
     
     
    @@ -27,7 +27,7 @@
     
     
    - + Description

    @@ -38,33 +38,33 @@ in this section.

    - + Specification

    Notation

    -
    T1 - ... TN, - U1 ... - UN
    +
    T1 + ... TN, + U1 ... + UN
    Tuple element types
    -
    P1 - ... PN
    +
    P1 + ... PN
    Parameter types
    -
    Ti, - Ui
    +
    Ti, + Ui
    - The type of the ith element + The type of the ith element of a tuple
    -
    Pi
    +
    Pi
    - The type of the ith parameter + The type of the ith parameter
    @@ -72,48 +72,48 @@ tuple();

    - Requirements: Each Ti + Requirements: Each Ti is default constructable.

    - Semantics: Default initializes each element + Semantics: Default initializes each element of the tuple.

     tuple(P1,P2,...,PN);
     

    - Requirements: Each Pi - is Ti if Ti is a reference type, const Ti& otherwise. + Requirements: Each Pi + is Ti if Ti is a reference type, const Ti& otherwise.

    - Semantics: Copy initializes each element + Semantics: Copy initializes each element with the corresponding parameter.

     tuple(const tuple& t);
     

    - Requirements: Each Ti + Requirements: Each Ti should be copy constructable.

    - Semantics: Copy constructs each element - of *this - with the corresponding element of t. + Semantics: Copy constructs each element + of *this + with the corresponding element of t.

     template<typename U1, typename U2, ..., typename UN>
     tuple(const tuple<U1, U2, ..., UN>& t);
     

    - Requirements: Each Ti - shall be constructible from the corresponding Ui. + Requirements: Each Ti + shall be constructible from the corresponding Ui.

    - Semantics: Constructs each element of - *this - with the corresponding element of t. + Semantics: Constructs each element of + *this + with the corresponding element of t.

    diff --git a/doc/html/fusion/tuples/class_template_tuple/element_access.html b/doc/html/fusion/tuples/class_template_tuple/element_access.html index 183de910..5d18c3b0 100644 --- a/doc/html/fusion/tuples/class_template_tuple/element_access.html +++ b/doc/html/fusion/tuples/class_template_tuple/element_access.html @@ -4,7 +4,7 @@ Element access - +Element access
    - + Description

    The TR1 - Tuple provides the get + Tuple provides the get function to provide access to it's elements by zero based numeric index.

    - + Specification
    @@ -48,38 +48,38 @@
     RJ get(T& t);
     

    - Requires: 0 + Requires: 0 < I - <= N. - The program is ill formed if I - is out of bounds. T is - any fusion sequence type, including tuple. + <= N. + The program is ill formed if I + is out of bounds. T is + any fusion sequence type, including tuple.

    - Return type: RJ - is equivalent to result_of::at_c<I,T>::type. + Return type: RJ + is equivalent to result_of::at_c<I,T>::type.

    - Returns: A reference to the Ith element of T. + Returns: A reference to the Ith element of T.

     template<int I, typename T>
     PJ get(T const& t);
     

    - Requires: 0 + Requires: 0 < I - <= N. - The program is ill formed if I - is out of bounds. T is - any fusion sequence type, including tuple. + <= N. + The program is ill formed if I + is out of bounds. T is + any fusion sequence type, including tuple.

    - Return type: PJ - is equivalent to result_of::at_c<I,T>::type. + Return type: PJ + is equivalent to result_of::at_c<I,T>::type.

    - Returns: A const reference to the Ith element of T. + Returns: A const reference to the Ith element of T.

    diff --git a/doc/html/fusion/tuples/class_template_tuple/relational_operators.html b/doc/html/fusion/tuples/class_template_tuple/relational_operators.html index 7855f775..d76d47df 100644 --- a/doc/html/fusion/tuples/class_template_tuple/relational_operators.html +++ b/doc/html/fusion/tuples/class_template_tuple/relational_operators.html @@ -4,7 +4,7 @@ Relational operators - +Relational operators
    - + Description

    @@ -38,33 +38,33 @@ Tuple provides the standard boolean relational operators.

    - + Specification

    Notation

    -
    T1 - ... TN, - U1 ... - UN
    +
    T1 + ... TN, + U1 ... + UN
    Tuple element types
    -
    P1 - ... PN
    +
    P1 + ... PN
    Parameter types
    -
    Ti, - Ui
    +
    Ti, + Ui
    - The type of the ith element + The type of the ith element of a tuple
    -
    Pi
    +
    Pi
    - The type of the ith parameter + The type of the ith parameter
    @@ -76,23 +76,23 @@ consttuple<U1,U2,...,UN>&rhs);

    - Requirements: For all i, - 1 <= + Requirements: For all i, + 1 <= i < - N, get<i>(lhs) == get<i>(rhs) - is a valid expression returning a type that is convertible to bool. + N, get<i>(lhs) == get<i>(rhs) + is a valid expression returning a type that is convertible to bool.

    - Semantics: Returns true - if and only if get<i>(lhs) == get<i>(rhs) - for all i. For any 2 zero - length tuples e and f, e - == f - returns true. + Semantics: Returns true + if and only if get<i>(lhs) == get<i>(rhs) + for all i. For any 2 zero + length tuples e and f, e + == f + returns true.

     template<typename T1, typename T2, ..., typename TN,
    @@ -102,18 +102,18 @@
         const tuple<U1, U2, ..., UN>& rhs);
     

    - Requirements: For all i, - 1 <= + Requirements: For all i, + 1 <= i < - N, get<i>(lhs) < get<i>(rhs) - is a valid expression returning a type that is convertible to bool. + N, get<i>(lhs) < get<i>(rhs) + is a valid expression returning a type that is convertible to bool.

    - Semantics: Returns the lexicographical - comparison of between lhs - and rhs. + Semantics: Returns the lexicographical + comparison of between lhs + and rhs.

     template<typename T1, typename T2, ..., typename TN,
    @@ -123,16 +123,16 @@
         const tuple<U1, U2, ..., UN>& rhs);
     

    - Requirements: For all i, - 1 <= + Requirements: For all i, + 1 <= i < - N, get<i>(lhs) == get<i>(rhs) - is a valid expression returning a type that is convertible to bool. + N, get<i>(lhs) == get<i>(rhs) + is a valid expression returning a type that is convertible to bool.

    - Semantics: Returns !(lhs == rhs). + Semantics: Returns !(lhs == rhs).

     template<typename T1, typename T2, ..., typename TN,
    @@ -142,16 +142,16 @@
         const tuple<U1, U2, ..., UN>& rhs);
     

    - Requirements: For all i, - 1 <= + Requirements: For all i, + 1 <= i < - N, get<i>(rhs) < get<i>(lhs) - is a valid expression returning a type that is convertible to bool. + N, get<i>(rhs) < get<i>(lhs) + is a valid expression returning a type that is convertible to bool.

    - Semantics: Returns !(rhs < lhs) + Semantics: Returns !(rhs < lhs)

     template<typename T1, typename T2, ..., typename TN,
    @@ -161,17 +161,17 @@
         const tuple<U1, U2, ..., UN>& rhs);
     

    - Requirements: For all i, - 1 <= + Requirements: For all i, + 1 <= i < - N, get<i>(rhs) < get<i>(lhs) - is a valid expression returning a type that is convertible to bool. + N, get<i>(rhs) < get<i>(lhs) + is a valid expression returning a type that is convertible to bool.

    - Semantics: Returns rhs - < lhs. + Semantics: Returns rhs + < lhs.

     template<typename T1, typename T2, ..., typename TN,
    @@ -181,16 +181,16 @@
         const tuple<U1, U2, ..., UN>& rhs);
     

    - Requirements: For all i, - 1 <= + Requirements: For all i, + 1 <= i < - N, get<i>(lhs) < get<i>(rhs) - is a valid expression returning a type that is convertible to bool. + N, get<i>(lhs) < get<i>(rhs) + is a valid expression returning a type that is convertible to bool.

    - Semantics: Returns !(lhs < rhs). + Semantics: Returns !(lhs < rhs).

    diff --git a/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html b/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html index 96a62f2d..088e9955 100644 --- a/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html +++ b/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html @@ -4,7 +4,7 @@ Tuple creation functions - + @@ -30,17 +30,17 @@ creation functions">Tuple creation functions
    - + Description

    - TR1 describes 2 utility functions for creating _tr1tuple_s. make_tuple - builds a tuple out of it's argument list, and tie + TR1 describes 2 utility functions for creating _tr1tuple_s. make_tuple + builds a tuple out of it's argument list, and tie builds a tuple of references to it's arguments. The details of these creation functions are described in this section.

    - + Specification
    @@ -48,22 +48,22 @@
     tuple<V1, V2, ..., VN> make_tuple(const T1& t1, const T2& t2, ..., const TN& tn);
     

    - Where Vi is X& - if the cv-unqualified type Ti - is reference_wrapper<X>, - otherwise Vi is Ti. + Where Vi is X& + if the cv-unqualified type Ti + is reference_wrapper<X>, + otherwise Vi is Ti.

    - Returns: tuple<V1, V2, ..., VN>(t1, t2, ..., tN) + Returns: tuple<V1, V2, ..., VN>(t1, t2, ..., tN)

     template<typename T1, typename T2, ..., typename TN>
     tuple<T1&, T2&, ..., TN&> tie(T1& t1, T2& t2, ..., TN& tn);
     

    - Returns: tuple<T1&, T2&, ..., - TN&>(t1, t2, ..., tN). When argument ti - is ignore, assigning any + Returns: tuple<T1&, T2&, ..., + TN&>(t1, t2, ..., tN). When argument ti + is ignore, assigning any value to the corresponding tuple element has has no effect.

    diff --git a/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html b/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html index 342a61e7..d1317435 100644 --- a/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html +++ b/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html @@ -4,7 +4,7 @@ Tuple helper classes - +Tuple helper classes
    - + Description

    @@ -40,37 +40,37 @@ tuple size, and the element types.

    - + Specification
     tuple_size<T>::value
     

    - Requires: T - is any fusion sequence type, including tuple. + Requires: T + is any fusion sequence type, including tuple.

    - Type: MPL Integral Constant + Type: MPL Integral Constant

    - Value: The number of elements in the sequence. - Equivalent to result_of::size<T>::type. + Value: The number of elements in the sequence. + Equivalent to result_of::size<T>::type.

     tuple_element<I, T>::type
     

    - Requires: T - is any fusion sequence type, including tuple. - 0 <= + Requires: T + is any fusion sequence type, including tuple. + 0 <= I < - N or the program is ill formed. + N or the program is ill formed.

    - Value: The type of the Ith - element of T. Equivalent - to result_of::value_at<I,T>::type. + Value: The type of the Ith + element of T. Equivalent + to result_of::value_at<I,T>::type.

    diff --git a/doc/html/fusion/tuples/pairs.html b/doc/html/fusion/tuples/pairs.html index 2913eb6c..a78ebbf0 100644 --- a/doc/html/fusion/tuples/pairs.html +++ b/doc/html/fusion/tuples/pairs.html @@ -3,7 +3,7 @@ Pairs - +

    - + Description

    The TR1 - Tuple interface is specified to provide uniform access to std::pair + Tuple interface is specified to provide uniform access to std::pair as if it were a 2 element tuple.

    - + Specification

     tuple_size<std::pair<T1, T2> >::value
     

    - Type: An MPL Integral Constant + Type: An MPL Integral Constant

    - Value: Returns 2, the number of elements + Value: Returns 2, the number of elements in a pair.

     tuple_element<0, std::pair<T1, T2> >::type
     

    - Type: T1 + Type: T1

    - Value: Returns the type of the first element + Value: Returns the type of the first element of the pair

     tuple_element<1, std::pair<T1, T2> >::type
     

    - Type: T2 + Type: T2

    - Value: Returns thetype of the second element + Value: Returns thetype of the second element of the pair

    @@ -77,21 +77,21 @@
     const P& get(const std::pair<T1, T2>& pr);
     

    - Type: If I - == 0 - P is T1, - else if I == - 1 P - is T2 else the program is + Type: If I + == 0 + P is T1, + else if I == + 1 P + is T2 else the program is ill-formed.

    - Returns: pr.first - if I == - 0 else pr.second.[*Returns: - pr.first if I - == 0 - else pr.second. + Returns: pr.first + if I == + 0 else pr.second.[*Returns: + pr.first if I + == 0 + else pr.second.

    diff --git a/doc/html/index.html b/doc/html/index.html index fa47d9bb..e85465d1 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -3,7 +3,7 @@ Chapter 1. Fusion 2.0 - + @@ -30,7 +30,7 @@
    -

    +

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    @@ -49,6 +49,8 @@
    is_view
    tag_of
    category_of
    +
    deduce
    +
    deduce_sequence
    pair
    Iterators
    @@ -198,7 +200,7 @@
    - +

    Last revised: January 22, 2007 at 00:36:18 GMT

    Last revised: January 27, 2007 at 10:20:52 GMT


    diff --git a/doc/support.qbk b/doc/support.qbk index 3cc78271..0efd05b2 100644 --- a/doc/support.qbk +++ b/doc/support.qbk @@ -254,6 +254,96 @@ __sequence__ or __iterator__. [endsect] +[section deduce] + +[heading Description] +Metafunction to apply __element_conversion__ to the full argument type. + +It removes references to `const`, references to array types are kept, even +if the array is `const`. Reference wrappers are removed (see +__note_boost_ref__). + +[heading Header] + + #include + +[heading Synopsis] + namespace traits + { + template + struct deduce + { + typedef __unspecified__ type; + }; + } + +[heading Example] + template + struct holder + { + typename traits::deduce::type element; + + holder(T const & a) + : element(a) + { } + }; + + template + holder make_holder(T const & a) + { + return holder(a); + } + +[heading See also] +* __deduce_sequence__ + +[endsect] + +[section deduce_sequence] + +[heading Description] +Applies __element_conversion__ to each element in a __forward_sequence__. +The resulting type is a __random_access_sequence__ that provides a converting +constructor accepting the original type as its argument. + +[heading Header] + + #include + +[heading Synopsis] + namespace traits + { + template + struct deduce_sequence + { + typedef __unspecified__ type; + }; + } + +[heading Example] + template + struct holder + { + typename traits::deduce_sequence::type element; + + holder(Seq const & a) + : element(a) + { } + }; + + template + holder< __vector__ > + make_holder(T0 const & a0, T1 const & a1) + { + typedef __vector__ arg_vec_t; + return holder( arg_vec_t(a0,a1) ); + } + +[heading See also] +* __deduce__ + +[endsect] + [section pair] [heading Description] From ef114d537d48629fd53b5a8217da65d36bb66074 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Sat, 27 Jan 2007 13:05:23 +0000 Subject: [PATCH 077/234] changes TOC settings to make all components reachable, again [SVN r36814] --- doc/Jamfile | 2 +- doc/html/fusion/algorithms/concepts.html | 8 ++++-- doc/html/fusion/algorithms/iteration.html | 4 +++ .../algorithms/iteration/functions.html | 11 ++++++-- .../algorithms/iteration/metafunctions.html | 11 ++++++-- doc/html/fusion/algorithms/query.html | 4 +++ .../fusion/algorithms/query/functions.html | 15 +++++++++-- .../algorithms/query/metafunctions.html | 15 +++++++++-- .../fusion/algorithms/transformation.html | 4 +++ .../algorithms/transformation/functions.html | 27 +++++++++++++++++-- .../transformation/metafunctions.html | 27 +++++++++++++++++-- doc/html/fusion/iterators/concepts.html | 8 ++++++ doc/html/fusion/iterators/functions.html | 8 ++++++ doc/html/fusion/iterators/metafunctions.html | 16 +++++++++-- doc/html/fusion/iterators/operators.html | 8 ++++++ doc/html/fusion/sequences/adapted.html | 7 +++++ doc/html/fusion/sequences/concepts.html | 10 +++++++ doc/html/fusion/sequences/containers.html | 7 +++++ doc/html/fusion/sequences/conversion.html | 4 +++ .../sequences/conversion/functions.html | 12 +++++++-- .../sequences/conversion/metafunctions.html | 12 +++++++-- doc/html/fusion/sequences/generation.html | 4 +++ .../sequences/generation/functions.html | 16 +++++++++-- .../sequences/generation/metafunctions.html | 15 +++++++++-- doc/html/fusion/sequences/intrinsics.html | 4 +++ .../sequences/intrinsics/functions.html | 18 +++++++++++-- .../sequences/intrinsics/metafunctions.html | 21 +++++++++++++-- doc/html/fusion/sequences/operators.html | 4 +++ .../sequences/operators/comparison.html | 13 +++++++++ doc/html/fusion/sequences/operators/i_o.html | 4 +++ doc/html/fusion/sequences/views.html | 9 +++++++ .../fusion/tuples/class_template_tuple.html | 11 ++++++++ doc/html/index.html | 2 +- 33 files changed, 311 insertions(+), 30 deletions(-) diff --git a/doc/Jamfile b/doc/Jamfile index 32d5c370..c47c6ccb 100644 --- a/doc/Jamfile +++ b/doc/Jamfile @@ -12,6 +12,6 @@ boostbook quickbook chunk.first.sections=1 toc.section.depth=3 toc.max.depth=3 - generate.section.toc.level=1 + generate.section.toc.level=4 ; diff --git a/doc/html/fusion/algorithms/concepts.html b/doc/html/fusion/algorithms/concepts.html index 5c7fa706..99daa138 100644 --- a/doc/html/fusion/algorithms/concepts.html +++ b/doc/html/fusion/algorithms/concepts.html @@ -23,8 +23,12 @@
    PrevUpHomeNext
    - + diff --git a/doc/html/fusion/algorithms/iteration.html b/doc/html/fusion/algorithms/iteration.html index 6580a839..ada3a8bf 100644 --- a/doc/html/fusion/algorithms/iteration.html +++ b/doc/html/fusion/algorithms/iteration.html @@ -26,6 +26,10 @@
    +

    The iteration algorithms provide the fundamental algorithms for traversing a sequence repeatedly applying an operation to its elements. diff --git a/doc/html/fusion/algorithms/iteration/functions.html b/doc/html/fusion/algorithms/iteration/functions.html index db876984..2bd75e70 100644 --- a/doc/html/fusion/algorithms/iteration/functions.html +++ b/doc/html/fusion/algorithms/iteration/functions.html @@ -22,8 +22,15 @@

    PrevUpHomeNext
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    diff --git a/doc/html/fusion/algorithms/iteration/metafunctions.html b/doc/html/fusion/algorithms/iteration/metafunctions.html index 9eef8ac5..6330fe0d 100644 --- a/doc/html/fusion/algorithms/iteration/metafunctions.html +++ b/doc/html/fusion/algorithms/iteration/metafunctions.html @@ -22,8 +22,15 @@
    PrevUpHomeNext
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    diff --git a/doc/html/fusion/algorithms/query.html b/doc/html/fusion/algorithms/query.html index 50b675e5..1f0f9e0a 100644 --- a/doc/html/fusion/algorithms/query.html +++ b/doc/html/fusion/algorithms/query.html @@ -25,6 +25,10 @@
    +

    The query algorithms provide support for searching and analyzing sequences.

    diff --git a/doc/html/fusion/algorithms/query/functions.html b/doc/html/fusion/algorithms/query/functions.html index d078caff..51a98f99 100644 --- a/doc/html/fusion/algorithms/query/functions.html +++ b/doc/html/fusion/algorithms/query/functions.html @@ -22,8 +22,19 @@
    PrevUpHomeNext
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    diff --git a/doc/html/fusion/algorithms/query/metafunctions.html b/doc/html/fusion/algorithms/query/metafunctions.html index d803200f..7f643624 100644 --- a/doc/html/fusion/algorithms/query/metafunctions.html +++ b/doc/html/fusion/algorithms/query/metafunctions.html @@ -22,8 +22,19 @@
    PrevUpHomeNext
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    diff --git a/doc/html/fusion/algorithms/transformation.html b/doc/html/fusion/algorithms/transformation.html index 4b0a2eec..c9f2ee94 100644 --- a/doc/html/fusion/algorithms/transformation.html +++ b/doc/html/fusion/algorithms/transformation.html @@ -25,6 +25,10 @@
    +

    The transformation algorithms create new sequences out of existing sequences by performing some sort of transformation. In reality the new sequences are diff --git a/doc/html/fusion/algorithms/transformation/functions.html b/doc/html/fusion/algorithms/transformation/functions.html index 5b87440b..3143ea86 100644 --- a/doc/html/fusion/algorithms/transformation/functions.html +++ b/doc/html/fusion/algorithms/transformation/functions.html @@ -22,8 +22,31 @@

    PrevUpHomeNext
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions.html b/doc/html/fusion/algorithms/transformation/metafunctions.html index 8394ae79..adc5b67d 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions.html @@ -22,8 +22,31 @@
    PrevUpHomeNext
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    diff --git a/doc/html/fusion/iterators/concepts.html b/doc/html/fusion/iterators/concepts.html index cab63e13..ccc0b159 100644 --- a/doc/html/fusion/iterators/concepts.html +++ b/doc/html/fusion/iterators/concepts.html @@ -26,6 +26,14 @@
    +

    Fusion iterators are divided into different traversal categories. Forward diff --git a/doc/html/fusion/iterators/functions.html b/doc/html/fusion/iterators/functions.html index baf7254f..1a4582f6 100644 --- a/doc/html/fusion/iterators/functions.html +++ b/doc/html/fusion/iterators/functions.html @@ -26,6 +26,14 @@

    +

    Fusion provides functions for manipulating iterators, analogous to the similar functions from the MPL diff --git a/doc/html/fusion/iterators/metafunctions.html b/doc/html/fusion/iterators/metafunctions.html index 8e05863c..2c324a67 100644 --- a/doc/html/fusion/iterators/metafunctions.html +++ b/doc/html/fusion/iterators/metafunctions.html @@ -23,8 +23,20 @@

    PrevUpHomeNext
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    diff --git a/doc/html/fusion/iterators/operators.html b/doc/html/fusion/iterators/operators.html index 625fcc0c..6e6bc780 100644 --- a/doc/html/fusion/iterators/operators.html +++ b/doc/html/fusion/iterators/operators.html @@ -26,6 +26,14 @@
    +

    Overloaded operators are provided to provide a more natural syntax for dereferencing iterators, and comparing them for equality. diff --git a/doc/html/fusion/sequences/adapted.html b/doc/html/fusion/sequences/adapted.html index c13a9200..7e4011e0 100644 --- a/doc/html/fusion/sequences/adapted.html +++ b/doc/html/fusion/sequences/adapted.html @@ -25,6 +25,13 @@

    +

    Fusion provides a couple of adapters for other sequences such as std::pair, MPL sequences, diff --git a/doc/html/fusion/sequences/concepts.html b/doc/html/fusion/sequences/concepts.html index f4706530..61a1a584 100644 --- a/doc/html/fusion/sequences/concepts.html +++ b/doc/html/fusion/sequences/concepts.html @@ -26,6 +26,16 @@

    +

    Fusion Sequences are organized into a hierarchy of concepts.

    diff --git a/doc/html/fusion/sequences/containers.html b/doc/html/fusion/sequences/containers.html index 1903e964..430a1136 100644 --- a/doc/html/fusion/sequences/containers.html +++ b/doc/html/fusion/sequences/containers.html @@ -26,6 +26,13 @@
    +

    Fusion provides a few predefined sequences out of the box. These containers actually hold heterogenously typed data; unlike Views. diff --git a/doc/html/fusion/sequences/conversion.html b/doc/html/fusion/sequences/conversion.html index ad693af2..61088a8d 100644 --- a/doc/html/fusion/sequences/conversion.html +++ b/doc/html/fusion/sequences/conversion.html @@ -25,6 +25,10 @@

    +

    All fusion sequences can be converted to one of the Containers types using one of these conversion functions. diff --git a/doc/html/fusion/sequences/conversion/functions.html b/doc/html/fusion/sequences/conversion/functions.html index 14fc2751..90dd0560 100644 --- a/doc/html/fusion/sequences/conversion/functions.html +++ b/doc/html/fusion/sequences/conversion/functions.html @@ -22,8 +22,16 @@

    PrevUpHomeNext
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    diff --git a/doc/html/fusion/sequences/conversion/metafunctions.html b/doc/html/fusion/sequences/conversion/metafunctions.html index 8a243b2b..07397f1f 100644 --- a/doc/html/fusion/sequences/conversion/metafunctions.html +++ b/doc/html/fusion/sequences/conversion/metafunctions.html @@ -22,8 +22,16 @@
    PrevUpHomeNext
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    diff --git a/doc/html/fusion/sequences/generation.html b/doc/html/fusion/sequences/generation.html index 571cc872..0fe01339 100644 --- a/doc/html/fusion/sequences/generation.html +++ b/doc/html/fusion/sequences/generation.html @@ -25,6 +25,10 @@
    +

    These are the functions that you can use to generate various forms of Containers from elemental values.

    diff --git a/doc/html/fusion/sequences/generation/functions.html b/doc/html/fusion/sequences/generation/functions.html index e73ed298..fe7a10e8 100644 --- a/doc/html/fusion/sequences/generation/functions.html +++ b/doc/html/fusion/sequences/generation/functions.html @@ -22,8 +22,20 @@
    PrevUpHomeNext
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    diff --git a/doc/html/fusion/sequences/generation/metafunctions.html b/doc/html/fusion/sequences/generation/metafunctions.html index f8d07677..c5cc4937 100644 --- a/doc/html/fusion/sequences/generation/metafunctions.html +++ b/doc/html/fusion/sequences/generation/metafunctions.html @@ -22,8 +22,19 @@
    PrevUpHomeNext
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    diff --git a/doc/html/fusion/sequences/intrinsics.html b/doc/html/fusion/sequences/intrinsics.html index 786e6747..d9e91e0f 100644 --- a/doc/html/fusion/sequences/intrinsics.html +++ b/doc/html/fusion/sequences/intrinsics.html @@ -25,6 +25,10 @@
    +

    Intrinsics form the essential interface of Fusion _sequence_s. STL diff --git a/doc/html/fusion/sequences/intrinsics/functions.html b/doc/html/fusion/sequences/intrinsics/functions.html index 63da28f7..640d4768 100644 --- a/doc/html/fusion/sequences/intrinsics/functions.html +++ b/doc/html/fusion/sequences/intrinsics/functions.html @@ -22,8 +22,22 @@

    PrevUpHomeNext
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions.html b/doc/html/fusion/sequences/intrinsics/metafunctions.html index 348a1a5d..f7b21dc8 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions.html @@ -22,8 +22,25 @@
    PrevUpHomeNext
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    diff --git a/doc/html/fusion/sequences/operators.html b/doc/html/fusion/sequences/operators.html index 65fec471..db2d8287 100644 --- a/doc/html/fusion/sequences/operators.html +++ b/doc/html/fusion/sequences/operators.html @@ -25,6 +25,10 @@
    +

    These operators, like the Algorithms, work generically on all Fusion sequences. All conforming Fusion sequences diff --git a/doc/html/fusion/sequences/operators/comparison.html b/doc/html/fusion/sequences/operators/comparison.html index 2f7a05d4..bec709dc 100644 --- a/doc/html/fusion/sequences/operators/comparison.html +++ b/doc/html/fusion/sequences/operators/comparison.html @@ -25,6 +25,19 @@

    +

    The Comparison operators: ==, !=, <, diff --git a/doc/html/fusion/sequences/operators/i_o.html b/doc/html/fusion/sequences/operators/i_o.html index 56a002b4..60e4c2d3 100644 --- a/doc/html/fusion/sequences/operators/i_o.html +++ b/doc/html/fusion/sequences/operators/i_o.html @@ -25,6 +25,10 @@

    +
    +
    in
    +
    out
    +

    The I/O operators: << and >> work generically diff --git a/doc/html/fusion/sequences/views.html b/doc/html/fusion/sequences/views.html index 86d6506f..ccbbf472 100644 --- a/doc/html/fusion/sequences/views.html +++ b/doc/html/fusion/sequences/views.html @@ -25,6 +25,15 @@

    +

    Views are sequences that do not actually contain data, but instead impart an alternative presentation over the data from one or more underlying sequences. diff --git a/doc/html/fusion/tuples/class_template_tuple.html b/doc/html/fusion/tuples/class_template_tuple.html index 0307c66d..13b7e1f2 100644 --- a/doc/html/fusion/tuples/class_template_tuple.html +++ b/doc/html/fusion/tuples/class_template_tuple.html @@ -25,6 +25,17 @@

    - +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden

    Last revised: January 27, 2007 at 10:20:52 GMT

    Last revised: January 27, 2007 at 12:44:16 GMT


    From bd6f62ea3cd1dc569b58aea9a09c3926476d8607 Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Sun, 28 Jan 2007 10:17:56 +0000 Subject: [PATCH 078/234] fixing iterator comparison for transform view [SVN r36822] --- .../transform_view/detail/equal_to_impl.hpp | 33 +++++++++++++++++++ .../transform_view_iterator.hpp | 1 + 2 files changed, 34 insertions(+) create mode 100644 include/boost/fusion/sequence/view/transform_view/detail/equal_to_impl.hpp diff --git a/include/boost/fusion/sequence/view/transform_view/detail/equal_to_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/equal_to_impl.hpp new file mode 100644 index 00000000..ed4f7eb7 --- /dev/null +++ b/include/boost/fusion/sequence/view/transform_view/detail/equal_to_impl.hpp @@ -0,0 +1,33 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_TRANSFORM_VIEW_ITERATOR_20070127_0957) +#define BOOST_FUSION_TRANSFORM_VIEW_ITERATOR_20070127_0957 + +#include + +namespace boost { namespace fusion { + + struct transform_view_iterator_tag; + + namespace extension + { + template + struct equal_to_impl; + + template<> + struct equal_to_impl + { + template + struct apply + : result_of::equal_to + {}; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/view/transform_view/transform_view_iterator.hpp b/include/boost/fusion/sequence/view/transform_view/transform_view_iterator.hpp index e76b05dc..f313c36a 100644 --- a/include/boost/fusion/sequence/view/transform_view/transform_view_iterator.hpp +++ b/include/boost/fusion/sequence/view/transform_view/transform_view_iterator.hpp @@ -17,6 +17,7 @@ #include #include #include +#include namespace boost { namespace fusion { From a0a0613e36b86188c14ca85ce99c8ec54149ddf1 Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Sun, 28 Jan 2007 20:52:15 +0000 Subject: [PATCH 079/234] fixing binary transform equal_to [SVN r36823] --- .../view/transform_view/detail/equal_to_impl.hpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/include/boost/fusion/sequence/view/transform_view/detail/equal_to_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/equal_to_impl.hpp index ed4f7eb7..8daa68cc 100644 --- a/include/boost/fusion/sequence/view/transform_view/detail/equal_to_impl.hpp +++ b/include/boost/fusion/sequence/view/transform_view/detail/equal_to_impl.hpp @@ -13,6 +13,7 @@ namespace boost { namespace fusion { struct transform_view_iterator_tag; + struct transform_view_iterator2_tag; namespace extension { @@ -27,6 +28,15 @@ namespace boost { namespace fusion { : result_of::equal_to {}; }; + + template<> + struct equal_to_impl + { + template + struct apply + : result_of::equal_to + {}; + }; } }} From 693200182fd5cbf778bf903a2a44b3ef05525264 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Wed, 7 Feb 2007 22:59:25 +0000 Subject: [PATCH 080/234] fixes [SVN r36908] --- doc/algorithms.qbk | 19 +- doc/html/fusion/acknowledgements.html | 2 +- doc/html/fusion/algorithms.html | 30 ++-- doc/html/fusion/algorithms/concepts.html | 2 +- doc/html/fusion/algorithms/concepts/poly.html | 36 ++-- doc/html/fusion/algorithms/iteration.html | 4 +- .../algorithms/iteration/functions.html | 2 +- .../iteration/functions/accumulate.html | 48 ++--- .../algorithms/iteration/functions/fold.html | 42 ++--- .../iteration/functions/for_each.html | 42 ++--- .../algorithms/iteration/metafunctions.html | 2 +- .../iteration/metafunctions/accumulate.html | 40 ++--- .../iteration/metafunctions/fold.html | 40 ++--- .../iteration/metafunctions/for_each.html | 36 ++-- doc/html/fusion/algorithms/query.html | 4 +- .../fusion/algorithms/query/functions.html | 2 +- .../algorithms/query/functions/all.html | 56 +++--- .../algorithms/query/functions/any.html | 56 +++--- .../algorithms/query/functions/count.html | 46 ++--- .../algorithms/query/functions/count_if.html | 44 ++--- .../algorithms/query/functions/find.html | 50 +++--- .../algorithms/query/functions/find_if.html | 52 +++--- .../algorithms/query/functions/none.html | 56 +++--- .../algorithms/query/metafunctions.html | 2 +- .../algorithms/query/metafunctions/all.html | 34 ++-- .../algorithms/query/metafunctions/any.html | 34 ++-- .../algorithms/query/metafunctions/count.html | 30 ++-- .../query/metafunctions/count_if.html | 30 ++-- .../algorithms/query/metafunctions/find.html | 34 ++-- .../query/metafunctions/find_if.html | 36 ++-- .../algorithms/query/metafunctions/none.html | 34 ++-- .../fusion/algorithms/transformation.html | 6 +- .../algorithms/transformation/functions.html | 2 +- .../transformation/functions/clear.html | 30 ++-- .../transformation/functions/erase.html | 58 +++--- .../transformation/functions/erase_key.html | 34 ++-- .../transformation/functions/filter.html | 38 ++-- .../transformation/functions/filter_if.html | 42 ++--- .../transformation/functions/insert.html | 38 ++-- .../functions/insert_range.html | 40 ++--- .../transformation/functions/join.html | 38 ++-- .../transformation/functions/pop_back.html | 32 ++-- .../transformation/functions/pop_front.html | 32 ++-- .../transformation/functions/push_back.html | 36 ++-- .../transformation/functions/push_front.html | 36 ++-- .../transformation/functions/remove.html | 38 ++-- .../transformation/functions/remove_if.html | 40 ++--- .../transformation/functions/replace.html | 48 ++--- .../transformation/functions/replace_if.html | 48 ++--- .../transformation/functions/reverse.html | 30 ++-- .../transformation/functions/transform.html | 72 ++++---- .../transformation/functions/zip.html | 46 ++--- .../transformation/metafunctions.html | 2 +- .../transformation/metafunctions/clear.html | 24 +-- .../transformation/metafunctions/erase.html | 40 ++--- .../metafunctions/erase_key.html | 30 ++-- .../transformation/metafunctions/filter.html | 34 ++-- .../metafunctions/filter_if.html | 32 ++-- .../transformation/metafunctions/insert.html | 34 ++-- .../metafunctions/insert_range.html | 34 ++-- .../transformation/metafunctions/join.html | 22 +-- .../metafunctions/pop_back.html | 26 +-- .../metafunctions/pop_front.html | 26 +-- .../metafunctions/push_back.html | 30 ++-- .../metafunctions/push_front.html | 30 ++-- .../transformation/metafunctions/remove.html | 34 ++-- .../metafunctions/remove_if.html | 34 ++-- .../transformation/metafunctions/replace.html | 28 +-- .../metafunctions/replace_if.html | 30 ++-- .../transformation/metafunctions/reverse.html | 26 +-- .../metafunctions/transform.html | 28 +-- .../transformation/metafunctions/zip.html | 34 ++-- doc/html/fusion/change_log.html | 6 +- doc/html/fusion/extension.html | 168 +++++++++--------- doc/html/fusion/introduction.html | 34 ++-- doc/html/fusion/iterators.html | 4 +- doc/html/fusion/iterators/concepts.html | 2 +- .../concepts/bidirectional_iterator.html | 58 +++--- .../iterators/concepts/forward_iterator.html | 144 +++++++-------- .../concepts/random_access_iterator.html | 50 +++--- doc/html/fusion/iterators/functions.html | 2 +- .../fusion/iterators/functions/advance.html | 38 ++-- .../fusion/iterators/functions/advance_c.html | 38 ++-- .../fusion/iterators/functions/deref.html | 34 ++-- .../fusion/iterators/functions/distance.html | 30 ++-- doc/html/fusion/iterators/functions/next.html | 34 ++-- .../fusion/iterators/functions/prior.html | 34 ++-- doc/html/fusion/iterators/metafunctions.html | 2 +- .../iterators/metafunctions/advance.html | 42 ++--- .../iterators/metafunctions/advance_c.html | 44 ++--- .../fusion/iterators/metafunctions/deref.html | 38 ++-- .../iterators/metafunctions/distance.html | 36 ++-- .../iterators/metafunctions/equal_to.html | 40 ++--- .../fusion/iterators/metafunctions/next.html | 32 ++-- .../fusion/iterators/metafunctions/prior.html | 36 ++-- .../iterators/metafunctions/value_of.html | 38 ++-- doc/html/fusion/iterators/operators.html | 2 +- .../operators/operator_equality.html | 22 +-- .../operators/operator_inequality.html | 22 +-- .../operators/operator_unary_star.html | 32 ++-- doc/html/fusion/notes.html | 104 +++++------ doc/html/fusion/organization.html | 22 +-- doc/html/fusion/preface.html | 14 +- doc/html/fusion/quick_start.html | 110 ++++++------ doc/html/fusion/references.html | 2 +- doc/html/fusion/sequences.html | 4 +- doc/html/fusion/sequences/adapted.html | 12 +- .../sequences/adapted/boost__array.html | 24 +-- .../sequences/adapted/boost__tuple.html | 14 +- .../sequences/adapted/boost__variant.html | 14 +- .../sequences/adapted/mpl_sequence.html | 18 +- .../fusion/sequences/adapted/std__pair.html | 24 +-- doc/html/fusion/sequences/concepts.html | 6 +- .../concepts/associative_sequence.html | 72 ++++---- .../concepts/bidirectional_sequence.html | 58 +++--- .../sequences/concepts/forward_sequence.html | 116 ++++++------ .../concepts/random_access_sequence.html | 70 ++++---- doc/html/fusion/sequences/containers.html | 4 +- .../fusion/sequences/containers/cons.html | 100 +++++------ .../fusion/sequences/containers/list.html | 84 ++++----- doc/html/fusion/sequences/containers/map.html | 78 ++++---- doc/html/fusion/sequences/containers/set.html | 66 +++---- .../fusion/sequences/containers/vector.html | 74 ++++---- doc/html/fusion/sequences/conversion.html | 4 +- .../sequences/conversion/functions.html | 2 +- .../conversion/functions/as_list.html | 26 +-- .../conversion/functions/as_map.html | 34 ++-- .../conversion/functions/as_set.html | 28 +-- .../conversion/functions/as_vector.html | 26 +-- .../sequences/conversion/metafunctions.html | 2 +- .../conversion/metafunctions/as_list.html | 28 +-- .../conversion/metafunctions/as_map.html | 36 ++-- .../conversion/metafunctions/as_set.html | 30 ++-- .../conversion/metafunctions/as_vector.html | 28 +-- doc/html/fusion/sequences/generation.html | 4 +- .../sequences/generation/functions.html | 2 +- .../generation/functions/list_tie.html | 42 ++--- .../generation/functions/make_cons.html | 40 ++--- .../generation/functions/make_list.html | 46 ++--- .../generation/functions/make_map.html | 72 ++++---- .../generation/functions/make_set.html | 56 +++--- .../generation/functions/make_vector.html | 46 ++--- .../sequences/generation/functions/tiers.html | 28 +-- .../generation/functions/vector_tie.html | 42 ++--- .../sequences/generation/metafunctions.html | 2 +- .../generation/metafunctions/list_tie.html | 36 ++-- .../generation/metafunctions/make_cons.html | 30 ++-- .../generation/metafunctions/make_list.html | 36 ++-- .../generation/metafunctions/make_map.html | 56 +++--- .../generation/metafunctions/make_set.html | 46 ++--- .../generation/metafunctions/make_vector.html | 36 ++-- .../generation/metafunctions/vector_tie.html | 36 ++-- doc/html/fusion/sequences/intrinsics.html | 8 +- .../sequences/intrinsics/functions.html | 2 +- .../sequences/intrinsics/functions/at.html | 42 ++--- .../sequences/intrinsics/functions/at_c.html | 42 ++--- .../intrinsics/functions/at_key.html | 38 ++-- .../sequences/intrinsics/functions/back.html | 36 ++-- .../sequences/intrinsics/functions/begin.html | 34 ++-- .../sequences/intrinsics/functions/empty.html | 32 ++-- .../sequences/intrinsics/functions/end.html | 34 ++-- .../sequences/intrinsics/functions/front.html | 36 ++-- .../intrinsics/functions/has_key.html | 34 ++-- .../sequences/intrinsics/functions/size.html | 26 +-- .../sequences/intrinsics/metafunctions.html | 2 +- .../intrinsics/metafunctions/at.html | 42 ++--- .../intrinsics/metafunctions/at_c.html | 42 ++--- .../intrinsics/metafunctions/at_key.html | 46 ++--- .../intrinsics/metafunctions/back.html | 28 +-- .../intrinsics/metafunctions/begin.html | 32 ++-- .../intrinsics/metafunctions/empty.html | 34 ++-- .../intrinsics/metafunctions/end.html | 32 ++-- .../intrinsics/metafunctions/front.html | 30 ++-- .../intrinsics/metafunctions/has_key.html | 36 ++-- .../intrinsics/metafunctions/size.html | 28 +-- .../intrinsics/metafunctions/value_at.html | 28 +-- .../intrinsics/metafunctions/value_at_c.html | 28 +-- .../metafunctions/value_at_key.html | 30 ++-- doc/html/fusion/sequences/operators.html | 2 +- .../sequences/operators/comparison.html | 12 +- .../sequences/operators/comparison/equal.html | 44 ++--- .../operators/comparison/greater_than.html | 36 ++-- .../comparison/greater_than_equal.html | 36 ++-- .../operators/comparison/less_than.html | 40 ++--- .../operators/comparison/less_than_equal.html | 36 ++-- .../operators/comparison/not_equal.html | 34 ++-- doc/html/fusion/sequences/operators/i_o.html | 44 ++--- .../fusion/sequences/operators/i_o/in.html | 24 +-- .../fusion/sequences/operators/i_o/out.html | 24 +-- doc/html/fusion/sequences/views.html | 4 +- .../fusion/sequences/views/filter_view.html | 66 +++---- .../sequences/views/iterator_range.html | 78 ++++---- .../fusion/sequences/views/joint_view.html | 74 ++++---- .../fusion/sequences/views/reverse_view.html | 58 +++--- .../fusion/sequences/views/single_view.html | 56 +++--- .../sequences/views/transform_view.html | 104 +++++------ doc/html/fusion/sequences/views/zip_view.html | 60 +++---- doc/html/fusion/support.html | 2 +- doc/html/fusion/support/category_of.html | 24 +-- doc/html/fusion/support/deduce.html | 20 +-- doc/html/fusion/support/deduce_sequence.html | 18 +- doc/html/fusion/support/is_sequence.html | 38 ++-- doc/html/fusion/support/is_view.html | 36 ++-- doc/html/fusion/support/pair.html | 92 +++++----- doc/html/fusion/support/tag_of.html | 30 ++-- doc/html/fusion/tuples.html | 6 +- .../fusion/tuples/class_template_tuple.html | 8 +- .../class_template_tuple/construction.html | 56 +++--- .../class_template_tuple/element_access.html | 40 ++--- .../relational_operators.html | 132 +++++++------- .../tuple_creation_functions.html | 26 +-- .../tuple_helper_classes.html | 30 ++-- doc/html/fusion/tuples/pairs.html | 44 ++--- doc/html/index.html | 6 +- 214 files changed, 3795 insertions(+), 3806 deletions(-) diff --git a/doc/algorithms.qbk b/doc/algorithms.qbk index 1e2f4ef8..08e7d023 100644 --- a/doc/algorithms.qbk +++ b/doc/algorithms.qbk @@ -54,9 +54,6 @@ types. [[`t1 ...tN`][Objects with types `T1 ...TN`]] ] -[heading Refinement of] -__mpl_metafunction_class__ - [heading Expression requirements] [table @@ -515,14 +512,14 @@ Finds the first element of a given type within a sequence. [heading Synopsis] template< - typename Sequence, - typename T + typename T, + typename Sequence > __unspecified__ find(Sequence const& seq); template< - typename Sequence, - typename T + typename T, + typename Sequence > __unspecified__ find(Sequence& seq); @@ -561,14 +558,14 @@ Finds the first element within a sequence with a type for which a given __mpl_la [heading Synopsis] template< - typename Sequence, - typename F + typename F, + typename Sequence > __unspecified__ find_if(Sequence const& seq); template< - typename Sequence, - typename F + typename F, + typename Sequence > __unspecified__ find_if(Sequence& seq); diff --git a/doc/html/fusion/acknowledgements.html b/doc/html/fusion/acknowledgements.html index 16c64ee6..04b602c0 100644 --- a/doc/html/fusion/acknowledgements.html +++ b/doc/html/fusion/acknowledgements.html @@ -3,7 +3,7 @@ Acknowledgements - + diff --git a/doc/html/fusion/algorithms.html b/doc/html/fusion/algorithms.html index 4eca50a1..830b9c3d 100644 --- a/doc/html/fusion/algorithms.html +++ b/doc/html/fusion/algorithms.html @@ -3,7 +3,7 @@ Algorithms - +

    - + Lazy Evaluation

    @@ -61,39 +61,39 @@ fusion algorithms are functional in nature such that algorithms are non mutating (no side effects). However, due to the high cost of returning full sequences such as vectors and lists, Views are returned from Fusion - algorithms instead. For example, the transform algorithm does not actually - return a transformed version of the original sequence. transform returns a transform_view. This view holds a + algorithms instead. For example, the transform algorithm does not actually + return a transformed version of the original sequence. transform returns a transform_view. This view holds a reference to the original sequence plus the transform function. Iteration over - the transform_view + the transform_view will apply the transform function over the sequence elements on demand. This lazy evaluation scheme allows us to chain as many algorithms as we want without incurring a high runtime penalty.

    - + Sequence Extension

    The lazy evaluation scheme where Algorithms return Views also allows operations - such as push_back to be totally generic. In - Fusion, push_back is actually a generic algorithm - that works on all sequences. Given an input sequence s - and a value x, Fusion's push_back algorithm simply returns - a joint_view: - a view that holds a reference to the original sequence s - and the value x. Functions + such as push_back to be totally generic. In + Fusion, push_back is actually a generic algorithm + that works on all sequences. Given an input sequence s + and a value x, Fusion's push_back 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 + 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 functions to convert back to the original sequence type.

    - + Header

    diff --git a/doc/html/fusion/algorithms/concepts.html b/doc/html/fusion/algorithms/concepts.html
    index 99daa138..492017fe 100644
    --- a/doc/html/fusion/algorithms/concepts.html
    +++ b/doc/html/fusion/algorithms/concepts.html
    @@ -3,7 +3,7 @@
     
     Concepts
     
    -
    +
     
     
     
    diff --git a/doc/html/fusion/algorithms/concepts/poly.html b/doc/html/fusion/algorithms/concepts/poly.html
    index ccd7313a..cdfddca7 100644
    --- a/doc/html/fusion/algorithms/concepts/poly.html
    +++ b/doc/html/fusion/algorithms/concepts/poly.html
    @@ -4,7 +4,7 @@
      Polymorphic Function
             Object
     
    -
    +
     
     
     
    @@ -29,47 +29,39 @@
             Object"> Polymorphic Function
             Object
     
    - + Description

    - A type of function object with a nested metafunction result. - result returns the result + A type of function object with a nested metafunction result. + result returns the result type of calling the function object, given the argument types.

    Notation

    -
    F
    +
    F
    A Polymorphic Function Object type
    -
    f
    +
    f
    A Polymorphic Function Object
    -
    T1 - ...TN
    +
    T1 + ...TN
    Arbitrary types
    -
    t1 - ...tN
    +
    t1 + ...tN
    - Objects with types T1 ...TN + Objects with types T1 ...TN
    -
    - - Refinement - of -
    -

    - MPL Metafunction Class -

    - + Expression requirements
    @@ -86,8 +78,8 @@ Complexity -f(t1, ...tN) -F::result<T1, ...TN>::type +f(t1, ...tN) +F::result<T1, ...TN>::type Unspecified diff --git a/doc/html/fusion/algorithms/iteration.html b/doc/html/fusion/algorithms/iteration.html index ada3a8bf..21d00c0c 100644 --- a/doc/html/fusion/algorithms/iteration.html +++ b/doc/html/fusion/algorithms/iteration.html @@ -3,7 +3,7 @@ Iteration - +

    - + Header

    diff --git a/doc/html/fusion/algorithms/iteration/functions.html b/doc/html/fusion/algorithms/iteration/functions.html
    index 2bd75e70..5c3db0bd 100644
    --- a/doc/html/fusion/algorithms/iteration/functions.html
    +++ b/doc/html/fusion/algorithms/iteration/functions.html
    @@ -3,7 +3,7 @@
     
     Functions
     
    -
    +
     
     
     
    diff --git a/doc/html/fusion/algorithms/iteration/functions/accumulate.html b/doc/html/fusion/algorithms/iteration/functions/accumulate.html
    index ac01f7bf..fa695d10 100644
    --- a/doc/html/fusion/algorithms/iteration/functions/accumulate.html
    +++ b/doc/html/fusion/algorithms/iteration/functions/accumulate.html
    @@ -3,7 +3,7 @@
     
     accumulate
     
    -
    +
     
     
     
    @@ -26,18 +26,18 @@
     
     
    - + Description

    Repeatedly applies binary Polymorphic - Function Object f - to each element of a sequence and the previous state. accumulate is equivalent to - fold. + Function Object f + to each element of a sequence and the previous state. accumulate is equivalent to + fold.

    - + Synopsis
    @@ -46,11 +46,11 @@
         typename State,
         typename F
         >
    -typename result_of::accumulate<Sequence, State, F>::type accumulate(
    +typename result_of::accumulate<Sequence, State, F>::type accumulate(
         Sequence& seq, State const& initial_state, F const& f);
     
    -

    Table 1.33. Parameters

    +

    Table 1.33. Parameters

    @@ -64,24 +64,24 @@ - + - + - +
    seqseq A model of Forward - Sequence, f(eN ....f(e2,f(e1,initial_state))) must be a valid expression for - each element e1 to - eN in seq + Sequence, f(eN ....f(e2,f(e1,initial_state))) must be a valid expression for + each element e1 to + eN in seq Operation's argument
    initial_stateinitial_state Any type Initial state
    ff A model of binary Polymorphic @@ -93,7 +93,7 @@
    - + Expression Semantics
    @@ -101,28 +101,28 @@ accumulate(seq, initial_state, f);

    - Return type: Any type + Return type: Any type

    - Semantics: Equivalent to f(eN ....f(e2,f(e1,initial_state))) - where e1 ...eN are the elements of seq. + Semantics: Equivalent to f(eN ....f(e2,f(e1,initial_state))) + where e1 ...eN are the elements of seq.

    - + Complexity

    - Linear, exactly result_of::size<Sequence>::value applications of f. + Linear, exactly result_of::size<Sequence>::value applications of f.

    - + Header
     #include <boost/fusion/algorithm/iteration/accumulate.hpp>
     
    - + Example
    @@ -141,8 +141,8 @@
         }
     };
     ...
    -const vector<int,int> vec(1,2);
    -assert(accumulate(vec,std::string(""), make_string()) == "12");
    +const vector<int,int> vec(1,2);
    +assert(accumulate(vec,std::string(""), make_string()) == "12");
     
    diff --git a/doc/html/fusion/algorithms/iteration/functions/fold.html b/doc/html/fusion/algorithms/iteration/functions/fold.html index b30a6802..4f5a2792 100644 --- a/doc/html/fusion/algorithms/iteration/functions/fold.html +++ b/doc/html/fusion/algorithms/iteration/functions/fold.html @@ -3,7 +3,7 @@ fold - + @@ -26,17 +26,17 @@
    - + Description

    Repeatedly applies binary Polymorphic - Function Object f + Function Object f to each element of a sequence and the previous state.

    - + Synopsis
    @@ -45,11 +45,11 @@
         typename State,
         typename F
         >
    -typename result_of::fold<Sequence, State, F>::type fold(
    +typename result_of::fold<Sequence, State, F>::type fold(
         Sequence& seq, State const& initial_state, F const& f);
     
    -

    Table 1.32. Parameters

    +

    Table 1.32. Parameters

    @@ -63,23 +63,23 @@ - + - + - +
    seqseq A model of Forward - Sequence,f(e) must be a valid expression for each - element e in seq + Sequence,f(e) must be a valid expression for each + element e in seq Operation's argument
    initial_stateinitial_state Any type Initial state
    ff A model of binary Polymorphic @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -99,28 +99,28 @@ fold(seq, initial_state, f);

    - Return type: Any type + Return type: Any type

    - Semantics: Equivalent to f(eN ....f(e2,f(e1,initial_state))) - where e1 ...eN are the elements of seq. + Semantics: Equivalent to f(eN ....f(e2,f(e1,initial_state))) + where e1 ...eN are the elements of seq.

    - + Complexity

    - Linear, exactly result_of::size<Sequence>::value applications of f. + Linear, exactly result_of::size<Sequence>::value applications of f.

    - + Header
     #include <boost/fusion/algorithm/iteration/fold.hpp>
     
    - + Example
    @@ -139,8 +139,8 @@
         }
     };
     ...
    -const vector<int,int> vec(1,2);
    -assert(fold(vec,std::string(""), make_string()) == "12");
    +const vector<int,int> vec(1,2);
    +assert(fold(vec,std::string(""), make_string()) == "12");
     
    diff --git a/doc/html/fusion/algorithms/iteration/functions/for_each.html b/doc/html/fusion/algorithms/iteration/functions/for_each.html index f7a70ce0..0c8769ff 100644 --- a/doc/html/fusion/algorithms/iteration/functions/for_each.html +++ b/doc/html/fusion/algorithms/iteration/functions/for_each.html @@ -3,7 +3,7 @@ for_each - + @@ -26,14 +26,14 @@
    - + Description

    Applies a unary function object to each element of a sequence.

    - + Synopsis
    @@ -41,11 +41,11 @@
         typename Sequence,
         typename F
         >
    -typename result_of::for_each<Sequence, F>::type for_each(
    +typename result_of::for_each<Sequence, F>::type for_each(
         Sequence& seq, F const& f);
     
    -

    Table 1.34. Parameters

    +

    Table 1.34. Parameters

    @@ -59,17 +59,17 @@ - + - + @@ -78,36 +78,36 @@
    seqseq A model of Forward - Sequence, f(e) must be a valid expression for each - element e in seq + Sequence, f(e) must be a valid expression for each + element e in seq Operation's argument
    ff A unary function object Operation's argument
    - + Expression Semantics
    -for_each(seq, f);
    +for_each(seq, f);
     

    - Return type: void + Return type: void

    - Semantics: Calls f(e) for each element e - in seq. + Semantics: Calls f(e) for each element e + in seq.

    - + Complexity

    - Linear, exactly result_of::size<Sequence>::value applications of f. + Linear, exactly result_of::size<Sequence>::value applications of f.

    - + Header
     #include <boost/fusion/algorithm/iteration/for_each.hpp>
     
    - + Example
    @@ -120,9 +120,9 @@
         }
     };
     ...
    -vector<int,int> vec(1,2);
    -for_each(vec, increment());
    -assert(vec == make_vector(2,3));
    +vector<int,int> vec(1,2);
    +for_each(vec, increment());
    +assert(vec == make_vector(2,3));
     
    diff --git a/doc/html/fusion/algorithms/iteration/metafunctions.html b/doc/html/fusion/algorithms/iteration/metafunctions.html index 6330fe0d..1bd66d25 100644 --- a/doc/html/fusion/algorithms/iteration/metafunctions.html +++ b/doc/html/fusion/algorithms/iteration/metafunctions.html @@ -3,7 +3,7 @@ Metafunctions - + diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html b/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html index a99b637c..c779df6e 100644 --- a/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html +++ b/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html @@ -3,7 +3,7 @@ accumulate - + @@ -26,14 +26,14 @@
    - + Description

    - Returns the result type of accumulate. + Returns the result type of accumulate.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.36. Parameters

    +

    Table 1.36. Parameters

    @@ -61,7 +61,7 @@ - + - + - +
    SequenceSequence A model of Forward @@ -70,15 +70,15 @@ The sequence to iterate
    StateState Any type The initial state for the first application of - F + F
    FF A model of binary Polymorphic @@ -91,34 +91,34 @@
    - + Expression Semantics
    -result_of::accumulate<Sequence, State, F>::type
    +result_of::accumulate<Sequence, State, F>::type
     

    - Return type: Any 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 + Semantics: Returns the result of applying + accumulate to a sequence + of type Sequence, with + an initial state of type State and binary Polymorphic - Function Object of type F. + Function Object of type F.

    - + Complexity

    - Linear, exactly result_of::size<Sequence>::value applications of F. + Linear, exactly result_of::size<Sequence>::value applications of F.

    - + Header
    diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/fold.html b/doc/html/fusion/algorithms/iteration/metafunctions/fold.html
    index 7fc8eb99..ee735622 100644
    --- a/doc/html/fusion/algorithms/iteration/metafunctions/fold.html
    +++ b/doc/html/fusion/algorithms/iteration/metafunctions/fold.html
    @@ -3,7 +3,7 @@
     
     fold
     
    -
    +
     
     
     
    @@ -26,14 +26,14 @@
     
     
    - + Description

    - Returns the result type of fold. + Returns the result type of fold.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.35. Parameters

    +

    Table 1.35. Parameters

    @@ -61,7 +61,7 @@ - + - + - +
    SequenceSequence A model of Forward @@ -70,15 +70,15 @@ The sequence to iterate
    StateState Any type The initial state for the first application of - F + F
    FF A model of binary Polymorphic @@ -91,34 +91,34 @@
    - + Expression Semantics
    -result_of::fold<Sequence, State, F>::type
    +result_of::fold<Sequence, State, F>::type
     

    - Return type: Any 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 + Semantics: Returns the result of applying + fold to a sequence of + type Sequence, with an + initial state of type State and binary Polymorphic - Function Object of type F. + Function Object of type F.

    - + Complexity

    - Linear, exactly result_of::size<Sequence>::value applications of F. + Linear, exactly result_of::size<Sequence>::value applications of F.

    - + Header
    diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html b/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html
    index 6c18dfa8..6f865f32 100644
    --- a/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html
    +++ b/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html
    @@ -3,7 +3,7 @@
     
     for_each
     
    -
    +
     
     
     
    @@ -26,15 +26,15 @@
     
     

    - A metafunction returning the result type of applying for_each to a sequence. The - return type of for_each is always void. + A metafunction returning the result type of applying for_each to a sequence. The + return type of for_each is always void.

    - + Description
    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.37. Parameters

    +

    Table 1.37. Parameters

    @@ -62,7 +62,7 @@ - + - + @@ -80,32 +80,32 @@
    SequenceSequence A model of Forward @@ -71,7 +71,7 @@ Operation's argument
    FF Any type Operation's argument
    - + Expression Semantics
    -result_of::for_each<Sequence, F>::type
    +result_of::for_each<Sequence, F>::type
     

    - Return type: void. + Return type: void.

    - Semantics: Returns the return type of - for_each for a sequence of type - Sequence and a unary - function object F. The - return type is always void. + Semantics: Returns the return type of + for_each for a sequence of type + Sequence and a unary + function object F. The + return type is always void.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/query.html b/doc/html/fusion/algorithms/query.html
    index 1f0f9e0a..9b5c8953 100644
    --- a/doc/html/fusion/algorithms/query.html
    +++ b/doc/html/fusion/algorithms/query.html
    @@ -3,7 +3,7 @@
     
     Query
     
    -
    +
     
     
     
    @@ -33,7 +33,7 @@
             The query algorithms provide support for searching and analyzing sequences.
           

    - + Header

    diff --git a/doc/html/fusion/algorithms/query/functions.html b/doc/html/fusion/algorithms/query/functions.html
    index 51a98f99..112f1f24 100644
    --- a/doc/html/fusion/algorithms/query/functions.html
    +++ b/doc/html/fusion/algorithms/query/functions.html
    @@ -3,7 +3,7 @@
     
     Functions
     
    -
    +
     
     
     
    diff --git a/doc/html/fusion/algorithms/query/functions/all.html b/doc/html/fusion/algorithms/query/functions/all.html
    index 0b6790f5..923fa47a 100644
    --- a/doc/html/fusion/algorithms/query/functions/all.html
    +++ b/doc/html/fusion/algorithms/query/functions/all.html
    @@ -3,7 +3,7 @@
     
     all
     
    -
    +
     
     
     
    @@ -26,18 +26,18 @@
     
     
    - + Description

    - For a sequence seq and - unary function object f, - all returns true if - f returns true for every - element of seq. + For a sequence seq and + unary function object f, + all returns true if + f returns true for every + element of seq.

    - + Synopsis
    @@ -45,11 +45,11 @@
         typename Sequence,
         typename F
         >
    -typename result_of::all<Sequence,F>::type all(
    +typename result_of::all<Sequence,F>::type all(
         Sequence const& seq, F f);
     
    -

    Table 1.39. Parameters

    +

    Table 1.39. Parameters

    @@ -63,19 +63,19 @@ - + - + @@ -84,38 +84,38 @@
    seqseq A model of Forward - Sequence, f(e) is a valid expression, convertible - to bool, for every element - e in seq + Sequence, f(e) is a valid expression, convertible + to bool, for every element + e in seq The sequence to search
    ff A unary function object The search predicate
    - + Expression Semantics
    -all(seq, f);
    +all(seq, f);
     

    - Return type: bool + Return type: bool

    - Semantics: Returns true if and only - if f(e) - evaluates to true for every - element e in seq. + Semantics: Returns true if and only + if f(e) + evaluates to true for every + element e in seq.

    - + Complexity

    - Linear. At most result_of::size<Sequence>::value comparisons. + Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
     #include <boost/fusion/algorithm/query/all.hpp>
     
    - + Example
    @@ -128,8 +128,8 @@
         }
     };
     ...
    -assert(all(make_vector(1,3), odd()));
    -assert(!all(make_vector(1,2), odd()));
    +assert(all(make_vector(1,3), odd()));
    +assert(!all(make_vector(1,2), odd()));
     
    diff --git a/doc/html/fusion/algorithms/query/functions/any.html b/doc/html/fusion/algorithms/query/functions/any.html index 12f4df59..e5f4872d 100644 --- a/doc/html/fusion/algorithms/query/functions/any.html +++ b/doc/html/fusion/algorithms/query/functions/any.html @@ -3,7 +3,7 @@ any - + @@ -26,18 +26,18 @@
    - + Description

    - For a sequence seq and - unary function object f, - any returns true if - f returns true for at - least one element of seq. + For a sequence seq and + unary function object f, + any returns true if + f returns true for at + least one element of seq.

    - + Synopsis
    @@ -45,11 +45,11 @@
         typename Sequence,
         typename F
         >
    -typename result_of::any<Sequence,F>::type any(
    +typename result_of::any<Sequence,F>::type any(
         Sequence const& seq, F f);
     
    -

    Table 1.38. Parameters

    +

    Table 1.38. Parameters

    @@ -63,19 +63,19 @@ - + - + @@ -84,38 +84,38 @@
    seqseq A model of Forward - Sequence, f(e) must be a valid expression, convertible - to bool, for each element - e in seq + Sequence, f(e) must be a valid expression, convertible + to bool, for each element + e in seq The sequence to search
    ff A unary function object The search predicate
    - + Expression semantics
    -any(seq, f);
    +any(seq, f);
     

    - Return type: bool + Return type: bool

    - Semantics: Returns true if and only - if f(e) - evaluates to true for some - element e in seq. + Semantics: Returns true if and only + if f(e) + evaluates to true for some + element e in seq.

    - + Complexity

    - Linear. At most result_of::size<Sequence>::value comparisons. + Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
     #include <boost/fusion/algorithm/query/any.hpp>
     
    - + Example
    @@ -128,8 +128,8 @@
         }
     };
     ...
    -assert(any(make_vector(1,2), odd()));
    -assert(!any(make_vector(2,4), odd()));
    +assert(any(make_vector(1,2), odd()));
    +assert(!any(make_vector(2,4), odd()));
     
    diff --git a/doc/html/fusion/algorithms/query/functions/count.html b/doc/html/fusion/algorithms/query/functions/count.html index 6e68ca75..673735ad 100644 --- a/doc/html/fusion/algorithms/query/functions/count.html +++ b/doc/html/fusion/algorithms/query/functions/count.html @@ -3,7 +3,7 @@ count - + @@ -26,14 +26,14 @@
    - + Description

    Returns the number of elements of a given type within a sequence.

    - + Synopsis
    @@ -41,11 +41,11 @@
         typename Sequence,
         typename T
         >
    -typename result_of::count<Sequence, T>::type count(
    +typename result_of::count<Sequence, T>::type count(
         Sequence const& seq, T const& t);
     
    -

    Table 1.43. Parameters

    +

    Table 1.43. Parameters

    @@ -59,20 +59,20 @@ - + - + @@ -81,42 +81,42 @@
    seqseq A model of Forward - Sequence, e == t - must be a valid expression, convertible to bool, - for each element e - in seq + Sequence, e == t + must be a valid expression, convertible to bool, + for each element e + in seq The sequence to search
    TT Any type The type to count
    - + Expression Semantics
    -count(seq, t);
    +count(seq, t);
     

    - Return type: int + Return type: int

    - Semantics: Returns the number of elements - of type T and equal to - t in seq. + Semantics: Returns the number of elements + of type T and equal to + t in seq.

    - + Complexity

    - Linear. At most result_of::size<Sequence>::value comparisons. + Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
     #include <boost/fusion/algorithm/query/count.hpp>
     
    - + Example
    -const vector<double,int,int> vec(1.0,2,3);
    -assert(count(vec,2) == 1);
    +const vector<double,int,int> vec(1.0,2,3);
    +assert(count(vec,2) == 1);
     
    diff --git a/doc/html/fusion/algorithms/query/functions/count_if.html b/doc/html/fusion/algorithms/query/functions/count_if.html index 7707c100..4d4d8b0f 100644 --- a/doc/html/fusion/algorithms/query/functions/count_if.html +++ b/doc/html/fusion/algorithms/query/functions/count_if.html @@ -3,7 +3,7 @@ count_if - + @@ -26,15 +26,15 @@
    - + Description

    Returns the number of elements within a sequence with a type for which - a given unary function object evaluates to true. + a given unary function object evaluates to true.

    - + Synopsis
    @@ -42,11 +42,11 @@
         typename Sequence,
         typename F
         >
    -typename result_of::count_if<Sequence, F>::type count_if(
    +typename result_of::count_if<Sequence, F>::type count_if(
         Sequence const& seq, F f);
     
    -

    Table 1.44. Parameters

    +

    Table 1.44. Parameters

    @@ -60,19 +60,19 @@ - + - + @@ -81,41 +81,41 @@
    seqseq A model of Forward - Sequence, f(e) is a valid expression, convertible - to bool, for each element - e in seq + Sequence, f(e) is a valid expression, convertible + to bool, for each element + e in seq The sequence to search
    ff A unary function object The search predicate
    - + Expression Semantics
    -count_if(seq, f)
    +count_if(seq, f)
     

    - Return type: int + Return type: int

    - Semantics: Returns the number of elements - in seq where f evaluates to true. + Semantics: Returns the number of elements + in seq where f evaluates to true.

    - + Complexity

    - Linear. At most result_of::size<Sequence>::value comparisons. + Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
     #include <boost/fusion/algorithm/query/count_if.hpp>
     
    - + Example
    -const vector<int,int,int> vec(1,2,3);
    -assert(count_if(vec,odd()) == 2);
    +const vector<int,int,int> vec(1,2,3);
    +assert(count_if(vec,odd()) == 2);
     
    diff --git a/doc/html/fusion/algorithms/query/functions/find.html b/doc/html/fusion/algorithms/query/functions/find.html index f29167f7..8ddaaddd 100644 --- a/doc/html/fusion/algorithms/query/functions/find.html +++ b/doc/html/fusion/algorithms/query/functions/find.html @@ -3,7 +3,7 @@ find - + @@ -26,31 +26,31 @@
    - + Description

    Finds the first element of a given type within a sequence.

    - + Synopsis
     template<
    -    typename Sequence,
    -    typename T
    +    typename T,
    +    typename Sequence
         >
     unspecified find(Sequence const& seq);
     
     template<
    -    typename Sequence,
    -    typename T
    +    typename T,
    +    typename Sequence
         >
     unspecified find(Sequence& seq);
     
    -

    Table 1.41. Parameters

    +

    Table 1.41. Parameters

    @@ -64,7 +64,7 @@ - + - + @@ -82,45 +82,45 @@
    seqseq A model of Forward @@ -73,7 +73,7 @@ The sequence to search
    TT Any type The type to search for
    - + Expression Semantics
    -find<T>(seq)
    +find<T>(seq)
     

    - Return type: A model of the same iterator - category as the iterators of seq. + Return type: A model of the same iterator + category as the iterators of seq.

    - Semantics: Returns an iterator to the - first element of seq - of type T, or end(seq) if there is no such element. Equivalent - to find_if<boost::is_same<_, T> >(seq) + Semantics: Returns an iterator to the + first element of seq + of type T, or end(seq) if there is no such element. Equivalent + to find_if<boost::is_same<_, T> >(seq)

    - + Complexity

    - Linear. At most result_of::size<Sequence>::value comparisons. + Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
     #include <boost/fusion/algorithm/query/find.hpp>
     
    - + Example
    -const vector<char,int> vec('a','0');
    -assert(*find<int>(vec) == '0');
    -assert(find<double>(vec) == end(vec));
    +const vector<char,int> vec('a','0');
    +assert(*find<int>(vec) == '0');
    +assert(find<double>(vec) == end(vec));
     
    diff --git a/doc/html/fusion/algorithms/query/functions/find_if.html b/doc/html/fusion/algorithms/query/functions/find_if.html index 498c7ea8..ff2a73e5 100644 --- a/doc/html/fusion/algorithms/query/functions/find_if.html +++ b/doc/html/fusion/algorithms/query/functions/find_if.html @@ -3,7 +3,7 @@ find_if - + @@ -27,31 +27,31 @@ find_if

    Finds the first element within a sequence with a type for which a given - MPL Lambda Expression evaluates to boost::mpl::true_. + MPL Lambda Expression evaluates to boost::mpl::true_.

    - + Description
    - + Synopsis
     template<
    -    typename Sequence,
    -    typename F
    +    typename F,
    +    typename Sequence
         >
     unspecified find_if(Sequence const& seq);
     
     template<
    -    typename Sequence,
    -    typename F
    +    typename F,
    +    typename Sequence
         >
     unspecified find_if(Sequence& seq);
     
    -

    Table 1.42. Parameters

    +

    Table 1.42. Parameters

    @@ -65,7 +65,7 @@ - + - + @@ -83,46 +83,46 @@
    seqseq A model of Forward @@ -74,7 +74,7 @@ The sequence to search
    FF A unary MPL Lambda Expression The search predicate
    - + Expression Semantics
    -find_if<F>(seq)
    +find_if<F>(seq)
     

    - Return type: An iterator of the same - iterator category as the iterators of seq. + Return type: An iterator of the same + iterator category as the iterators of seq.

    - Semantics: Returns the first element - of seq for which MPL - Lambda Expression F evaluates - to boost::mpl::true_, or end(seq) + Semantics: Returns the first element + of seq for which MPL + Lambda Expression F evaluates + to boost::mpl::true_, or end(seq) if there is no such element.

    - + Complexity

    - Linear. At most result_of::size<Sequence>::value comparisons. + Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
     #include <boost/fusion/algorithm/query/find_if.hpp>
     
    - + Example
    -const vector<double,int> vec(1.0,2);
    -assert(*find_if<is_integral<mpl::_> >(vec) == 2);
    -assert(find_if<is_class<mpl::_> >(vec) == end(vec));
    +const vector<double,int> vec(1.0,2);
    +assert(*find_if<is_integral<mpl::_> >(vec) == 2);
    +assert(find_if<is_class<mpl::_> >(vec) == end(vec));
     
    diff --git a/doc/html/fusion/algorithms/query/functions/none.html b/doc/html/fusion/algorithms/query/functions/none.html index 0c4b0cd0..97373012 100644 --- a/doc/html/fusion/algorithms/query/functions/none.html +++ b/doc/html/fusion/algorithms/query/functions/none.html @@ -3,7 +3,7 @@ none - + @@ -26,18 +26,18 @@
    - + Description

    - For a sequence seq and - unary function object f, - none returns true if - f returns false for every - element of seq. + For a sequence seq and + unary function object f, + none returns true if + f returns false for every + element of seq.

    - + Synopsis
    @@ -45,11 +45,11 @@
         typename Sequence,
         typename F
         >
    -typename result_of::none<Sequence,F>::type none(
    +typename result_of::none<Sequence,F>::type none(
         Sequence const& seq, F f);
     
    -

    Table 1.40. Parameters

    +

    Table 1.40. Parameters

    @@ -63,19 +63,19 @@ - + - + @@ -84,38 +84,38 @@
    seqseq A model of Forward - Sequence, f(e) is a valid expression, convertible - to bool, for every element - e in seq + Sequence, f(e) is a valid expression, convertible + to bool, for every element + e in seq The sequence to search
    ff A unary function object The search predicate
    - + Expression Semantics
    -none(seq, f);
    +none(seq, f);
     

    - Return type: bool + Return type: bool

    - Semantics: Returns true if and only - if f(e) - evaluates to false for every - element e in seq. Result equivalent to !any(seq, f). + Semantics: Returns true if and only + if f(e) + evaluates to false for every + element e in seq. Result equivalent to !any(seq, f).

    - + Complexity

    - Linear. At most result_of::size<Sequence>::value comparisons. + Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
     #include <boost/fusion/algorithm/query/none.hpp>
     
    - + Example
    @@ -128,8 +128,8 @@
         }
     };
     ...
    -assert(none(make_vector(2,4), odd()));
    -assert(!none(make_vector(1,2), odd()));
    +assert(none(make_vector(2,4), odd()));
    +assert(!none(make_vector(1,2), odd()));
     
    diff --git a/doc/html/fusion/algorithms/query/metafunctions.html b/doc/html/fusion/algorithms/query/metafunctions.html index 7f643624..544b0b11 100644 --- a/doc/html/fusion/algorithms/query/metafunctions.html +++ b/doc/html/fusion/algorithms/query/metafunctions.html @@ -3,7 +3,7 @@ Metafunctions - + diff --git a/doc/html/fusion/algorithms/query/metafunctions/all.html b/doc/html/fusion/algorithms/query/metafunctions/all.html index eadff0c9..aeaad077 100644 --- a/doc/html/fusion/algorithms/query/metafunctions/all.html +++ b/doc/html/fusion/algorithms/query/metafunctions/all.html @@ -3,7 +3,7 @@ all - + @@ -26,14 +26,14 @@
    - + Description

    - A metafunction returning the result type of all. + A metafunction returning the result type of all.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.46. Parameters

    +

    Table 1.46. Parameters

    @@ -61,7 +61,7 @@ - + - +
    SequenceSequence A model of Forward @@ -70,7 +70,7 @@ Operation's argument
    FF A model of unary Polymorphic @@ -82,34 +82,34 @@
    - + Expression Semantics
    -result_of::all<Sequence, F>::type
    +result_of::all<Sequence, F>::type
     

    - Return type: bool. + Return type: bool.

    - Semantics: Returns the return type of - all - given a sequence of type Sequence + Semantics: Returns the return type of + all + given a sequence of type Sequence and a unary Polymorphic - Function Object of type F. - The return type is always bool. + Function Object of type F. + The return type is always bool.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/query/metafunctions/any.html b/doc/html/fusion/algorithms/query/metafunctions/any.html
    index d72d800d..8be75c89 100644
    --- a/doc/html/fusion/algorithms/query/metafunctions/any.html
    +++ b/doc/html/fusion/algorithms/query/metafunctions/any.html
    @@ -3,7 +3,7 @@
     
     any
     
    -
    +
     
     
     
    @@ -26,14 +26,14 @@
     
     
    - + Description

    - A metafunction returning the result type of any. + A metafunction returning the result type of any.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.45. Parameters

    +

    Table 1.45. Parameters

    @@ -61,7 +61,7 @@ - + - +
    SequenceSequence A model of Forward @@ -70,7 +70,7 @@ Operation's argument
    FF A model of unary Polymorphic @@ -82,34 +82,34 @@
    - + Expression Semantics
    -result_of::any<Sequence, F>::type
    +result_of::any<Sequence, F>::type
     

    - Return type: bool. + Return type: bool.

    - Semantics: Returns the return type of - any - given a sequence of type Sequence + Semantics: Returns the return type of + any + given a sequence of type Sequence and a unary Polymorphic - Function Object of type F. - The return type is always bool. + Function Object of type F. + The return type is always bool.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/query/metafunctions/count.html b/doc/html/fusion/algorithms/query/metafunctions/count.html
    index 2dc89381..112f2ccc 100644
    --- a/doc/html/fusion/algorithms/query/metafunctions/count.html
    +++ b/doc/html/fusion/algorithms/query/metafunctions/count.html
    @@ -3,7 +3,7 @@
     
     count
     
    -
    +
     
     
     
    @@ -26,15 +26,15 @@
     
     
    - + Description

    - A metafunction that returns the result type of count + A metafunction that returns the result type of count given the sequence and search types.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.50. Parameters

    +

    Table 1.50. Parameters

    @@ -63,7 +63,7 @@ - + - + @@ -81,30 +81,30 @@
    SequenceSequence A model of Forward @@ -72,7 +72,7 @@ Operation's argument
    TT Any type Operation's argument
    - + Expression Semantics
    -result_of::count<T>::type
    +result_of::count<T>::type
     

    - Return type: int. + Return type: int.

    - Semantics: Returns the return type of - count. The return type is always - int. + Semantics: Returns the return type of + count. The return type is always + int.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/query/metafunctions/count_if.html b/doc/html/fusion/algorithms/query/metafunctions/count_if.html
    index 2d5aea46..a0b2fcb6 100644
    --- a/doc/html/fusion/algorithms/query/metafunctions/count_if.html
    +++ b/doc/html/fusion/algorithms/query/metafunctions/count_if.html
    @@ -3,7 +3,7 @@
     
     count_if
     
    -
    +
     
     
     
    @@ -26,15 +26,15 @@
     
     
    - + Description

    - A metafunction that returns the result type of count_if + A metafunction that returns the result type of count_if given the sequence and predicate types.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.51. Parameters

    +

    Table 1.51. Parameters

    @@ -62,7 +62,7 @@ - + - + @@ -80,30 +80,30 @@
    SequenceSequence A model of Forward @@ -71,7 +71,7 @@ Operation's argument
    PredPred A unary function object Operation's argument
    - + Expression Semantics
    -result_of::count_if<Sequence, Pred>::type
    +result_of::count_if<Sequence, Pred>::type
     

    - Return type: int. + Return type: int.

    - Semantics: Returns the return type of - count_if. The return type is - always int. + Semantics: Returns the return type of + count_if. The return type is + always int.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/query/metafunctions/find.html b/doc/html/fusion/algorithms/query/metafunctions/find.html
    index a30c2f8e..51823f66 100644
    --- a/doc/html/fusion/algorithms/query/metafunctions/find.html
    +++ b/doc/html/fusion/algorithms/query/metafunctions/find.html
    @@ -3,7 +3,7 @@
     
     find
     
    -
    +
     
     
     
    @@ -26,15 +26,15 @@
     
     
    - + Description

    - Returns the result type of find, + Returns the result type of find, given the sequence and search types.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.48. Parameters

    +

    Table 1.48. Parameters

    @@ -62,7 +62,7 @@ - + - + @@ -80,31 +80,31 @@
    SequenceSequence Model of Forward @@ -71,7 +71,7 @@ Operation's argument
    TT Any type Operation's argument
    - + Expression Semantics
    -result_of::find<Sequence, T>::type
    +result_of::find<Sequence, T>::type
     

    - Return type: A model of the same iterator - category as the iterators of Sequence. + Return type: A model of the same iterator + category as the iterators of Sequence.

    - Semantics: Returns an iterator to the - first element of type T - in Sequence, or result_of::end<Sequence>::type if there is no such element. + Semantics: Returns an iterator to the + first element of type T + in Sequence, or result_of::end<Sequence>::type if there is no such element.

    - + Complexity

    - Linear, at most result_of::size<Sequence>::value comparisons. + Linear, at most result_of::size<Sequence>::value comparisons.

    - + Header
    diff --git a/doc/html/fusion/algorithms/query/metafunctions/find_if.html b/doc/html/fusion/algorithms/query/metafunctions/find_if.html
    index a063defa..1fbcfbcd 100644
    --- a/doc/html/fusion/algorithms/query/metafunctions/find_if.html
    +++ b/doc/html/fusion/algorithms/query/metafunctions/find_if.html
    @@ -3,7 +3,7 @@
     
     find_if
     
    -
    +
     
     
     
    @@ -26,15 +26,15 @@
     
     
    - + Description

    - Returns the result type of find_if + Returns the result type of find_if given the sequence and predicate types.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.49. Parameters

    +

    Table 1.49. Parameters

    @@ -62,7 +62,7 @@ - + - + @@ -80,32 +80,32 @@
    SequenceSequence A model of Forward @@ -71,7 +71,7 @@ Operation's argument
    PredPred A model of MPL Lambda Expression Operation's arguments
    - + Expression Semantics
    -result_of::find_if<Sequence, Pred>::type
    +result_of::find_if<Sequence, Pred>::type
     

    - Return type: A model of the same iterator - category as the iterators of Sequence. + Return type: A model of the same iterator + category as the iterators of Sequence.

    - Semantics: Returns an iterator to the - first element in Sequence - for which Pred evaluates - to true. Returns result_of::end<Sequence>::type if there is no such element. + Semantics: Returns an iterator to the + first element in Sequence + for which Pred evaluates + to true. Returns result_of::end<Sequence>::type if there is no such element.

    - + Complexity

    - Linear. At most result_of::size<Sequence>::value comparisons. + Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
    diff --git a/doc/html/fusion/algorithms/query/metafunctions/none.html b/doc/html/fusion/algorithms/query/metafunctions/none.html
    index 05d9cd69..3b794020 100644
    --- a/doc/html/fusion/algorithms/query/metafunctions/none.html
    +++ b/doc/html/fusion/algorithms/query/metafunctions/none.html
    @@ -3,7 +3,7 @@
     
     none
     
    -
    +
     
     
     
    @@ -26,14 +26,14 @@
     
     
    - + Description

    - A metafunction returning the result type of none. + A metafunction returning the result type of none.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.47. Parameters

    +

    Table 1.47. Parameters

    @@ -61,7 +61,7 @@ - + - +
    SequenceSequence A model of Forward @@ -70,7 +70,7 @@ Operation's argument
    FF A model of unary Polymorphic @@ -82,34 +82,34 @@
    - + Expression Semantics
    -result_of::none<Sequence, F>::type
    +result_of::none<Sequence, F>::type
     

    - Return type: bool. + Return type: bool.

    - Semantics: Returns the return type of - none given a sequence of type - Sequence and a unary + Semantics: Returns the return type of + none given a sequence of type + Sequence and a unary Polymorphic Function - Object of type F. - The return type is always bool. + Object of type F. + The return type is always bool.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation.html b/doc/html/fusion/algorithms/transformation.html
    index c9f2ee94..da6c68f9 100644
    --- a/doc/html/fusion/algorithms/transformation.html
    +++ b/doc/html/fusion/algorithms/transformation.html
    @@ -3,7 +3,7 @@
     
     Transformation
     
    -
    +
     
     
     
    @@ -39,14 +39,14 @@
     [Note]
     Note
     
    -

    +

    As the transformation algorithms return views onto their input arguments, it is important that the lifetime of the input arguments is greater than the period during which you wish to use the results.

    - + Header

    diff --git a/doc/html/fusion/algorithms/transformation/functions.html b/doc/html/fusion/algorithms/transformation/functions.html
    index 3143ea86..49375ca0 100644
    --- a/doc/html/fusion/algorithms/transformation/functions.html
    +++ b/doc/html/fusion/algorithms/transformation/functions.html
    @@ -3,7 +3,7 @@
     
     Functions
     
    -
    +
     
     
     
    diff --git a/doc/html/fusion/algorithms/transformation/functions/clear.html b/doc/html/fusion/algorithms/transformation/functions/clear.html
    index 4b1ef20a..6527f7f9 100644
    --- a/doc/html/fusion/algorithms/transformation/functions/clear.html
    +++ b/doc/html/fusion/algorithms/transformation/functions/clear.html
    @@ -3,7 +3,7 @@
     
     clear
     
    -
    +
     
     
     
    @@ -26,24 +26,24 @@
     
     
    - + Description

    - clear returns an empty sequence. + clear returns an empty sequence.

    - + Synposis
     template<
         typename Sequence
         >
    -typename result_of::clear<Sequence const>::type clear(Sequence const& seq);
    +typename result_of::clear<Sequence const>::type clear(Sequence const& seq);
     
    -

    Table 1.61. Parameters

    +

    Table 1.61. Parameters

    @@ -56,7 +56,7 @@ - +
    Description
    seqseq A model of Forward @@ -67,42 +67,42 @@
    - + Expression Semantics
    -clear(seq);
    +clear(seq);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Expression Semantics: Returns a sequence + Expression Semantics: Returns a sequence with no elements.

    - + Complexity

    Constant.

    - + Header
     #include <boost/fusion/algorithm/transformation/clear.hpp>
     
    - + Example
    -assert(clear(make_vector(1,2,3)) == make_vector());
    +assert(clear(make_vector(1,2,3)) == make_vector());
     
    diff --git a/doc/html/fusion/algorithms/transformation/functions/erase.html b/doc/html/fusion/algorithms/transformation/functions/erase.html index c193c91c..bfe74a05 100644 --- a/doc/html/fusion/algorithms/transformation/functions/erase.html +++ b/doc/html/fusion/algorithms/transformation/functions/erase.html @@ -3,7 +3,7 @@ erase - + @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ those at a specified iterator, or between two iterators.

    - + Synposis
    @@ -42,7 +42,7 @@
         typename Sequence,
         typename First
         >
    -typename result_of::erase<Sequence const, First>::type erase(
    +typename result_of::erase<Sequence const, First>::type erase(
         Sequence const& seq, First const& it1);
     
     template<
    @@ -50,11 +50,11 @@
         typename First,
         typename Last
         >
    -typename result_of::erase<Sequence const, First, Last>::type erase(
    +typename result_of::erase<Sequence const, First, Last>::type erase(
         Sequence const& seq, First const& it1, Last const& it2);
     
    -

    Table 1.62. Parameters

    +

    Table 1.62. Parameters

    @@ -68,7 +68,7 @@ - + - + - - + -
    seqseq A model of Forward @@ -77,82 +77,82 @@ Operation's argument
    it1it1 A model of Forward Iterator Iterator into seq +Iterator into seq
    it2it2 A model of Forward Iterator Iterator into seq - after it1 +Iterator into seq + after it1
    - + Expression Semantics
    -erase(seq, pos);
    +erase(seq, pos);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence, containing - all the elements of seq - except the element at pos. + Semantics: Returns a new sequence, containing + all the elements of seq + except the element at pos.

    -erase(seq, first, last);
    +erase(seq, first, last);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence, with - all the elements of seq, - in their original order, except those in the range [first,last). + Semantics: Returns a new sequence, with + all the elements of seq, + 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>
     
    - + Example
    -const vector<int, double, char> vec(1, 2.0, 'c');
    -assert(erase(vec, next(begin(vec))) == make_vector(1, 'c'));
    -assert(erase(vec, next(begin(vec)), end(vec)) == make_vector(1));
    +const vector<int, double, char> vec(1, 2.0, 'c');
    +assert(erase(vec, next(begin(vec))) == make_vector(1, 'c'));
    +assert(erase(vec, next(begin(vec)), end(vec)) == make_vector(1));
     
    diff --git a/doc/html/fusion/algorithms/transformation/functions/erase_key.html b/doc/html/fusion/algorithms/transformation/functions/erase_key.html index a493fce7..5749087b 100644 --- a/doc/html/fusion/algorithms/transformation/functions/erase_key.html +++ b/doc/html/fusion/algorithms/transformation/functions/erase_key.html @@ -3,7 +3,7 @@ erase_key - + @@ -26,20 +26,20 @@
    - + Description

    For an Associative - Sequence seq, + Sequence seq, returns a Forward Sequence containing all the elements of the original except those with a given key.

    - + Synposis
    @@ -50,7 +50,7 @@
     typename result_of::erase_key<Sequence const, Key>::type erase_key(Sequence const& seq);
     
    -

    Table 1.63. Parameters

    +

    Table 1.63. Parameters

    @@ -64,7 +64,7 @@ - + - + @@ -82,43 +82,43 @@
    seqseq A model of Associative @@ -73,7 +73,7 @@ Operation's argument
    KeyKey Any type Key to erase
    - + Expression Semantics
    -erase_key<Key>(seq);
    +erase_key<Key>(seq);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence, containing - all the elements of seq, - except those with key Key. + Semantics: Returns a new sequence, containing + all the elements of seq, + except those with key Key.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
     #include <boost/fusion/algorithm/transformation/erase_key.hpp>
     
    - + Example
    -assert(erase_key<int>(make_map<int, long>('a', 'b')) == make_map<long>('b'));
    +assert(erase_key<int>(make_map<int, long>('a', 'b')) == make_map<long>('b'));
     
    diff --git a/doc/html/fusion/algorithms/transformation/functions/filter.html b/doc/html/fusion/algorithms/transformation/functions/filter.html index ff587307..36fbced3 100644 --- a/doc/html/fusion/algorithms/transformation/functions/filter.html +++ b/doc/html/fusion/algorithms/transformation/functions/filter.html @@ -3,7 +3,7 @@ filter - + @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ the elements of a specified type.

    - + Synopsis
    @@ -42,10 +42,10 @@
         typename T,
         typename Sequence
         >
    -typename result_of::filter<Sequence const, T>::type filter(Sequence const& seq);
    +typename result_of::filter<Sequence const, T>::type filter(Sequence const& seq);
     
    -

    Table 1.52. Parameters

    +

    Table 1.52. Parameters

    @@ -59,7 +59,7 @@ - + - + @@ -77,45 +77,45 @@
    seqseq A model of Forward @@ -68,7 +68,7 @@ Operation's argument
    TT Any type The type to retain
    - + Expression Semantics
    -filter<T>(seq);
    +filter<T>(seq);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence containing - all the elements of seq - of type T. Equivalent - to filter_if<boost::same_type<_, T> >(seq). + Semantics: Returns a sequence containing + all the elements of seq + of type T. Equivalent + 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>
     
    - + Example
    -const vector<int,int,long,long> vec(1,2,3,4);
    -assert(filter<int>(vec) == make_vector(1,2));
    +const vector<int,int,long,long> vec(1,2,3,4);
    +assert(filter<int>(vec) == make_vector(1,2));
     
    diff --git a/doc/html/fusion/algorithms/transformation/functions/filter_if.html b/doc/html/fusion/algorithms/transformation/functions/filter_if.html index e332b6e2..3bec7204 100644 --- a/doc/html/fusion/algorithms/transformation/functions/filter_if.html +++ b/doc/html/fusion/algorithms/transformation/functions/filter_if.html @@ -3,7 +3,7 @@ filter_if - + @@ -26,16 +26,16 @@
    - + Description

    - For a given sequence, filter_if returns a new sequences + For a given sequence, filter_if returns a new sequences containing only the elements with types for which a given MPL Lambda - Expression evaluates to boost::mpl::true_. + Expression evaluates to boost::mpl::true_.

    - + Synopsis
    @@ -43,10 +43,10 @@
         typename Pred,
         typename Sequence
         >
    -typename result_of::filter_if<Sequence const, Pred>::type filter_if(Sequence const& seq);
    +typename result_of::filter_if<Sequence const, Pred>::type filter_if(Sequence const& seq);
     
    -

    Table 1.53. Parameters

    +

    Table 1.53. Parameters

    @@ -60,7 +60,7 @@ - + - +
    seqseq A model of Forward @@ -69,7 +69,7 @@ Operation's argument
    PredPred A unary MPL Lambda Expression The predicate to filter @@ -79,46 +79,46 @@
    - + Expression Semantics
    -filter_if<Pred>(seq);
    +filter_if<Pred>(seq);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence containing - all the elements of seq - with types for which Pred - evaluates to boost::mpl::true_. The order of the retained elements + Semantics: Returns a sequence containing + all the elements of seq + with types for which Pred + evaluates to boost::mpl::true_. The order of the retained elements 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>
     
    - + Example
    -const vector<int,int,double,double> vec(1,2,3.0,4.0);
    -assert(filter_if<is_integral<mpl::_> >(vec) == make_vector(1,2));
    +const vector<int,int,double,double> vec(1,2,3.0,4.0);
    +assert(filter_if<is_integral<mpl::_> >(vec) == make_vector(1,2));
     
    diff --git a/doc/html/fusion/algorithms/transformation/functions/insert.html b/doc/html/fusion/algorithms/transformation/functions/insert.html index 4bf2a286..05cf07ef 100644 --- a/doc/html/fusion/algorithms/transformation/functions/insert.html +++ b/doc/html/fusion/algorithms/transformation/functions/insert.html @@ -3,7 +3,7 @@ insert - + @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ element inserted the position described by a given iterator.

    - + Synposis
    @@ -46,7 +46,7 @@
     unspecified insert(Sequence const& seq, Pos const& pos, T const& t);
     
    -

    Table 1.64. Parameters

    +

    Table 1.64. Parameters

    @@ -60,7 +60,7 @@ - + - + - + @@ -87,46 +87,46 @@
    seqseq A model of Forward @@ -69,7 +69,7 @@ Operation's argument
    pospos A model of Forward @@ -78,7 +78,7 @@ The position to insert at
    tt Any type The value to insert
    - + Expression Semantics
    -insert(seq, p, t);
    +insert(seq, p, t);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence, containing - all the elements of seq, + Semantics: Returns a new sequence, containing + all the elements of seq, in their original order, and a new element with the type and value of - t inserted at iterator - pos. + t inserted at iterator + pos.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
     #include <boost/fusion/algorithm/transformation/insert.hpp>
     
    - + Example
    -const vector<int,int> vec(1,2);
    -assert(insert(vec, next(begin(vec)), 3) == make_vector(1,3,2));
    +const vector<int,int> vec(1,2);
    +assert(insert(vec, next(begin(vec)), 3) == make_vector(1,3,2));
     
    diff --git a/doc/html/fusion/algorithms/transformation/functions/insert_range.html b/doc/html/fusion/algorithms/transformation/functions/insert_range.html index 6cce0051..87e5f3e3 100644 --- a/doc/html/fusion/algorithms/transformation/functions/insert_range.html +++ b/doc/html/fusion/algorithms/transformation/functions/insert_range.html @@ -3,7 +3,7 @@ insert_range - + @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ iterator.

    - + Synposis
    @@ -43,11 +43,11 @@
         typename Pos,
         typename Range
         >
    -typename result_of::insert_range<Sequence const, Pos, Range>::type insert_range(
    +typename result_of::insert_range<Sequence const, Pos, Range>::type insert_range(
         Sequence const& seq, Pos const& pos, Range const& range);
     
    -

    Table 1.65. Parameters

    +

    Table 1.65. Parameters

    @@ -61,7 +61,7 @@ - + - + - +
    seqseq A model of Forward @@ -70,7 +70,7 @@ Operation's argument
    pospos A model of Forward @@ -79,7 +79,7 @@ The position to insert at
    rangerange A model of Forward @@ -91,46 +91,46 @@
    - + Expression Semantics
    -insert(seq, pos, range);
    +insert(seq, pos, range);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence, containing - all the elements of seq, - and the elements of range - inserted at iterator pos. + Semantics: Returns a new sequence, containing + all the elements of seq, + and the elements of range + inserted at iterator pos. 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>
     
    - + Example
    -const vector<int,int> vec(1,2);
    -assert(insert_range(vec, next(begin(vec)), make_vector(3,4)) == make_vector(1,3,4,2));
    +const vector<int,int> vec(1,2);
    +assert(insert_range(vec, next(begin(vec)), make_vector(3,4)) == make_vector(1,3,4,2));
     
    diff --git a/doc/html/fusion/algorithms/transformation/functions/join.html b/doc/html/fusion/algorithms/transformation/functions/join.html index addbb517..97d8e1c6 100644 --- a/doc/html/fusion/algorithms/transformation/functions/join.html +++ b/doc/html/fusion/algorithms/transformation/functions/join.html @@ -3,7 +3,7 @@ join - + @@ -26,7 +26,7 @@
    - + Description

    @@ -34,17 +34,17 @@ first followed by the elements of the second.

    - + Synopsis
     template<
         typename LhSequence,
         typename RhSequence>
    -typename result_of::join<LhSequence, RhSequence>::type join(LhSequence const& lhs, RhSequence const& rhs);
    +typename result_of::join<LhSequence, RhSequence>::type join(LhSequence const& lhs, RhSequence const& rhs);
     
    -

    Table 1.66. Parameters

    +

    Table 1.66. Parameters

    @@ -58,7 +58,7 @@ - + - +
    lhslhs A model of Forward @@ -67,7 +67,7 @@ Operation's argument
    rhsrhs A model of Forward @@ -79,46 +79,46 @@
    - + Expression Semantics
    -join(lhs, rhs);
    +join(lhs, rhs);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence containing - all the elements of lhs - followed by all the elements of rhs. + Semantics: Returns a sequence containing + all the elements of lhs + followed by all the elements of rhs. The order of th elements is preserved.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
     #include <boost/fusion/algorithm/transformation/join.hpp>
     
    - + Example
    -vector<int,char> v1(1, 'a');
    -vector<int,char> v2(2, 'b');
    -assert(join(v1, v2) == make_vector(1,'a',2,'b'));
    +vector<int,char> v1(1, 'a');
    +vector<int,char> v2(2, 'b');
    +assert(join(v1, v2) == make_vector(1,'a',2,'b'));
     
    diff --git a/doc/html/fusion/algorithms/transformation/functions/pop_back.html b/doc/html/fusion/algorithms/transformation/functions/pop_back.html index 49cec13c..22304598 100644 --- a/doc/html/fusion/algorithms/transformation/functions/pop_back.html +++ b/doc/html/fusion/algorithms/transformation/functions/pop_back.html @@ -3,7 +3,7 @@ pop_back - + @@ -26,24 +26,24 @@
    - + Description

    Returns a new sequence, with the last element of the original removed.

    - + Synopsis
     template<
         typename Sequence
         >
    -typename result_of::pop_back<Sequence const>::type pop_back(Sequence const& seq);
    +typename result_of::pop_back<Sequence const>::type pop_back(Sequence const& seq);
     
    -

    Table 1.68. Parameters

    +

    Table 1.68. Parameters

    @@ -56,7 +56,7 @@ - +
    Description
    seqseq A model of Forward @@ -67,44 +67,44 @@
    - + Expression Semantics
    -pop_back(seq);
    +pop_back(seq);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence containing - all the elements of seq, + Semantics: Returns a new sequence containing + all the elements of seq, except the last element. The elements in the new sequence are in the - same order as they were in seq. + 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>
     
    - + Example
    -assert(___pop_back__(make_vector(1,2,3)) == make_vector(1,2));
    +assert(___pop_back__(make_vector(1,2,3)) == make_vector(1,2));
     
    diff --git a/doc/html/fusion/algorithms/transformation/functions/pop_front.html b/doc/html/fusion/algorithms/transformation/functions/pop_front.html index 03accb92..2dc8a28b 100644 --- a/doc/html/fusion/algorithms/transformation/functions/pop_front.html +++ b/doc/html/fusion/algorithms/transformation/functions/pop_front.html @@ -3,7 +3,7 @@ pop_front - + @@ -26,24 +26,24 @@
    - + Description

    Returns a new sequence, with the first element of the original removed.

    - + Synopsis
     template<
         typename Sequence
         >
    -typename result_of::pop_front<Sequence const>::type pop_front(Sequence const& seq);
    +typename result_of::pop_front<Sequence const>::type pop_front(Sequence const& seq);
     
    -

    Table 1.69. Parameters

    +

    Table 1.69. Parameters

    @@ -56,7 +56,7 @@ - +
    Description
    seqseq A model of Forward @@ -67,44 +67,44 @@
    - + Expression Semantics
    -pop_front(seq);
    +pop_front(seq);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence containing - all the elements of seq, + Semantics: Returns a new sequence containing + all the elements of seq, except the first element. The elements in the new sequence are in the - same order as they were in seq. + 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>
     
    - + Example
    -assert(pop_front(make_vector(1,2,3)) == make_vector(2,3));
    +assert(pop_front(make_vector(1,2,3)) == make_vector(2,3));
     
    diff --git a/doc/html/fusion/algorithms/transformation/functions/push_back.html b/doc/html/fusion/algorithms/transformation/functions/push_back.html index 6937d725..d2b5ca54 100644 --- a/doc/html/fusion/algorithms/transformation/functions/push_back.html +++ b/doc/html/fusion/algorithms/transformation/functions/push_back.html @@ -3,7 +3,7 @@ push_back - + @@ -26,14 +26,14 @@
    - + Description

    Returns a new sequence with an element added at the end.

    - + Synopsis
    @@ -41,11 +41,11 @@
         typename Sequence,
         typename T
         >
    -typename result_of::push_back<Sequence, T>::type push_back(
    +typename result_of::push_back<Sequence, T>::type push_back(
         Sequence const& seq, T const& t);
     
    -

    Table 1.70. Parameters

    +

    Table 1.70. Parameters

    @@ -59,7 +59,7 @@ - + - + @@ -77,44 +77,44 @@
    seqseq A model of Forward @@ -68,7 +68,7 @@ Operation's argument
    tt Any type The value to add to the end
    - + Expression Semantics
    -push_back(seq, t);
    +push_back(seq, t);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence, containing - all the elements of seq, - and new element t appended - to the end. The elements are in the same order as they were in seq. + Semantics: Returns a new sequence, containing + all the elements of seq, + and new element t appended + 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>
     
    - + Example
    -assert(push_back(make_vector(1,2,3),4) == make_vector(1,2,3,4));
    +assert(push_back(make_vector(1,2,3),4) == make_vector(1,2,3,4));
     
    diff --git a/doc/html/fusion/algorithms/transformation/functions/push_front.html b/doc/html/fusion/algorithms/transformation/functions/push_front.html index a4e3951d..99c409be 100644 --- a/doc/html/fusion/algorithms/transformation/functions/push_front.html +++ b/doc/html/fusion/algorithms/transformation/functions/push_front.html @@ -3,7 +3,7 @@ push_front - + @@ -26,14 +26,14 @@
    - + Description

    Returns a new sequence with an element added at the beginning.

    - + Synopsis
    @@ -41,11 +41,11 @@
         typename Sequence,
         typename T
         >
    -typename result_of::push_front<Sequence, T>::type push_front(
    +typename result_of::push_front<Sequence, T>::type push_front(
         Sequence const& seq, T const& t);
     
    -

    Table 1.71. Parameters

    +

    Table 1.71. Parameters

    @@ -59,7 +59,7 @@ - + - + @@ -77,45 +77,45 @@
    seqseq A model of Forward @@ -68,7 +68,7 @@ Operation's argument
    tt Any type The value to add to the beginning
    - + Expression Semantics
    -push_back(seq, t);
    +push_back(seq, t);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence, containing - all the elements of seq, - and new element t appended + Semantics: Returns a new sequence, containing + all the elements of seq, + and new element t appended to the beginning. The elements are in the same order as they were in - seq. + seq.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
     #include <boost/fusion/algorithm/transformation/push_front.hpp>
     
    - + Example
    -assert(push_front(make_vector(1,2,3),0) == make_vector(0,1,2,3));
    +assert(push_front(make_vector(1,2,3),0) == make_vector(0,1,2,3));
     
    diff --git a/doc/html/fusion/algorithms/transformation/functions/remove.html b/doc/html/fusion/algorithms/transformation/functions/remove.html index 5f691391..0aa86bb0 100644 --- a/doc/html/fusion/algorithms/transformation/functions/remove.html +++ b/doc/html/fusion/algorithms/transformation/functions/remove.html @@ -3,7 +3,7 @@ remove - + @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ except those of a given type.

    - + Synopsis
    @@ -42,10 +42,10 @@
         typename T,
         typename Sequence
         >
    -typename result_of::remove<Sequence const, T>::type replace(Sequence const& seq);
    +typename result_of::remove<Sequence const, T>::type replace(Sequence const& seq);
     
    -

    Table 1.58. Parameters

    +

    Table 1.58. Parameters

    @@ -59,7 +59,7 @@ - + - + @@ -77,45 +77,45 @@
    seqseq A model of Forward @@ -68,7 +68,7 @@ Operation's argument
    TT Any type Type to remove
    - + Expression Semantics
    -remove<T>(seq);
    +remove<T>(seq);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence, containing - all the elements of seq, - in their original order, except those of type T. - Equivalent to remove_if<boost::is_same<_,T> >(seq). + Semantics: Returns a new sequence, containing + all the elements of seq, + in their original order, except those of type T. + 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>
     
    - + Example
    -const vector<int,double> vec(1,2.0);
    -assert(remove<double>(vec) == make_vector(1));
    +const vector<int,double> vec(1,2.0);
    +assert(remove<double>(vec) == make_vector(1));
     
    diff --git a/doc/html/fusion/algorithms/transformation/functions/remove_if.html b/doc/html/fusion/algorithms/transformation/functions/remove_if.html index 236acfa6..fedfd384 100644 --- a/doc/html/fusion/algorithms/transformation/functions/remove_if.html +++ b/doc/html/fusion/algorithms/transformation/functions/remove_if.html @@ -3,7 +3,7 @@ remove_if - + @@ -26,15 +26,15 @@
    - + Description

    Returns a new sequence, containing all the elements of the original except - those where a given unary function object evaluates to true. + those where a given unary function object evaluates to true.

    - + Synopsis
    @@ -42,10 +42,10 @@
         typename Pred,
         typename Sequence
         >
    -typename result_of::remove_if<Sequence const, Pred>::type remove_if(Sequence const& seq);
    +typename result_of::remove_if<Sequence const, Pred>::type remove_if(Sequence const& seq);
     
    -

    Table 1.59. Parameters

    +

    Table 1.59. Parameters

    @@ -59,7 +59,7 @@ - + - + @@ -77,46 +77,46 @@
    seqseq A model of Forward @@ -68,7 +68,7 @@ Operation's argument
    PredPred A model of unary MPL Lambda Expression Removal predicate
    - + Expression Semantics
    -remove_if<Pred>(seq);
    +remove_if<Pred>(seq);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence, containing - all the elements of seq, + Semantics: Returns a new sequence, containing + all the elements of seq, in their original order, except those elements with types for which - Pred evaluates to boost::mpl::true_. Equivalent to filter<boost::mpl::not_<Pred> - >(seq). + Pred evaluates to boost::mpl::true_. Equivalent to filter<boost::mpl::not_<Pred> + >(seq).

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
     #include <boost/fusion/algorithm/transformation/remove_if.hpp>
     
    - + Example
    -const vector<int,double> vec(1,2.0);
    -assert(remove_if<is_floating_point<mpl::_> >(vec) == make_vector(1));
    +const vector<int,double> vec(1,2.0);
    +assert(remove_if<is_floating_point<mpl::_> >(vec) == make_vector(1));
     
    diff --git a/doc/html/fusion/algorithms/transformation/functions/replace.html b/doc/html/fusion/algorithms/transformation/functions/replace.html index 3921ab16..edae3b05 100644 --- a/doc/html/fusion/algorithms/transformation/functions/replace.html +++ b/doc/html/fusion/algorithms/transformation/functions/replace.html @@ -3,7 +3,7 @@ replace - + @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ a new value.

    - + Synopsis
    @@ -42,11 +42,11 @@
         typename Sequence,
         typename T
         >
    -typename result_of::replace<Sequence const, T>::type replace(
    +typename result_of::replace<Sequence const, T>::type replace(
         Sequence const& seq, T const& old_value, T const& new_value);
     
    -

    Table 1.56. Parameters

    +

    Table 1.56. Parameters

    @@ -60,27 +60,27 @@ - + - + - + @@ -89,44 +89,44 @@
    seqseq A model of Forward - Sequence, e == old_value - is a valid expression, convertible to bool, - for each element e - in seq with type - convertible to T + Sequence, e == old_value + is a valid expression, convertible to bool, + for each element e + in seq with type + convertible to T Operation's argument
    old_valueold_value Any type Value to replace
    new_valuenew_value Any type Replacement value
    - + Expression Semantics
    -replace(seq, old_value, new_value);
    +replace(seq, old_value, new_value);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence with - all the values of seq - with new_value assigned - to elements with the same type and equal to old_value. + Semantics: Returns a new sequence with + all the values of seq + with new_value assigned + 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>
     
    - + Example
    -assert(replace(make_vector(1,2), 2, 3) == make_vector(1,3));
    +assert(replace(make_vector(1,2), 2, 3) == make_vector(1,3));
     
    diff --git a/doc/html/fusion/algorithms/transformation/functions/replace_if.html b/doc/html/fusion/algorithms/transformation/functions/replace_if.html index 16926287..84209980 100644 --- a/doc/html/fusion/algorithms/transformation/functions/replace_if.html +++ b/doc/html/fusion/algorithms/transformation/functions/replace_if.html @@ -3,7 +3,7 @@ replace_if - + @@ -26,16 +26,16 @@
    - + Description

    Replaces each element of a given sequence for which an unary function - object evaluates to true + object evaluates to true replaced with a new value.

    - + Synopsis
    @@ -43,11 +43,11 @@
         typename Sequence,
         typename F,
         typename T>
    -typename result_of::replace_if<Sequence const, F, T>::type replace_if(
    +typename result_of::replace_if<Sequence const, F, T>::type replace_if(
         Sequence const& seq, F f, T const& new_value);
     
    -

    Table 1.57. Parameters

    +

    Table 1.57. Parameters

    @@ -61,7 +61,7 @@ - + - + - + @@ -88,41 +88,41 @@
    seqseq A model of Forward @@ -70,16 +70,16 @@ Operation's argument
    ff A - function object for which f(e) is a valid expression, convertible - to bool, for each element - e in seq + function object for which f(e) is a valid expression, convertible + to bool, for each element + e in seq Operation's argument
    new_valuenew_value Any type Replacement value
    - + Expression Semantics
    -replace_if(seq, f, new_value);
    +replace_if(seq, f, new_value);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence with - all the elements of seq, - with new_value assigned - to each element for which f - evaluates to true. + Semantics: Returns a new sequence with + all the elements of seq, + with new_value assigned + to each element for which f + evaluates to true.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
     #include <boost/fusion/algorithm/transformation/replace_if.hpp>
     
    - + Example
    @@ -135,7 +135,7 @@
         }
     };
     ...
    -assert(replace_if(make_vector(1,2), odd(), 3) == make_vector(3,2));
    +assert(replace_if(make_vector(1,2), odd(), 3) == make_vector(3,2));
     
    diff --git a/doc/html/fusion/algorithms/transformation/functions/reverse.html b/doc/html/fusion/algorithms/transformation/functions/reverse.html index 62a583cb..be62892a 100644 --- a/doc/html/fusion/algorithms/transformation/functions/reverse.html +++ b/doc/html/fusion/algorithms/transformation/functions/reverse.html @@ -3,7 +3,7 @@ reverse - + @@ -26,24 +26,24 @@
    - + Description

    Returns a new sequence with the elements of the original in reverse order.

    - + Synposis
     template<
         typename Sequence
         >
    -typename result_of::reverse<Sequence const>::type reverse(Sequence const& seq);
    +typename result_of::reverse<Sequence const>::type reverse(Sequence const& seq);
     
    -

    Table 1.60. Parameters

    +

    Table 1.60. Parameters

    @@ -56,7 +56,7 @@ - +
    Description
    seqseq A model of Bidirectional @@ -67,43 +67,43 @@
    - + Expression Semantics
    -reverse(seq);
    +reverse(seq);
     

    - Return type: A model of Return type: A model of Bidirectional Sequence.

    - Semantics: Returns a new sequence containing - all the elements of seq + Semantics: Returns a new sequence containing + all the elements of seq in reverse order.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
     #include <boost/fusion/algorithm/transformation/reverse.hpp>
     
    - + Example
    -assert(reverse(make_vector(1,2,3)) == make_vector(3,2,1));
    +assert(reverse(make_vector(1,2,3)) == make_vector(3,2,1));
     
    diff --git a/doc/html/fusion/algorithms/transformation/functions/transform.html b/doc/html/fusion/algorithms/transformation/functions/transform.html index 9e8798e0..009890d6 100644 --- a/doc/html/fusion/algorithms/transformation/functions/transform.html +++ b/doc/html/fusion/algorithms/transformation/functions/transform.html @@ -3,7 +3,7 @@ transform - + @@ -26,19 +26,19 @@
    - + Description

    - For a sequence seq and + For a sequence seq and Polymorphic Function - Object F, transform returns a new sequence with - elements created by applying F - to each element of seq. + Object F, transform returns a new sequence with + elements created by applying F + to each element of seq.

    - + Unary version synopsis
    @@ -47,11 +47,11 @@ typenameSequence,typenameF> -typenameresult_of::transform<Sequenceconst,F>::typetransform( +typenameresult_of::transform<Sequenceconst,F>::typetransform(Sequenceconst&seq,Ff);
    -

    Table 1.54. Parameters

    +

    Table 1.54. Parameters

    @@ -65,7 +65,7 @@ - + - + @@ -88,25 +88,25 @@
    seqseq A model of Forward @@ -74,12 +74,12 @@ Operation's argument
    ff A model of unary Polymorphic - Function Object where f(e) is a valid expression for each element - e of seq + Function Object where f(e) is a valid expression for each element + e of seq Transformation function
    - + Expression Semantics
    -transform(seq, f);
    +transform(seq, f);
     

    - Return type: A model of Return type: A model of Forward Sequence

    - Semantics: Returns a new sequence, containing - the return values of f(e) for each element e - within seq. + Semantics: Returns a new sequence, containing + the return values of f(e) for each element e + within seq.

    - + Binary version synopsis
    @@ -116,11 +116,11 @@ typename Sequence2, typename F > -typename result_of::transform<Sequence1 const, Sequence2 const, F>::type transform( +typename result_of::transform<Sequence1 const, Sequence2 const, F>::type transform( Sequence1 const& seq1, Sequence2 const& seq2, F f);
    -

    Table 1.55. Parameters

    +

    Table 1.55. Parameters

    @@ -134,7 +134,7 @@ - + - + - + @@ -166,31 +166,31 @@
    seq1seq1 A model of Forward @@ -143,7 +143,7 @@ Operation's argument
    seq2seq2 A model of Forward @@ -152,13 +152,13 @@ Operation's argument
    ff A model of binary Polymorphic - Function Object where f(e1, e2) is a valid expression for each pair - of elements e1 and - e2 of seq1 and seq2 + Function Object where f(e1, e2) is a valid expression for each pair + of elements e1 and + e2 of seq1 and seq2 respectively Transformation function

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence, containing - the return values of f(e1, e2) for each pair of elements e1 and e2 - within seq1 and seq2 respectively. + Semantics: Returns a new sequence, containing + the return values of f(e1, e2) for each pair of elements e1 and e2 + within seq1 and seq2 respectively.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
     #include <boost/fusion/algorithm/transformation/transform.hpp>
     
    - + Example
    @@ -209,7 +209,7 @@
         };
     };
     ...
    -assert(transform(make_vector(1,2,3), triple()) == make_vector(3,6,9));
    +assert(transform(make_vector(1,2,3), triple()) == make_vector(3,6,9));
     
    diff --git a/doc/html/fusion/algorithms/transformation/functions/zip.html b/doc/html/fusion/algorithms/transformation/functions/zip.html index 2efc5375..0afe3fe8 100644 --- a/doc/html/fusion/algorithms/transformation/functions/zip.html +++ b/doc/html/fusion/algorithms/transformation/functions/zip.html @@ -3,7 +3,7 @@ zip - + @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ of the members of the component sequences.

    - + Synopsis
    @@ -44,11 +44,11 @@
         ...
         typename SequenceN
         >
    -typename result_of::zip<Sequence1, Sequence2, ... SequenceN>::type 
    +typename result_of::zip<Sequence1, Sequence2, ... SequenceN>::type 
     zip(Sequence1 const& seq1, Sequence2 const& seq2, ... SequenceN const& seqN);
     
    -

    Table 1.67. Parameters

    +

    Table 1.67. Parameters

    @@ -62,7 +62,7 @@ - + - + - + - + @@ -123,7 +123,7 @@
    -seq1 to seqN +seq1 to seqN Each sequence is a model of
    - + Expression Semantics
    -zip(seq1, seq2, ... seqN);
    +zip(seq1, seq2, ... seqN);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence containing - tuples of elements from sequences seq1 - to seqN. For example, - applying zip to tuples (1, 2, 3) - and ('a', 'b', - 'c') - would return ((1, 'a'),(2, 'b'),(3, - 'c')) + Semantics: Returns a sequence containing + tuples of elements from sequences seq1 + to seqN. For example, + applying zip to tuples (1, 2, 3) + and ('a', 'b', + 'c') + would return ((1, 'a'),(2, 'b'),(3, + 'c'))

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
     #include <boost/fusion/algorithm/transformation/zip.hpp>
     
    - + Example
    -vector<int,char> v1(1, 'a');
    -vector<int,char> v2(2, 'b');
    -assert(zip(v1, v2) == make_vector(make_vector(1, 2),make_vector('a', 'b'));
    +vector<int,char> v1(1, 'a');
    +vector<int,char> v2(2, 'b');
    +assert(zip(v1, v2) == make_vector(make_vector(1, 2),make_vector('a', 'b'));
     
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions.html b/doc/html/fusion/algorithms/transformation/metafunctions.html index adc5b67d..d9dbdf55 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions.html @@ -3,7 +3,7 @@ Metafunctions - + diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/clear.html b/doc/html/fusion/algorithms/transformation/metafunctions/clear.html index 4b7ccbd4..e6f50c6f 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions/clear.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions/clear.html @@ -3,7 +3,7 @@ clear - + @@ -26,15 +26,15 @@
    - + Description

    - Returns the result type of clear, given the input sequence + Returns the result type of clear, given the input sequence type.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.80. Parameters

    +

    Table 1.80. Parameters

    @@ -60,7 +60,7 @@ - + @@ -68,30 +68,30 @@
    Description
    SequenceSequence Any type Operation's argument
    - + Expression Semantics
    -result_of::clear<Sequence>::type
    +result_of::clear<Sequence>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns an empty sequence. + Semantics: Returns an empty sequence.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/erase.html b/doc/html/fusion/algorithms/transformation/metafunctions/erase.html
    index 9848b0ef..635dd8c4 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/erase.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/erase.html
    @@ -3,7 +3,7 @@
     
     erase
     
    -
    +
     
     
     
    @@ -26,15 +26,15 @@
     
     

    - Returns the result type of erase, given the input sequence + Returns the result type of erase, given the input sequence and range delimiting iterator types.

    - + Description
    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.81. Parameters

    +

    Table 1.81. Parameters

    @@ -62,7 +62,7 @@ - + - + - +
    SequenceSequence A model of Forward @@ -71,7 +71,7 @@ Operation's argument
    It1It1 A model of Forward @@ -80,7 +80,7 @@ Operation's argument
    It2It2 A model of Forward @@ -92,44 +92,44 @@
    - + Expression Semantics
    -result_of::erase<Sequence, It1>::type
    +result_of::erase<Sequence, It1>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence with - the element at It1 removed. + Semantics: Returns a new sequence with + the element at It1 removed.

    -result_of::erase<Sequence, It1, It2>::type
    +result_of::erase<Sequence, It1, It2>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence with - the elements between It1 - and It2 removed. + Semantics: Returns a new sequence with + the elements between It1 + and It2 removed.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html b/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html
    index d7bb8e8a..8783615f 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html
    @@ -3,7 +3,7 @@
     
     erase_key
     
    -
    +
     
     
     
    @@ -26,15 +26,15 @@
     
     
    - + Description

    - Returns the result type of erase_key, given the sequence + Returns the result type of erase_key, given the sequence and key types.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.82. Parameters

    +

    Table 1.82. Parameters

    @@ -62,7 +62,7 @@ - + - + @@ -80,32 +80,32 @@
    SequenceSequence A model of Associative @@ -71,7 +71,7 @@ Operation's argument
    KeyKey Any type Key type
    - + Expression Semantics
    -result_of::erase_key<Sequence, Key>::type
    +result_of::erase_key<Sequence, Key>::type
     

    - Return type: A model of Return type: A model of Associative Sequence.

    - Semantics: Returns a sequence with the - elements of Sequence, - except those with key Key. + Semantics: Returns a sequence with the + elements of Sequence, + except those with key Key.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/filter.html b/doc/html/fusion/algorithms/transformation/metafunctions/filter.html
    index a513f25a..9aef964b 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/filter.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/filter.html
    @@ -3,7 +3,7 @@
     
     filter
     
    -
    +
     
     
     
    @@ -26,15 +26,15 @@
     
     
    - + Description

    - Returns the result type of filter given the sequence type + Returns the result type of filter given the sequence type and type to retain.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.72. Parameter

    +

    Table 1.72. Parameter

    @@ -62,7 +62,7 @@ - + - + @@ -80,34 +80,34 @@
    SequenceSequence A model of Forward @@ -71,7 +71,7 @@ Operation's argument
    TT Any type Type to retain
    - + Expression Semantics
    -result_of::filter<Sequence, T>::type
    +result_of::filter<Sequence, T>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence containing - the elements of Sequence - that are of type T. Equivalent - to result_of::filter_if<Sequence, - boost::is_same<mpl::_, T> >::type. + Semantics: Returns a sequence containing + the elements of Sequence + that are of type T. Equivalent + to result_of::filter_if<Sequence, + boost::is_same<mpl::_, T> >::type.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html
    index 5156495c..1dc865d8 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html
    @@ -3,7 +3,7 @@
     
     filter_if
     
    -
    +
     
     
     
    @@ -26,15 +26,15 @@
     
     
    - + Description

    - Returns the result type of filter_if given the sequence + Returns the result type of filter_if given the sequence and unary MPL Lambda Expression predicate type.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.73. Parameter

    +

    Table 1.73. Parameter

    @@ -62,7 +62,7 @@ - + - + @@ -80,33 +80,33 @@
    SequenceSequence A model of Forward @@ -71,7 +71,7 @@ Operation's argument
    PredPred A unary MPL Lambda Expression Type to retain
    - + Expression Semantics
    -result_of::filter_if<Sequence, Pred>::type
    +result_of::filter_if<Sequence, Pred>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence containing - the elements of Sequence - for which Pred evaluates - to boost::mpl::true_. + Semantics: Returns a sequence containing + the elements of Sequence + for which Pred evaluates + to boost::mpl::true_.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/insert.html b/doc/html/fusion/algorithms/transformation/metafunctions/insert.html
    index f380369b..0295bdcb 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/insert.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/insert.html
    @@ -3,7 +3,7 @@
     
     insert
     
    -
    +
     
     
     
    @@ -26,15 +26,15 @@
     
     
    - + Description

    - Returns the result type of insert, given the sequence, + Returns the result type of insert, given the sequence, position iterator and insertion types.

    - + Synopsis
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.83. Parameters

    +

    Table 1.83. Parameters

    @@ -63,7 +63,7 @@ - + - + - + @@ -90,33 +90,33 @@
    SequenceSequence A model of Forward @@ -72,7 +72,7 @@ Operation's argument
    PositionPosition A model of Forward @@ -81,7 +81,7 @@ Operation's argument
    TT Any type Operation's argument
    - + Expression Semantics
    -result_of::insert<Sequence, Position, T>::type
    +result_of::insert<Sequence, Position, T>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence with an - element of type T inserted - at position Position - in Sequence. + Semantics: Returns a sequence with an + element of type T inserted + at position Position + in Sequence.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html b/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html
    index 832f3de5..5238abb0 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html
    @@ -3,7 +3,7 @@
     
     insert_range
     
    -
    +
     
     
     
    @@ -26,15 +26,15 @@
     
     
    - + Description

    - Returns the result type of insert_range, given the input + Returns the result type of insert_range, given the input sequence, position iterator and insertion range types.

    - + Synopsis
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.84. Parameters

    +

    Table 1.84. Parameters

    @@ -63,7 +63,7 @@ - + - + - +
    SequenceSequence A model of Forward @@ -72,7 +72,7 @@ Operation's argument
    PositionPosition A model of Forward @@ -81,7 +81,7 @@ Operation's argument
    RangeRange A model of Forward @@ -93,33 +93,33 @@
    - + Expression Semantics
    -result_of::insert_range<Sequence, Position, Range>::type
    +result_of::insert_range<Sequence, Position, Range>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence with the - elements of Range inserted - at position Position - into Sequence. + Semantics: Returns a sequence with the + elements of Range inserted + at position Position + into Sequence.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/join.html b/doc/html/fusion/algorithms/transformation/metafunctions/join.html
    index bbb47996..8ff354de 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/join.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/join.html
    @@ -3,7 +3,7 @@
     
     join
     
    -
    +
     
     
     
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the result of joining 2 sequences, given the sequence types.

    - + Synopsis
    @@ -47,33 +47,33 @@
     };
     
    - + Expression Semantics
    -result_of::join<LhSequence, RhSequence>::type
    +result_of::join<LhSequence, RhSequence>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence containing - the elements of LhSequence - followed by the elements of RhSequence. + Semantics: Returns a sequence containing + the elements of LhSequence + followed by the elements of RhSequence. The order of the elements in the 2 sequences is preserved.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html b/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html
    index cd882ed8..ba9e6cb7 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html
    @@ -3,7 +3,7 @@
     
     pop_back
     
    -
    +
     
     
     
    @@ -26,15 +26,15 @@
     
     
    - + Description

    - Returns the result type of pop_back, given the input sequence + Returns the result type of pop_back, given the input sequence type.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.85. Parameters

    +

    Table 1.85. Parameters

    @@ -60,7 +60,7 @@ - +
    Description
    SequenceSequence A model of Forward @@ -71,32 +71,32 @@
    - + Expression Semantics
    -result_of::pop_back<Sequence>::type
    +result_of::pop_back<Sequence>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence with all - the elements of Sequence + Semantics: Returns a sequence with all + the elements of Sequence except the last element.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html b/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html
    index 015eea3d..2f91bf00 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html
    @@ -3,7 +3,7 @@
     
     pop_front
     
    -
    +
     
     
     
    @@ -26,15 +26,15 @@
     
     
    - + Description

    - Returns the result type of pop_front, given the input sequence + Returns the result type of pop_front, given the input sequence type.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.86. Parameters

    +

    Table 1.86. Parameters

    @@ -60,7 +60,7 @@ - +
    Description
    SequenceSequence A model of Forward @@ -71,32 +71,32 @@
    - + Expression Semantics
    -result_of::pop_front<Sequence>::type
    +result_of::pop_front<Sequence>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence with all - the elements of Sequence + Semantics: Returns a sequence with all + the elements of Sequence except the first element.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html b/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html
    index c55e4b15..62c966da 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html
    @@ -3,7 +3,7 @@
     
     push_back
     
    -
    +
     
     
     
    @@ -26,15 +26,15 @@
     
     
    - + Description

    - Returns the result type of push_back, given the types of + Returns the result type of push_back, given the types of the input sequence and element to push.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.87. Parameters

    +

    Table 1.87. Parameters

    @@ -62,7 +62,7 @@ - + - + @@ -80,33 +80,33 @@
    SequenceSequence A model of Forward @@ -71,7 +71,7 @@ Operation's argument
    TT Any type Operation's argument
    - + Expression Semantics
    -result_of::push_back<Sequence, T>::type
    +result_of::push_back<Sequence, T>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence with the - elements of Sequence - and an element of type T + Semantics: Returns a sequence with the + elements of Sequence + and an element of type T added to the end.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html b/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html
    index 6a7f294c..3d5806ee 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html
    @@ -3,7 +3,7 @@
     
     push_front
     
    -
    +
     
     
     
    @@ -26,15 +26,15 @@
     
     
    - + Description

    - Returns the result type of push_front, given the types + Returns the result type of push_front, given the types of the input sequence and element to push.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.88. Parameters

    +

    Table 1.88. Parameters

    @@ -62,7 +62,7 @@ - + - + @@ -80,33 +80,33 @@
    SequenceSequence A model of Forward @@ -71,7 +71,7 @@ Operation's argument
    TT Any type Operation's argument
    - + Expression Semantics
    -result_of::push_front<Sequence, T>::type
    +result_of::push_front<Sequence, T>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence with the - elements of Sequence - and an element of type T + Semantics: Returns a sequence with the + elements of Sequence + and an element of type T added to the beginning.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/remove.html b/doc/html/fusion/algorithms/transformation/metafunctions/remove.html
    index 34f3bbd1..e8c40d72 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/remove.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/remove.html
    @@ -3,7 +3,7 @@
     
     remove
     
    -
    +
     
     
     
    @@ -26,15 +26,15 @@
     
     
    - + Description

    - Returns the result type of remove, given the sequence and + Returns the result type of remove, given the sequence and removal types.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.77. Parameters

    +

    Table 1.77. Parameters

    @@ -62,7 +62,7 @@ - + - + @@ -80,34 +80,34 @@
    SequenceSequence A model of Forward @@ -71,7 +71,7 @@ Operation's argument
    TT Any type Remove elements of this type
    - + Expression Semantics
    -result_of::remove<Sequence, T>::type
    +result_of::remove<Sequence, T>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence containing - the elements of Sequence - not of type T. Equivalent - to result_of::replace_if<Sequence, - boost::is_same<mpl::_, T> >::type. + Semantics: Returns a sequence containing + the elements of Sequence + not of type T. Equivalent + to result_of::replace_if<Sequence, + boost::is_same<mpl::_, T> >::type.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html
    index 0a8f37c1..c7bf5cf6 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html
    @@ -3,7 +3,7 @@
     
     remove_if
     
    -
    +
     
     
     
    @@ -26,15 +26,15 @@
     
     
    - + Description

    - Returns the result type of remove_if, given the input sequence + Returns the result type of remove_if, given the input sequence and unary MPL Lambda Expression predicate types.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.78. Parameters

    +

    Table 1.78. Parameters

    @@ -62,7 +62,7 @@ - + - +
    SequenceSequence A model of Forward @@ -71,44 +71,44 @@ Operation's argument
    PredPred A model of unary MPL Lambda Expression Remove elements - which evaluate to boost::mpl::true_ + which evaluate to boost::mpl::true_
    - + Expression Semantics
    -result_of::remove_if<Sequence, Pred>::type
    +result_of::remove_if<Sequence, Pred>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence containing - the elements of Sequence - for which Pred evaluates - to boost::mpl::false_. + Semantics: Returns a sequence containing + the elements of Sequence + for which Pred evaluates + to boost::mpl::false_.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/replace.html b/doc/html/fusion/algorithms/transformation/metafunctions/replace.html
    index af8c55ac..75193f00 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/replace.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/replace.html
    @@ -3,7 +3,7 @@
     
     replace
     
    -
    +
     
     
     
    @@ -26,15 +26,15 @@
     
     
    - + Description

    - Returns the result type of replace, given the types of + Returns the result type of replace, given the types of the input sequence and element to replace.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.75. Parameters

    +

    Table 1.75. Parameters

    @@ -62,7 +62,7 @@ - + - + @@ -80,31 +80,31 @@
    SequenceSequence A model of Forward @@ -71,7 +71,7 @@ Operation's argument
    TT Any type The type of the search and replacement objects
    - + Expression Semantics
    -result_of::replace<Sequence,T>::type
    +result_of::replace<Sequence,T>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns the return type of - replace. + Semantics: Returns the return type of + replace.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html
    index 3465b4d0..8ee42bc8 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html
    @@ -3,7 +3,7 @@
     
     replace_if
     
    -
    +
     
     
     
    @@ -26,17 +26,17 @@
     
     
    - + Description

    - Returns the result type of replace_if, given the types + Returns the result type of replace_if, given the types of the sequence, Polymorphic Function Object predicate and replacement object.

    - + Synopsis
    @@ -50,7 +50,7 @@
     };
     
    -

    Table 1.76. Parameters

    +

    Table 1.76. Parameters

    @@ -64,7 +64,7 @@ - + - + - + @@ -91,31 +91,31 @@
    SequenceSequence A model of Forward @@ -73,7 +73,7 @@ Operation's argument
    FF A model of unary Polymorphic @@ -82,7 +82,7 @@ Replacement predicate
    TT Any type The type of the replacement object
    - + Expression Semantics
    -result_of::replace_if<Sequence,F,T>::type
    +result_of::replace_if<Sequence,F,T>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns the return type of - replace_if. + Semantics: Returns the return type of + replace_if.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html b/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html
    index 855a6168..e8be4300 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html
    @@ -3,7 +3,7 @@
     
     reverse
     
    -
    +
     
     
     
    @@ -26,15 +26,15 @@
     
     
    - + Description

    - Returns the result type of reverse, given the input sequence + Returns the result type of reverse, given the input sequence type.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.79. Parameters

    +

    Table 1.79. Parameters

    @@ -60,7 +60,7 @@ - +
    Description
    SequenceSequence A model of Bidirectional @@ -71,31 +71,31 @@
    - + Expression Semantics
    -result_of::reverse<Sequence>::type
    +result_of::reverse<Sequence>::type
     

    - Return type: A model of Return type: A model of Bidirectional Sequence.

    - Semantics: Returns a sequence with the - elements in the reverse order to Sequence. + Semantics: Returns a sequence with the + elements in the reverse order to Sequence.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/transform.html b/doc/html/fusion/algorithms/transformation/metafunctions/transform.html
    index 3a11c276..629edba8 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/transform.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/transform.html
    @@ -3,7 +3,7 @@
     
     transform
     
    -
    +
     
     
     
    @@ -26,17 +26,17 @@
     
     
    - + Description

    - Returns the result of type transform, given the sequence + Returns the result of type transform, given the sequence and Polymorphic Function Object types.

    - + Synopsis
    @@ -50,7 +50,7 @@
     };
     
    -

    Table 1.74. Parameters

    +

    Table 1.74. Parameters

    @@ -64,7 +64,7 @@ - + - +
    SequenceSequence A model of Forward @@ -72,7 +72,7 @@ Operation's argument
    FF A model of unary Polymorphic @@ -84,31 +84,31 @@
    - + Expression Semantics
    -result_of::transform<Sequence, F>::type
    +result_of::transform<Sequence, F>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence with values - F::result<E>::type for each element type E in Sequence. + Semantics: Returns a sequence with values + F::result<E>::type for each element type E in Sequence.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/zip.html b/doc/html/fusion/algorithms/transformation/metafunctions/zip.html
    index 3742232a..9bc86f32 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/zip.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/zip.html
    @@ -3,7 +3,7 @@
     
     zip
     
    -
    +
     
     
     
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -34,7 +34,7 @@ of the members of the component sequences.

    - + Synopsis
    @@ -50,37 +50,37 @@
     };
     
    - + Expression Semantics
    -result_of::zip<Sequence1, Sequence2, ... SequenceN>::type
    +result_of::zip<Sequence1, Sequence2, ... SequenceN>::type
     

    - Return type: A model of the most restrictive - traversal category of sequences Sequence1 - to SequenceN. + Return type: A model of the most restrictive + traversal category of sequences Sequence1 + to SequenceN.

    - Semantics: Return a sequence containing + Semantics: Return a sequence containing tuples of elements from each sequence. For example, applying zip to tuples - (1, 2, - 3) - and ('a', 'b', - 'c') - would return ((1, 'a'),(2, 'b'),(3, - 'c')) + (1, 2, + 3) + and ('a', 'b', + 'c') + would return ((1, 'a'),(2, 'b'),(3, + 'c'))

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/change_log.html b/doc/html/fusion/change_log.html
    index d3079150..8da6cb1f 100644
    --- a/doc/html/fusion/change_log.html
    +++ b/doc/html/fusion/change_log.html
    @@ -3,7 +3,7 @@
     
     Change log
     
    -
    +
     
     
     
    @@ -30,11 +30,11 @@
         

    • - Sep 27, 2006: Added boost::tuple + Sep 27, 2006: Added boost::tuple support.
    • - Nov 17, 2006: Added boost::variant + Nov 17, 2006: Added boost::variant support.
    diff --git a/doc/html/fusion/extension.html b/doc/html/fusion/extension.html index 627fbd55..ddcc9407 100644 --- a/doc/html/fusion/extension.html +++ b/doc/html/fusion/extension.html @@ -3,7 +3,7 @@ Extension - + @@ -27,8 +27,8 @@ Extension

    The Fusion library is designed to be extensible, new sequences types can easily - be added. In fact, the library support for std::pair, - boost::array and MPL + be added. In fact, the library support for std::pair, + boost::array and MPL sequences is entirely provided using the extension mechanism.

    @@ -48,7 +48,7 @@

    - + Our example

    @@ -73,14 +73,14 @@

    We are going to pretend that this type has been provided by a 3rd party library, and therefore cannot be modified. We shall work through all the necessary steps - to enable example_struct to + to enable example_struct to serve as an Associative Sequence as described in the Quick Start guide.

    - + Enabling Tag Dispatching

    @@ -95,9 +95,9 @@ }

    - Next we need to enable the traits::tag_of + Next we need to enable the traits::tag_of metafunction to return our newly chosen tag type for operations involving our - sequence. This is done by specializing traits::tag_of + sequence. This is done by specializing traits::tag_of for our sequence type.

    @@ -112,8 +112,8 @@
     }}}
     

    - traits::tag_of also has a second template argument, - that can be used in conjuction with boost::enable_if + traits::tag_of also has a second template argument, + that can be used in conjuction with boost::enable_if to provide tag support for groups of related types. This feature is not necessary for our sequence, but for an example see the code in:

    @@ -121,7 +121,7 @@ #include <boost/fusion/sequence/adapted/mpl/tag_of.hpp>

    - + Designing a suitable iterator

    @@ -131,9 +131,9 @@ access iterator in our example.

    - We will use a simple design, in which the 2 members of example_struct - are given numbered indices, 0 for name - and 1 for age respectively. + We will use a simple design, in which the 2 members of example_struct + are given numbered indices, 0 for name + and 1 for age respectively.

     template<typename Struct, int Pos>
    @@ -160,37 +160,37 @@
             of the current element.
           
     
  • - The typedefs struct_type - and index provide convenient + The typedefs struct_type + and index provide convenient access to information we will need later in the implementation.
  • - The typedef category allows - the traits::category_of + The typedef category allows + the traits::category_of metafunction to establish the traversal category of the iterator.
  • - The constructor stores a reference to the example_struct + The constructor stores a reference to the example_struct being iterated over.
  • We also need to enable tag dispatching for our iterator type, with another specialization - of traits::tag_of. + of traits::tag_of.

    In isolation, the iterator implementation is pretty dry. Things should become clearer as we add features to our implementation.

    - + A first couple of instructive features

    - To start with, we will get the result_of::value_of metafunction working. To - do this, we provide a specialization of the boost::fusion::extension::value_of_impl + To start with, we will get the result_of::value_of metafunction working. To + do this, we provide a specialization of the boost::fusion::extension::value_of_impl template for our iterator's tag type.

    @@ -215,29 +215,29 @@
     

    The implementation itself is pretty simple, it just uses 2 partial specializations - to provide the type of the 2 different members of example_struct, + to provide the type of the 2 different members of example_struct, based on the index of the iterator.

    - To understand how value_of_impl - is used by the library we will look at the implementation of value_of: + To understand how value_of_impl + is used by the library we will look at the implementation of value_of:

     template <typename Iterator>
    -struct value_of
    +struct value_of
         : extension::value_of_impl<typename detail::tag_of<Iterator>::type>::
             template apply<Iterator>
     {};
     

    - So value_of + So value_of uses tag dispatching to select an MPL Metafunction Class to provide its functionality. You will notice this pattern throughout the implementation of Fusion.

    Ok, lets enable dereferencing of our iterator. In this case we must provide - a suitable specialization of deref_impl. + a suitable specialization of deref_impl.

     template<>
    @@ -275,17 +275,17 @@
     }
     

    - The use of deref_impl is very - similar to that of value_of_impl, - but it also provides some runtime functionality this time via the call static member function. To see how - deref_impl is used, lets have - a look at the implementation of deref: + The use of deref_impl is very + similar to that of value_of_impl, + but it also provides some runtime functionality this time via the call static member function. To see how + deref_impl is used, lets have + a look at the implementation of deref:

     namespace result_of
     {
         template <typename Iterator>
    -    struct deref
    +    struct deref
             : extension::deref_impl<typename detail::tag_of<Iterator>::type>::
                 template apply<Iterator>
         {};
    @@ -293,24 +293,24 @@
     
     template <typename Iterator>
     typename result_of::deref<Iterator>::type
    -deref(Iterator const& i)
    +deref(Iterator const& i)
     {
         typedef result_of::deref<Iterator> deref_meta;
         return deref_meta::call(i);
     }
     

    - So again result_of::deref uses tag - dispatching in exactly the same way as the value_of implementation. The runtime - functionality used by deref is provided by the call static function of the selected MPL + So again result_of::deref uses tag + dispatching in exactly the same way as the value_of implementation. The runtime + functionality used by deref is provided by the call static function of the selected MPL Metafunction Class.

    - The actual implementation of deref_impl - is slightly more complex than that of value_of_impl. - We also need to implement the call + The actual implementation of deref_impl + is slightly more complex than that of value_of_impl. + We also need to implement the call function, which returns a reference to the appropriate member of the underlying - sequence. We also require a little bit of metaprogramming to return const references if the underlying sequence + sequence. We also require a little bit of metaprogramming to return const references if the underlying sequence is const.

    @@ -318,23 +318,23 @@ -
    [Note] Note

    +

    Although there is a fair amount of left to do to produce a fully fledged - Fusion sequence, value_of and deref illustrate all the signficant + Fusion sequence, value_of and deref illustrate all the signficant concepts required. The remainder of the process is very repetitive, simply - requiring implementation of a suitable xxxx_impl - for each feature xxxx. + requiring implementation of a suitable xxxx_impl + for each feature xxxx.

    - + Implementing the remaining iterator functionality

    - Ok, now we have seen the way value_of and deref work, everything else will work + Ok, now we have seen the way value_of and deref work, everything else will work in pretty much the same way. Lets start with forward iteration, by providing - a next_impl: + a next_impl:

     template<>
    @@ -356,40 +356,40 @@
     };
     

    - This should be very familiar from our deref_impl + This should be very familiar from our deref_impl implementation, we will be using this approach again and again now. Our design - is simply to increment the index + is simply to increment the index counter to move on to the next element. The various other iterator manipulations - we need to perform will all just involve simple calculations with the index variables. + we need to perform will all just involve simple calculations with the index variables.

    - We also need to provide a suitable equal_to_impl + We also need to provide a suitable equal_to_impl so that iterators can be correctly compared. A Bidirectional - Iterator will also need an implementation of prior_impl. + Iterator will also need an implementation of prior_impl. For a Random - Access Iterator distance_impl - and advance_impl also need + Access Iterator distance_impl + and advance_impl also need to be provided in order to satisfy the necessary complexity guarantees. As our iterator is a Random Access Iterator we will have to implement all of these functions.

    - Full implementations of prior_impl, - advance_impl, distance_impl and equal_to_impl + Full implementations of prior_impl, + advance_impl, distance_impl and equal_to_impl are provided in the example code.

    - + Implementing the intrinsic functions of the sequence

    In order that Fusion can correctly identify our sequence as a Fusion sequence, - we need to enable is_sequence - for our sequence type. As usual we just create an impl + we need to enable is_sequence + for our sequence type. As usual we just create an impl type specialized for our sequence tag:

    @@ -401,14 +401,14 @@
     };
     

    - We've some similar formalities to complete, providing category_of_impl - so Fusion can correctly identify our sequence type, and is_view_impl + We've some similar formalities to complete, providing category_of_impl + so Fusion can correctly identify our sequence type, and is_view_impl so Fusion can correctly identify our sequence as not being a View type. Implementations are provide in the example code.

    Now we've completed some formalities, on to more interesting features. Lets - get begin working so that we can get an + get begin working so that we can get an iterator to start accessing the data in our sequence.

    @@ -431,32 +431,32 @@
     

    The implementation uses the same ideas we have applied throughout, in this case we are just creating one of the iterators we developed earlier, pointing - to the first element in the sequence. The implementation of end is very similar, and is provided + to the first element in the sequence. The implementation of end is very similar, and is provided in the example code.

    For our Random - Access Sequence we will also need to implement size_impl, - value_at_impl and at_impl. + Access Sequence we will also need to implement size_impl, + value_at_impl and at_impl.

    - + Enabling our type as an associative container

    - In order for example_struct + In order for example_struct to serve as an associative container, we need to enable 3 lookup features, - at_key, value_at_key and has_key. We also need to provide an - implementation of the is_associative + at_key, value_at_key and has_key. We also need to provide an + implementation of the is_associative trait so that our sequence can be correctly identified as an associative container.

    - To implement at_key_impl we - need to associate the fields::age and - fields::age types described in the Quick - Start guide with the appropriate members of example_struct. + To implement at_key_impl we + need to associate the fields::age and + fields::age types described in the Quick + Start guide with the appropriate members of example_struct. Our implementation is as follows:

    @@ -499,15 +499,15 @@
     

    Its all very similar to the implementations we've seen previously, such as - deref_impl and value_of_impl. Instead of identifying the - members by index or position, we are now selecting them using the types fields::name and fields::age. The - implementations of value_at_key_impl - and has_key_impl are equally + deref_impl and value_of_impl. Instead of identifying the + members by index or position, we are now selecting them using the types fields::name and fields::age. The + implementations of value_at_key_impl + and has_key_impl are equally straightforward, and are provided in the example code, along with an implementation - of is_associative_impl. + of is_associative_impl.

    - + Summary

    @@ -517,8 +517,8 @@ pattern.

    - The support for std::pair, MPL - sequences, and boost::array all use the same approach, and provide + The support for std::pair, MPL + sequences, and boost::array all use the same approach, and provide additional examples of the approach for a variety of types.

    diff --git a/doc/html/fusion/introduction.html b/doc/html/fusion/introduction.html index 52f9b4fd..593c454c 100644 --- a/doc/html/fusion/introduction.html +++ b/doc/html/fusion/introduction.html @@ -3,7 +3,7 @@ Introduction - + @@ -29,9 +29,9 @@ An advantage other languages such as Python and Lisp/ Scheme, ML and Haskell, etc., over C++ is the ability to have heterogeneous containers that can hold arbitrary element types. All the containers in the standard library can only - hold a specific type. A vector<int> - can only hold ints. A list<X> can - only hold elements of type X, + hold a specific type. A vector<int> + can only hold ints. A list<X> can + only hold elements of type X, and so on.

    @@ -41,8 +41,8 @@ on virtual functions to provide polymorphic behavior since the actual type is erased as soon as you store a pointer to a derived class to a pointer to its base. The held objects must be related: you cannot hold objects of unrelated - types such as char, int, class - X, float, + types such as char, int, class + X, float, etc. Oh sure you can use something like Boost.Any to hold arbitrary types, but then you pay more in terms of runtime costs and due to the fact that you practically erased all type information, you'll have @@ -51,7 +51,7 @@

    The Boost.Tuple library written by Jaakko - Jarvi provides heterogeneous containers in C++. The tuple + Jarvi provides heterogeneous containers in C++. The tuple is a basic data structure that can hold heterogeneous types. It's a good first step, but it's not complete. What's missing are the algorithms. It's nice that we can store and retrieve data to and from tuples, pass them around as arguments @@ -89,23 +89,23 @@ fusion algorithms are functional in nature such that algorithms are non mutating (no side effects). However, due to the high cost of returning full sequences such as vectors and lists, Views are returned from Fusion - algorithms instead. For example, the transform algorithm does not actually - return a transformed version of the original sequence. transform returns a transform_view. This view holds a + algorithms instead. For example, the transform algorithm does not actually + return a transformed version of the original sequence. transform returns a transform_view. This view holds a reference to the original sequence plus the transform function. Iteration over - the transform_view + the transform_view will apply the transform function over the sequence elements on demand. This lazy evaluation scheme allows us to chain as many algorithms as we want without incurring a high runtime penalty.

    The lazy evaluation scheme where algorithms return views - allows operations such as push_back to be totally generic. In - Fusion, push_back is actually a generic algorithm - that works on all sequences. Given an input sequence s - and a value x, Fusion's push_back algorithm simply returns - a joint_view: - a view that holds a reference to the original sequence s - and the value x. Functions + allows operations such as push_back to be totally generic. In + Fusion, push_back is actually a generic algorithm + that works on all sequences. Given an input sequence s + and a value x, Fusion's push_back 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.

    diff --git a/doc/html/fusion/iterators.html b/doc/html/fusion/iterators.html index 803e4890..11313fef 100644 --- a/doc/html/fusion/iterators.html +++ b/doc/html/fusion/iterators.html @@ -3,7 +3,7 @@ Iterators - + @@ -74,7 +74,7 @@ Sequence.

    - + Header

    diff --git a/doc/html/fusion/iterators/concepts.html b/doc/html/fusion/iterators/concepts.html
    index ccc0b159..303291b2 100644
    --- a/doc/html/fusion/iterators/concepts.html
    +++ b/doc/html/fusion/iterators/concepts.html
    @@ -3,7 +3,7 @@
     
     Concepts
     
    -
    +
     
     
     
    diff --git a/doc/html/fusion/iterators/concepts/bidirectional_iterator.html b/doc/html/fusion/iterators/concepts/bidirectional_iterator.html
    index 6a7520b6..4ec1436f 100644
    --- a/doc/html/fusion/iterators/concepts/bidirectional_iterator.html
    +++ b/doc/html/fusion/iterators/concepts/bidirectional_iterator.html
    @@ -4,7 +4,7 @@
     Bidirectional
             Iterator
     
    -
    +
     
     
     Bidirectional
             Iterator
     
    - + Description

    @@ -41,27 +41,27 @@

    Notation

    -
    i
    +
    i
    A Bidirectional Iterator
    -
    I
    +
    I
    A Bidirectional Iterator type
    -
    M
    +
    M
    An MPL integral constant
    -
    N
    +
    N
    An integral constant
    - + Refinement of
    @@ -70,7 +70,7 @@ Iterator">Forward Iterator

    - + Expression requirements
    @@ -93,28 +93,28 @@
    next(i)next(i) Bidirectional Iterator Constant
    prior(i)prior(i) Bidirectional Iterator Constant
    advance_c<N>(i)advance_c<N>(i) Bidirectional Iterator Constant
    advance<M>(i)advance<M>(i) Bidirectional Iterator
    - + Meta Expressions
    @@ -137,13 +137,13 @@ Compile Time Complexity -result_of::prior<I>::type +result_of::prior<I>::type Amortized constant time
    - + Expression Semantics
    @@ -163,14 +163,14 @@ Semantics -prior(i) +prior(i) An - iterator to the element preceding i + iterator to the element preceding i
    - + Invariants

    @@ -179,44 +179,44 @@ Iterator, the following invariants always hold:

    - + Models
    diff --git a/doc/html/fusion/iterators/concepts/forward_iterator.html b/doc/html/fusion/iterators/concepts/forward_iterator.html index a5dd580b..07abf518 100644 --- a/doc/html/fusion/iterators/concepts/forward_iterator.html +++ b/doc/html/fusion/iterators/concepts/forward_iterator.html @@ -4,7 +4,7 @@ Forward Iterator - + @@ -30,7 +30,7 @@ Iterator">Forward Iterator
    - + Description

    @@ -41,29 +41,29 @@

    Notation

    -
    i, - j
    +
    i, + j
    Forward Iterators
    -
    I, - J
    +
    I, + J
    Forward Iterator types
    -
    M
    +
    M
    An MPL integral constant
    -
    N
    +
    N
    An integral constant
    - + Expression requirements
    @@ -85,56 +85,56 @@ - + - + - + - + - + - - + + - - + + - - + +
    next(i)next(i) Forward Iterator Constant
    i == - ji == + j Convertible to bool Constant
    i != - ji != + j Convertible to bool Constant
    advance_c<N>(i)advance_c<N>(i) Forward Iterator Constant
    advance<M>(i)advance<M>(i) Forward Iterator Constant
    distance(i, j)result_of::distance<I, J>::typedistance(i, j)result_of::distance<I, J>::type Constant
    deref(i)result_of::deref<I>::typederef(i)result_of::deref<I>::type Constant
    *iresult_of::deref<I>::type*iresult_of::deref<I>::type Constant
    - + Meta Expressions
    @@ -149,41 +149,41 @@ -result_of::next<I>::type +result_of::next<I>::type Amortized constant time -result_of::equal_to<I, J>::type +result_of::equal_to<I, J>::type Amortized constant time -result_of::advance_c<I, N>::type +result_of::advance_c<I, N>::type Linear -result_of::advance<I ,M>::type +result_of::advance<I ,M>::type Linear -result_of::distance<I ,J>::type +result_of::distance<I ,J>::type Linear -result_of::deref<I>::type +result_of::deref<I>::type Amortized constant time -result_of::value_of<I>::type +result_of::value_of<I>::type Amortized constant time
    - + Expression Semantics
    @@ -198,136 +198,136 @@ -next(i) +next(i) An - iterator to the element following i + iterator to the element following i -i == - j +i == + j Iterator equality comparison -i != - j +i != + j Iterator inequality comparison -advance_c<N>(i) +advance_c<N>(i) An - iterator n elements after i + iterator n elements after i in the sequence -advance<M>(i) +advance<M>(i) Equivalent - to advance_c<M::value>(i) + to advance_c<M::value>(i) -distance(i, j) +distance(i, j) The - number of elements between i - and j + number of elements between i + and j -deref(i) +deref(i) The - element at positioni + element at positioni -*i +*i Equivalent - to deref(i) + to deref(i)
    - + Invariants

    The following invariants always hold:

      -
    • !(i - == j) == (i != j)
    • -
    • next(i) == advance_c<1>(i)
    • -
    • distance(i, advance_c<N>(i)) == N
    • +
    • !(i + == j) == (i != j)
    • +
    • next(i) == advance_c<1>(i)
    • +
    • distance(i, advance_c<N>(i)) == N
    • - Using next to traverse the + Using next to traverse the sequence will never return to a previously seen position
    • -deref(i) - is equivalent to *i +deref(i) + is equivalent to *i
    • - If i == - j then *i is equivalent to *j + If i == + j then *i is equivalent to *j
    - + Models
    diff --git a/doc/html/fusion/iterators/concepts/random_access_iterator.html b/doc/html/fusion/iterators/concepts/random_access_iterator.html index 03698f45..ff35adbd 100644 --- a/doc/html/fusion/iterators/concepts/random_access_iterator.html +++ b/doc/html/fusion/iterators/concepts/random_access_iterator.html @@ -4,7 +4,7 @@ Random Access Iterator - + Random Access Iterator
    - + Description

    @@ -41,29 +41,29 @@

    Notation

    -
    i, - j
    +
    i, + j
    Random Access Iterators
    -
    I, - J
    +
    I, + J
    Random Access Iterator types
    -
    M
    +
    M
    An MPL integral constant
    -
    N
    +
    N
    An integral constant
    - + Refinement of
    @@ -73,7 +73,7 @@ Iterator

    - + Expression requirements
    @@ -96,28 +96,28 @@ -next(i) +next(i) Random Access Iterator Constant -prior(i) +prior(i) Random Access Iterator Constant -advance_c<N>(i) +advance_c<N>(i) Random Access Iterator Constant -advance<M>(i) +advance<M>(i) Random Access Iterator @@ -126,7 +126,7 @@
    - + Meta Expressions
    @@ -141,53 +141,53 @@ -result_of::advance_c<I, N>::type +result_of::advance_c<I, N>::type Amortized constant time -result_of::advance<I, M>::type +result_of::advance<I, M>::type Amortized constant time -result_of::distance<I ,J>::type +result_of::distance<I ,J>::type Amortized constant time
    - + Models
    diff --git a/doc/html/fusion/iterators/functions/advance_c.html b/doc/html/fusion/iterators/functions/advance_c.html index 1c1031bf..bf5c044a 100644 --- a/doc/html/fusion/iterators/functions/advance_c.html +++ b/doc/html/fusion/iterators/functions/advance_c.html @@ -3,7 +3,7 @@ advance_c - + @@ -26,14 +26,14 @@
    - + Description

    Moves an iterator by a specified distance.

    - + Synopsis
    @@ -41,10 +41,10 @@
         typename I,
         int N
         >
    -typename result_of::advance_c<I, N>::type advance_c(I const& i); 
    +typename result_of::advance_c<I, N>::type advance_c(I const& i); 
     
    -

    Table 1.7. Parameters

    +

    Table 1.7. Parameters

    @@ -58,7 +58,7 @@ - + - + @@ -76,42 +76,42 @@
    ii Model of Forward @@ -67,7 +67,7 @@ Iterator to move relative to
    NN Integer constant Number of positions to move
    - + Expression Semantics
    -advance_c<N>(i);
    +advance_c<N>(i);
     

    - Return type: A model of the same iterator - concept as i. + Return type: A model of the same iterator + concept as i.

    - Semantics: Returns an iterator to the - element N positions from - i. If i + Semantics: Returns an iterator to the + element N positions from + i. If i is a Bidirectional - Iterator then N + Iterator then N may be negative.

    - + Header
     #include <boost/fusion/iterator/advance.hpp>
     
    - + Example
    -typedef vector<int,int,int> vec;
    +typedef vector<int,int,int> vec;
     
     vec v(1,2,3);
    -assert(deref(advance_c<2>(begin(v))) == 3);
    +assert(deref(advance_c<2>(begin(v))) == 3);
     
    diff --git a/doc/html/fusion/iterators/functions/deref.html b/doc/html/fusion/iterators/functions/deref.html index f5a02e20..4b0a5c88 100644 --- a/doc/html/fusion/iterators/functions/deref.html +++ b/doc/html/fusion/iterators/functions/deref.html @@ -3,7 +3,7 @@ deref - + @@ -26,24 +26,24 @@
    - + Description

    Deferences an iterator.

    - + Synopsis
     template<
         typename I
         >
    -typename result_of::deref<I>::type deref(I const& i);
    +typename result_of::deref<I>::type deref(I const& i);
     
    -

    Table 1.2. Parameters

    +

    Table 1.2. Parameters

    @@ -56,7 +56,7 @@ - +
    Description
    ii Model of Forward @@ -67,39 +67,39 @@
    - + Expression Semantics
    -deref(i);
    +deref(i);
     

    - Return type: result_of::deref<I>::type + Return type: result_of::deref<I>::type

    - Semantics: Dereferences the iterator - i. + Semantics: Dereferences the iterator + i.

    - + Header
     #include <boost/fusion/iterator/deref.hpp>
     
    - + Example
    -typedef vector<int,int&> vec;
    +typedef vector<int,int&> vec;
     
     int i(0);
     vec v(1,i);
    -assert(deref(begin(v)) == 1);
    -assert(deref(next(begin(v))) == 0);
    -assert(&(deref(next(begin(v)))) == &i);
    +assert(deref(begin(v)) == 1);
    +assert(deref(next(begin(v))) == 0);
    +assert(&(deref(next(begin(v)))) == &i);
     
    diff --git a/doc/html/fusion/iterators/functions/distance.html b/doc/html/fusion/iterators/functions/distance.html index 2ea11ce9..c09eb69f 100644 --- a/doc/html/fusion/iterators/functions/distance.html +++ b/doc/html/fusion/iterators/functions/distance.html @@ -3,7 +3,7 @@ distance - + @@ -26,14 +26,14 @@
    - + Description

    Returns the distance between 2 iterators.

    - + Synopsis
    @@ -41,10 +41,10 @@
         typename I,
         typename J
         >
    -typename result_of::distance<I, J>::type distance(I const& i, J const& j);
    +typename result_of::distance<I, J>::type distance(I const& i, J const& j);
     
    -

    Table 1.5. Parameters

    +

    Table 1.5. Parameters

    @@ -58,7 +58,7 @@
    -i, j +i, j Models of Forward @@ -69,36 +69,36 @@
    - + Expression Semantics
    -distance(i,j);
    +distance(i,j);
     

    - Return type: int + Return type: int

    - Semantics: Returns the distance between - iterators i and j. + Semantics: Returns the distance between + iterators i and j.

    - + Header
     #include <boost/fusion/iterator/distance.hpp>
     
    - + Example
    -typedef vector<int,int,int> vec;
    +typedef vector<int,int,int> vec;
     
     vec v(1,2,3);
    -assert(distance(begin(v), next(next(begin(v)))) == 2);
    +assert(distance(begin(v), next(next(begin(v)))) == 2);
     
    diff --git a/doc/html/fusion/iterators/functions/next.html b/doc/html/fusion/iterators/functions/next.html index 3e97c886..2329e480 100644 --- a/doc/html/fusion/iterators/functions/next.html +++ b/doc/html/fusion/iterators/functions/next.html @@ -3,7 +3,7 @@ next - + @@ -26,24 +26,24 @@
    - + Description

    Moves an iterator 1 position forwards.

    - + Synopsis
     template<
         typename I
         >
    -typename result_of::next<I>::type next(I const& i);
    +typename result_of::next<I>::type next(I const& i);
     
    -

    Table 1.3. Parameters

    +

    Table 1.3. Parameters

    @@ -56,7 +56,7 @@ - +
    Description
    ii Model of Forward @@ -67,7 +67,7 @@
    - + Expression Semantics
    @@ -75,31 +75,31 @@ next(i);

    - Return type: A model of the same iterator - concept as i. + Return type: A model of the same iterator + concept as i.

    - Semantics: Returns an iterator to the - next element after i. + Semantics: Returns an iterator to the + next element after i.

    - + Header
     #include <boost/fusion/iterator/next.hpp>
     
    - + Example
    -typedef vector<int,int,int> vec;
    +typedef vector<int,int,int> vec;
     
     vec v(1,2,3);
    -assert(deref(begin(v)) == 1);
    -assert(deref(next(begin(v))) == 2);
    -assert(deref(next(next(begin(v)))) == 3);
    +assert(deref(begin(v)) == 1);
    +assert(deref(next(begin(v))) == 2);
    +assert(deref(next(next(begin(v)))) == 3);
     
    diff --git a/doc/html/fusion/iterators/functions/prior.html b/doc/html/fusion/iterators/functions/prior.html index 50fba0bd..58dbb1bc 100644 --- a/doc/html/fusion/iterators/functions/prior.html +++ b/doc/html/fusion/iterators/functions/prior.html @@ -3,7 +3,7 @@ prior - + @@ -26,24 +26,24 @@
    - + Description

    Moves an iterator 1 position backwards.

    - + Synopsis
     template<
         typename I
         >
    -typename result_of::prior<I>::type prior(I const& i);
    +typename result_of::prior<I>::type prior(I const& i);
     
    -

    Table 1.4. Parameters

    +

    Table 1.4. Parameters

    @@ -56,7 +56,7 @@ - +
    Description
    ii Model of Bidirectional @@ -67,38 +67,38 @@
    - + Expression Semantics
    -prior(i);
    +prior(i);
     

    - Return type: A model of the same iterator - concept as i. + Return type: A model of the same iterator + concept as i.

    - Semantics: Returns an iterator to the - element prior to i. + Semantics: Returns an iterator to the + element prior to i.

    - + Header
     #include <boost/fusion/iterator/prior.hpp>
     
    - + Example
    -typedef vector<int,int> vec;
    +typedef vector<int,int> vec;
     
     vec v(1,2);
    -assert(deref(next(begin(v))) == 2);
    -assert(deref(prior(next(begin(v)))) == 1);
    +assert(deref(next(begin(v))) == 2);
    +assert(deref(prior(next(begin(v)))) == 1);
     
    diff --git a/doc/html/fusion/iterators/metafunctions.html b/doc/html/fusion/iterators/metafunctions.html index 2c324a67..9f4cbefe 100644 --- a/doc/html/fusion/iterators/metafunctions.html +++ b/doc/html/fusion/iterators/metafunctions.html @@ -3,7 +3,7 @@ Metafunctions - +advance - + @@ -26,14 +26,14 @@
    - + Description

    Moves an iterator a specified distance.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.17. Parameters

    +

    Table 1.17. Parameters

    @@ -61,7 +61,7 @@ - + - + @@ -79,43 +79,43 @@
    II Model of Forward @@ -70,7 +70,7 @@ Iterator to move relative to
    MM Model of MPL Integral Constant Number of positions to move
    - + Expression Semantics
    -result_of::advance<I,M>::type
    +result_of::advance<I,M>::type
     

    - Return type: A model of the same iterator - concept as I. + Return type: A model of the same iterator + concept as I.

    - Semantics: Returns an iterator a distance - M from I. - If I is a Semantics: Returns an iterator a distance + M from I. + If I is a Bidirectional - Iterator then M + Iterator then M may be negative.

    - + Header
     #include <boost/fusion/iterator/advance.hpp>
     
    - + Example
    -typedef vector<int,double,char> vec;
    -typedef result_of::begin<vec>::type first;
    -typedef result_of::next<first>::type second;
    -typedef result_of::next<second>::type third;
    +typedef vector<int,double,char> vec;
    +typedef result_of::begin<vec>::type first;
    +typedef result_of::next<first>::type second;
    +typedef result_of::next<second>::type third;
     
    -BOOST_MPL_ASSERT((result_of::equal_to<result_of::advance<first, boost::mpl::int_<2> >::type, third>));
    +BOOST_MPL_ASSERT((result_of::equal_to<result_of::advance<first, boost::mpl::int_<2> >::type, third>));
     
    diff --git a/doc/html/fusion/iterators/metafunctions/advance_c.html b/doc/html/fusion/iterators/metafunctions/advance_c.html index fa9687f5..263d912a 100644 --- a/doc/html/fusion/iterators/metafunctions/advance_c.html +++ b/doc/html/fusion/iterators/metafunctions/advance_c.html @@ -3,7 +3,7 @@ advance_c - + @@ -26,14 +26,14 @@
    - + Description

    Moves an iterator by a specified distance.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.18. Parameters

    +

    Table 1.18. Parameters

    @@ -61,7 +61,7 @@ - + - + @@ -79,43 +79,43 @@
    II Model of Forward @@ -70,7 +70,7 @@ Iterator to move relative to
    NN Integer constant Number of positions to move
    - + Expression Semantics
    -result_of::advance_c<I, N>::type
    +result_of::advance_c<I, N>::type
     

    - Return type: A model of the same iterator - concept as I. + Return type: A model of the same iterator + concept as I.

    - Semantics: Returns an iterator a distance - N from I. - If I is a Semantics: Returns an iterator a distance + N from I. + If I is a Bidirectional - Iterator then N - may be negative. Equivalent to result_of::advance<I, boost::mpl::int_<N> >::type. + Iterator then N + may be negative. Equivalent to result_of::advance<I, boost::mpl::int_<N> >::type.

    - + Header
     #include <boost/fusion/iterator/advance.hpp>
     
    - + Example
    -typedef vector<int,double,char> vec;
    -typedef result_of::begin<vec>::type first;
    -typedef result_of::next<first>::type second;
    -typedef result_of::next<second>::type third;
    +typedef vector<int,double,char> vec;
    +typedef result_of::begin<vec>::type first;
    +typedef result_of::next<first>::type second;
    +typedef result_of::next<second>::type third;
     
    -BOOST_MPL_ASSERT((result_of::equal_to<result_of::advance_c<first, 2>::type, third>));
    +BOOST_MPL_ASSERT((result_of::equal_to<result_of::advance_c<first, 2>::type, third>));
     
    diff --git a/doc/html/fusion/iterators/metafunctions/deref.html b/doc/html/fusion/iterators/metafunctions/deref.html index fadd6460..bed43929 100644 --- a/doc/html/fusion/iterators/metafunctions/deref.html +++ b/doc/html/fusion/iterators/metafunctions/deref.html @@ -3,7 +3,7 @@ deref - + @@ -26,14 +26,14 @@
    - + Description

    Returns the type that will be returned by dereferencing an iterator.

    - + Synposis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.12. Parameters

    +

    Table 1.12. Parameters

    @@ -59,7 +59,7 @@ - +
    Description
    II Model of Forward @@ -70,42 +70,42 @@
    - + Expression Semantics
    -result_of::deref<I>::type
    +result_of::deref<I>::type
     

    - Return type: Any type + Return type: Any type

    - Semantics: Returns the result of dereferencing - an iterator of type I. + Semantics: Returns the result of dereferencing + an iterator of type I.

    - + Header
     #include <boost/fusion/iterator/deref.hpp>
     
    - + Example
    -typedef vector<int,int&> vec;
    +typedef vector<int,int&> vec;
     typedef const vec const_vec;
    -typedef result_of::begin<vec>::type first;
    -typedef result_of::next<first>::type second;
    +typedef result_of::begin<vec>::type first;
    +typedef result_of::next<first>::type second;
     
    -typedef result_of::begin<const_vec>::type const_first;
    -typedef result_of::next<const_first>::type const_second;
    +typedef result_of::begin<const_vec>::type const_first;
    +typedef result_of::next<const_first>::type const_second;
     
    -BOOST_MPL_ASSERT((boost::is_same<result_of::deref<first>::type, int&>));
    -BOOST_MPL_ASSERT((boost::is_same<result_of::deref<second>::type, int&>));
    +BOOST_MPL_ASSERT((boost::is_same<result_of::deref<first>::type, int&>));
    +BOOST_MPL_ASSERT((boost::is_same<result_of::deref<second>::type, int&>));
     
    diff --git a/doc/html/fusion/iterators/metafunctions/distance.html b/doc/html/fusion/iterators/metafunctions/distance.html index 4ab01b83..66ceb33c 100644 --- a/doc/html/fusion/iterators/metafunctions/distance.html +++ b/doc/html/fusion/iterators/metafunctions/distance.html @@ -3,7 +3,7 @@ distance - + @@ -26,14 +26,14 @@
    - + Description

    Returns the distance between two iterators.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.16. Parameters

    +

    Table 1.16. Parameters

    @@ -61,7 +61,7 @@
    -I, J +I, J Models of Forward @@ -72,38 +72,38 @@
    - + Expression Semantics
    -result_of::distance<I, J>::type
    +result_of::distance<I, J>::type
     

    - Return type: A model of MPL Integral Constant. + Return type: A model of MPL Integral Constant.

    - Semantics: Returns the distance between - iterators of types I and - J. + Semantics: Returns the distance between + iterators of types I and + J.

    - + Header
     #include <boost/fusion/iterator/distance.hpp>
     
    - + Example
    -typedef vector<int,double,char> vec;
    -typedef result_of::begin<vec>::type first;
    -typedef result_of::next<first>::type second;
    -typedef result_of::next<second>::type third;
    -typedef result_of::distance<first,third>::type dist;
    +typedef vector<int,double,char> vec;
    +typedef result_of::begin<vec>::type first;
    +typedef result_of::next<first>::type second;
    +typedef result_of::next<second>::type third;
    +typedef result_of::distance<first,third>::type dist;
     
     BOOST_MPL_ASSERT_RELATION(dist::value, ==, 2);
     
    diff --git a/doc/html/fusion/iterators/metafunctions/equal_to.html b/doc/html/fusion/iterators/metafunctions/equal_to.html index 57fa267a..bfa507f1 100644 --- a/doc/html/fusion/iterators/metafunctions/equal_to.html +++ b/doc/html/fusion/iterators/metafunctions/equal_to.html @@ -3,7 +3,7 @@ equal_to - + @@ -26,15 +26,15 @@
    - + Description

    - Returns a true-valued MPL Integral Constant if I - and J are equal. + Returns a true-valued MPL Integral Constant if I + and J are equal.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.15. Parameters

    +

    Table 1.15. Parameters

    @@ -62,7 +62,7 @@
    -I, J +I, J Any fusion iterators Operation's @@ -71,38 +71,38 @@
    - + Expression Semantics
    -result_of::equal_to<I, J>::type
    +result_of::equal_to<I, J>::type
     

    - Return type: A model of MPL Integral Constant. + Return type: A model of MPL Integral Constant.

    - Semantics: Returns boost::mpl::true_ - if I and J are iterators to the same position. - Returns boost::mpl::false_ otherwise. + Semantics: Returns boost::mpl::true_ + if I and J are iterators to the same position. + Returns boost::mpl::false_ otherwise.

    - + Header
     #include <boost/fusion/iterator/equal_to.hpp>
     
    - + Example
    -typedef vector<int,double> vec;
    -typedef result_of::begin<vec>::type first;
    -typedef result_of::end<vec>::type last;
    -BOOST_MPL_ASSERT((result_of::equal_to<first, first>));
    -BOOST_MPL_ASSERT_NOT((result_of::equal_to<first,last>));
    +typedef vector<int,double> vec;
    +typedef result_of::begin<vec>::type first;
    +typedef result_of::end<vec>::type last;
    +BOOST_MPL_ASSERT((result_of::equal_to<first, first>));
    +BOOST_MPL_ASSERT_NOT((result_of::equal_to<first,last>));
     
    diff --git a/doc/html/fusion/iterators/metafunctions/next.html b/doc/html/fusion/iterators/metafunctions/next.html index b34759aa..275b2a74 100644 --- a/doc/html/fusion/iterators/metafunctions/next.html +++ b/doc/html/fusion/iterators/metafunctions/next.html @@ -3,7 +3,7 @@ next - + @@ -26,14 +26,14 @@
    - + Description

    Returns the type of the next iterator in a sequence.

    - + Synposis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.13. Parameters

    +

    Table 1.13. Parameters

    @@ -59,7 +59,7 @@ - +
    Description
    II Model of Forward @@ -70,37 +70,37 @@
    - + Expression Semantics
    -result_of::next<I>::type
    +result_of::next<I>::type
     

    - Return type: A model of the same iterator - concept as I. + Return type: A model of the same iterator + concept as I.

    - Semantics: Returns an iterator to the - next element in the sequence after I. + Semantics: Returns an iterator to the + next element in the sequence after I.

    - + Header
     #include <boost/fusion/iterator/next.hpp>
     
    - + Example
    -typedef vector<int,double> vec;
    -typedef result_of::next<result_of::begin<vec>::type>::type second;
    +typedef vector<int,double> vec;
    +typedef result_of::next<result_of::begin<vec>::type>::type second;
     
    -BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<second>::type, double>));
    +BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<second>::type, double>));
     
    diff --git a/doc/html/fusion/iterators/metafunctions/prior.html b/doc/html/fusion/iterators/metafunctions/prior.html index f998da78..3200021a 100644 --- a/doc/html/fusion/iterators/metafunctions/prior.html +++ b/doc/html/fusion/iterators/metafunctions/prior.html @@ -3,7 +3,7 @@ prior - + @@ -26,14 +26,14 @@
    - + Description

    Returns the type of the previous iterator in a sequence.

    - + Synopsis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.14. Parameters

    +

    Table 1.14. Parameters

    @@ -59,7 +59,7 @@ - +
    Description
    II Model of Bidirectional @@ -70,40 +70,40 @@
    - + Expression Semantics
    -result_of::prior<I>::type
    +result_of::prior<I>::type
     

    - Return type: A model of the same iterator - concept as I. + Return type: A model of the same iterator + concept as I.

    - Semantics: Returns an iterator to the - previous element in the sequence before I. + Semantics: Returns an iterator to the + previous element in the sequence before I.

    - + Header
     #include <boost/fusion/iterator/prior.hpp>
     
    - + Example
    -typedef vector<int,double> vec;
    -typedef result_of::next<result_of::begin<vec>::type>::type second;
    +typedef vector<int,double> vec;
    +typedef result_of::next<result_of::begin<vec>::type>::type second;
     
    -BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<second>::type, double>));
    +BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<second>::type, double>));
     
    -typedef result_of::prior<second>::type first;
    -BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<first>::type, int>));
    +typedef result_of::prior<second>::type first;
    +BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<first>::type, int>));
     
    diff --git a/doc/html/fusion/iterators/metafunctions/value_of.html b/doc/html/fusion/iterators/metafunctions/value_of.html index ee96e0e1..42a79d68 100644 --- a/doc/html/fusion/iterators/metafunctions/value_of.html +++ b/doc/html/fusion/iterators/metafunctions/value_of.html @@ -3,7 +3,7 @@ value_of - + @@ -26,14 +26,14 @@
    - + Description

    Returns the type stored at the position of an iterator.

    - + Synopsis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.11. Parameters

    +

    Table 1.11. Parameters

    @@ -59,7 +59,7 @@ - +
    Description
    II Model of Forward @@ -70,40 +70,40 @@
    - + Expression Semantics
    -result_of::value_of<I>::type
    +result_of::value_of<I>::type
     

    - Return type: Any type + Return type: Any type

    - Semantics: Returns the type stored in - a sequence at iterator position I. + Semantics: Returns the type stored in + a sequence at iterator position I.

    - + Header
     #include <boost/fusion/iterator/value_of.hpp>
     
    - + Example
    -typedef vector<int,int&,const int&> vec;
    -typedef result_of::begin<vec>::type first;
    -typedef result_of::next<first>::type second;
    -typedef result_of::next<second>::type third;
    +typedef vector<int,int&,const int&> vec;
    +typedef result_of::begin<vec>::type first;
    +typedef result_of::next<first>::type second;
    +typedef result_of::next<second>::type third;
     
    -BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<first>::type, int>));
    -BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<second>::type, int&>));
    -BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<third>::type, const int&>));
    +BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<first>::type, int>));
    +BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<second>::type, int&>));
    +BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<third>::type, const int&>));
     
    diff --git a/doc/html/fusion/iterators/operators.html b/doc/html/fusion/iterators/operators.html index 6e6bc780..707d5964 100644 --- a/doc/html/fusion/iterators/operators.html +++ b/doc/html/fusion/iterators/operators.html @@ -3,7 +3,7 @@ Operators - + diff --git a/doc/html/fusion/iterators/operators/operator_equality.html b/doc/html/fusion/iterators/operators/operator_equality.html index 999131e2..ed63d6e6 100644 --- a/doc/html/fusion/iterators/operators/operator_equality.html +++ b/doc/html/fusion/iterators/operators/operator_equality.html @@ -4,7 +4,7 @@ Operator == - + Operator ==
    - + Description

    Compares 2 iterators for equality.

    - + Synopsis
    @@ -49,7 +49,7 @@
     unspecified operator==(I const& i, J const& i);
     
    -

    Table 1.9. Parameters

    +

    Table 1.9. Parameters

    @@ -63,7 +63,7 @@
    -i, j +i, j Any fusion iterators Operation's @@ -72,7 +72,7 @@
    - + Expression Semantics
    @@ -80,15 +80,15 @@ i == j

    - Return type: Convertible to bool. + Return type: Convertible to bool.

    - Semantics: Equivalent to result_of::equal_to<I,J>::value - where I and J are the types of i - and j respectively. + Semantics: Equivalent to result_of::equal_to<I,J>::value + where I and J are the types of i + and j respectively.

    - + Header
    diff --git a/doc/html/fusion/iterators/operators/operator_inequality.html b/doc/html/fusion/iterators/operators/operator_inequality.html
    index 115065f3..c6328841 100644
    --- a/doc/html/fusion/iterators/operators/operator_inequality.html
    +++ b/doc/html/fusion/iterators/operators/operator_inequality.html
    @@ -4,7 +4,7 @@
      Operator
             !=
     
    -
    +
     
     
      Operator
             !=
     
    - + Description

    Compares 2 iterators for inequality.

    - + Synopsis
    @@ -48,7 +48,7 @@
     unspecified operator==(I const& i, J const& i);
     
    -

    Table 1.10. Parameters

    +

    Table 1.10. Parameters

    @@ -62,7 +62,7 @@
    -i, j +i, j Any fusion iterators Operation's @@ -71,20 +71,20 @@
    - + Expression Semantics

    - Return type: Convertible to bool. + Return type: Convertible to bool.

    - Semantics: Equivalent to !result_of::equal_to<I,J>::value - where I and J are the types of i - and j respectively. + Semantics: Equivalent to !result_of::equal_to<I,J>::value + where I and J are the types of i + and j respectively.

    - + Header
    diff --git a/doc/html/fusion/iterators/operators/operator_unary_star.html b/doc/html/fusion/iterators/operators/operator_unary_star.html
    index bf405c7c..33199e55 100644
    --- a/doc/html/fusion/iterators/operators/operator_unary_star.html
    +++ b/doc/html/fusion/iterators/operators/operator_unary_star.html
    @@ -4,7 +4,7 @@
      Operator
             *
     
    -
    +
     
     
     
    @@ -30,24 +30,24 @@
             *"> Operator
             *
     
    - + Description

    Dereferences an iterator.

    - + Synopsis
     template<
         typename I
         >
    -typename result_of::deref<I>::type operator*(unspecified<I> const& i);
    +typename result_of::deref<I>::type operator*(unspecified<I> const& i);
     
    -

    Table 1.8. Parameters

    +

    Table 1.8. Parameters

    @@ -60,7 +60,7 @@ - +
    Description
    ii Model of Forward @@ -71,7 +71,7 @@
    - + Expression Semantics
    @@ -79,31 +79,31 @@ *i

    - Return type: Equivalent to the return - type of deref(i). + Return type: Equivalent to the return + type of deref(i).

    - Semantics: Equivalent to deref(i). + Semantics: Equivalent to deref(i).

    - + Header
     #include <boost/fusion/iterator/deref.hpp>
     
    - + Example
    -typedef vector<int,int&> vec;
    +typedef vector<int,int&> vec;
     
     int i(0);
     vec v(1,i);
    -assert(*begin(v) == 1);
    -assert(*next(begin(v)) == 0);
    -assert(&(*next(begin(v))) == &i);
    +assert(*begin(v) == 1);
    +assert(*next(begin(v)) == 0);
    +assert(&(*next(begin(v))) == &i);
     
    diff --git a/doc/html/fusion/notes.html b/doc/html/fusion/notes.html index d184d4ae..0050bee6 100644 --- a/doc/html/fusion/notes.html +++ b/doc/html/fusion/notes.html @@ -3,7 +3,7 @@ Notes - + @@ -26,30 +26,30 @@

    - + Recursive Inlined Functions

    - An interesting peculiarity of functions like at when applied to a at when applied to a Forward - Sequence like list is that what could have been + Sequence like list is that what could have been linear runtime complexity effectively becomes constant O(1) due to compiler optimization of C++ inlined functions, however deeply recursive (up to a certain compiler limit of course). Compile time complexity remains linear.

    - + Overloaded Functions

    Associative sequences use function overloading to implement membership testing and type associated key lookup. This amounts to constant runtime and amortized - constant compile time complexities. There is an overloaded function, f(k), for each key type k. The compiler chooses the appropriate function - given a key, k. + constant compile time complexities. There is an overloaded function, f(k), for each key type k. The compiler chooses the appropriate function + given a key, k.

    - + Tag Dispatching

    @@ -68,7 +68,7 @@

    - For example, the fusion result_of::begin metafunction + For example, the fusion result_of::begin metafunction is implemented as follows:

    @@ -86,22 +86,22 @@
         

    1. -Sequence is the type for - which a suitable implementation of result_of::begin_impl +Sequence is the type for + which a suitable implementation of result_of::begin_impl is required
    2. -traits::tag_of is the metafunction that associates - Sequence with an appropriate +traits::tag_of is the metafunction that associates + Sequence with an appropriate tag
    3. -result_of::begin_impl is the template which is specialized +result_of::begin_impl is the template which is specialized to provide an implementation for each tag type

    - + Extensibility

    @@ -113,13 +113,13 @@ and MPL on account of the lazy nature of fusion Algorithms. STL - containers extend themselves in place though member functions such as push_back and insert. MPL + containers extend themselves in place though member functions such as push_back and insert. MPL sequences, on the other hand, are extended through "intrinsic" functions that actually return whole sequences. MPL is purely functional and can not have side effects. For example, MPL's - push_back does not actually - mutate an mpl::vector. It can't do that. Instead, it returns - an extended mpl::vector. + push_back does not actually + mutate an mpl::vector. It can't do that. Instead, it returns + an extended mpl::vector.

    Like MPL, Fusion @@ -129,51 +129,51 @@ are sequences that do not actually contain data, but instead impart an alternative presentation over the data from one or more underlying sequences. Views are proxies. They provide an efficient yet purely functional way to work on - potentially expensive sequence operations. For example, given a vector, Fusion's push_back returns a joint_view, instead of an actual extended - vector. - A joint_view + potentially expensive sequence operations. For example, given a vector, Fusion's push_back returns a joint_view, instead of an actual extended + vector. + A joint_view holds a reference to the original sequence plus the appended data --making it very cheap to pass around.

    - + Element Conversion

    - Functions that take in elemental values to form sequences (e.g. make_list) convert their arguments + Functions that take in elemental values to form sequences (e.g. make_list) convert their arguments to something suitable to be stored as a sequence element. In general, the element types are stored as plain values. Example:

    -make_list(1, 'x')
    +make_list(1, 'x')
     

    - returns a list<int, - char>. + returns a list<int, + char>.

    There are a few exceptions, however.

    - Arrays: + Arrays:

    Array arguments are deduced to reference to const types. For example - [14] + [14] :

    -make_list("Donald", "Daisy")
    +make_list("Donald", "Daisy")
     

    - creates a list + creates a list of type

    -list<const char (&)[7], const char (&)[6]>
    +list<const char (&)[7], const char (&)[6]>
     

    - Function pointers: + Function pointers:

    Function pointers are deduced to the plain non-reference type (i.e. to plain @@ -182,38 +182,38 @@

     void f(int i);
       ...
    -make_list(&f);
    +make_list(&f);
     

    - creates a list + creates a list of type

    -list<void (*)(int)>
    +list<void (*)(int)>
     

    - + boost::ref

    - Fusion's generation functions (e.g. make_list) by default stores the element + Fusion's generation functions (e.g. make_list) by default stores the element types as plain non-reference types. Example:

     void foo(const A& a, B& b) {
         ...
    -    make_list(a, b)
    +    make_list(a, b)
     

    - creates a list + creates a list of type

    -list<A, B>
    +list<A, B>
     

    - Sometimes the plain non-reference type is not desired. You can use boost::ref - and boost::cref to store references or const references + Sometimes the plain non-reference type is not desired. You can use boost::ref + and boost::cref to store references or const references (respectively) instead. The mechanism does not compromise const correctness since a const object wrapped with ref results in a tuple element with const reference type (see the fifth code line below). Examples: @@ -223,11 +223,11 @@

     A a; B b; const A ca = a;
    -make_list(cref(a), b);          // creates list<const A&, B>
    -make_list(ref(a), b);           // creates list<A&, B>
    -make_list(ref(a), cref(b));     // creates list<A&, const B&>
    -make_list(cref(ca));            // creates list<const A&>
    -make_list(ref(ca));             // creates list<const A&>
    +make_list(cref(a), b);          // creates list<const A&, B>
    +make_list(ref(a), b);           // creates list<A&, B>
    +make_list(ref(a), cref(b));     // creates list<A&, const B&>
    +make_list(cref(ca));            // creates list<const A&>
    +make_list(ref(ca));             // creates list<const A&>
     

    See Boost.Ref for @@ -235,11 +235,11 @@



    -

    [14] +

    [14] 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). + 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 dd298da5..6db1b1f6 100644 --- a/doc/html/fusion/organization.html +++ b/doc/html/fusion/organization.html @@ -3,7 +3,7 @@ Organization - + @@ -34,7 +34,7 @@ The library is organized in three layers:

    - + Layers

    @@ -50,7 +50,7 @@ against.

    - + Directory

      @@ -76,7 +76,7 @@
      • adapted -
          +
          • array
          • @@ -93,7 +93,7 @@
          • container -
              +
              • list
              • @@ -125,7 +125,7 @@
              • view -
                  +
                  • filter_view
                  • @@ -159,11 +159,11 @@

                  - + Example

                  - If, for example, you want to use list, + If, for example, you want to use list, depending on the granularity that you desire, you may do so by including one of

                  @@ -174,13 +174,13 @@

    The first includes all sequences. The second includes all of sequence containers. - The third includes only list - [3] + The third includes only list + [3] .



    -

    [3] +

    [3] 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 edafa8cd..bfcc85b5 100644 --- a/doc/html/fusion/preface.html +++ b/doc/html/fusion/preface.html @@ -3,7 +3,7 @@ Preface - + @@ -29,10 +29,10 @@ Algorithms + Data Structures = Programs.

    - --Niklaus Wirth + --Niklaus Wirth

    - + Description

    @@ -50,7 +50,7 @@ of compile time metaprogramming with runtime programming.

    - + Motivation

    @@ -76,7 +76,7 @@ an instant AHA! moment.

    - + How to use this manual

    @@ -84,7 +84,7 @@ icons precede some text to indicate:

    -

    Table 1.1. Icons

    +

    Table 1.1. Icons

    @@ -130,7 +130,7 @@ Tools.

    - + Support

    diff --git a/doc/html/fusion/quick_start.html b/doc/html/fusion/quick_start.html index 61ae0b8b..cc0940d7 100644 --- a/doc/html/fusion/quick_start.html +++ b/doc/html/fusion/quick_start.html @@ -3,7 +3,7 @@ Quick Start - + @@ -27,39 +27,39 @@ Quick Start

    I assume the reader is already familiar with tuples (Boost.Tuple) - and its ancestor std::pair. The tuple is a generalization of std::pair + and its ancestor std::pair. The tuple is a generalization of std::pair for multiple heterogeneous elements (triples, quadruples, etc.). The tuple - is more or less a synonym for fusion's vector. + is more or less a synonym for fusion's vector.

    For starters, we shall include all of Fusion's _sequence_s - [1] + [1] :

     #include <boost/fusion/sequence.hpp>
     

    - Let's begin with a vector - [2] + Let's begin with a vector + [2] :

    -vector<int, char, std::string> stuff(1, 'x', "howdy");
    -int i = at_c<0>(stuff);
    -char ch = at_c<1>(stuff);
    -std::string s = at_c<2>(stuff);
    +vector<int, char, std::string> stuff(1, 'x', "howdy");
    +int i = at_c<0>(stuff);
    +char ch = at_c<1>(stuff);
    +std::string s = at_c<2>(stuff);
     

    - Just replace tuple for vector - and get for at_c and this is exactly like + Just replace tuple for vector + and get for at_c and this is exactly like Boost.Tuple. Actually, either names can be used interchangeably. Yet, the similarity ends - there. You can do a lot more with Fusion vector or tuple. + there. You can do a lot more with Fusion vector or tuple. Let's see some examples.

    - + Print the vector as XML

    @@ -91,38 +91,38 @@ Now, finally:

    -for_each(stuff, print_xml());
    +for_each(stuff, print_xml());
     

    - That's it! for_each is a fusion algorithm. + That's it! for_each is a fusion algorithm. It is a generic algorithm similar to STL's. It iterates over the sequence and calls a user supplied function. In our case, - it calls print_xml's operator() for - each element in stuff. + it calls print_xml's operator() for + each element in stuff.

    -
    [Caution] Caution

    - The result of typeid(x).name() is platform specific. The code here is +

    + The result of typeid(x).name() is platform specific. The code here is just for exposition. Of course you already know that :-)

    - for_each is generic. With - print_xml, you can use it to + for_each is generic. With + print_xml, you can use it to print just about any Fusion Sequence.

    - + Print only pointers

    Let's get a little cleverer. Say we wish to write a generic function that takes in an arbitrary sequence and XML prints only those elements - which are pointers. Ah, easy. First, let's include the is_pointer + which are pointers. Ah, easy. First, let's include the is_pointer boost type trait:

    @@ -135,36 +135,36 @@
     template <typename Sequence>
     void xml_print_pointers(Sequence const& seq)
     {
    -    for_each(filter_if<boost::is_pointer<_> >(seq), print_xml());
    +    for_each(filter_if<boost::is_pointer<_> >(seq), print_xml());
     }
     

    - filter_if is another Fusion - algorithm. It returns a filter_view, a conforming Fusion sequence. + filter_if is another Fusion + algorithm. It returns a filter_view, a conforming Fusion sequence. This view reflects only those elements that pass the given predicate. In this - case, the predicate is boost::is_pointer<_>. - This "filtered view" is then passed to the for_each algorithm, which then prints + case, the predicate is boost::is_pointer<_>. + This "filtered view" is then passed to the for_each algorithm, which then prints the "filtered view" as XML.

    Easy, right?

    - + Associative tuples

    Ok, moving on...

    - Apart from vector, fusion has a couple + Apart from vector, fusion has a couple of other sequence types to choose from. Each sequence has its own characteristics. - We have list, set, map, plus a multitude of views that provide various ways to present + We have list, set, map, plus a multitude of views that provide various ways to present the sequences.

    - Fusion's map associate types with elements. - It can be used as a cleverer replacement of the struct. + Fusion's map associate types with elements. + It can be used as a cleverer replacement of the struct. Example:

    @@ -174,32 +174,32 @@
         struct age;
     }
     
    -typedef map<
    -    fusion::pair<fields::name, std::string>
    -  , fusion::pair<fields::age, int> > 
    +typedef map<
    +    fusion::pair<fields::name, std::string>
    +  , fusion::pair<fields::age, int> > 
     person;
     

    - map + map is an associative sequence. Its elements are Fusion pairs which differ somewhat - from std::pair. Fusion pairs only contain one member, + from std::pair. Fusion pairs only contain one member, with the type of their second template parameter. The first type parameter of the pair is used as an index to the associated element in the sequence. - For example, given a a_person - of type, person, you can do: + For example, given a a_person + of type, person, you can do:

     using namespace fields;
    -std::string person_name = at_key<name>(a_person);
    -int person_age = at_key<age>(a_person);
    +std::string person_name = at_key<name>(a_person);
    +int person_age = at_key<age>(a_person);
     

    - Why go through all this trouble, you say? Well, for one, unlike the struct, we are dealing with a generic data structure. + Why go through all this trouble, you say? Well, for one, unlike the struct, we are dealing with a generic data structure. There are a multitude of facilities available at your disposal provided out of the box with fusion or written by others. With these facilities, introspection comes for free, for example. We can write one serialization function (well, two, if you consider loading and saving) that will work for all your fusion - maps. + maps. Example:

    @@ -215,17 +215,17 @@
     template <typename Stuff>
     void save(Stuff const& stuff)
     {
    -    for_each(stuff, saver());
    +    for_each(stuff, saver());
     }
     

    - The save function is generic - and will work for all types of stuff - regardless if it is a person, - a dog or a whole alternate_universe. + The save function is generic + and will work for all types of stuff + regardless if it is a person, + a dog or a whole alternate_universe.

    - + Tip of the Iceberg

    @@ -236,14 +236,14 @@



    -

    [1] +

    [1] There are finer grained header files available if you wish to have more control over which components to include (see section Orgainization for details).

    -

    [2] - 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 +

    [2] + 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.

    diff --git a/doc/html/fusion/references.html b/doc/html/fusion/references.html index 3655c26e..ef4f7188 100644 --- a/doc/html/fusion/references.html +++ b/doc/html/fusion/references.html @@ -3,7 +3,7 @@ References - + diff --git a/doc/html/fusion/sequences.html b/doc/html/fusion/sequences.html index 9970dbc1..b8cbb944 100644 --- a/doc/html/fusion/sequences.html +++ b/doc/html/fusion/sequences.html @@ -3,7 +3,7 @@ Sequences - + @@ -95,7 +95,7 @@ type that can be used to iterate through the Sequence's elements.

    - + Header

    diff --git a/doc/html/fusion/sequences/adapted.html b/doc/html/fusion/sequences/adapted.html
    index 7e4011e0..cd502cc0 100644
    --- a/doc/html/fusion/sequences/adapted.html
    +++ b/doc/html/fusion/sequences/adapted.html
    @@ -3,7 +3,7 @@
     
     Adapted
     
    -
    +
     
     
     
    @@ -33,18 +33,18 @@
     
    boost::variant

    - Fusion provides a couple of adapters for other sequences such as std::pair, + Fusion provides a couple of adapters for other sequences such as std::pair, MPL sequences, - and boost::array. These adapters are written using + and boost::array. These adapters are written using Fusion's non-intrusive Extension mechanism. If you wish to use these sequences with fusion, simply include the necessary files and they will be regarded as first-class, fully conforming fusion sequences - [4] + [4] .

    - + Header

    @@ -52,7 +52,7 @@
     


    -

    [4] +

    [4] Fusion sequences may also be adapted as fully conforming MPL sequences (see Intrinsics). That way, we can have 2-way adaptation to and from MPL diff --git a/doc/html/fusion/sequences/adapted/boost__array.html b/doc/html/fusion/sequences/adapted/boost__array.html index 574ac5e0..d97de732 100644 --- a/doc/html/fusion/sequences/adapted/boost__array.html +++ b/doc/html/fusion/sequences/adapted/boost__array.html @@ -3,7 +3,7 @@ boost::array - + @@ -26,41 +26,41 @@

    - This module provides adapters for boost::array. - Including the module header makes boost::array + This module provides adapters for boost::array. + Including the module header makes boost::array a fully conforming Random Access Sequence.

    - + Header
     #include <boost/fusion/sequence/adapted/array.hpp>
     
    - + Model of
    - + Example
     boost::array<int,3> arr = {{1,2,3}};
     
    -std::cout << *begin(arr) << std::endl;
    -std::cout << *next(begin(arr)) << std::endl;
    -std::cout << *advance_c<2>(begin(arr)) << std::endl;
    -std::cout << *prior(end(arr)) << std::endl;
    -std::cout << at_c<2>(arr) << std::endl;
    +std::cout << *begin(arr) << std::endl;
    +std::cout << *next(begin(arr)) << std::endl;
    +std::cout << *advance_c<2>(begin(arr)) << std::endl;
    +std::cout << *prior(end(arr)) << std::endl;
    +std::cout << at_c<2>(arr) << std::endl;
     
    - + See also

    diff --git a/doc/html/fusion/sequences/adapted/boost__tuple.html b/doc/html/fusion/sequences/adapted/boost__tuple.html index 7d31fed4..4b280da3 100644 --- a/doc/html/fusion/sequences/adapted/boost__tuple.html +++ b/doc/html/fusion/sequences/adapted/boost__tuple.html @@ -3,7 +3,7 @@ boost::tuple - + @@ -26,27 +26,27 @@

    - This module provides adapters for boost::tuple. - Including the module header makes boost::tuple + This module provides adapters for boost::tuple. + Including the module header makes boost::tuple a fully conforming Forward Sequence.

    - + Header
     #include <boost/fusion/sequence/adapted/boost_tuple.hpp>
     
    - + Model of
    - + Example
    @@ -55,7 +55,7 @@
     std::cout << *boost::fusion::next(boost::fusion::begin(example_tuple)) << '\n';
     
    - + See also

    diff --git a/doc/html/fusion/sequences/adapted/boost__variant.html b/doc/html/fusion/sequences/adapted/boost__variant.html index 28aedfc1..07f77105 100644 --- a/doc/html/fusion/sequences/adapted/boost__variant.html +++ b/doc/html/fusion/sequences/adapted/boost__variant.html @@ -3,7 +3,7 @@ boost::variant - + @@ -26,8 +26,8 @@

    - This module provides adapters for boost::variant. - Including the module header makes boost::variant + This module provides adapters for boost::variant. + Including the module header makes boost::variant a fully conforming Forward Sequence. The variant acts as a sequence of the types that can be @@ -36,21 +36,21 @@ value of that type.

    - + Header
     #include <boost/fusion/sequence/adapted/variant.hpp>
     
    - + Model of
    - + Example
    @@ -60,7 +60,7 @@
     std::cout << example_variant << '\n';
     
    - + See also

    diff --git a/doc/html/fusion/sequences/adapted/mpl_sequence.html b/doc/html/fusion/sequences/adapted/mpl_sequence.html index 1b050496..4f879cf3 100644 --- a/doc/html/fusion/sequences/adapted/mpl_sequence.html +++ b/doc/html/fusion/sequences/adapted/mpl_sequence.html @@ -3,7 +3,7 @@ mpl sequence - + @@ -31,14 +31,14 @@ sequences fully conforming fusion sequences.

    - + Header
     #include <boost/fusion/sequence/adapted/mpl.hpp>
     
    - + Model of
      @@ -62,21 +62,21 @@
    - + Example
     mpl::vector_c<int, 123, 456> vec_c;
     fusion::vector2<int, long> v(vec_c);
    -std::cout << at_c<0>(v) << std::endl;
    -std::cout << at_c<1>(v) << std::endl;
    +std::cout << at_c<0>(v) << std::endl;
    +std::cout << at_c<1>(v) << std::endl;
     
     v = mpl::vector_c<int, 456, 789>();
    -std::cout << at_c<0>(v) << std::endl;
    -std::cout << at_c<1>(v) << std::endl;
    +std::cout << at_c<0>(v) << std::endl;
    +std::cout << at_c<1>(v) << std::endl;
     
    - + See also

    diff --git a/doc/html/fusion/sequences/adapted/std__pair.html b/doc/html/fusion/sequences/adapted/std__pair.html index 8b89c766..48a4ff9f 100644 --- a/doc/html/fusion/sequences/adapted/std__pair.html +++ b/doc/html/fusion/sequences/adapted/std__pair.html @@ -3,7 +3,7 @@ std::pair - + @@ -26,44 +26,44 @@

    - This module provides adapters for std::pair. - Including the module header makes std::pair + This module provides adapters for std::pair. + Including the module header makes std::pair a fully conforming Random Access Sequence.

    - + Header
     #include <boost/fusion/sequence/adapted/std_pair.hpp>
     
    - + Model of
    - + Example
     std::pair<int, std::string> p(123, "Hola!!!");
    -std::cout << at_c<0>(p) << std::endl;
    -std::cout << at_c<1>(p) << std::endl;
    +std::cout << at_c<0>(p) << std::endl;
    +std::cout << at_c<1>(p) << std::endl;
     std::cout << p << std::endl;
     
    - + See also

    - std::pair, - TR1 - and std::pair + std::pair, + TR1 + and std::pair

    diff --git a/doc/html/fusion/sequences/concepts.html b/doc/html/fusion/sequences/concepts.html index 61a1a584..bb237688 100644 --- a/doc/html/fusion/sequences/concepts.html +++ b/doc/html/fusion/sequences/concepts.html @@ -3,7 +3,7 @@ Concepts - + @@ -40,7 +40,7 @@ Fusion Sequences are organized into a hierarchy of concepts.

    - + Traversal

    @@ -58,7 +58,7 @@ Sequence. These concepts pertain to sequence traversal.

    - + Associativity

    diff --git a/doc/html/fusion/sequences/concepts/associative_sequence.html b/doc/html/fusion/sequences/concepts/associative_sequence.html index 3222fdc8..411cb77c 100644 --- a/doc/html/fusion/sequences/concepts/associative_sequence.html +++ b/doc/html/fusion/sequences/concepts/associative_sequence.html @@ -4,7 +4,7 @@ Associative Sequence - + Associative Sequence

    - + Description

    @@ -48,30 +48,30 @@

    Notation

    -
    s
    +
    s
    An Associative Sequence
    -
    S
    +
    S
    An Associative Sequence type
    -
    K
    +
    K
    An arbitrary key type
    -
    o
    +
    o
    An arbitrary object
    -
    e
    +
    e
    A Sequence element
    - + Valid Expressions
    @@ -94,34 +94,34 @@ - + - + - +
    has_key<K>(s)has_key<K>(s) MPL Boolean Constant. Convertible to bool.   Constant
    at_key<K>(s)at_key<K>(s) Any type   Constant
    at_key<K>(s) = oat_key<K>(s) = o Any type -s - is mutable and e = o, - where e is the first +s + is mutable and e = o, + where e is the first element in the sequence, is a valid expression. Constant
    - + Result Type Expressions
    @@ -136,32 +136,32 @@ -result_of::has_key<S, K>::type +result_of::has_key<S, K>::type Amortized constant time -result_of::at_key<S, K>::type +result_of::at_key<S, K>::type Amortized constant time -result_of::value_at_key<S, K>::type +result_of::value_at_key<S, K>::type Amortized constant time

    - note result_of::at_key<S, K> returns the actual type returned by - at_key<K>(s). In + note result_of::at_key<S, K> returns the actual type returned by + at_key<K>(s). In most cases, this is a reference. Hence, there is no way to know the exact - element type using result_of::at_key<S, K>.The element at K + element type using result_of::at_key<S, K>.The element at K may actually be a reference to begin with. For this purpose, you can use - result_of::value_at_key<S, N>. + result_of::value_at_key<S, N>.

    - + Expression Semantics
    @@ -176,30 +176,30 @@ -has_key<K>(s) +has_key<K>(s) A - boolean Integral Constant c - such that c::value == - true if and only if there - is one or more elements with the key k - in s; see has_key. + boolean Integral Constant c + such that c::value == + true if and only if there + is one or more elements with the key k + in s; see has_key. -at_key<K>(s) +at_key<K>(s) The - element associated with the key K - in the sequence s; - see at. + element associated with the key K + in the sequence s; + see at.
    - + Models
    diff --git a/doc/html/fusion/sequences/concepts/bidirectional_sequence.html b/doc/html/fusion/sequences/concepts/bidirectional_sequence.html index 7796468b..29dbc8dd 100644 --- a/doc/html/fusion/sequences/concepts/bidirectional_sequence.html +++ b/doc/html/fusion/sequences/concepts/bidirectional_sequence.html @@ -4,7 +4,7 @@ Bidirectional Sequence - +Bidirectional Sequence
    - + Description

    @@ -42,7 +42,7 @@ Iterator.

    - + Refinement of
    @@ -53,26 +53,26 @@

    Notation

    -
    s
    +
    s
    A Forward Sequence
    -
    S
    +
    S
    A Forward Sequence type
    -
    o
    +
    o
    An arbitrary object
    -
    e
    +
    e
    A Sequence element
    - + Valid Expressions
    @@ -97,7 +97,7 @@ - + @@ -105,7 +105,7 @@ - + @@ -113,27 +113,27 @@ - + - +
    begin(s)begin(s) Bidirectional IteratorConstant
    end(s)end(s) Bidirectional IteratorConstant
    back(s)back(s) Any type   Constant
    back(s) = oback(s) = o Any type -s - is mutable and e = o, - where e is the first +s + is mutable and e = o, + where e is the first element in the sequence, is a valid expression. Constant
    - + Result Type Expressions
    @@ -148,24 +148,24 @@ -result_of::begin<S>::type +result_of::begin<S>::type Amortized constant time -result_of::end<S>::type +result_of::end<S>::type Amortized constant time -result_of::back<S>::type +result_of::back<S>::type Amortized constant time
    - + Expression Semantics
    @@ -185,28 +185,28 @@ Semantics -back(s) +back(s) The - last element in the sequence; see back. + last element in the sequence; see back.
    - + Models
    diff --git a/doc/html/fusion/sequences/concepts/forward_sequence.html b/doc/html/fusion/sequences/concepts/forward_sequence.html index bb169036..96b2cdc2 100644 --- a/doc/html/fusion/sequences/concepts/forward_sequence.html +++ b/doc/html/fusion/sequences/concepts/forward_sequence.html @@ -4,7 +4,7 @@ Forward Sequence - + @@ -30,7 +30,7 @@ Sequence">Forward Sequence
    - + Description

    @@ -43,26 +43,26 @@

    Notation

    -
    s
    +
    s
    A Forward Sequence
    -
    S
    +
    S
    A Forward Sequence type
    -
    o
    +
    o
    An arbitrary object
    -
    e
    +
    e
    A Sequence element
    - + Valid Expressions
    @@ -85,55 +85,55 @@ - + - + - + - + - + - +
    begin(s)begin(s) Forward Iterator   Constant
    end(s)end(s) Forward Iterator   Constant
    size(s)size(s) MPL Integral Constant. Convertible to int.   Constant
    empty(s)empty(s) MPL Boolean Constant. Convertible to bool.   Constant
    front(s)front(s) Any type   Constant
    front(s) = ofront(s) = o Any type -s - is mutable and e = o, - where e is the first +s + is mutable and e = o, + where e is the first element in the sequence, is a valid expression. Constant
    - + Result Type Expressions
    @@ -148,32 +148,32 @@ -result_of::begin<S>::type +result_of::begin<S>::type Amortized constant time -result_of::end<S>::type +result_of::end<S>::type Amortized constant time -result_of::size<S>::type +result_of::size<S>::type Unspecified -result_of::empty<S>::type +result_of::empty<S>::type Constant time -result_of::front<S>::type +result_of::front<S>::type Amortized constant time
    - + Expression Semantics
    @@ -188,37 +188,37 @@ -begin(s) +begin(s) An - iterator to the first element of the sequence; see begin. + iterator to the first element of the sequence; see begin. -end(s) +end(s) A - past-the-end iterator to the sequence; see end. + past-the-end iterator to the sequence; see end. -size(s) +size(s) The - size of the sequence; see size. + size of the sequence; see size. -empty(s) +empty(s) A - boolean Integral Constant c - such that c::value == - true if and only if the sequence - is empty; see empty. + boolean Integral Constant c + such that c::value == + true if and only if the sequence + is empty; see empty. -front(s) +front(s) The - first element in the sequence; see front. + first element in the sequence; see front.
    - + Invariants

    @@ -226,41 +226,41 @@

    • -[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. + 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 + Two different iterations through s will access its elements in the same order.
    - + Models
    diff --git a/doc/html/fusion/sequences/concepts/random_access_sequence.html b/doc/html/fusion/sequences/concepts/random_access_sequence.html index 3ddad493..59829eeb 100644 --- a/doc/html/fusion/sequences/concepts/random_access_sequence.html +++ b/doc/html/fusion/sequences/concepts/random_access_sequence.html @@ -4,7 +4,7 @@ Random Access Sequence - +Random Access Sequence
    - + Description

    @@ -43,7 +43,7 @@ sequence elements.

    - + Refinement of
    @@ -55,30 +55,30 @@

    Notation

    -
    s
    +
    s
    A Random Access Sequence
    -
    S
    +
    S
    A Random Access Sequence type
    -
    N
    +
    N
    An integral constant
    -
    o
    +
    o
    An arbitrary object
    -
    e
    +
    e
    A Sequence element
    - + Valid Expressions
    @@ -103,7 +103,7 @@ - + @@ -111,7 +111,7 @@ - + @@ -119,27 +119,27 @@ - + - +
    begin(s)begin(s) Random Access IteratorConstant
    end(s)end(s) Random Access IteratorConstant
    at<N>(s)at<N>(s) Any type   Constant
    at<N>(s) = oat<N>(s) = o Any type -s - is mutable and e = o, - where e is the first +s + is mutable and e = o, + where e is the first element in the sequence, is a valid expression. Constant
    - + Result Type Expressions
    @@ -154,37 +154,37 @@ -result_of::begin<S>::type +result_of::begin<S>::type Amortized constant time -result_of::end<S>::type +result_of::end<S>::type Amortized constant time -result_of::at<S, N>::type +result_of::at<S, N>::type Amortized constant time -result_of::value_at<S, N>::type +result_of::value_at<S, N>::type Amortized constant time

    - note result_of::at<S, N> returns the actual type returned by - at<N>(s). In + note result_of::at<S, N> returns the actual type returned by + at<N>(s). In most cases, this is a reference. Hence, there is no way to know the exact - element type using result_of::at<S, N>.The element at N + element type using result_of::at<S, N>.The element at N may actually be a reference to begin with. For this purpose, you can use - result_of::value_at<S, N>. + result_of::value_at<S, N>.

    - + Expression Semantics
    @@ -204,28 +204,28 @@ Semantics -at<N>(s) +at<N>(s) The - Nth element from the beginning of the sequence; see at. + Nth element from the beginning of the sequence; see at.
    - + Models
    diff --git a/doc/html/fusion/sequences/containers.html b/doc/html/fusion/sequences/containers.html index 430a1136..ea5044ed 100644 --- a/doc/html/fusion/sequences/containers.html +++ b/doc/html/fusion/sequences/containers.html @@ -3,7 +3,7 @@ Containers - +STL.

    - + Header

    diff --git a/doc/html/fusion/sequences/containers/cons.html b/doc/html/fusion/sequences/containers/cons.html
    index 16484259..28d07d89 100644
    --- a/doc/html/fusion/sequences/containers/cons.html
    +++ b/doc/html/fusion/sequences/containers/cons.html
    @@ -3,7 +3,7 @@
     
     cons
     
    -
    +
     
     
     
    @@ -26,29 +26,29 @@
     
     
    - + Description

    - cons is a simple cons is a simple Forward Sequence. - It is a lisp style recursive list structure where car - is the head and cdr - is the tail: usually another cons structure or nil: the empty list. Fusion's list is built on top of this more - primitive data structure. It is more efficient than vector when the target sequence + It is a lisp style recursive list structure where car + is the head and cdr + is the tail: usually another cons structure or nil: the empty list. Fusion's list is built on top of this more + primitive data structure. It is more efficient than vector when the target sequence is constructed piecemeal (a data at a time). The runtime cost of access to each element is peculiarly constant (see Recursive Inlined Functions).

    - + Header
     #include <boost/fusion/sequence/container/list/cons.hpp>
     
    - + Synopsis
    @@ -56,7 +56,7 @@
     struct cons;
     
    - + Template parameters
    @@ -73,21 +73,21 @@
    - + - + - +
    CarCar Head type  
    CdrCdr Tail typenilnil
    - + Model of
    - + Expression Semantics
    @@ -150,71 +150,71 @@ -nil() +nil() Creates an empty list. -C() +C() Creates a cons with default constructed elements. -C(car) +C(car) Creates - a cons with car head + a cons with car head and default constructed tail. -C(car, - cdr) +C(car, + cdr) Creates - a cons with car head - and cdr tail. + a cons with car head + and cdr tail. -C(s) +C(s) Copy constructs a cons from a Forward - Sequence, s. + Sequence, s. -l = - s +l = + s Assigns - to a cons, l, from + to a cons, l, from a Forward - Sequence, s. + Sequence, s. -at<N>(l) +at<N>(l) The - Nth element from the beginning of the sequence; see at. + Nth element from the beginning of the sequence; see at.

    - note at<N>(l) is + note at<N>(l) is provided for convenience and compatibility with the original Boost.Tuple - library, despite cons being + library, despite cons being a Forward Sequence - only (at is supposed to + only (at is supposed to be a Random - Access Sequence requirement). The runtime complexity of at is constant (see Recursive + Access Sequence requirement). The runtime complexity of at is constant (see Recursive Inlined Functions).

    - + Example
     cons<int, cons<float> > l(12, cons<float>(5.5f));
    -std::cout << at<0>(l) << std::endl;
    -std::cout << at<1>(l) << std::endl;
    +std::cout << at<0>(l) << std::endl;
    +std::cout << at<1>(l) << std::endl;
     
    diff --git a/doc/html/fusion/sequences/containers/list.html b/doc/html/fusion/sequences/containers/list.html index dbb35b9e..52422a6b 100644 --- a/doc/html/fusion/sequences/containers/list.html +++ b/doc/html/fusion/sequences/containers/list.html @@ -3,7 +3,7 @@ list - + @@ -26,19 +26,19 @@
    - + Description

    - list is a list is a Forward - Sequence of heterogenous typed data built on top of cons. It is more efficient than - vector + Sequence of heterogenous typed data built on top of cons. It is more efficient than + vector when the target sequence is constructed piecemeal (a data at a time). The runtime cost of access to each element is peculiarly constant (see Recursive Inlined Functions).

    - + Header
    @@ -46,7 +46,7 @@
     #include <boost/fusion/sequence/container/list/list_forward.hpp>
     
    - + Synopsis
    @@ -60,24 +60,24 @@
     struct list;
     

    - The variadic class interface accepts 0 - to FUSION_MAX_LIST_SIZE - elements, where FUSION_MAX_LIST_SIZE - is a user definable predefined maximum that defaults to 10. + The variadic class interface accepts 0 + to FUSION_MAX_LIST_SIZE + elements, where FUSION_MAX_LIST_SIZE + is a user definable predefined maximum that defaults to 10. Example:

     list<int, char, double>
     

    - You may define the preprocessor constant FUSION_MAX_LIST_SIZE + You may define the preprocessor constant FUSION_MAX_LIST_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_LIST_SIZE 20
     
    - + Template parameters
    @@ -94,14 +94,14 @@
    -T0...TN +T0...TN Element types unspecified-type
    - + Model of
    - + Expression Semantics
    @@ -155,58 +155,58 @@ -L() +L() Creates a list with default constructed elements. -L(e0, e1,... - en) +L(e0, e1,... + en) Creates - a list with elements e0...en. + a list with elements e0...en. -L(s) +L(s) Copy constructs a list from a Forward - Sequence, s. + Sequence, s. -l = - s +l = + s Assigns - to a list, l, from + to a list, l, from a Forward - Sequence, s. + Sequence, s. -at<N>(l) +at<N>(l) The - Nth element from the beginning of the sequence; see at. + Nth element from the beginning of the sequence; see at.

    - note at<n>(l) is + note at<n>(l) is provided for convenience and compatibility with the original Boost.Tuple - library, despite list being + library, despite list being a Forward Sequence - only (at is supposed to be a at is supposed to be a Random - Access Sequence requirement). The runtime complexity of at is constant (see Recursive + Access Sequence requirement). The runtime complexity of at is constant (see Recursive Inlined Functions).

    - + Example
     list<int, float> l(12, 5.5f);
    -std::cout << at<0>(l) << std::endl;
    -std::cout << at<1>(l) << std::endl;
    +std::cout << at<0>(l) << std::endl;
    +std::cout << at<1>(l) << std::endl;
     
    diff --git a/doc/html/fusion/sequences/containers/map.html b/doc/html/fusion/sequences/containers/map.html index 65fd428a..734de514 100644 --- a/doc/html/fusion/sequences/containers/map.html +++ b/doc/html/fusion/sequences/containers/map.html @@ -3,7 +3,7 @@ map - + @@ -26,14 +26,14 @@
    - + Description

    map is an Associative Sequence of heteregenous typed data elements. Each element is a - key/data pair (see fusion::pair) + key/data pair (see fusion::pair) where the key has no data (type only). Type identity is used to impose an equivalence relation on keys. A map may contain at most one element for each key. Membership testing and element key lookup has constant runtime @@ -41,14 +41,14 @@ Functions).

    - + Header
     #include <boost/fusion/sequence/container/map.hpp>
     
    - + Synopsis
    @@ -62,24 +62,24 @@
     struct map;
     

    - The variadic class interface accepts 0 - to FUSION_MAX_MAP_SIZE - elements, where FUSION_MAX_MAP_SIZE - is a user definable predefined maximum that defaults to 10. + The variadic class interface accepts 0 + to FUSION_MAX_MAP_SIZE + elements, where FUSION_MAX_MAP_SIZE + is a user definable predefined maximum that defaults to 10. Example:

    -map<pair<int, char>, pair<char, char>, pair<double, char> >
    +map<pair<int, char>, pair<char, char>, pair<double, char> >
     

    - You may define the preprocessor constant FUSION_MAX_MAP_SIZE + You may define the preprocessor constant FUSION_MAX_MAP_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_MAP_SIZE 20
     
    - + Template parameters
    @@ -96,14 +96,14 @@
    -T0...TN +T0...TN Element types unspecified-type
    - + Model of
      @@ -116,19 +116,19 @@

      Notation

      -
      M
      +
      M
      - A map type + A map type
      -
      m
      +
      m
      - An instance of map + An instance of map
      -
      e0...en
      +
      e0...en
      - Heterogeneous key/value pairs (see fusion::pair) + Heterogeneous key/value pairs (see fusion::pair)
      -
      s
      +
      s
      A Forward @@ -137,7 +137,7 @@
      - + Expression Semantics
      @@ -160,50 +160,50 @@ -M() +M() Creates a map with default constructed elements. -M(e0, e1,... - en) +M(e0, e1,... + en) Creates - a map with element pairs e0...en. + a map with element pairs e0...en. -M(s) +M(s) Copy constructs a map from a Forward - Sequence s. + Sequence s. -m = - s +m = + s Assigns - to a map, m, from + to a map, m, from a Forward - Sequence s. + Sequence s.
    - + Example
     typedef map<
    -    pair<int, char>
    -  , pair<double, std::string> > 
    +    pair<int, char>
    +  , pair<double, std::string> > 
     map_type;
     
     map_type m(
    -    make_pair<int>('X')
    -  , make_pair<double>("Men"));
    +    make_pair<int>('X')
    +  , make_pair<double>("Men"));
     
    -std::cout << at<int>(m) << std::endl;
    -std::cout << at<double>(m) << std::endl;
    +std::cout << at<int>(m) << std::endl;
    +std::cout << at<double>(m) << std::endl;
     
    diff --git a/doc/html/fusion/sequences/containers/set.html b/doc/html/fusion/sequences/containers/set.html index b1b20551..640bf5c4 100644 --- a/doc/html/fusion/sequences/containers/set.html +++ b/doc/html/fusion/sequences/containers/set.html @@ -3,7 +3,7 @@ set - + @@ -26,7 +26,7 @@
    - + Description

    @@ -39,14 +39,14 @@ Functions).

    - + Header
     #include <boost/fusion/sequence/container/set.hpp>
     
    - + Synopsis
    @@ -60,24 +60,24 @@
     struct set;
     

    - The variadic class interface accepts 0 - to FUSION_MAX_SET_SIZE - elements, where FUSION_MAX_SET_SIZE - is a user definable predefined maximum that defaults to 10. + The variadic class interface accepts 0 + to FUSION_MAX_SET_SIZE + elements, where FUSION_MAX_SET_SIZE + is a user definable predefined maximum that defaults to 10. Example:

     set<int, char, double>
     

    - You may define the preprocessor constant FUSION_MAX_SET_SIZE + You may define the preprocessor constant FUSION_MAX_SET_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_SET_SIZE 20
     
    - + Template parameters
    @@ -94,14 +94,14 @@
    -T0...TN +T0...TN Element types unspecified-type
    - + Model of
      @@ -114,19 +114,19 @@

      Notation

      -
      S
      +
      S
      - A set type + A set type
      -
      s
      +
      s
      - An instance of set + An instance of set
      -
      e0...en
      +
      e0...en
      Heterogeneous values
      -
      fs
      +
      fs
      A Forward @@ -135,7 +135,7 @@
      - + Expression Semantics
      @@ -158,44 +158,44 @@ -S() +S() Creates a set with default constructed elements. -S(e0, e1,... - en) +S(e0, e1,... + en) Creates - a set with elements e0...en. + a set with elements e0...en. -S(fs) +S(fs) Copy constructs a set from a Forward - Sequence fs. + Sequence fs. -s = - fs +s = + fs Assigns - to a set, s, from + to a set, s, from a Forward - Sequence fs. + Sequence fs.
    - + Example
     typedef set<int, float> S;
     S s(12, 5.5f);
    -std::cout << at_key<int>(s) << std::endl;
    -std::cout << at_key<float>(s) << std::endl;
    -std::cout << result_of::has_key<S, double>::value << std::endl;
    +std::cout << at_key<int>(s) << std::endl;
    +std::cout << at_key<float>(s) << std::endl;
    +std::cout << result_of::has_key<S, double>::value << std::endl;
     
    diff --git a/doc/html/fusion/sequences/containers/vector.html b/doc/html/fusion/sequences/containers/vector.html index 26c5f28b..5c9f7638 100644 --- a/doc/html/fusion/sequences/containers/vector.html +++ b/doc/html/fusion/sequences/containers/vector.html @@ -3,7 +3,7 @@ vector - + @@ -26,20 +26,20 @@
    - + Description

    - vector is a vector is a Random Access Sequence of heterogenous typed data structured as a simple - struct where each element - is held as a member variable. vector + struct where each element + is held as a member variable. vector is the simplest of the Fusion sequence container, and in many cases the most efficient.

    - + Header
    @@ -54,11 +54,11 @@
     #include <boost/fusion/sequence/container/vector/vector50.hpp>
     
    - + Synopsis

    - Numbered forms + Numbered forms

     template <>
    @@ -79,7 +79,7 @@
     struct vectorN;
     

    - Variadic form + Variadic form

     template <
    @@ -98,24 +98,24 @@
     vector3<int, char, double>
     

    - The variadic form accepts 0 - to FUSION_MAX_VECTOR_SIZE - elements, where FUSION_MAX_VECTOR_SIZE - is a user definable predefined maximum that defaults to 10. + The variadic form accepts 0 + to FUSION_MAX_VECTOR_SIZE + elements, where FUSION_MAX_VECTOR_SIZE + is a user definable predefined maximum that defaults to 10. Example:

     vector<int, char, double>
     

    - You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE + You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Template parameters
    @@ -132,14 +132,14 @@
    -T0...TN +T0...TN Element types unspecified
    - + Model of
    - + Expression Semantics
    @@ -190,42 +190,42 @@ -V() +V() Creates a vector with default constructed elements. -V(e0, e1,... - en) +V(e0, e1,... + en) Creates - a vector with elements e0...en. + a vector with elements e0...en. -V(s) +V(s) Copy constructs a vector from a Forward - Sequence, s. + Sequence, s. -v = - s +v = + s Assigns - to a vector, v, from + to a vector, v, from a Forward - Sequence, s. + Sequence, s.
    - + Example
     vector<int, float> v(12, 5.5f);
    -std::cout << at_c<0>(v) << std::endl;
    -std::cout << at_c<1>(v) << std::endl;
    +std::cout << at_c<0>(v) << std::endl;
    +std::cout << at_c<1>(v) << std::endl;
     
    diff --git a/doc/html/fusion/sequences/conversion.html b/doc/html/fusion/sequences/conversion.html index 61088a8d..86461af0 100644 --- a/doc/html/fusion/sequences/conversion.html +++ b/doc/html/fusion/sequences/conversion.html @@ -3,7 +3,7 @@ Conversion - + @@ -34,7 +34,7 @@ types using one of these conversion functions.

    - + Header

    diff --git a/doc/html/fusion/sequences/conversion/functions.html b/doc/html/fusion/sequences/conversion/functions.html
    index 90dd0560..ad31a4c8 100644
    --- a/doc/html/fusion/sequences/conversion/functions.html
    +++ b/doc/html/fusion/sequences/conversion/functions.html
    @@ -3,7 +3,7 @@
     
     Functions
     
    -
    +
     
     
     
    diff --git a/doc/html/fusion/sequences/conversion/functions/as_list.html b/doc/html/fusion/sequences/conversion/functions/as_list.html
    index 4b372ec8..f2422ad0 100644
    --- a/doc/html/fusion/sequences/conversion/functions/as_list.html
    +++ b/doc/html/fusion/sequences/conversion/functions/as_list.html
    @@ -3,7 +3,7 @@
     
     as_list
     
    -
    +
     
     
     
    @@ -26,14 +26,14 @@
     
     
    - + Description

    - Convert a fusion sequence to a list. + Convert a fusion sequence to a list.

    - + Synopsis
    @@ -46,7 +46,7 @@
     as_list(Sequence const& seq);
     
    - + Parameters
    @@ -61,14 +61,14 @@ - +
    Description
    seqseq An instance of Sequence The sequence to convert.
    - + Expression Semantics
    @@ -76,25 +76,25 @@ as_list(seq);

    - Return type: result_of::as_list<Sequence>::type + Return type: result_of::as_list<Sequence>::type

    - Semantics: Convert a fusion sequence, - seq, to a list. + Semantics: Convert a fusion sequence, + seq, to a list.

    - + Header
     #include <boost/fusion/sequence/conversion/as_list.hpp>
     
    - + Example
    -as_list(make_vector('x', 123, "hello"))
    +as_list(make_vector('x', 123, "hello"))
     
    diff --git a/doc/html/fusion/sequences/conversion/functions/as_map.html b/doc/html/fusion/sequences/conversion/functions/as_map.html index 56d87d8b..c7dd4320 100644 --- a/doc/html/fusion/sequences/conversion/functions/as_map.html +++ b/doc/html/fusion/sequences/conversion/functions/as_map.html @@ -3,7 +3,7 @@ as_map - + @@ -26,14 +26,14 @@
    - + Description

    - Convert a fusion sequence to a map. + Convert a fusion sequence to a map.

    - + Synopsis
    @@ -46,7 +46,7 @@
     as_map(Sequence const& seq);
     
    - + Parameters
    @@ -61,14 +61,14 @@ - +
    Description
    seqseq An instance of Sequence The sequence to convert.
    - + Expression Semantics
    @@ -76,32 +76,32 @@ as_map(seq);

    - Return type: result_of::as_map<Sequence>::type + Return type: result_of::as_map<Sequence>::type

    - Semantics: Convert a fusion sequence, - seq, to a map. + Semantics: Convert a fusion sequence, + seq, to a map.

    - Precondition: The elements of the sequence + Precondition: The elements of the sequence are assumed to be __fusionpair_s. - There may be no duplicate fusion::pair key types. + There may be no duplicate fusion::pair key types.

    - + Header
     #include <boost/fusion/sequence/conversion/as_map.hpp>
     
    - + Example
    -as_map(make_vector(
    -    make_pair<int>('X')
    -  , make_pair<double>("Men")))
    +as_map(make_vector(
    +    make_pair<int>('X')
    +  , make_pair<double>("Men")))
     
    diff --git a/doc/html/fusion/sequences/conversion/functions/as_set.html b/doc/html/fusion/sequences/conversion/functions/as_set.html index f8d50c64..2faadde7 100644 --- a/doc/html/fusion/sequences/conversion/functions/as_set.html +++ b/doc/html/fusion/sequences/conversion/functions/as_set.html @@ -3,7 +3,7 @@ as_set - + @@ -26,14 +26,14 @@
    - + Description

    - Convert a fusion sequence to a set. + Convert a fusion sequence to a set.

    - + Synopsis
    @@ -46,7 +46,7 @@
     as_set(Sequence const& seq);
     
    - + Parameters
    @@ -61,14 +61,14 @@ - +
    Description
    seqseq An instance of Sequence The sequence to convert.
    - + Expression Semantics
    @@ -76,29 +76,29 @@ as_set(seq);

    - Return type: result_of::as_set<Sequence>::type + Return type: result_of::as_set<Sequence>::type

    - Semantics: Convert a fusion sequence, - seq, to a set. + Semantics: Convert a fusion sequence, + seq, to a set.

    - Precondition: There may be no duplicate + Precondition: There may be no duplicate key types.

    - + Header
     #include <boost/fusion/sequence/conversion/as_set.hpp>
     
    - + Example
    -as_set(make_vector('x', 123, "hello"))
    +as_set(make_vector('x', 123, "hello"))
     
    diff --git a/doc/html/fusion/sequences/conversion/functions/as_vector.html b/doc/html/fusion/sequences/conversion/functions/as_vector.html index 27d96ff3..45ae6f08 100644 --- a/doc/html/fusion/sequences/conversion/functions/as_vector.html +++ b/doc/html/fusion/sequences/conversion/functions/as_vector.html @@ -3,7 +3,7 @@ as_vector - + @@ -26,14 +26,14 @@
    - + Description

    - Convert a fusion sequence to a vector. + Convert a fusion sequence to a vector.

    - + Synopsis
    @@ -46,7 +46,7 @@
     as_vector(Sequence const& seq);
     
    - + Parameters
    @@ -61,14 +61,14 @@ - +
    Description
    seqseq An instance of Sequence The sequence to convert.
    - + Expression Semantics
    @@ -76,25 +76,25 @@ as_vector(seq);

    - Return type: result_of::as_vector<Sequence>::type + Return type: result_of::as_vector<Sequence>::type

    - Semantics: Convert a fusion sequence, - seq, to a vector. + Semantics: Convert a fusion sequence, + seq, to a vector.

    - + Header
     #include <boost/fusion/sequence/conversion/as_vector.hpp>
     
    - + Example
    -as_vector(make_list('x', 123, "hello"))
    +as_vector(make_list('x', 123, "hello"))
     
    diff --git a/doc/html/fusion/sequences/conversion/metafunctions.html b/doc/html/fusion/sequences/conversion/metafunctions.html index 07397f1f..9241e198 100644 --- a/doc/html/fusion/sequences/conversion/metafunctions.html +++ b/doc/html/fusion/sequences/conversion/metafunctions.html @@ -3,7 +3,7 @@ Metafunctions - + diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_list.html b/doc/html/fusion/sequences/conversion/metafunctions/as_list.html index 912a0c22..f648890d 100644 --- a/doc/html/fusion/sequences/conversion/metafunctions/as_list.html +++ b/doc/html/fusion/sequences/conversion/metafunctions/as_list.html @@ -3,7 +3,7 @@ as_list - + @@ -26,14 +26,14 @@
    - + Description

    - Returns the result type of as_list. + Returns the result type of as_list.

    - + Synopsis
    @@ -41,7 +41,7 @@
     struct as_list;
     
    - + Parameters
    @@ -56,7 +56,7 @@ - + @@ -65,7 +65,7 @@
    Description
    SequenceSequence A fusion Sequence
    - + Expression Semantics
    @@ -73,26 +73,26 @@ result_of::as_list<Sequence>::type;

    - Return type: A list with same elements as the - input sequence, Sequence. + Return type: A list with same elements as the + input sequence, Sequence.

    - Semantics: Convert a fusion sequence, - Sequence, to a list. + Semantics: Convert a fusion sequence, + Sequence, to a list.

    - + Header
     #include <boost/fusion/sequence/conversion/as_list.hpp>
     
    - + Example
    -result_of::as_list<vector<char, int> >::type
    +result_of::as_list<vector<char, int> >::type
     
    diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_map.html b/doc/html/fusion/sequences/conversion/metafunctions/as_map.html index 3b202701..6599797e 100644 --- a/doc/html/fusion/sequences/conversion/metafunctions/as_map.html +++ b/doc/html/fusion/sequences/conversion/metafunctions/as_map.html @@ -3,7 +3,7 @@ as_map - + @@ -26,14 +26,14 @@
    - + Description

    - Returns the result type of as_map. + Returns the result type of as_map.

    - + Synopsis
    @@ -41,7 +41,7 @@
     struct as_map;
     
    - + Parameters
    @@ -56,7 +56,7 @@ - + @@ -65,7 +65,7 @@
    Description
    SequenceSequence A fusion Sequence
    - + Expression Semantics
    @@ -73,33 +73,33 @@ result_of::as_map<Sequence>::type;

    - Return type: A map with same elements as the - input sequence, Sequence. + Return type: A map with same elements as the + input sequence, Sequence.

    - Semantics: Convert a fusion sequence, - Sequence, to a map. + Semantics: Convert a fusion sequence, + Sequence, to a map.

    - Precondition: The elements of the sequence + Precondition: The elements of the sequence are assumed to be __fusionpair_s. - There may be no duplicate fusion::pair key types. + There may be no duplicate fusion::pair key types.

    - + Header
     #include <boost/fusion/sequence/conversion/as_map.hpp>
     
    - + Example
    -result_of::as_map<vector<
    -    fusion::pair<int, char>
    -  , fusion::pair<double, std::string> > >::type
    +result_of::as_map<vector<
    +    fusion::pair<int, char>
    +  , fusion::pair<double, std::string> > >::type
     
    diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_set.html b/doc/html/fusion/sequences/conversion/metafunctions/as_set.html index 9cc12e95..a033a33b 100644 --- a/doc/html/fusion/sequences/conversion/metafunctions/as_set.html +++ b/doc/html/fusion/sequences/conversion/metafunctions/as_set.html @@ -3,7 +3,7 @@ as_set - + @@ -26,14 +26,14 @@
    - + Description

    - Returns the result type of as_set. + Returns the result type of as_set.

    - + Synopsis
    @@ -41,7 +41,7 @@
     struct as_set;
     
    - + Parameters
    @@ -56,7 +56,7 @@ - + @@ -65,7 +65,7 @@
    Description
    SequenceSequence A fusion Sequence
    - + Expression Semantics
    @@ -73,30 +73,30 @@ result_of::as_set<Sequence>::type;

    - Return type: A set with same elements as the - input sequence, Sequence. + Return type: A set with same elements as the + input sequence, Sequence.

    - Semantics: Convert a fusion sequence, - Sequence, to a set. + Semantics: Convert a fusion sequence, + Sequence, to a set.

    - Precondition: There may be no duplicate + Precondition: There may be no duplicate key types.

    - + Header
     #include <boost/fusion/sequence/conversion/as_set.hpp>
     
    - + Example
    -result_of::as_set<vector<char, int> >::type
    +result_of::as_set<vector<char, int> >::type
     
    diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html b/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html index 3fb76d1e..1f521126 100644 --- a/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html +++ b/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html @@ -3,7 +3,7 @@ as_vector - + @@ -26,14 +26,14 @@
    - + Description

    - Returns the result type of as_vector. + Returns the result type of as_vector.

    - + Synopsis
    @@ -41,7 +41,7 @@
     struct as_vector;
     
    - + Parameters
    @@ -56,7 +56,7 @@ - + @@ -65,7 +65,7 @@
    Description
    SequenceSequence A fusion Sequence
    - + Expression Semantics
    @@ -73,26 +73,26 @@ result_of::as_vector<Sequence>::type;

    - Return type: A vector with same elements as - the input sequence, Sequence. + Return type: A vector with same elements as + the input sequence, Sequence.

    - Semantics: Convert a fusion sequence, - Sequence, to a vector. + Semantics: Convert a fusion sequence, + Sequence, to a vector.

    - + Header
     #include <boost/fusion/sequence/conversion/as_vector.hpp>
     
    - + Example
    -result_of::as_vector<list<char, int> >::type
    +result_of::as_vector<list<char, int> >::type
     
    diff --git a/doc/html/fusion/sequences/generation.html b/doc/html/fusion/sequences/generation.html index 0fe01339..ede641b2 100644 --- a/doc/html/fusion/sequences/generation.html +++ b/doc/html/fusion/sequences/generation.html @@ -3,7 +3,7 @@ Generation - + @@ -33,7 +33,7 @@ These are the functions that you can use to generate various forms of Containers from elemental values.

    - + Header

    diff --git a/doc/html/fusion/sequences/generation/functions.html b/doc/html/fusion/sequences/generation/functions.html
    index fe7a10e8..202070ae 100644
    --- a/doc/html/fusion/sequences/generation/functions.html
    +++ b/doc/html/fusion/sequences/generation/functions.html
    @@ -3,7 +3,7 @@
     
     Functions
     
    -
    +
     
     
     
    diff --git a/doc/html/fusion/sequences/generation/functions/list_tie.html b/doc/html/fusion/sequences/generation/functions/list_tie.html
    index f0ba9623..a2abc5cf 100644
    --- a/doc/html/fusion/sequences/generation/functions/list_tie.html
    +++ b/doc/html/fusion/sequences/generation/functions/list_tie.html
    @@ -3,7 +3,7 @@
     
     list_tie
     
    -
    +
     
     
     
    @@ -26,34 +26,34 @@
     
     
    - + Description

    - Constructs a tie using a list sequence. + Constructs a tie using a list sequence.

    - + Synopsis
     template <typename T0, typename T1,... typename TN>
    -list<T0&, T1&,... TN&>
    +list<T0&, T1&,... TN&>
     list_tie(T0& x0, T1& x1... TN& xN);
     

    - The variadic function accepts 0 - to FUSION_MAX_LIST_SIZE - elements, where FUSION_MAX_LIST_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_LIST_SIZE + The variadic function accepts 0 + to FUSION_MAX_LIST_SIZE + elements, where FUSION_MAX_LIST_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_LIST_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -68,21 +68,21 @@ - + xN
    Description
    x0, +x0, x1,... - xN Instances - of T0, + of T0, T1,... - TN + TN The - arguments to list_tie + arguments to list_tie
    - + Expression Semantics
    @@ -90,21 +90,21 @@ list_tie(x0, x1,... xN);

    - Return type: list<T0&, T1&,... + Return type: list<T0&, T1&,... TN&>

    - Semantics: Create a list of references from x0, x1,... xN. + Semantics: Create a list of references from x0, x1,... xN.

    - + Header
     #include <boost/fusion/sequence/generation/list_tie.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/generation/functions/make_cons.html b/doc/html/fusion/sequences/generation/functions/make_cons.html
    index 8b1759d4..509d1f7a 100644
    --- a/doc/html/fusion/sequences/generation/functions/make_cons.html
    +++ b/doc/html/fusion/sequences/generation/functions/make_cons.html
    @@ -3,7 +3,7 @@
     
     make_cons
     
    -
    +
     
     
     
    @@ -26,29 +26,29 @@
     
     
    - + Description

    - Create a cons from car - (head) and optional cdr + Create a cons from car + (head) and optional cdr (tail).

    - + Synopsis
     template <typename Car>
    -typename result_of::make_cons<Car>::type
    +typename result_of::make_cons<Car>::type
     make_cons(Car const& car);
     
     template <typename Car, typename Cdr>
    -typename result_of::make_cons<Car, Cdr>::type
    +typename result_of::make_cons<Car, Cdr>::type
     make_cons(Car const& car, Cdr const& cdr);
     
    - + Parameters
    @@ -64,17 +64,17 @@ - + - + @@ -82,7 +82,7 @@
    carcar Instance - of Car + of Car The list's head
    cdrcdr Instance - of Cdr + of Cdr The list's tail (optional)
    - + Expression Semantics
    @@ -90,34 +90,34 @@ make_cons(car, cdr);

    - Return type: result_of::make_cons<Car, Cdr>::type or result_of::make_cons<Car>::type + Return type: result_of::make_cons<Car, Cdr>::type or result_of::make_cons<Car>::type

    - Semantics: Create a cons from car - (head) and optional cdr + Semantics: Create a cons from car + (head) and optional cdr (tail).

    - + Header
     #include <boost/fusion/sequence/generation/make_cons.hpp>
     
    - + Example
     make_cons('x', make_cons(123))
     
    - + See also

    - boost::ref + boost::ref

    diff --git a/doc/html/fusion/sequences/generation/functions/make_list.html b/doc/html/fusion/sequences/generation/functions/make_list.html index 9c312a3c..71730dfe 100644 --- a/doc/html/fusion/sequences/generation/functions/make_list.html +++ b/doc/html/fusion/sequences/generation/functions/make_list.html @@ -3,7 +3,7 @@ make_list - + @@ -26,34 +26,34 @@
    - + Description

    - Create a list from one or more values. + Create a list from one or more values.

    - + Synopsis
     template <typename T0, typename T1,... typename TN>
    -typename result_of::make_list<T0, T1,... TN>::type
    +typename result_of::make_list<T0, T1,... TN>::type
     make_list(T0 const& x0, T1 const& x1... TN const& xN);
     

    - The variadic function accepts 0 - to FUSION_MAX_LIST_SIZE - elements, where FUSION_MAX_LIST_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_LIST_SIZE + The variadic function accepts 0 + to FUSION_MAX_LIST_SIZE + elements, where FUSION_MAX_LIST_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_LIST_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -68,21 +68,21 @@ - + xN
    Description
    x0, +x0, x1,... - xN Instances - of T0, + of T0, T1,... - TN + TN The - arguments to make_list + arguments to make_list
    - + Expression Semantics
    @@ -90,32 +90,32 @@ make_list(x0, x1,... xN);

    - Return type: result_of::make_list<T0, T1,... TN>::type + Return type: result_of::make_list<T0, T1,... TN>::type

    - Semantics: Create a list from x0, x1,... xN. + Semantics: Create a list from x0, x1,... xN.

    - + Header
     #include <boost/fusion/sequence/generation/make_list.hpp>
     
    - + Example
     make_list(123, "hello", 12.5)
     
    - + See also

    - boost::ref + boost::ref

    diff --git a/doc/html/fusion/sequences/generation/functions/make_map.html b/doc/html/fusion/sequences/generation/functions/make_map.html index fc3de043..a4747138 100644 --- a/doc/html/fusion/sequences/generation/functions/make_map.html +++ b/doc/html/fusion/sequences/generation/functions/make_map.html @@ -3,7 +3,7 @@ make_map - + @@ -26,38 +26,38 @@
    - + Description

    - Create a map from one or more key/data + Create a map from one or more key/data pairs.

    - + Synopsis
     template <
         typename K0, typename K1,... typename KN
       , typename T0, typename T1,... typename TN>
    -typename result_of::make_map<K0, K0,... KN, T0, T1,... TN>::type
    +typename result_of::make_map<K0, K0,... KN, T0, T1,... TN>::type
     make_map(T0 const& x0, T1 const& x1... TN const& xN);
     

    - The variadic function accepts 0 - to FUSION_MAX_VECTOR_SIZE - [10] - elements, where FUSION_MAX_VECTOR_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_VECTOR_SIZE + The variadic function accepts 0 + to FUSION_MAX_VECTOR_SIZE + [10] + elements, where FUSION_MAX_VECTOR_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_VECTOR_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -73,31 +73,31 @@ - + KN - - + xN
    K0, +K0, K1,... - KN The key typesKeys associated with x0, x1,... xN +Keys associated with x0, x1,... xN
    x0, +x0, x1,... - xN Instances - of T0, + of T0, T1,... - TN + TN The - arguments to make_map + arguments to make_map
    - + Expression Semantics
    @@ -105,48 +105,48 @@ make_map<K0, K1,... KN>(x0, x1,... xN);

    - Return type: result_of::make_map<K0, K0,... KN, T0, T1,... TN>::type + Return type: result_of::make_map<K0, K0,... KN, T0, T1,... TN>::type

    - Semantics: Create a map from K0, K1,... KN - keys and x0, + Semantics: Create a map from K0, K1,... KN + keys and x0, x1,... - xN data. + xN data.

    - Precondition: There may be no duplicate + Precondition: There may be no duplicate key types.

    - + Header
     #include <boost/fusion/sequence/generation/make_map.hpp>
     
    - + Example
     make_map(
    -    make_pair<int>('X')
    -  , make_pair<double>("Men"))
    +    make_pair<int>('X')
    +  , make_pair<double>("Men"))
     
    - + See also

    - boost::ref, - fusion::pair + boost::ref, + fusion::pair



    -

    [10] - map is implemented - in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE +

    [10] + map is implemented + in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

    diff --git a/doc/html/fusion/sequences/generation/functions/make_set.html b/doc/html/fusion/sequences/generation/functions/make_set.html index b08d0fe9..4faf5ca5 100644 --- a/doc/html/fusion/sequences/generation/functions/make_set.html +++ b/doc/html/fusion/sequences/generation/functions/make_set.html @@ -3,7 +3,7 @@ make_set - + @@ -26,35 +26,35 @@
    - + Description

    - Create a set from one or more values. + Create a set from one or more values.

    - + Synopsis
     template <typename T0, typename T1,... typename TN>
    -typename result_of::make_set<T0, T1,... TN>::type
    +typename result_of::make_set<T0, T1,... TN>::type
     make_set(T0 const& x0, T1 const& x1... TN const& xN);
     

    - The variadic function accepts 0 - to FUSION_MAX_VECTOR_SIZE - [9] - elements, where FUSION_MAX_VECTOR_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_VECTOR_SIZE + The variadic function accepts 0 + to FUSION_MAX_VECTOR_SIZE + [9] + elements, where FUSION_MAX_VECTOR_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_VECTOR_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -69,21 +69,21 @@ - + xN
    Description
    x0, +x0, x1,... - xN Instances - of T0, + of T0, T1,... - TN + TN The - arguments to make_set + arguments to make_set
    - + Expression Semantics
    @@ -91,42 +91,42 @@ make_set(x0, x1,... xN);

    - Return type: result_of::make_set<T0, T1,... TN>::type + Return type: result_of::make_set<T0, T1,... TN>::type

    - Semantics: Create a set from x0, x1,... xN. + Semantics: Create a set from x0, x1,... xN.

    - Precondition: There may be no duplicate + Precondition: There may be no duplicate key types.

    - + Header
     #include <boost/fusion/sequence/generation/make_set.hpp>
     
    - + Example
     make_set(123, "hello", 12.5)
     
    - + See also

    - boost::ref + boost::ref



    -

    [9] - set is implemented - in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE +

    [9] + set is implemented + in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

    diff --git a/doc/html/fusion/sequences/generation/functions/make_vector.html b/doc/html/fusion/sequences/generation/functions/make_vector.html index 8b29da34..2a47ca3d 100644 --- a/doc/html/fusion/sequences/generation/functions/make_vector.html +++ b/doc/html/fusion/sequences/generation/functions/make_vector.html @@ -3,7 +3,7 @@ make_vector - + @@ -26,34 +26,34 @@
    - + Description

    - Create a vector from one or more values. + Create a vector from one or more values.

    - + Synopsis
     template <typename T0, typename T1,... typename TN>
    -typename result_of::make_vector<T0, T1,... TN>::type
    +typename result_of::make_vector<T0, T1,... TN>::type
     make_vector(T0 const& x0, T1 const& x1... TN const& xN);
     

    - The variadic function accepts 0 - to FUSION_MAX_VECTOR_SIZE - elements, where FUSION_MAX_VECTOR_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_VECTOR_SIZE + The variadic function accepts 0 + to FUSION_MAX_VECTOR_SIZE + elements, where FUSION_MAX_VECTOR_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_VECTOR_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -68,21 +68,21 @@ - + xN
    Description
    x0, +x0, x1,... - xN Instances - of T0, + of T0, T1,... - TN + TN The - arguments to make_vector + arguments to make_vector
    - + Expression Semantics
    @@ -90,32 +90,32 @@ make_vector(x0, x1,... xN);

    - Return type: result_of::make_vector<T0, T1,... TN>::type + Return type: result_of::make_vector<T0, T1,... TN>::type

    - Semantics: Create a vector from x0, x1,... xN. + Semantics: Create a vector from x0, x1,... xN.

    - + Header
     #include <boost/fusion/sequence/generation/make_vector.hpp>
     
    - + Example
     make_vector(123, "hello", 12.5)
     
    - + See also

    - boost::ref + boost::ref

    diff --git a/doc/html/fusion/sequences/generation/functions/tiers.html b/doc/html/fusion/sequences/generation/functions/tiers.html index b5f71500..c68508cd 100644 --- a/doc/html/fusion/sequences/generation/functions/tiers.html +++ b/doc/html/fusion/sequences/generation/functions/tiers.html @@ -3,7 +3,7 @@ Tiers - + @@ -32,8 +32,8 @@ flavors.

    Example: @@ -41,14 +41,14 @@

     int i; char c; double d; 
       ...
    -vector_tie(i, c, a);
    +vector_tie(i, c, a);
     

    - 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)) - [11] + 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)) + [11] .

    @@ -57,7 +57,7 @@

     int i; char c; double d; 
    -vector_tie(i, c, d) = make_vector(1,'a', 5.5);
    +vector_tie(i, c, d) = make_vector(1,'a', 5.5);
     std::cout << i << " " <<  c << " " << d;
     

    @@ -66,7 +66,7 @@ when calling functions which return sequences.

    - + Ignore

    @@ -77,13 +77,13 @@

     char c;
    -vector_tie(ignore, c) = make_vector(1, 'a');
    +vector_tie(ignore, c) = make_vector(1, 'a');
     


    -

    [11] +

    [11] see Boost.Ref - for details about ref + for details about ref

    diff --git a/doc/html/fusion/sequences/generation/functions/vector_tie.html b/doc/html/fusion/sequences/generation/functions/vector_tie.html index d1138c46..5ac0f10c 100644 --- a/doc/html/fusion/sequences/generation/functions/vector_tie.html +++ b/doc/html/fusion/sequences/generation/functions/vector_tie.html @@ -3,7 +3,7 @@ vector_tie - + @@ -26,34 +26,34 @@
    - + Description

    - Constructs a tie using a vector sequence. + Constructs a tie using a vector sequence.

    - + Synopsis
     template <typename T0, typename T1,... typename TN>
    -vector<T0&, T1&,... TN&>
    +vector<T0&, T1&,... TN&>
     vector_tie(T0& x0, T1& x1... TN& xN);
     

    - The variadic function accepts 0 - to FUSION_MAX_VECTOR_SIZE - elements, where FUSION_MAX_VECTOR_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_VECTOR_SIZE + The variadic function accepts 0 + to FUSION_MAX_VECTOR_SIZE + elements, where FUSION_MAX_VECTOR_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_VECTOR_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -68,21 +68,21 @@ - + xN
    Description
    x0, +x0, x1,... - xN Instances - of T0, + of T0, T1,... - TN + TN The - arguments to vector_tie + arguments to vector_tie
    - + Expression Semantics
    @@ -90,21 +90,21 @@ vector_tie(x0, x1,... xN);

    - Return type: vector<T0&, T1&,... + Return type: vector<T0&, T1&,... TN&>

    - Semantics: Create a vector of references from x0, x1,... xN. + Semantics: Create a vector of references from x0, x1,... xN.

    - + Header
     #include <boost/fusion/sequence/generation/vector_tie.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/generation/metafunctions.html b/doc/html/fusion/sequences/generation/metafunctions.html
    index c5cc4937..3143a7b0 100644
    --- a/doc/html/fusion/sequences/generation/metafunctions.html
    +++ b/doc/html/fusion/sequences/generation/metafunctions.html
    @@ -3,7 +3,7 @@
     
     MetaFunctions
     
    -
    +
     
     
     
    diff --git a/doc/html/fusion/sequences/generation/metafunctions/list_tie.html b/doc/html/fusion/sequences/generation/metafunctions/list_tie.html
    index 003e5ede..09a5b912 100644
    --- a/doc/html/fusion/sequences/generation/metafunctions/list_tie.html
    +++ b/doc/html/fusion/sequences/generation/metafunctions/list_tie.html
    @@ -3,7 +3,7 @@
     
     list_tie
     
    -
    +
     
     
     
    @@ -26,14 +26,14 @@
     
     
    - + Description

    - Returns the result type of list_tie. + Returns the result type of list_tie.

    - + Synopsis
    @@ -41,18 +41,18 @@
     struct list_tie;
     

    - The variadic function accepts 0 - to FUSION_MAX_LIST_SIZE - elements, where FUSION_MAX_LIST_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_LIST_SIZE + The variadic function accepts 0 + to FUSION_MAX_LIST_SIZE + elements, where FUSION_MAX_LIST_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_LIST_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -67,17 +67,17 @@ - + TN -
    Description
    T0, +T0, T1,... - TN Any typeThe arguments to list_tie +The arguments to list_tie
    - + Expression Semantics
    @@ -85,21 +85,21 @@ result_of::list_tie<T0, T1,... TN>::type;

    - Return type: list<T0&, T1&,... + Return type: list<T0&, T1&,... TN&>

    - Semantics: Create a list of references from T0, T1,... TN. + Semantics: Create a list of references from T0, T1,... TN.

    - + Header
     #include <boost/fusion/sequence/generation/list_tie.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_cons.html b/doc/html/fusion/sequences/generation/metafunctions/make_cons.html
    index e7e9865d..e8c27aac 100644
    --- a/doc/html/fusion/sequences/generation/metafunctions/make_cons.html
    +++ b/doc/html/fusion/sequences/generation/metafunctions/make_cons.html
    @@ -3,7 +3,7 @@
     
     make_cons
     
    -
    +
     
     
     
    @@ -26,14 +26,14 @@
     
     
    - + Description

    - Returns the result type of make_cons. + Returns the result type of make_cons.

    - + Synopsis
    @@ -41,7 +41,7 @@
     struct make_cons;
     
    - + Parameters
    @@ -57,15 +57,15 @@ - + - + @@ -73,7 +73,7 @@
    CarCar Any type The list's head type
    CdrCdr A - cons + cons The list's tail type (optional)
    - + Expression Semantics
    @@ -81,24 +81,24 @@ result_of::make_cons<Car, Cdr>::type

    - Return type: A cons with head element, Car, of type converted following the + Return type: A cons with head element, Car, of type converted following the rules for element - conversion, and tail, Cdr. + conversion, and tail, Cdr.

    - Semantics: Create a cons from Car - (head) and optional Cdr + Semantics: Create a cons from Car + (head) and optional Cdr (tail).

    - + Header
     #include <boost/fusion/sequence/generation/make_cons.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_list.html b/doc/html/fusion/sequences/generation/metafunctions/make_list.html
    index bc2b6d5c..4f6024e6 100644
    --- a/doc/html/fusion/sequences/generation/metafunctions/make_list.html
    +++ b/doc/html/fusion/sequences/generation/metafunctions/make_list.html
    @@ -3,7 +3,7 @@
     
     make_list
     
    -
    +
     
     
     
    @@ -26,14 +26,14 @@
     
     
    - + Description

    - Returns the result type of make_list. + Returns the result type of make_list.

    - + Synopsis
    @@ -41,18 +41,18 @@
     struct make_list;
     

    - The variadic function accepts 0 - to FUSION_MAX_LIST_SIZE - elements, where FUSION_MAX_LIST_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_LIST_SIZE + The variadic function accepts 0 + to FUSION_MAX_LIST_SIZE + elements, where FUSION_MAX_LIST_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_LIST_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -67,17 +67,17 @@ - + TN -
    Description
    T0, +T0, T1,... - TN Any typeTemplate arguments to make_list +Template arguments to make_list
    - + Expression Semantics
    @@ -85,22 +85,22 @@ result_of::make_list<T0, T1,... TN>::type

    - Return type: A list with elements of types + Return type: A list with elements of types converted following the rules for element conversion.

    - Semantics: Create a list from T0, T1,... TN. + Semantics: Create a list from T0, T1,... TN.

    - + Header
     #include <boost/fusion/sequence/generation/make_list.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_map.html b/doc/html/fusion/sequences/generation/metafunctions/make_map.html
    index 881dd3f4..d1afd7b8 100644
    --- a/doc/html/fusion/sequences/generation/metafunctions/make_map.html
    +++ b/doc/html/fusion/sequences/generation/metafunctions/make_map.html
    @@ -3,7 +3,7 @@
     
     make_map
     
    -
    +
     
     
     
    @@ -26,14 +26,14 @@
     
     
    - + Description

    - Returns the result type of make_map. + Returns the result type of make_map.

    - + Synopsis
    @@ -43,19 +43,19 @@
     struct make_map;
     

    - The variadic function accepts 0 - to FUSION_MAX_VECTOR_SIZE - [13] - elements, where FUSION_MAX_VECTOR_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_VECTOR_SIZE + The variadic function accepts 0 + to FUSION_MAX_VECTOR_SIZE + [13] + elements, where FUSION_MAX_VECTOR_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_VECTOR_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -71,27 +71,27 @@ - + KN - - + TN -
    K0, +K0, K1,... - KN Any typeKeys associated with T0, T1,... TN +Keys associated with T0, T1,... TN
    T0, +T0, T1,... - TN Any typeData associated with keys K0, K1,... KN +Data associated with keys K0, K1,... KN
    - + Expression Semantics
    @@ -99,44 +99,44 @@ resulf_of::make_map<K0, K1,... KN, T0, T1,... TN>::type;

    - Return type: result_of::make_map<K0, K0,... KN, T0, T1,... TN>::type + Return type: result_of::make_map<K0, K0,... KN, T0, T1,... TN>::type

    - Semantics: A map with fusion::pair elements where the second_type is converted following + Semantics: A map with fusion::pair elements where the second_type is converted following the rules for element conversion.

    - Precondition: There may be no duplicate + Precondition: There may be no duplicate key types.

    - + Header
     #include <boost/fusion/sequence/generation/make_map.hpp>
     
    - + Example
     result_of::make_map<int, double, char, double>::type
     
    - + See also

    - fusion::pair + fusion::pair



    -

    [13] - map is implemented - in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE +

    [13] + map is implemented + in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

    diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_set.html b/doc/html/fusion/sequences/generation/metafunctions/make_set.html index 136ce48f..5910a7d5 100644 --- a/doc/html/fusion/sequences/generation/metafunctions/make_set.html +++ b/doc/html/fusion/sequences/generation/metafunctions/make_set.html @@ -3,7 +3,7 @@ make_set - + @@ -26,14 +26,14 @@
    - + Description

    - Returns the result type of make_set. + Returns the result type of make_set.

    - + Synopsis
    @@ -41,19 +41,19 @@
     struct make_set;
     

    - The variadic function accepts 0 - to FUSION_MAX_VECTOR_SIZE - [12] - elements, where FUSION_MAX_VECTOR_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_VECTOR_SIZE + The variadic function accepts 0 + to FUSION_MAX_VECTOR_SIZE + [12] + elements, where FUSION_MAX_VECTOR_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_VECTOR_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -68,17 +68,17 @@ - + TN -
    Description
    T0, +T0, T1,... - TN Any typeThe arguments to make_set +The arguments to make_set
    - + Expression Semantics
    @@ -86,26 +86,26 @@ result_of::make_set<T0, T1,... TN>::type

    - Return type: A set with elements of types converted + Return type: A set with elements of types converted following the rules for element conversion.

    - Semantics: Create a set from T0, T1,... TN. + Semantics: Create a set from T0, T1,... TN.

    - Precondition: There may be no duplicate + Precondition: There may be no duplicate key types.

    - + Header
     #include <boost/fusion/sequence/generation/make_set.hpp>
     
    - + Example
    @@ -113,9 +113,9 @@
     


    -

    [12] - set is implemented - in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE +

    [12] + set is implemented + in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

    diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_vector.html b/doc/html/fusion/sequences/generation/metafunctions/make_vector.html index c161aa85..15af0365 100644 --- a/doc/html/fusion/sequences/generation/metafunctions/make_vector.html +++ b/doc/html/fusion/sequences/generation/metafunctions/make_vector.html @@ -3,7 +3,7 @@ make_vector - + @@ -26,14 +26,14 @@
    - + Description

    - Returns the result type of make_vector. + Returns the result type of make_vector.

    - + Synopsis
    @@ -41,18 +41,18 @@
     struct make_vector;
     

    - The variadic function accepts 0 - to FUSION_MAX_VECTOR_SIZE - elements, where FUSION_MAX_VECTOR_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_VECTOR_SIZE + The variadic function accepts 0 + to FUSION_MAX_VECTOR_SIZE + elements, where FUSION_MAX_VECTOR_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_VECTOR_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -67,17 +67,17 @@ - + TN -
    Description
    T0, +T0, T1,... - TN Any typeTemplate arguments to make_vector +Template arguments to make_vector
    - + Expression Semantics
    @@ -85,22 +85,22 @@ result_of::make_vector<T0, T1,... TN>::type

    - Return type: A vector with elements of types + Return type: A vector with elements of types converted following the rules for element conversion.

    - Semantics: Create a vector from T0, T1,... TN. + Semantics: Create a vector from T0, T1,... TN.

    - + Header
     #include <boost/fusion/sequence/generation/make_list.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html b/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html
    index b914d310..e310bfac 100644
    --- a/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html
    +++ b/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html
    @@ -3,7 +3,7 @@
     
     vector_tie
     
    -
    +
     
     
     
    @@ -26,14 +26,14 @@
     
     
    - + Description

    - Returns the result type of vector_tie. + Returns the result type of vector_tie.

    - + Synopsis
    @@ -41,18 +41,18 @@
     struct vector_tie;
     

    - The variadic function accepts 0 - to FUSION_MAX_VECTOR_SIZE - elements, where FUSION_MAX_VECTOR_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_VECTOR_SIZE + The variadic function accepts 0 + to FUSION_MAX_VECTOR_SIZE + elements, where FUSION_MAX_VECTOR_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_VECTOR_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -67,17 +67,17 @@ - + TN -
    Description
    T0, +T0, T1,... - TN Any typeThe arguments to vector_tie +The arguments to vector_tie
    - + Expression Semantics
    @@ -85,21 +85,21 @@ result_of::vector_tie<T0, T1,... TN>::type;

    - Return type: vector<T0&, T1&,... + Return type: vector<T0&, T1&,... TN&>

    - Semantics: Create a vector of references from T0, T1,... TN. + Semantics: Create a vector of references from T0, T1,... TN.

    - + Header
     #include <boost/fusion/sequence/generation/vector_tie.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/intrinsics.html b/doc/html/fusion/sequences/intrinsics.html
    index d9e91e0f..bb758b81 100644
    --- a/doc/html/fusion/sequences/intrinsics.html
    +++ b/doc/html/fusion/sequences/intrinsics.html
    @@ -3,7 +3,7 @@
     
     Intrinsics
     
    -
    +
     
     
     
    @@ -36,11 +36,11 @@
             Intrinsic functions, unlike Algorithms,
             are not generic across the full Sequence
             repertoire. They need to be implemented for each Fusion Sequence
    -        [5]
    +        [5]
             .
           

    - + Header

    @@ -48,7 +48,7 @@
     


    -

    [5] +

    [5] In practice, many of intrinsic functions have default implementations that will work in majority of cases

    diff --git a/doc/html/fusion/sequences/intrinsics/functions.html b/doc/html/fusion/sequences/intrinsics/functions.html index 640d4768..37df07d8 100644 --- a/doc/html/fusion/sequences/intrinsics/functions.html +++ b/doc/html/fusion/sequences/intrinsics/functions.html @@ -3,7 +3,7 @@ Functions - + diff --git a/doc/html/fusion/sequences/intrinsics/functions/at.html b/doc/html/fusion/sequences/intrinsics/functions/at.html index 5c737b51..7123339a 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/at.html +++ b/doc/html/fusion/sequences/intrinsics/functions/at.html @@ -3,7 +3,7 @@ at - + @@ -26,27 +26,27 @@
    - + Description

    Returns the N-th element from the beginning of the sequence.

    - + Synopsis
     template <typename N, typename Sequence>
    -typename result_of::at<Sequence, N>::type
    +typename result_of::at<Sequence, N>::type
     at(Sequence& seq);
     
     template <typename N, typename Sequence>
    -typename result_of::at<Sequence const, N>::type
    +typename result_of::at<Sequence const, N>::type
     at(Sequence const& seq);
     
    - + Parameters
    @@ -62,7 +62,7 @@ - + - + @@ -81,7 +81,7 @@
    seqseq Model of Random @@ -71,7 +71,7 @@ The sequence we wish to investigate.
    NN An MPL integral constant
    - + Expression Semantics
    @@ -89,38 +89,38 @@ at<N>(seq);

    - Return type: Returns a reference to - the N-th element from the beginning of the sequence seq - if seq is mutable and - e = - o, where e + Return type: Returns a reference to + the N-th element from the beginning of the sequence seq + if seq is mutable and + e = + o, where e is the N-th element from the beginning of the sequence, is a valid expression. Else, returns a type convertable to the N-th element from the beginning of the sequence.

    - Precondition: 0 - <= N::value < size(s) + Precondition: 0 + <= N::value < size(s)

    - Semantics: Equivalent to + Semantics: Equivalent to

    -deref(advance<N>(begin(s)))
    +deref(advance<N>(begin(s)))
     
    - + Header
     #include <boost/fusion/sequence/intrinsic/at.hpp>
     
    - + Example
    -vector<int, int, int> v(1, 2, 3);
    +vector<int, int, int> v(1, 2, 3);
     assert(at<mpl::int_<1> >(v) == 2);
     
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/at_c.html b/doc/html/fusion/sequences/intrinsics/functions/at_c.html index 4a3b3dbd..93434c67 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/at_c.html +++ b/doc/html/fusion/sequences/intrinsics/functions/at_c.html @@ -3,7 +3,7 @@ at_c - + @@ -26,27 +26,27 @@
    - + Description

    Returns the N-th element from the beginning of the sequence.

    - + Synopsis
     template <int N, typename Sequence>
    -typename result_of::at_c<Sequence, N>::type
    +typename result_of::at_c<Sequence, N>::type
     at_c(Sequence& seq);
     
     template <int N, typename Sequence>
    -typename result_of::at_c<Sequence const, N>::type
    +typename result_of::at_c<Sequence const, N>::type
     at_c(Sequence const& seq);
     
    - + Parameters
    @@ -62,7 +62,7 @@ - + - +
    seqseq Model of Random @@ -71,7 +71,7 @@ The sequence we wish to investigate.
    NN An integral constant An index from the beginning of @@ -80,7 +80,7 @@
    - + Expression Semantics
    @@ -88,39 +88,39 @@ at_c<N>(seq);

    - Return type: Returns a reference to - the N-th element from the beginning of the sequence seq - if seq is mutable and - e = - o, where e + Return type: Returns a reference to + the N-th element from the beginning of the sequence seq + if seq is mutable and + e = + o, where e is the N-th element from the beginning of the sequence, is a valid expression. Else, returns a type convertable to the N-th element from the beginning of the sequence.

    - Precondition: 0 + Precondition: 0 <= N - < size(s) + < size(s)

    - Semantics: Equivalent to + Semantics: Equivalent to

    -deref(advance<N>(begin(s)))
    +deref(advance<N>(begin(s)))
     
    - + Header
     #include <boost/fusion/sequence/intrinsic/at_c.hpp>
     
    - + Example
    -vector<int, int, int> v(1, 2, 3);
    +vector<int, int, int> v(1, 2, 3);
     assert(at_c<1>(v) == 2);
     
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/at_key.html b/doc/html/fusion/sequences/intrinsics/functions/at_key.html index 5053a3e4..d534ed7c 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/at_key.html +++ b/doc/html/fusion/sequences/intrinsics/functions/at_key.html @@ -3,7 +3,7 @@ at_key - + @@ -26,27 +26,27 @@
    - + Description

    Returns the element associated with a Key from the sequence.

    - + Synopsis
     template <typename Key, typename Sequence>
    -typename result_of::at_key<Sequence, Key>::type
    +typename result_of::at_key<Sequence, Key>::type
     at_key(Sequence& seq);
     
     template <typename Key, typename Sequence>
    -typename result_of::at_key<Sequence const, Key>::type
    +typename result_of::at_key<Sequence const, Key>::type
     at_key(Sequence const& seq);
     
    - + Parameters
    @@ -62,7 +62,7 @@ - + - + @@ -79,7 +79,7 @@
    seqseq Model of Associative @@ -71,7 +71,7 @@ The sequence we wish to investigate.
    KeyKey Any type The queried key.
    - + Expression Semantics
    @@ -87,34 +87,34 @@ at_key<Key>(seq);

    - Return type: Returns a reference to - the element associated with Key from the sequence seq - if seq is mutable and - e = - o, where e + Return type: Returns a reference to + the element associated with Key from the sequence seq + if seq is mutable and + e = + o, where e is the element associated with Key, is a valid expression. Else, returns a type convertable to the element associated with Key.

    - Precondition: has_key<Key>(seq) == true + Precondition: has_key<Key>(seq) == true

    - Semantics: Returns the element associated + Semantics: Returns the element associated with Key.

    - + Header
     #include <boost/fusion/sequence/intrinsic/at_key.hpp>
     
    - + Example
    -set<int, char, bool> s(1, 'x', true);
    +set<int, char, bool> s(1, 'x', true);
     assert(at_key<char>(s) == 'x');
     
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/back.html b/doc/html/fusion/sequences/intrinsics/functions/back.html index b9cce96d..31022b75 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/back.html +++ b/doc/html/fusion/sequences/intrinsics/functions/back.html @@ -3,7 +3,7 @@ back - + @@ -26,27 +26,27 @@
    - + Description

    Returns the last element in the sequence.

    - + Synopsis
     template <typename Sequence>
    -typename result_of::back<Sequence>::type
    +typename result_of::back<Sequence>::type
     back(Sequence& seq);
     
     template <typename Sequence>
    -typename result_of::back<Sequence const>::type
    +typename result_of::back<Sequence const>::type
     back(Sequence const& seq);
     
    - + Parameters
    @@ -61,7 +61,7 @@ - +
    Description
    seqseq Model of Bidirectional @@ -71,7 +71,7 @@
    - + Expression Semantics
    @@ -79,34 +79,34 @@ back(seq);

    - Return type: Returns a reference to - the last element in the sequence seq - if seq is mutable and - e = - o, where e + Return type: Returns a reference to + the last element in the sequence seq + if seq is mutable and + e = + o, where e is the last element in the sequence, is a valid expression. Else, returns a type convertable to the last element in the sequence.

    - Precondition: empty(seq) == false + Precondition: empty(seq) == false

    - Semantics: Returns the last element + Semantics: Returns the last element in the sequence.

    - + Header
     #include <boost/fusion/sequence/intrinsic/back.hpp>
     
    - + Example
    -vector<int, int, int> v(1, 2, 3);
    +vector<int, int, int> v(1, 2, 3);
     assert(back(v) == 3);
     
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/begin.html b/doc/html/fusion/sequences/intrinsics/functions/begin.html index 4b5ca969..2a42fb86 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/begin.html +++ b/doc/html/fusion/sequences/intrinsics/functions/begin.html @@ -3,7 +3,7 @@ begin - + @@ -26,27 +26,27 @@
    - + Description

    Returns an iterator pointing to the first element in the sequence.

    - + Synopsis
     template <typename Sequence>
    -typename result_of::begin<Sequence>::type
    +typename result_of::begin<Sequence>::type
     begin(Sequence& seq);
     
     template <typename Sequence>
    -typename result_of::begin<Sequence const>::type
    +typename result_of::begin<Sequence const>::type
     begin(Sequence const& seq);
     
    - + Parameters
    @@ -61,7 +61,7 @@ - +
    Description
    seqseq Model of Forward @@ -72,7 +72,7 @@
    - + Expression Semantics
    @@ -80,41 +80,41 @@ begin(seq);

    - Return type: Return type: Forward - Iterator if seq + Iterator if seq is a Forward Sequence else, Bidirectional - Iterator if seq + Iterator if seq is a Bidirectional Sequence else, Random - Access Iterator if seq + Access Iterator if seq is a Random Access Sequence.

    - Semantics: Returns an iterator pointing + Semantics: Returns an iterator pointing to the first element in the sequence.

    - + Header
     #include <boost/fusion/sequence/intrinsic/begin.hpp>
     
    - + Example
    -vector<int, int, int> v(1, 2, 3);
    -assert(deref(begin(v)) == 1);
    +vector<int, int, int> v(1, 2, 3);
    +assert(deref(begin(v)) == 1);
     
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/empty.html b/doc/html/fusion/sequences/intrinsics/functions/empty.html index c588b6e0..1c2608c2 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/empty.html +++ b/doc/html/fusion/sequences/intrinsics/functions/empty.html @@ -3,7 +3,7 @@ empty - + @@ -26,25 +26,25 @@
    - + Description

    - Returns a type convertible to bool - that evaluates to true if - the sequence is empty, else, evaluates to false. + Returns a type convertible to bool + that evaluates to true if + the sequence is empty, else, evaluates to false.

    - + Synopsis
     template <typename Sequence>
    -typename result_of::empty<Sequence>::type
    +typename result_of::empty<Sequence>::type
     empty(Sequence const& seq);
     
    - + Parameters
    @@ -59,7 +59,7 @@ - +
    Description
    seqseq Model of Forward @@ -69,7 +69,7 @@
    - + Expression Semantics
    @@ -77,25 +77,25 @@ empty(seq);

    - Return type: Convertible to bool. + Return type: Convertible to bool.

    - Semantics: Evaluates to true if the sequence is empty, else, evaluates - to false. + Semantics: Evaluates to true if the sequence is empty, else, evaluates + to false.

    - + Header
     #include <boost/fusion/sequence/intrinsic/empty.hpp>
     
    - + Example
    -vector<int, int, int> v(1, 2, 3);
    +vector<int, int, int> v(1, 2, 3);
     assert(empty(v) == false);
     
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/end.html b/doc/html/fusion/sequences/intrinsics/functions/end.html index 160f93ac..b5d4fa03 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/end.html +++ b/doc/html/fusion/sequences/intrinsics/functions/end.html @@ -3,7 +3,7 @@ end - + @@ -26,27 +26,27 @@
    - + Description

    Returns an iterator pointing to one element past the end of the sequence.

    - + Synopsis
     template <typename Sequence>
    -typename result_of::end<Sequence>::type
    +typename result_of::end<Sequence>::type
     end(Sequence& seq);
     
     template <typename Sequence>
    -typename result_of::end<Sequence const>::type
    +typename result_of::end<Sequence const>::type
     end(Sequence const& seq);
     
    - + Parameters
    @@ -61,7 +61,7 @@ - +
    Description
    seqseq Model of Forward @@ -72,7 +72,7 @@
    - + Expression Semantics
    @@ -80,41 +80,41 @@ end(seq);

    - Return type: Return type: Forward - Iterator if seq + Iterator if seq is a Forward Sequence else, Bidirectional - Iterator if seq + Iterator if seq is a Bidirectional Sequence else, Random - Access Iterator if seq + Access Iterator if seq is a Random Access Sequence.

    - Semantics: Returns an iterator pointing + Semantics: Returns an iterator pointing to one element past the end of the sequence.

    - + Header
     #include <boost/fusion/sequence/intrinsic/end.hpp>
     
    - + Example
    -vector<int, int, int> v(1, 2, 3);
    -assert(deref(prior(end(v))) == 3);
    +vector<int, int, int> v(1, 2, 3);
    +assert(deref(prior(end(v))) == 3);
     
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/front.html b/doc/html/fusion/sequences/intrinsics/functions/front.html index c6fcd9c2..04b9c2ad 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/front.html +++ b/doc/html/fusion/sequences/intrinsics/functions/front.html @@ -3,7 +3,7 @@ front - + @@ -26,27 +26,27 @@
    - + Description

    Returns the first element in the sequence.

    - + Synopsis
     template <typename Sequence>
    -typename result_of::front<Sequence>::type
    +typename result_of::front<Sequence>::type
     front(Sequence& seq);
     
     template <typename Sequence>
    -typename result_of::front<Sequence const>::type
    +typename result_of::front<Sequence const>::type
     front(Sequence const& seq);
     
    - + Parameters
    @@ -61,7 +61,7 @@ - +
    Description
    seqseq Model of Forward @@ -71,7 +71,7 @@
    - + Expression Semantics
    @@ -79,34 +79,34 @@ front(seq);

    - Return type: Returns a reference to - the first element in the sequence seq - if seq is mutable and - e = - o, where e + Return type: Returns a reference to + the first element in the sequence seq + if seq is mutable and + e = + o, where e is the first element in the sequence, is a valid expression. Else, returns a type convertable to the first element in the sequence.

    - Precondition: empty(seq) == false + Precondition: empty(seq) == false

    - Semantics: Returns the first element + Semantics: Returns the first element in the sequence.

    - + Header
     #include <boost/fusion/sequence/intrinsic/front.hpp>
     
    - + Example
    -vector<int, int, int> v(1, 2, 3);
    +vector<int, int, int> v(1, 2, 3);
     assert(front(v) == 1);
     
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/has_key.html b/doc/html/fusion/sequences/intrinsics/functions/has_key.html index 8225595b..a6563e3d 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/has_key.html +++ b/doc/html/fusion/sequences/intrinsics/functions/has_key.html @@ -3,7 +3,7 @@ has_key - + @@ -26,26 +26,26 @@
    - + Description

    - Returns a type convertible to bool - that evaluates to true if + Returns a type convertible to bool + that evaluates to true if the sequence contains an element associated with a Key, else, evaluates - to false. + to false.

    - + Synopsis
     template <typename Key, typename Sequence>
    -typename result_of::has_key<Sequence, Key>::type
    +typename result_of::has_key<Sequence, Key>::type
     has_key(Sequence const& seq);
     
    - + Parameters
    @@ -61,7 +61,7 @@ - + - + @@ -78,7 +78,7 @@
    seqseq Model of Associative @@ -70,7 +70,7 @@ The sequence we wish to investigate.
    KeyKey Any type The queried key.
    - + Expression Semantics
    @@ -86,25 +86,25 @@ has_key<Key>(seq);

    - Return type: Convertible to bool. + Return type: Convertible to bool.

    - Semantics: Evaluates to true if the sequence contains an element - associated with Key, else, evaluates to false. + Semantics: Evaluates to true if the sequence contains an element + associated with Key, else, evaluates to false.

    - + Header
     #include <boost/fusion/sequence/intrinsic/has_key.hpp>
     
    - + Example
    -set<int, char, bool> s(1, 'x', true);
    +set<int, char, bool> s(1, 'x', true);
     assert(has_key<char>(s) == true);
     
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/size.html b/doc/html/fusion/sequences/intrinsics/functions/size.html index 69662615..c6d4a132 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/size.html +++ b/doc/html/fusion/sequences/intrinsics/functions/size.html @@ -3,7 +3,7 @@ size - + @@ -26,24 +26,24 @@
    - + Description

    - Returns a type convertible to int + Returns a type convertible to int that evaluates the number of elements in the sequence.

    - + Synopsis
     template <typename Sequence>
    -typename result_of::size<Sequence>::type
    +typename result_of::size<Sequence>::type
     size(Sequence const& seq);
     
    - + Parameters
    @@ -58,7 +58,7 @@ - +
    Description
    seqseq Model of Forward @@ -68,7 +68,7 @@
    - + Expression Semantics
    @@ -76,25 +76,25 @@ size(seq);

    - Return type: Convertible to int. + Return type: Convertible to int.

    - Semantics: Returns the number of elements + Semantics: Returns the number of elements in the sequence.

    - + Header
     #include <boost/fusion/sequence/intrinsic/size.hpp>
     
    - + Example
    -vector<int, int, int> v(1, 2, 3);
    +vector<int, int, int> v(1, 2, 3);
     assert(size(v) == 3);
     
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions.html b/doc/html/fusion/sequences/intrinsics/metafunctions.html index f7b21dc8..eafb7ed6 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions.html @@ -3,7 +3,7 @@ Metafunctions - + diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/at.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at.html index e356df69..2e2c610a 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/at.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/at.html @@ -3,7 +3,7 @@ at - + @@ -26,16 +26,16 @@
    - + Description

    - Returns the result type of at - [6] + Returns the result type of at + [6] .

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.25. Parameters

    +

    Table 1.25. Parameters

    @@ -62,7 +62,7 @@ - + - + @@ -80,7 +80,7 @@
    SeqSeq A model of Forward @@ -71,7 +71,7 @@ Argument sequence
    NN An MPL Integral Constant Index of element
    - + Expression Semantics
    @@ -88,34 +88,34 @@ result_of::at<Seq, N>::type

    - Return type: Any type. + Return type: Any type.

    - Semantics: Returns the result type of - using at to access the Nth element of Seq. + Semantics: Returns the result type of + using at to access the Nth element of Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/at.hpp>
     
    - + Example
    -typedef vector<int,float,char> vec;
    -BOOST_MPL_ASSERT((boost::is_same<result_of::at<vec, boost::mpl::int_<1> >::type, float&>));
    +typedef vector<int,float,char> vec;
    +BOOST_MPL_ASSERT((boost::is_same<result_of::at<vec, boost::mpl::int_<1> >::type, float&>));
     


    -

    [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/sequences/intrinsics/metafunctions/at_c.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html index f997107b..134b681f 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html @@ -3,7 +3,7 @@ at_c - + @@ -26,16 +26,16 @@
    - + Description

    - Returns the result type of at_c - [7] + Returns the result type of at_c + [7] .

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.26. Parameters

    +

    Table 1.26. Parameters

    @@ -62,7 +62,7 @@ - + - + @@ -80,7 +80,7 @@
    SeqSeq A model of Forward @@ -71,7 +71,7 @@ Argument sequence
    MM Positive integer index Index of element
    - + Expression Semantics
    @@ -88,34 +88,34 @@ result_of::at_c<Seq, M>::type

    - Return type: Any type + Return type: Any type

    - Semantics: Returns the result type of - using at_c to access the Mth element of Seq. + Semantics: Returns the result type of + using at_c to access the Mth element of Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/at.hpp>
     
    - + Example
    -typedef vector<int,float,char> vec;
    -BOOST_MPL_ASSERT((boost::is_same<result_of::at_c<vec, 1>::type, float&>));
    +typedef vector<int,float,char> vec;
    +BOOST_MPL_ASSERT((boost::is_same<result_of::at_c<vec, 1>::type, float&>));
     


    -

    [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/sequences/intrinsics/metafunctions/at_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html index 85ed0556..abbe3708 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html @@ -3,7 +3,7 @@ at_key - + @@ -26,16 +26,16 @@
    - + Description

    - Returns the result type of at_key - [8] + Returns the result type of at_key + [8] .

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.30. Parameters

    +

    Table 1.30. Parameters

    @@ -62,7 +62,7 @@ - + - + @@ -80,7 +80,7 @@
    SeqSeq A model of Forward @@ -71,7 +71,7 @@ Argument sequence
    KeyKey Any type Key type
    - + Expression Semantics
    @@ -88,36 +88,36 @@ result_of::at_key<Seq, Key>::type

    - Return type: Any type. + Return type: Any type.

    - Semantics: Returns the result of using - at_key to access the element - with key type Key in - Seq. + Semantics: Returns the result of using + at_key to access the element + with key type Key in + Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/at_key.hpp>
     
    - + Example
    -typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
    -BOOST_MPL_ASSERT((boost::is_same<result_of::at_key<mymap, int>::type, char&>));
    +typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
    +BOOST_MPL_ASSERT((boost::is_same<result_of::at_key<mymap, int>::type, char&>));
     


    -

    [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/sequences/intrinsics/metafunctions/back.html b/doc/html/fusion/sequences/intrinsics/metafunctions/back.html index 74b82d55..3e975356 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/back.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/back.html @@ -3,7 +3,7 @@ back - + @@ -26,14 +26,14 @@
    - + Description

    - Returns the result type of back. + Returns the result type of back.

    - + Synopsis
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.23. Parameters

    +

    Table 1.23. Parameters

    @@ -57,7 +57,7 @@ - +
    Description
    SeqSeq A model of Forward @@ -68,7 +68,7 @@
    - + Expression Semantics
    @@ -76,26 +76,26 @@ result_of::back<Seq>::type

    - Return type: Any type + Return type: Any type

    - Semantics: The type returned by dereferencing - an iterator to the last element in the sequence. Equivalent to result_of::deref<result_of::prior<result_of::end<Seq>::type>::type>::type. + Semantics: The type returned by dereferencing + 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>
     
    - + Example
    -typedef vector<int,char> vec;
    -BOOST_MPL_ASSERT((boost::is_same<result_of::back<vec>::type, char&>));
    +typedef vector<int,char> vec;
    +BOOST_MPL_ASSERT((boost::is_same<result_of::back<vec>::type, char&>));
     
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html b/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html index 6bcd07bf..34131c86 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html @@ -3,7 +3,7 @@ begin - + @@ -26,14 +26,14 @@
    - + Description

    - Returns the result type of begin. + Returns the result type of begin.

    - + Synopsis
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.19. Parameters

    +

    Table 1.19. Parameters

    @@ -57,7 +57,7 @@ - +
    Description
    SeqSeq A model of Forward @@ -68,7 +68,7 @@
    - + Expression Semantics
    @@ -76,28 +76,28 @@ result_of::begin<Seq>::type

    - Return type: An iterator modelling the - same traversal concept as Seq. + Return type: An iterator modelling the + same traversal concept as Seq.

    - Semantics: Returns the type of an iterator - to the first element of Seq. + Semantics: Returns the type of an iterator + to the first element of Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/begin.hpp>
     
    - + Example
    -typedef vector<int> vec;
    -typedef result_of::begin<vec>::type it;
    -BOOST_MPL_ASSERT((boost::is_same<result_of::deref<it>::type, int&>))
    +typedef vector<int> vec;
    +typedef result_of::begin<vec>::type it;
    +BOOST_MPL_ASSERT((boost::is_same<result_of::deref<it>::type, int&>))
     
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html b/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html index 3dd1fd1e..e00ffed1 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html @@ -3,7 +3,7 @@ empty - + @@ -26,14 +26,14 @@
    - + Description

    - Returns the result type of empty. + Returns the result type of empty.

    - + Synopsis
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.21. Parameters

    +

    Table 1.21. Parameters

    @@ -57,7 +57,7 @@ - +
    Description
    SeqSeq A model of Forward @@ -68,7 +68,7 @@
    - + Expression Semantics
    @@ -76,30 +76,30 @@ result_of::empty<Seq>::type

    - Return type: An MPL Integral Constant + Return type: An MPL Integral Constant

    - Semantics: Returns mpl::true_ - if Seq has zero elements, - mpl::false_ otherwise. + Semantics: Returns mpl::true_ + if Seq has zero elements, + mpl::false_ otherwise.

    - + Header
     #include <boost/fusion/sequence/intrinsic/empty.hpp>
     
    - + Example
    -typedef vector<> empty_vec;
    -typedef vector<int,float,char> vec;
    +typedef vector<> empty_vec;
    +typedef vector<int,float,char> vec;
     
    -BOOST_MPL_ASSERT((result_of::empty<empty_vec>));
    -BOOST_MPL_ASSERT_NOT((result_of::empty<vec>));
    +BOOST_MPL_ASSERT((result_of::empty<empty_vec>));
    +BOOST_MPL_ASSERT_NOT((result_of::empty<vec>));
     
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/end.html b/doc/html/fusion/sequences/intrinsics/metafunctions/end.html index 0fb1222c..b5e57e11 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/end.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/end.html @@ -3,7 +3,7 @@ end - + @@ -26,14 +26,14 @@
    - + Description

    - Returns the result type of end. + Returns the result type of end.

    - + Synopsis
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.20. Parameters

    +

    Table 1.20. Parameters

    @@ -57,7 +57,7 @@ - +
    Description
    SeqSeq A model of Forward @@ -68,7 +68,7 @@
    - + Expression Semantics
    @@ -76,28 +76,28 @@ result_of::end<Seq>::type

    - Return type: A model of the same traversal - concept as Seq. + Return type: A model of the same traversal + concept as Seq.

    - Semantics: Returns the type of an iterator - one past the end of Seq. + Semantics: Returns the type of an iterator + one past the end of Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/end.hpp>
     
    - + Example
    -typedef vector<int> vec;
    -typedef result_of::prior<result_of::end<vec>::type>::type first;
    -BOOST_MPL_ASSERT((result_of::equal_to<first, result_of::begin<vec>::type>))
    +typedef vector<int> vec;
    +typedef result_of::prior<result_of::end<vec>::type>::type first;
    +BOOST_MPL_ASSERT((result_of::equal_to<first, result_of::begin<vec>::type>))
     
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/front.html b/doc/html/fusion/sequences/intrinsics/metafunctions/front.html index d1fadda7..8890c856 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/front.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/front.html @@ -3,7 +3,7 @@ front - + @@ -26,14 +26,14 @@
    - + Description

    - Returns the result type of front. + Returns the result type of front.

    - + Synopsis
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.22. Parameters

    +

    Table 1.22. Parameters

    @@ -57,7 +57,7 @@ - +
    Description
    SeqSeq A model of Forward @@ -68,7 +68,7 @@
    - + Expression Semantics
    @@ -76,27 +76,27 @@ result_of::front<Seq>::type

    - Return type: Any type + Return type: Any type

    - Semantics: The type returned by dereferencing - an iterator to the first element in Seq. - Equivalent to result_of::deref<result_of::begin<Seq>::type>::type. + Semantics: The type returned by dereferencing + an iterator to the first element in Seq. + Equivalent to result_of::deref<result_of::begin<Seq>::type>::type.

    - + Header
     #include <boost/fusion/sequence/intrinsic/front.hpp>
     
    - + Example
    -typedef vector<int,char> vec;
    -BOOST_MPL_ASSERT((boost::is_same<result_of::front<vec>::type, int&>));
    +typedef vector<int,char> vec;
    +BOOST_MPL_ASSERT((boost::is_same<result_of::front<vec>::type, int&>));
     
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html index 4a9deae3..a15bd554 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html @@ -3,7 +3,7 @@ has_key - + @@ -26,14 +26,14 @@
    - + Description

    - Returns the result type of has_key. + Returns the result type of has_key.

    - + Synopsis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.29. Parameters

    +

    Table 1.29. Parameters

    @@ -60,7 +60,7 @@ - + - + @@ -78,7 +78,7 @@
    SeqSeq A model of Forward @@ -69,7 +69,7 @@ Argument sequence
    KeyKey Any type Key type
    - + Expression Semantics
    @@ -86,29 +86,29 @@ result_of::has_key<Seq, Key>::type

    - Return type: An MPL Integral Constant. + Return type: An MPL Integral Constant.

    - Semantics: Returns mpl::true_ - if Seq contains an element - with key type Key, returns - mpl::false_ otherwise. + Semantics: Returns mpl::true_ + if Seq contains an element + with key type Key, returns + mpl::false_ otherwise.

    - + Header
     #include <boost/fusion/sequence/intrinsic/has_key.hpp>
     
    - + Example
    -typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
    -BOOST_MPL_ASSERT((result_of::has_key<mymap, int>));
    -BOOST_MPL_ASSERT_NOT((result_of::has_key<mymap, void*>));
    +typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
    +BOOST_MPL_ASSERT((result_of::has_key<mymap, int>));
    +BOOST_MPL_ASSERT_NOT((result_of::has_key<mymap, void*>));
     
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/size.html b/doc/html/fusion/sequences/intrinsics/metafunctions/size.html index 09dd4a2e..57a1e6d6 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/size.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/size.html @@ -3,7 +3,7 @@ size - + @@ -26,14 +26,14 @@
    - + Description

    - Returns the result type of size. + Returns the result type of size.

    - + Synopsis
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.24. Parameters

    +

    Table 1.24. Parameters

    @@ -57,7 +57,7 @@ - +
    Description
    SeqSeq A model of Forward @@ -68,7 +68,7 @@
    - + Expression Semantics
    @@ -76,26 +76,26 @@ result_of::size<Seq>::type

    - Return type: An MPL Integral Constant. + Return type: An MPL Integral Constant.

    - Semantics: Returns the number of elements - in Seq. + Semantics: Returns the number of elements + in Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/size.hpp>
     
    - + Example
    -typedef vector<int,float,char> vec;
    -typedef result_of::size<vec>::type size_mpl_integral_constant;
    +typedef vector<int,float,char> vec;
    +typedef result_of::size<vec>::type size_mpl_integral_constant;
     BOOST_MPL_ASSERT_RELATION(size_mpl_integral_constant::value, ==, 3);
     
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html index 1ee056b3..7791e45b 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html @@ -3,7 +3,7 @@ value_at - + @@ -26,14 +26,14 @@
    - + Description

    Returns the actual type at a given index from the Sequence.

    - + Synopsis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.27. Parameters

    +

    Table 1.27. Parameters

    @@ -60,7 +60,7 @@ - + - + @@ -78,7 +78,7 @@
    SeqSeq A model of Forward @@ -69,7 +69,7 @@ Argument sequence
    NN An MPL Integral Constant Index of element
    - + Expression Semantics
    @@ -86,26 +86,26 @@ result_of::value_at<Seq, N>::type

    - Return type: Any type. + Return type: Any type.

    - Semantics: Returns the actual type at - the Nth element of Seq. + Semantics: Returns the actual type at + the Nth element of Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/value_at.hpp>
     
    - + Example
    -typedef vector<int,float,char> vec;
    -BOOST_MPL_ASSERT((boost::is_same<result_of::value_at<vec, boost::mpl::int_<1> >::type, float>));
    +typedef vector<int,float,char> vec;
    +BOOST_MPL_ASSERT((boost::is_same<result_of::value_at<vec, boost::mpl::int_<1> >::type, float>));
     
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html index 157a98a3..e36762f4 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html @@ -3,7 +3,7 @@ value_at_c - + @@ -26,14 +26,14 @@
    - + Description

    Returns the actual type at a given index from the Sequence.

    - + Synopsis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.28. Parameters

    +

    Table 1.28. Parameters

    @@ -60,7 +60,7 @@ - + - + @@ -78,7 +78,7 @@
    SeqSeq A model of Forward @@ -69,7 +69,7 @@ Argument sequence
    MM Positive integer index Index of element
    - + Expression Semantics
    @@ -86,26 +86,26 @@ result_of::value_at_c<Seq, M>::type

    - Return type: Any type + Return type: Any type

    - Semantics: Returns the actual type at - the Mth element of Seq. + Semantics: Returns the actual type at + the Mth element of Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/value_at.hpp>
     
    - + Example
    -typedef vector<int,float,char> vec;
    -BOOST_MPL_ASSERT((boost::is_same<result_of::value_at_c<vec, 1>::type, float>));
    +typedef vector<int,float,char> vec;
    +BOOST_MPL_ASSERT((boost::is_same<result_of::value_at_c<vec, 1>::type, float>));
     
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html index 434cdf2a..05e2e0cd 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html @@ -3,7 +3,7 @@ value_at_key - + @@ -26,14 +26,14 @@
    - + Description

    Returns the actual element type associated with a Key from the Sequence.

    - + Synopsis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.31. Parameters

    +

    Table 1.31. Parameters

    @@ -60,7 +60,7 @@ - + - + @@ -78,7 +78,7 @@
    SeqSeq A model of Forward @@ -69,7 +69,7 @@ Argument sequence
    KeyKey Any type Key type
    - + Expression Semantics
    @@ -86,27 +86,27 @@ result_of::value_at_key<Seq, Key>::type

    - Return type: Any type. + Return type: Any type.

    - Semantics: Returns the actual element - type associated with key type Key - in Seq. + Semantics: Returns the actual element + type associated with key type Key + in Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/value_at_key.hpp>
     
    - + Example
    -typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
    -BOOST_MPL_ASSERT((boost::is_same<result_of::at_key<mymap, int>::type, char>));
    +typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
    +BOOST_MPL_ASSERT((boost::is_same<result_of::at_key<mymap, int>::type, char>));
     
    diff --git a/doc/html/fusion/sequences/operators.html b/doc/html/fusion/sequences/operators.html index db2d8287..ea5ab678 100644 --- a/doc/html/fusion/sequences/operators.html +++ b/doc/html/fusion/sequences/operators.html @@ -3,7 +3,7 @@ Operators - + diff --git a/doc/html/fusion/sequences/operators/comparison.html b/doc/html/fusion/sequences/operators/comparison.html index bec709dc..7ecdfbb3 100644 --- a/doc/html/fusion/sequences/operators/comparison.html +++ b/doc/html/fusion/sequences/operators/comparison.html @@ -3,7 +3,7 @@ Comparison - + @@ -39,16 +39,16 @@ than equal

    - The Comparison operators: ==, - !=, <, - <=, >= - and >= work generically + The Comparison operators: ==, + !=, <, + <=, >= + and >= work generically on all Fusion sequences. Comparison operators are "short- circuited": elementary comparisons start from the first elements and are performed only until the result is clear.

    - + Header
    diff --git a/doc/html/fusion/sequences/operators/comparison/equal.html b/doc/html/fusion/sequences/operators/comparison/equal.html
    index 6b32830c..c2efb6bd 100644
    --- a/doc/html/fusion/sequences/operators/comparison/equal.html
    +++ b/doc/html/fusion/sequences/operators/comparison/equal.html
    @@ -3,7 +3,7 @@
     
     equal
     
    -
    +
     
     
     
    @@ -27,14 +27,14 @@
     
     
    - + Description

    Compare two sequences for equality.

    - + Synopsis
    @@ -43,7 +43,7 @@
     operator==(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -58,8 +58,8 @@ - + @@ -68,7 +68,7 @@
    Description
    a, - ba, + b Instances of Sequence
    - + Expression Semantics
    @@ -76,16 +76,16 @@ a == b

    - Return type: bool + Return type: bool

    - Requirements: + Requirements:

    - For each element, e1, - in sequence a, and for - each element, e2, in - sequence b, a == b is a valid expression returning a + For each element, e1, + in sequence a, and for + each element, e2, in + sequence b, a == b is a valid expression returning a type that is convertible to bool.

    @@ -93,30 +93,30 @@ compile time error.

    - Semantics: + Semantics:

    - For each element, e1, - in sequence a, and for - each element, e2, in - sequence b, e1 == e2 returns true. For any 2 zero length + For each element, e1, + in sequence a, and for + each element, e2, in + sequence b, e1 == e2 returns true. For any 2 zero length _sequence_s, e and f, e == f returns true.

    - + Header
     #include <boost/fusion/sequence/comparison/equal_to.hpp>
     
    - + Example
    -vector<int, char> v1(5, 'a');
    -vector<int, char> v2(5, 'a');
    +vector<int, char> v1(5, 'a');
    +vector<int, char> v2(5, 'a');
     assert(v1 == v2);
     
    diff --git a/doc/html/fusion/sequences/operators/comparison/greater_than.html b/doc/html/fusion/sequences/operators/comparison/greater_than.html index 10187349..9b78fc44 100644 --- a/doc/html/fusion/sequences/operators/comparison/greater_than.html +++ b/doc/html/fusion/sequences/operators/comparison/greater_than.html @@ -4,7 +4,7 @@ greater than - +
    - + Synopsis
    @@ -43,7 +43,7 @@
     operator>(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -58,8 +58,8 @@ - + @@ -68,7 +68,7 @@
    Description
    a, - ba, + b Instances of Sequence
    - + Expression Semantics
    @@ -76,16 +76,16 @@ a > b

    - Return type: bool + Return type: bool

    - Requirements: + Requirements:

    - For each element, e1, - in sequence a, and for - each element, e2, in - sequence b, a < b is a valid expression returning a + For each element, e1, + in sequence a, and for + each element, e2, in + sequence b, a < b is a valid expression returning a type that is convertible to bool.

    @@ -93,23 +93,23 @@ compile time error.

    - Semantics: Returns b < a. + Semantics: Returns b < a.

    - + Header
     #include <boost/fusion/sequence/comparison/less_equal.hpp>
     
    - + Example
    -vector<int, float> v1(4, 3.3f);
    -vector<short, float> v2(5, 3.3f);
    -vector<long, double> v3(5, 4.4);
    +vector<int, float> v1(4, 3.3f);
    +vector<short, float> v2(5, 3.3f);
    +vector<long, double> v3(5, 4.4);
     assert(v2 > v1);
     assert(v3 > v2);
     
    diff --git a/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html b/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html index b4cdbf9f..01d5a45a 100644 --- a/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html +++ b/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html @@ -4,7 +4,7 @@ greater than equal - +
    - + Synopsis
    @@ -42,7 +42,7 @@
     operator>=(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -57,8 +57,8 @@ - + @@ -67,7 +67,7 @@
    Description
    a, - ba, + b Instances of Sequence
    - + Expression Semantics
    @@ -75,16 +75,16 @@ a >= b

    - Return type: bool + Return type: bool

    - Requirements: + Requirements:

    - For each element, e1, - in sequence a, and for - each element, e2, in - sequence b, a < b is a valid expression returning a + For each element, e1, + in sequence a, and for + each element, e2, in + sequence b, a < b is a valid expression returning a type that is convertible to bool.

    @@ -92,23 +92,23 @@ compile time error.

    - Semantics: Returns !(a < b). + Semantics: Returns !(a < b).

    - + Header
     #include <boost/fusion/sequence/comparison/greater_equal.hpp>
     
    - + Example
    -vector<int, float> v1(4, 3.3f);
    -vector<short, float> v2(5, 3.3f);
    -vector<long, double> v3(5, 4.4);
    +vector<int, float> v1(4, 3.3f);
    +vector<short, float> v2(5, 3.3f);
    +vector<long, double> v3(5, 4.4);
     assert(v2 >= v1);
     assert(v3 >= v2);
     
    diff --git a/doc/html/fusion/sequences/operators/comparison/less_than.html b/doc/html/fusion/sequences/operators/comparison/less_than.html index 299f685d..f75e097d 100644 --- a/doc/html/fusion/sequences/operators/comparison/less_than.html +++ b/doc/html/fusion/sequences/operators/comparison/less_than.html @@ -4,7 +4,7 @@ less than - +
    - + Synopsis
    @@ -43,7 +43,7 @@
     operator<(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -58,8 +58,8 @@ - + @@ -68,7 +68,7 @@
    Description
    a, - ba, + b Instances of Sequence
    - + Expression Semantics
    @@ -76,16 +76,16 @@ a < b

    - Return type: bool + Return type: bool

    - Requirements: + Requirements:

    - For each element, e1, - in sequence a, and for - each element, e2, in - sequence b, a < b is a valid expression returning a + For each element, e1, + in sequence a, and for + each element, e2, in + sequence b, a < b is a valid expression returning a type that is convertible to bool.

    @@ -93,25 +93,25 @@ compile time error.

    - Semantics: Returns the lexicographical - comparison of between a - and b. + Semantics: Returns the lexicographical + comparison of between a + and b.

    - + Header
     #include <boost/fusion/sequence/comparison/less.hpp>
     
    - + Example
    -vector<int, float> v1(4, 3.3f);
    -vector<short, float> v2(5, 3.3f);
    -vector<long, double> v3(5, 4.4);
    +vector<int, float> v1(4, 3.3f);
    +vector<short, float> v2(5, 3.3f);
    +vector<long, double> v3(5, 4.4);
     assert(v1 < v2);
     assert(v2 < v3);
     
    diff --git a/doc/html/fusion/sequences/operators/comparison/less_than_equal.html b/doc/html/fusion/sequences/operators/comparison/less_than_equal.html index a4862309..ad036f2a 100644 --- a/doc/html/fusion/sequences/operators/comparison/less_than_equal.html +++ b/doc/html/fusion/sequences/operators/comparison/less_than_equal.html @@ -4,7 +4,7 @@ less than equal - +
    - + Synopsis
    @@ -43,7 +43,7 @@
     operator<=(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -58,8 +58,8 @@ - + @@ -68,7 +68,7 @@
    Description
    a, - ba, + b Instances of Sequence
    - + Expression Semantics
    @@ -76,16 +76,16 @@ a <= b

    - Return type: bool + Return type: bool

    - Requirements: + Requirements:

    - For each element, e1, - in sequence a, and for - each element, e2, in - sequence b, a < b is a valid expression returning a + For each element, e1, + in sequence a, and for + each element, e2, in + sequence b, a < b is a valid expression returning a type that is convertible to bool.

    @@ -93,23 +93,23 @@ compile time error.

    - Semantics: Returns !(b < a). + Semantics: Returns !(b < a).

    - + Header
     #include <boost/fusion/sequence/comparison/less_equal.hpp>
     
    - + Example
    -vector<int, float> v1(4, 3.3f);
    -vector<short, float> v2(5, 3.3f);
    -vector<long, double> v3(5, 4.4);
    +vector<int, float> v1(4, 3.3f);
    +vector<short, float> v2(5, 3.3f);
    +vector<long, double> v3(5, 4.4);
     assert(v1 <= v2);
     assert(v2 <= v3);
     
    diff --git a/doc/html/fusion/sequences/operators/comparison/not_equal.html b/doc/html/fusion/sequences/operators/comparison/not_equal.html index a4c1e8f6..bcd67051 100644 --- a/doc/html/fusion/sequences/operators/comparison/not_equal.html +++ b/doc/html/fusion/sequences/operators/comparison/not_equal.html @@ -4,7 +4,7 @@ not equal - + @@ -33,7 +33,7 @@ Compare two sequences for inequality.

    - + Synopsis
    @@ -42,7 +42,7 @@
     operator!=(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -57,8 +57,8 @@ - + @@ -67,7 +67,7 @@
    Description
    a, - ba, + b Instances of Sequence
    - + Expression Semantics
    @@ -75,16 +75,16 @@ a != b

    - Return type: bool + Return type: bool

    - Requirements: + Requirements:

    - For each element, e1, - in sequence a, and for - each element, e2, in - sequence b, a == b is a valid expression returning a + For each element, e1, + in sequence a, and for + each element, e2, in + sequence b, a == b is a valid expression returning a type that is convertible to bool.

    @@ -92,25 +92,25 @@ compile time error.

    - Semantics: + Semantics:

    Returns !(a == b).

    - + Header
     #include <boost/fusion/sequence/comparison/not_equal_to.hpp>
     
    - + Example
    -vector<int, char> v3(5, 'b');
    -vector<int, char> t4(2, 'a');
    +vector<int, char> v3(5, 'b');
    +vector<int, char> t4(2, 'a');
     assert(v1 != v3);
     assert(v1 != t4);
     assert(!(v1 != v2));
    diff --git a/doc/html/fusion/sequences/operators/i_o.html b/doc/html/fusion/sequences/operators/i_o.html
    index 60e4c2d3..9e39d5d4 100644
    --- a/doc/html/fusion/sequences/operators/i_o.html
    +++ b/doc/html/fusion/sequences/operators/i_o.html
    @@ -3,7 +3,7 @@
     
     I/O
     
    -
    +
     
     
     
    @@ -30,25 +30,25 @@
     
    out

    - The I/O operators: << - and >> work generically - on all Fusion sequences. The global operator<< has been overloaded for generic + The I/O operators: << + and >> work generically + on all Fusion sequences. The global operator<< has been overloaded for generic output streams such that _sequence_s - are output by recursively calling operator<< for each element. Analogously, - the global operator>> + are output by recursively calling operator<< for each element. Analogously, + the global operator>> has been overloaded to extract _sequence_s - from generic input streams by recursively calling operator>> for each element. + from generic input streams by recursively calling operator>> for each element.

    The default delimiter between the elements is space, and the Sequence is enclosed in parenthesis. For Example:

    -vector<float, int, std::string> a(1.0f, 2, std::string("Howdy folks!");
    +vector<float, int, std::string> a(1.0f, 2, std::string("Howdy folks!");
     cout << a; 
     

    - outputs the vector as: (1.0 2 Howdy folks!) + outputs the vector as: (1.0 2 Howdy folks!)

    The library defines three manipulators for changing the default behavior: @@ -56,23 +56,23 @@

    Manipulators

    -
    tuple_open(arg)
    +
    tuple_open(arg)
    Defines the character that is output before the first element.
    -
    tuple_close(arg)
    +
    tuple_close(arg)
    Defines the character that is output after the last element.
    -
    tuple_delimiter(arg)
    +
    tuple_delimiter(arg)
    Defines the delimiter character between elements.

    - The argument to tuple_open, - tuple_close and tuple_delimiter may be a char, wchar_t, + The argument to tuple_open, + tuple_close and tuple_delimiter may be a char, wchar_t, a C-string, or a wide C-string.

    @@ -82,12 +82,12 @@ std::cout << tuple_open('[') << tuple_close(']') << tuple_delimiter(", ") << a;

    - outputs the same vector, a + outputs the same vector, a as: [1.0, 2, Howdy folks!]

    - The same manipulators work with operator>> and istream - as well. Suppose the std::cin + The same manipulators work with operator>> and istream + as well. Suppose the std::cin stream contains the following data:

    @@ -97,8 +97,8 @@
               The code:
             

    -vector<int, int, int> i;
    -vector<int, int> j;
    +vector<int, int, int> i;
    +vector<int, int> j;
     
     std::cin >> i;
     std::cin >> set_open('[') >> set_close(']') >> set_delimiter(':');
    @@ -106,16 +106,16 @@
     

    reads the data into the _vector_s - i and j. + i and j.

    Note that extracting _sequence_s - with std::string or C-style string elements does + with std::string or C-style string elements does not generally work, since the streamed Sequence representation may not be unambiguously parseable.

    - + Header
    diff --git a/doc/html/fusion/sequences/operators/i_o/in.html b/doc/html/fusion/sequences/operators/i_o/in.html
    index 64e8c2f0..6920479a 100644
    --- a/doc/html/fusion/sequences/operators/i_o/in.html
    +++ b/doc/html/fusion/sequences/operators/i_o/in.html
    @@ -3,7 +3,7 @@
     
     in
     
    -
    +
     
     
     
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -34,7 +34,7 @@ stream.

    - + Synopsis
    @@ -43,7 +43,7 @@
     operator>>(IStream& is, Sequence& seq);
     
    - + Parameters
    @@ -73,7 +73,7 @@
    - + Expression Semantics
    @@ -81,26 +81,26 @@ is >> seq

    - Return type: IStream& + Return type: IStream&

    - Semantics: For each element, e, in sequence, seq, - call is >> - e. + Semantics: For each element, e, in sequence, seq, + call is >> + e.

    - + Header
     #include <boost/fusion/sequence/io/in.hpp>
     
    - + Example
    -vector<int, std::string, char> v;
    +vector<int, std::string, char> v;
     std::cin >> v;
     
    diff --git a/doc/html/fusion/sequences/operators/i_o/out.html b/doc/html/fusion/sequences/operators/i_o/out.html index b8db9e21..03cab0ab 100644 --- a/doc/html/fusion/sequences/operators/i_o/out.html +++ b/doc/html/fusion/sequences/operators/i_o/out.html @@ -3,7 +3,7 @@ out - + @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ stream.

    - + Synopsis
    @@ -43,7 +43,7 @@
     operator<<(OStream& os, Sequence& seq);
     
    - + Parameters
    @@ -73,7 +73,7 @@
    - + Expression Semantics
    @@ -81,26 +81,26 @@ os << seq

    - Return type: OStream& + Return type: OStream&

    - Semantics: For each element, e, in sequence, seq, - call os << - e. + Semantics: For each element, e, in sequence, seq, + call os << + e.

    - + Header
     #include <boost/fusion/sequence/io/out.hpp>
     
    - + Example
    -std::cout << make_vector(123, "Hello", 'x') << std::endl;
    +std::cout << make_vector(123, "Hello", 'x') << std::endl;
     
    diff --git a/doc/html/fusion/sequences/views.html b/doc/html/fusion/sequences/views.html index ccbbf472..c13c7c05 100644 --- a/doc/html/fusion/sequences/views.html +++ b/doc/html/fusion/sequences/views.html @@ -3,7 +3,7 @@ Views - + @@ -44,7 +44,7 @@ very cheap to copy and be passed around by value.

    - + Header

    diff --git a/doc/html/fusion/sequences/views/filter_view.html b/doc/html/fusion/sequences/views/filter_view.html
    index 7e425c8f..3e68c60b 100644
    --- a/doc/html/fusion/sequences/views/filter_view.html
    +++ b/doc/html/fusion/sequences/views/filter_view.html
    @@ -3,7 +3,7 @@
     
     filter_view
     
    -
    +
     
     
     
    @@ -26,25 +26,25 @@
     
     
    - + Description

    - filter_view is a view into + filter_view is a view into a subset of its underlying sequence's elements satisfying a given predicate (an MPL metafunction). - The filter_view presents - only those elements for which its predicate evaluates to mpl::true_. + The filter_view presents + only those elements for which its predicate evaluates to mpl::true_.

    - + Header
     #include <boost/fusion/sequence/view/filter_view.hpp>
     
    - + Synopsis
    @@ -52,7 +52,7 @@
     struct filter_view;
     
    - + Template parameters
    @@ -69,7 +69,7 @@
    - + - +
    SequenceSequence A Forward @@ -78,16 +78,16 @@  
    PredPred Unary - Metafunction returning an mpl::bool_ + Metafunction returning an mpl::bool_  
    - + Model of
    - + Expression Semantics
    @@ -134,30 +134,30 @@ -F(s) +F(s) Creates - a filter_view given - a sequence, s. + a filter_view given + a sequence, s. -F(f) +F(f) Copy - constructs a filter_view - from another filter_view, - f. + constructs a filter_view + from another filter_view, + f. -f = - f2 +f = + f2 Assigns - to a filter_view, - f, from another - filter_view, f2. + to a filter_view, + f, from another + filter_view, f2.
    - + Example
    @@ -165,7 +165,7 @@
     using boost::mpl::not_;
     using boost::is_class;
     
    -typedef vector<std::string, char, long, bool, double> vector_type;
    +typedef vector<std::string, char, long, bool, double> vector_type;
     
     vector_type v("a-string", '@', 987654, true, 6.6);
     filter_view<vector_type const, not_<is_class<_> > > view(v);
    diff --git a/doc/html/fusion/sequences/views/iterator_range.html b/doc/html/fusion/sequences/views/iterator_range.html
    index 8beb71ae..d53044a3 100644
    --- a/doc/html/fusion/sequences/views/iterator_range.html
    +++ b/doc/html/fusion/sequences/views/iterator_range.html
    @@ -3,7 +3,7 @@
     
     iterator_range
     
    -
    +
     
     
     
    @@ -26,22 +26,22 @@
     
     
    - + Description

    - iterator_range presents + iterator_range presents a sub-range of its underlying sequence delimited by a pair of iterators.

    - + Header
     #include <boost/fusion/sequence/view/iterator_range.hpp>
     
    - + Synopsis
    @@ -49,7 +49,7 @@
     struct iterator_range;
     
    - + Template parameters
    @@ -66,14 +66,14 @@ -First +First A fusion Iterator   -Last +Last A fusion Iterator @@ -82,7 +82,7 @@
    - + Model of
    - + Expression Semantics
    @@ -131,43 +131,43 @@ -IR(f, l) +IR(f, l) Creates - an iterator_range - given iterators, f - and l. + an iterator_range + given iterators, f + and l. -IR(ir) +IR(ir) Copy - constructs an iterator_range - from another iterator_range, - ir. + constructs an iterator_range + from another iterator_range, + ir. -ir = - ir2 +ir = + ir2 Assigns - to a iterator_range, - ir, from another - iterator_range, - ir2. + to a iterator_range, + ir, from another + iterator_range, + ir2.
    - + Example
     char const* s = "Ruby";
    -typedef vector<int, char, double, char const*> vector_type;
    +typedef vector<int, char, double, char const*> vector_type;
     vector_type vec(1, 'x', 3.3, s);
     
    -typedef result_of::begin<vector_type>::type A;
    -typedef result_of::end<vector_type>::type B;
    -typedef result_of::next<A>::type C;
    -typedef result_of::prior<B>::type D;
    +typedef result_of::begin<vector_type>::type A;
    +typedef result_of::end<vector_type>::type B;
    +typedef result_of::next<A>::type C;
    +typedef result_of::prior<B>::type D;
     
     C c(vec);
     D d(vec);
    diff --git a/doc/html/fusion/sequences/views/joint_view.html b/doc/html/fusion/sequences/views/joint_view.html
    index cb8979ba..fd753d3b 100644
    --- a/doc/html/fusion/sequences/views/joint_view.html
    +++ b/doc/html/fusion/sequences/views/joint_view.html
    @@ -3,7 +3,7 @@
     
     joint_view
     
    -
    +
     
     
     
    @@ -26,22 +26,22 @@
     
     
    - + Description

    - joint_view presents a view + joint_view presents a view which is a concatenation of two sequences.

    - + Header
     #include <boost/fusion/sequence/view/joint_view.hpp>
     
    - + Synopsis
    @@ -49,7 +49,7 @@
     struct joint_view;
     
    - + Template parameters
    @@ -66,7 +66,7 @@ -Sequence1 +Sequence1 A Forward @@ -75,7 +75,7 @@   -Sequence2 +Sequence2 A Forward @@ -86,7 +86,7 @@
    - + Model of
    - + Expression Semantics
    @@ -135,39 +135,39 @@ -JV(s1, s2) +JV(s1, s2) Creates - a joint_view given - sequences, s1 and - s2. + a joint_view given + sequences, s1 and + s2. -JV(jv) +JV(jv) Copy - constructs a joint_view - from another joint_view, - jv. + constructs a joint_view + from another joint_view, + jv. -jv = - jv2 +jv = + jv2 Assigns - to a joint_view, - jv, from another - joint_view, jv2. + to a joint_view, + jv, from another + joint_view, jv2.
    - + Example
    -vector<int, char> v1(3, 'x');
    -vector<std::string, int> v2("hello", 123);
    +vector<int, char> v1(3, 'x');
    +vector<std::string, int> v2("hello", 123);
     joint_view<
    -    vector<int, char>
    -  , vector<std::string, int>
    +    vector<int, char>
    +  , vector<std::string, int>
     > view(v1, v2);
     std::cout << view << std::endl;
     
    diff --git a/doc/html/fusion/sequences/views/reverse_view.html b/doc/html/fusion/sequences/views/reverse_view.html index 006a525a..883cd7df 100644 --- a/doc/html/fusion/sequences/views/reverse_view.html +++ b/doc/html/fusion/sequences/views/reverse_view.html @@ -3,7 +3,7 @@ reverse_view - + @@ -26,19 +26,19 @@

    - reverse_view presents a + reverse_view presents a reversed view of underlying sequence. The first element will be its last and the last element will be its first.

    - + Header
     #include <boost/fusion/sequence/view/reverse_view.hpp>
     
    - + Synopsis
    @@ -46,7 +46,7 @@
     struct reverse_view;
     
    - + Template parameters
    @@ -62,7 +62,7 @@ Default -Sequence +Sequence A Bidirectional @@ -72,7 +72,7 @@
    - + Model of
    - + Expression Semantics
    @@ -118,34 +118,34 @@ -RV(s) +RV(s) Creates - a unary reverse_view - given sequence, s. + a unary reverse_view + given sequence, s. -RV(rv) +RV(rv) Copy - constructs a reverse_view - from another reverse_view, - rv. + constructs a reverse_view + from another reverse_view, + rv. -rv = - rv2 +rv = + rv2 Assigns - to a reverse_view, - rv, from another - reverse_view, rv2. + to a reverse_view, + rv, from another + reverse_view, rv2.
    - + Example
    -typedef vector<int, short, double> vector_type;
    +typedef vector<int, short, double> vector_type;
     vector_type vec(2, 5, 3.3);
     
     reverse_view<vector_type> reverse(vec);
    diff --git a/doc/html/fusion/sequences/views/single_view.html b/doc/html/fusion/sequences/views/single_view.html
    index 6a0dd254..fd8bb4cf 100644
    --- a/doc/html/fusion/sequences/views/single_view.html
    +++ b/doc/html/fusion/sequences/views/single_view.html
    @@ -3,7 +3,7 @@
     
     single_view
     
    -
    +
     
     
     
    @@ -26,18 +26,18 @@
     
     

    - single_view is a view into + single_view is a view into a value as a single element sequence.

    - + Header
     #include <boost/fusion/sequence/view/single_view.hpp>
     
    - + Synopsis
    @@ -45,7 +45,7 @@
     struct single_view;
     
    - + Template parameters
    @@ -61,14 +61,14 @@ Default -T +T Any type  
    - + Model of
    - + Expression Semantics
    @@ -113,30 +113,30 @@ -S(x) +S(x) Creates - a single_view from - x. + a single_view from + x. -S(s) +S(s) Copy - constructs a single_view - from another single_view, - s. + constructs a single_view + from another single_view, + s. -s = - s2 +s = + s2 Assigns - to a single_view, - s, from another - single_view, s2. + to a single_view, + s, from another + single_view, s2.
    - + Example
    diff --git a/doc/html/fusion/sequences/views/transform_view.html b/doc/html/fusion/sequences/views/transform_view.html
    index 1690d8d8..c557b852 100644
    --- a/doc/html/fusion/sequences/views/transform_view.html
    +++ b/doc/html/fusion/sequences/views/transform_view.html
    @@ -3,7 +3,7 @@
     
     transform_view
     
    -
    +
     
     
     
    @@ -26,40 +26,40 @@
     
     

    - transform_view presents + transform_view presents a transformed view of its underlying sequence given a unary Polymorphic - Function Object. The transform_view + Function Object. The transform_view inherits the traversal characteristics (see Sequence Traversal Concept) of its underlying sequence.

    - + Header
     #include <boost/fusion/sequence/view/transform_view.hpp>
     
    - + Synopsis

    - Unary Version + Unary Version

     template <typename Sequence, typename F>
     struct transform_view;
     

    - Binary Version + Binary Version

     template <typename Sequence1, typename Sequence2, typename F>
     struct transform_view;
     
    - + Template parameters
    @@ -76,7 +76,7 @@ -Sequence +Sequence A Forward @@ -85,7 +85,7 @@   -Sequence1 +Sequence1 A Forward @@ -94,7 +94,7 @@   -Sequence2 +Sequence2 A Forward @@ -103,7 +103,7 @@   -F +F A Polymorphic Function @@ -114,7 +114,7 @@
    - + Model of
    • @@ -131,45 +131,45 @@

      Notation

      -
      TV
      +
      TV
      - A transform_view type + A transform_view type
      -
      BTV
      +
      BTV
      - A binary transform_view + A binary transform_view type
      -
      UTV
      +
      UTV
      - A unary transform_view + A unary transform_view type
      -
      f
      +
      f
      - An instance of F + An instance of F
      -
      s
      +
      s
      - An instance of Sequence + An instance of Sequence
      -
      s1
      +
      s1
      - An instance of Sequence1 + An instance of Sequence1
      -
      s2
      +
      s2
      - An instance of Sequence2 + An instance of Sequence2
      -
      tv, - tv2
      +
      tv, + tv2
      - Instances of transform_view + Instances of transform_view
      - + Expression Semantics
      @@ -196,44 +196,44 @@ -UTV(s, f) +UTV(s, f) Creates - a unary transform_view - given sequence, s + a unary transform_view + given sequence, s and unary Polymorphic - Function Object, f. + Function Object, f. -BTV(s1, s2, f) +BTV(s1, s2, f) Creates - a binary transform_view - given sequences, s1 - and s2 and unary + a binary transform_view + given sequences, s1 + and s2 and unary Polymorphic Function - Object, f. + Object, f. -TV(tv) +TV(tv) Copy - constructs a transform_view - from another transform_view, - tv. + constructs a transform_view + from another transform_view, + tv. -tv = - tv2 +tv = + tv2 Assigns - to a transform_view, - tv, from another - transform_view, - tv2. + to a transform_view, + tv, from another + transform_view, + tv2.
    - + Example
    @@ -252,7 +252,7 @@
         }
     };
     
    -typedef vector<int, short, double> vector_type;
    +typedef vector<int, short, double> vector_type;
     vector_type vec(2, 5, 3.3);
     
     transform_view<vector_type, square> transform(vec, square());
    diff --git a/doc/html/fusion/sequences/views/zip_view.html b/doc/html/fusion/sequences/views/zip_view.html
    index ab689851..8a53868b 100644
    --- a/doc/html/fusion/sequences/views/zip_view.html
    +++ b/doc/html/fusion/sequences/views/zip_view.html
    @@ -3,7 +3,7 @@
     
     zip_view
     
    -
    +
     
     
     
    @@ -26,25 +26,25 @@
     
     
    - + Description

    - zip_view presents a view + zip_view presents a view which iterates over a collection of _sequence_s - in parallel. A zip_view + in parallel. A zip_view is constructed from a Sequence of references to the component _sequence_s.

    - + Header
     #include <boost/fusion/sequence/view/zip_view.hpp>
     
    - + Synopsis
    @@ -52,7 +52,7 @@
     struct zip_view;
     
    - + Template parameters
    @@ -68,7 +68,7 @@ Default -Sequences +Sequences A Forward @@ -77,7 +77,7 @@
    - + Model of
    - + Expression Semantics
    @@ -122,36 +122,36 @@ -ZV(s) +ZV(s) Creates - a zip_view given + a zip_view given a sequence of references to the component _sequence_s. -ZV(zv1) +ZV(zv1) Copy - constructs a zip_view - from another zip_view, - zv. + constructs a zip_view + from another zip_view, + zv. -zv1 = - zv2 +zv1 = + zv2 Assigns - to a zip_view, zv, from another zip_view, zv2. + to a zip_view, zv, from another zip_view, zv2.
    - + Example
    -typedef vector<int,int> vec1;
    -typedef vector<char,char> vec2;
    +typedef vector<int,int> vec1;
    +typedef vector<char,char> vec2;
     vec1 v1(1,2);
     vec2 v2('a','b');
    -typedef vector<vec1&, vec2&> sequences;
    +typedef vector<vec1&, vec2&> sequences;
     std::cout << zip_view<sequences>(sequences(v1, v2)) << std::endl; // ((1 a) (2 b))
     
    diff --git a/doc/html/fusion/support.html b/doc/html/fusion/support.html index dfaeb458..c9eb40db 100644 --- a/doc/html/fusion/support.html +++ b/doc/html/fusion/support.html @@ -3,7 +3,7 @@ Support - + diff --git a/doc/html/fusion/support/category_of.html b/doc/html/fusion/support/category_of.html index 946b613e..d4a63a87 100644 --- a/doc/html/fusion/support/category_of.html +++ b/doc/html/fusion/support/category_of.html @@ -3,7 +3,7 @@ category_of - + @@ -26,7 +26,7 @@

    - + Description

    @@ -36,7 +36,7 @@ Sequence Concepts).

    - + Synopsis

    @@ -50,7 +50,7 @@
     }
     

    - + Parameters

    @@ -65,14 +65,14 @@ - +
    Description
    TT Any type The type to query.

    - + Expression Semantics

    @@ -80,7 +80,7 @@ typedef traits::category_of<T>::type category;

    - Return type: + Return type:

    For Iterators, the return type is derived from one of: @@ -134,24 +134,24 @@ }}

    - Semantics: Establishes the conceptual classification + Semantics: Establishes the conceptual classification of a particular Sequence or Iterator.

    - + Header

     #include <boost/fusion/support/category_of.hpp>
     

    - + Example

     using boost::is_base_of;
    -typedef traits::category_of<list<> >::type list_category;
    -typedef traits::category_of<vector<> >::type vector_category;
    +typedef traits::category_of<list<> >::type list_category;
    +typedef traits::category_of<vector<> >::type vector_category;
     BOOST_MPL_ASSERT(( is_base_of<forward_traversal_tag, list_category> ));
     BOOST_MPL_ASSERT(( is_base_of<random_access_traversal_tag, vector_category> ));
     
    diff --git a/doc/html/fusion/support/deduce.html b/doc/html/fusion/support/deduce.html index 4dcb19d2..962fdf50 100644 --- a/doc/html/fusion/support/deduce.html +++ b/doc/html/fusion/support/deduce.html @@ -3,7 +3,7 @@ deduce - + @@ -26,7 +26,7 @@

    - + Description

    @@ -34,19 +34,19 @@ conversion to the full argument type.

    - It removes references to const, - references to array types are kept, even if the array is const. - Reference wrappers are removed (see boost::ref). + It removes references to const, + references to array types are kept, even if the array is const. + Reference wrappers are removed (see boost::ref).

    - + Header

     #include <boost/fusion/support/deduce.hpp>
     

    - + Synopsis

    @@ -60,7 +60,7 @@
     }
     

    - + Example

    @@ -81,10 +81,10 @@
     }
     

    - + See also

    - + diff --git a/doc/html/fusion/support/deduce_sequence.html b/doc/html/fusion/support/deduce_sequence.html index 71ad1355..153ad329 100644 --- a/doc/html/fusion/support/deduce_sequence.html +++ b/doc/html/fusion/support/deduce_sequence.html @@ -3,7 +3,7 @@ deduce_sequence - + @@ -26,7 +26,7 @@

    - + Description

    @@ -39,14 +39,14 @@ original type as its argument.

    - + Header

     #include <boost/fusion/support/deduce_sequence.hpp>
     

    - + Synopsis

    @@ -60,7 +60,7 @@
     }
     

    - + Example

    @@ -75,18 +75,18 @@
     };
     
     template <typename T0, typename T1>
    -holder< vector<T0 const &, T1 const &> > 
    +holder< vector<T0 const &, T1 const &> > 
     make_holder(T0 const & a0, T1 const & a1)
     {
    -    typedef vector<T0 const &, T1 const &> arg_vec_t;
    +    typedef vector<T0 const &, T1 const &> arg_vec_t;
         return holder<arg_vec_t>( arg_vec_t(a0,a1) ); 
     }
     

    - + See also

    - +
    diff --git a/doc/html/fusion/support/is_sequence.html b/doc/html/fusion/support/is_sequence.html index 33939468..26d561ba 100644 --- a/doc/html/fusion/support/is_sequence.html +++ b/doc/html/fusion/support/is_sequence.html @@ -3,7 +3,7 @@ is_sequence - + @@ -26,18 +26,18 @@

    - + Description

    - Metafunction that evaluates to mpl::true_ - if a certain type T is a - conforming Fusion Sequence, mpl::false_ + Metafunction that evaluates to mpl::true_ + if a certain type T is a + conforming Fusion Sequence, mpl::false_ otherwise. This may be specialized to accomodate clients which provide Fusion conforming sequences.

    - + Synopsis

    @@ -51,7 +51,7 @@
     }
     

    - + Parameters

    @@ -66,14 +66,14 @@ - +
    Description
    TT Any type The type to query.

    - + Expression Semantics

    @@ -81,32 +81,32 @@ typedef traits::is_sequence<T>::type c;

    - Return type: An MPL Boolean Constant. + Return type: An MPL Boolean Constant.

    - Semantics: Metafunction that evaluates to - mpl::true_ if a certain type T - is a conforming Fusion sequence, mpl::false_ + Semantics: Metafunction that evaluates to + mpl::true_ if a certain type T + is a conforming Fusion sequence, mpl::false_ otherwise.

    - + Header

     #include <boost/fusion/support/is_sequence.hpp>
     

    - + Example

     BOOST_MPL_ASSERT_NOT(( traits::is_sequence< std::vector<int> > ));
     BOOST_MPL_ASSERT_NOT(( is_sequence< int > ));
    -BOOST_MPL_ASSERT(( traits::is_sequence<list<> > ));
    -BOOST_MPL_ASSERT(( traits::is_sequence<list<int> > ));
    -BOOST_MPL_ASSERT(( traits::is_sequence<vector<> > ));
    -BOOST_MPL_ASSERT(( traits::is_sequence<vector<int> > ));
    +BOOST_MPL_ASSERT(( traits::is_sequence<list<> > ));
    +BOOST_MPL_ASSERT(( traits::is_sequence<list<int> > ));
    +BOOST_MPL_ASSERT(( traits::is_sequence<vector<> > ));
    +BOOST_MPL_ASSERT(( traits::is_sequence<vector<int> > ));
     
    diff --git a/doc/html/fusion/support/is_view.html b/doc/html/fusion/support/is_view.html index c93d22a3..33e07948 100644 --- a/doc/html/fusion/support/is_view.html +++ b/doc/html/fusion/support/is_view.html @@ -3,7 +3,7 @@ is_view - + @@ -26,21 +26,21 @@

    - + Description

    - Metafunction that evaluates to mpl::true_ - if a certain type T is a - conforming Fusion View, mpl::false_ + Metafunction that evaluates to mpl::true_ + if a certain type T is a + conforming Fusion View, mpl::false_ otherwise. A view is a specialized sequence that does not actually contain data. Views hold sequences which may be other views. In general, views are held by other views by value, while non-views are held by other views by - reference. is_view may be + reference. is_view may be specialized to accomodate clients providing Fusion conforming views.

    - + Synopsis

    @@ -54,7 +54,7 @@
     }
     

    - + Parameters

    @@ -69,37 +69,37 @@ - +
    Description
    TT Any type The type to query.

    - + Expression Semantics

     typedef traits::is_view<T>::type c;
     

    - Return type: An MPL Boolean Constant. + Return type: An MPL Boolean Constant.

    - Semantics: Metafunction that evaluates to - mpl::true_ if a certain type T - is a conforming Fusion view, mpl::false_ + Semantics: Metafunction that evaluates to + mpl::true_ if a certain type T + is a conforming Fusion view, mpl::false_ otherwise.

    - + Header

     #include <boost/fusion/support/is_view.hpp>
     

    - + Example

    @@ -108,8 +108,8 @@
     
     using boost::mpl::_
     using boost::is_pointer;
    -typedef vector<int*, char, long*, bool, double> vector_type;
    -typedef filter_view<vector_type, is_pointer<_> > filter_view_type;
    +typedef vector<int*, char, long*, bool, double> vector_type;
    +typedef filter_view<vector_type, is_pointer<_> > filter_view_type;
     BOOST_MPL_ASSERT(( traits::is_view<filter_view_type> ));
     
    diff --git a/doc/html/fusion/support/pair.html b/doc/html/fusion/support/pair.html index 9bccda5f..b13de593 100644 --- a/doc/html/fusion/support/pair.html +++ b/doc/html/fusion/support/pair.html @@ -3,7 +3,7 @@ pair - + @@ -26,18 +26,18 @@

    - + Description

    - Fusion pair type is a half - runtime pair. A half runtime pair is similar to a std::pair, - but, unlike std::pair, + Fusion pair type is a half + runtime pair. A half runtime pair is similar to a std::pair, + but, unlike std::pair, the first type does not have data. It is used as elements in _map_s, for example.

    - + Synopsis

    @@ -61,7 +61,7 @@
     make_pair(Second const &);
     

    - + Template parameters

    @@ -88,36 +88,36 @@

    Notation

    -
    P
    +
    P
    Fusion pair type
    -
    p, - p2
    +
    p, + p2
    Fusion pairs
    -
    F, - S
    +
    F, + S
    Arbitrary types
    -
    s
    +
    s
    - Value of type S + Value of type S
    -
    o
    +
    o
    Output stream
    -
    i
    +
    i
    Input stream

    - + Expression Semantics

    @@ -131,81 +131,81 @@ - + - + - + - + + a pair given value for the second type, s. - + + constructs a pair from another pair, p2. - + + a pair, p1, from another pair, p2. - - + + - - + + - + - +
    P::first_typeP::first_type The type - of the first template parameter, F, - equivalent to result_of::first<P>::type. + of the first template parameter, F, + equivalent to result_of::first<P>::type.
    P::second_typeP::second_type The type - of the second template parameter, S, - equivalent to result_of::second<P>::type. + of the second template parameter, S, + equivalent to result_of::second<P>::type.
    P()P() Default construction.
    P(s)P(s) Construct - a pair given value for the second type, s.
    P(p2)P(p2) Copy - constructs a pair from another pair, p2.
    p = - p2p = + p2 Assigns - a pair, p1, from another pair, p2.
    make_pair<F>(s) Make a pair given the first - type, F, and a value - for the second type, s. - The second type assumes the type of s + type, F, and a value + for the second type, s. + The second type assumes the type of s
    o << - pOutput p to output stream, o.o << + pOutput p to output stream, o.
    i >> - pInput p from input stream, i.i >> + pInput p from input stream, i.
    p == - p2p == + p2 Tests two pairs for equality.
    p != - p2p != + p2 Tests two pairs for inequality.

    - + Header

     #include <boost/fusion/support/pair.hpp>
     

    - + Example

    diff --git a/doc/html/fusion/support/tag_of.html b/doc/html/fusion/support/tag_of.html
    index e93a5a8a..c9eda41b 100644
    --- a/doc/html/fusion/support/tag_of.html
    +++ b/doc/html/fusion/support/tag_of.html
    @@ -3,7 +3,7 @@
     
     tag_of
     
    -
    +
     
     
     
    @@ -26,7 +26,7 @@
     
     

    - + Description

    @@ -40,7 +40,7 @@ conforming sequences.

    - + Synopsis

    @@ -54,7 +54,7 @@
     }
     

    - + Parameters

    @@ -69,42 +69,42 @@ - +
    Description
    TT Any type The type to query.

    - + Expression Semantics

     typedef traits::tag_of<T>::type tag;
     

    - Return type: Any type. + Return type: Any type.

    - Semantics: Returns the tag type associated - with T. + Semantics: Returns the tag type associated + with T.

    - + Header

     #include <boost/fusion/support/tag_of.hpp>
     

    - + Example

    -typedef traits::tag_of<list<> >::type tag1;
    -typedef traits::tag_of<list<int> >::type tag2;
    -typedef traits::tag_of<vector<> >::type tag3;
    -typedef traits::tag_of<vector<int> >::type tag4;
    +typedef traits::tag_of<list<> >::type tag1;
    +typedef traits::tag_of<list<int> >::type tag2;
    +typedef traits::tag_of<vector<> >::type tag3;
    +typedef traits::tag_of<vector<int> >::type tag4;
     
     BOOST_MPL_ASSERT((boost::is_same<tag1, tag2>));
     BOOST_MPL_ASSERT((boost::is_same<tag3, tag4>));
    diff --git a/doc/html/fusion/tuples.html b/doc/html/fusion/tuples.html
    index 524c8fe7..ce036073 100644
    --- a/doc/html/fusion/tuples.html
    +++ b/doc/html/fusion/tuples.html
    @@ -3,7 +3,7 @@
     
     Tuples
     
    -
    +
     
     
     
    @@ -43,12 +43,12 @@
     

    The TR1 technical report describes extensions to the C++ standard library. Many of these extensions will be considered for the next iteration of the C++ - standard. TR1 describes a tuple type, and support for treating std::pair + standard. TR1 describes a tuple type, and support for treating std::pair as a type of tuple.

    Fusion provides full support for the TR1 - Tuple interface, and the extended uses of std::pair described + Tuple interface, and the extended uses of std::pair described in the TR1 document.

    diff --git a/doc/html/fusion/tuples/class_template_tuple.html b/doc/html/fusion/tuples/class_template_tuple.html index 13b7e1f2..5d7b7d5a 100644 --- a/doc/html/fusion/tuples/class_template_tuple.html +++ b/doc/html/fusion/tuples/class_template_tuple.html @@ -3,7 +3,7 @@ Class template tuple - + @@ -44,11 +44,11 @@ beyond that required by TR1.

    - Currently tuple is basically a synonym for vector, although this may be changed + Currently tuple is basically a synonym for vector, although this may be changed in future releases of fusion.

    - + Synopsis

    @@ -60,7 +60,7 @@
     class tuple;
     

    - + Header

    diff --git a/doc/html/fusion/tuples/class_template_tuple/construction.html b/doc/html/fusion/tuples/class_template_tuple/construction.html
    index bffa97bf..e0195acd 100644
    --- a/doc/html/fusion/tuples/class_template_tuple/construction.html
    +++ b/doc/html/fusion/tuples/class_template_tuple/construction.html
    @@ -3,7 +3,7 @@
     
     Construction
     
    -
    +
     
     
     
    @@ -27,7 +27,7 @@
     
     
    - + Description

    @@ -38,33 +38,33 @@ in this section.

    - + Specification

    Notation

    -
    T1 - ... TN, - U1 ... - UN
    +
    T1 + ... TN, + U1 ... + UN
    Tuple element types
    -
    P1 - ... PN
    +
    P1 + ... PN
    Parameter types
    -
    Ti, - Ui
    +
    Ti, + Ui
    - The type of the ith element + The type of the ith element of a tuple
    -
    Pi
    +
    Pi
    - The type of the ith parameter + The type of the ith parameter
    @@ -72,48 +72,48 @@ tuple();

    - Requirements: Each Ti + Requirements: Each Ti is default constructable.

    - Semantics: Default initializes each element + Semantics: Default initializes each element of the tuple.

     tuple(P1,P2,...,PN);
     

    - Requirements: Each Pi - is Ti if Ti is a reference type, const Ti& otherwise. + Requirements: Each Pi + is Ti if Ti is a reference type, const Ti& otherwise.

    - Semantics: Copy initializes each element + Semantics: Copy initializes each element with the corresponding parameter.

     tuple(const tuple& t);
     

    - Requirements: Each Ti + Requirements: Each Ti should be copy constructable.

    - Semantics: Copy constructs each element - of *this - with the corresponding element of t. + Semantics: Copy constructs each element + of *this + with the corresponding element of t.

     template<typename U1, typename U2, ..., typename UN>
     tuple(const tuple<U1, U2, ..., UN>& t);
     

    - Requirements: Each Ti - shall be constructible from the corresponding Ui. + Requirements: Each Ti + shall be constructible from the corresponding Ui.

    - Semantics: Constructs each element of - *this - with the corresponding element of t. + Semantics: Constructs each element of + *this + with the corresponding element of t.

    diff --git a/doc/html/fusion/tuples/class_template_tuple/element_access.html b/doc/html/fusion/tuples/class_template_tuple/element_access.html index 5d18c3b0..9226232f 100644 --- a/doc/html/fusion/tuples/class_template_tuple/element_access.html +++ b/doc/html/fusion/tuples/class_template_tuple/element_access.html @@ -4,7 +4,7 @@ Element access - +Element access
    - + Description

    The TR1 - Tuple provides the get + Tuple provides the get function to provide access to it's elements by zero based numeric index.

    - + Specification
    @@ -48,38 +48,38 @@
     RJ get(T& t);
     

    - Requires: 0 + Requires: 0 < I - <= N. - The program is ill formed if I - is out of bounds. T is - any fusion sequence type, including tuple. + <= N. + The program is ill formed if I + is out of bounds. T is + any fusion sequence type, including tuple.

    - Return type: RJ - is equivalent to result_of::at_c<I,T>::type. + Return type: RJ + is equivalent to result_of::at_c<I,T>::type.

    - Returns: A reference to the Ith element of T. + Returns: A reference to the Ith element of T.

     template<int I, typename T>
     PJ get(T const& t);
     

    - Requires: 0 + Requires: 0 < I - <= N. - The program is ill formed if I - is out of bounds. T is - any fusion sequence type, including tuple. + <= N. + The program is ill formed if I + is out of bounds. T is + any fusion sequence type, including tuple.

    - Return type: PJ - is equivalent to result_of::at_c<I,T>::type. + Return type: PJ + is equivalent to result_of::at_c<I,T>::type.

    - Returns: A const reference to the Ith element of T. + Returns: A const reference to the Ith element of T.

    diff --git a/doc/html/fusion/tuples/class_template_tuple/relational_operators.html b/doc/html/fusion/tuples/class_template_tuple/relational_operators.html index d76d47df..37cdfae1 100644 --- a/doc/html/fusion/tuples/class_template_tuple/relational_operators.html +++ b/doc/html/fusion/tuples/class_template_tuple/relational_operators.html @@ -4,7 +4,7 @@ Relational operators - +Relational operators
    - + Description

    @@ -38,33 +38,33 @@ Tuple provides the standard boolean relational operators.

    - + Specification

    Notation

    -
    T1 - ... TN, - U1 ... - UN
    +
    T1 + ... TN, + U1 ... + UN
    Tuple element types
    -
    P1 - ... PN
    +
    P1 + ... PN
    Parameter types
    -
    Ti, - Ui
    +
    Ti, + Ui
    - The type of the ith element + The type of the ith element of a tuple
    -
    Pi
    +
    Pi
    - The type of the ith parameter + The type of the ith parameter
    @@ -76,23 +76,23 @@ consttuple<U1,U2,...,UN>&rhs);

    - Requirements: For all i, - 1 <= + Requirements: For all i, + 1 <= i < - N, get<i>(lhs) == get<i>(rhs) - is a valid expression returning a type that is convertible to bool. + N, get<i>(lhs) == get<i>(rhs) + is a valid expression returning a type that is convertible to bool.

    - Semantics: Returns true - if and only if get<i>(lhs) == get<i>(rhs) - for all i. For any 2 zero - length tuples e and f, e - == f - returns true. + Semantics: Returns true + if and only if get<i>(lhs) == get<i>(rhs) + for all i. For any 2 zero + length tuples e and f, e + == f + returns true.

     template<typename T1, typename T2, ..., typename TN,
    @@ -102,18 +102,18 @@
         const tuple<U1, U2, ..., UN>& rhs);
     

    - Requirements: For all i, - 1 <= + Requirements: For all i, + 1 <= i < - N, get<i>(lhs) < get<i>(rhs) - is a valid expression returning a type that is convertible to bool. + N, get<i>(lhs) < get<i>(rhs) + is a valid expression returning a type that is convertible to bool.

    - Semantics: Returns the lexicographical - comparison of between lhs - and rhs. + Semantics: Returns the lexicographical + comparison of between lhs + and rhs.

     template<typename T1, typename T2, ..., typename TN,
    @@ -123,16 +123,16 @@
         const tuple<U1, U2, ..., UN>& rhs);
     

    - Requirements: For all i, - 1 <= + Requirements: For all i, + 1 <= i < - N, get<i>(lhs) == get<i>(rhs) - is a valid expression returning a type that is convertible to bool. + N, get<i>(lhs) == get<i>(rhs) + is a valid expression returning a type that is convertible to bool.

    - Semantics: Returns !(lhs == rhs). + Semantics: Returns !(lhs == rhs).

     template<typename T1, typename T2, ..., typename TN,
    @@ -142,16 +142,16 @@
         const tuple<U1, U2, ..., UN>& rhs);
     

    - Requirements: For all i, - 1 <= + Requirements: For all i, + 1 <= i < - N, get<i>(rhs) < get<i>(lhs) - is a valid expression returning a type that is convertible to bool. + N, get<i>(rhs) < get<i>(lhs) + is a valid expression returning a type that is convertible to bool.

    - Semantics: Returns !(rhs < lhs) + Semantics: Returns !(rhs < lhs)

     template<typename T1, typename T2, ..., typename TN,
    @@ -161,17 +161,17 @@
         const tuple<U1, U2, ..., UN>& rhs);
     

    - Requirements: For all i, - 1 <= + Requirements: For all i, + 1 <= i < - N, get<i>(rhs) < get<i>(lhs) - is a valid expression returning a type that is convertible to bool. + N, get<i>(rhs) < get<i>(lhs) + is a valid expression returning a type that is convertible to bool.

    - Semantics: Returns rhs - < lhs. + Semantics: Returns rhs + < lhs.

     template<typename T1, typename T2, ..., typename TN,
    @@ -181,16 +181,16 @@
         const tuple<U1, U2, ..., UN>& rhs);
     

    - Requirements: For all i, - 1 <= + Requirements: For all i, + 1 <= i < - N, get<i>(lhs) < get<i>(rhs) - is a valid expression returning a type that is convertible to bool. + N, get<i>(lhs) < get<i>(rhs) + is a valid expression returning a type that is convertible to bool.

    - Semantics: Returns !(lhs < rhs). + Semantics: Returns !(lhs < rhs).

    diff --git a/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html b/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html index 088e9955..9a036f7a 100644 --- a/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html +++ b/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html @@ -4,7 +4,7 @@ Tuple creation functions - + @@ -30,17 +30,17 @@ creation functions">Tuple creation functions
    - + Description

    - TR1 describes 2 utility functions for creating _tr1tuple_s. make_tuple - builds a tuple out of it's argument list, and tie + TR1 describes 2 utility functions for creating _tr1tuple_s. make_tuple + builds a tuple out of it's argument list, and tie builds a tuple of references to it's arguments. The details of these creation functions are described in this section.

    - + Specification
    @@ -48,22 +48,22 @@
     tuple<V1, V2, ..., VN> make_tuple(const T1& t1, const T2& t2, ..., const TN& tn);
     

    - Where Vi is X& - if the cv-unqualified type Ti - is reference_wrapper<X>, - otherwise Vi is Ti. + Where Vi is X& + if the cv-unqualified type Ti + is reference_wrapper<X>, + otherwise Vi is Ti.

    - Returns: tuple<V1, V2, ..., VN>(t1, t2, ..., tN) + Returns: tuple<V1, V2, ..., VN>(t1, t2, ..., tN)

     template<typename T1, typename T2, ..., typename TN>
     tuple<T1&, T2&, ..., TN&> tie(T1& t1, T2& t2, ..., TN& tn);
     

    - Returns: tuple<T1&, T2&, ..., - TN&>(t1, t2, ..., tN). When argument ti - is ignore, assigning any + Returns: tuple<T1&, T2&, ..., + TN&>(t1, t2, ..., tN). When argument ti + is ignore, assigning any value to the corresponding tuple element has has no effect.

    diff --git a/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html b/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html index d1317435..fbd6ab43 100644 --- a/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html +++ b/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html @@ -4,7 +4,7 @@ Tuple helper classes - +Tuple helper classes
    - + Description

    @@ -40,37 +40,37 @@ tuple size, and the element types.

    - + Specification
     tuple_size<T>::value
     

    - Requires: T - is any fusion sequence type, including tuple. + Requires: T + is any fusion sequence type, including tuple.

    - Type: MPL Integral Constant + Type: MPL Integral Constant

    - Value: The number of elements in the sequence. - Equivalent to result_of::size<T>::type. + Value: The number of elements in the sequence. + Equivalent to result_of::size<T>::type.

     tuple_element<I, T>::type
     

    - Requires: T - is any fusion sequence type, including tuple. - 0 <= + Requires: T + is any fusion sequence type, including tuple. + 0 <= I < - N or the program is ill formed. + N or the program is ill formed.

    - Value: The type of the Ith - element of T. Equivalent - to result_of::value_at<I,T>::type. + Value: The type of the Ith + element of T. Equivalent + to result_of::value_at<I,T>::type.

    diff --git a/doc/html/fusion/tuples/pairs.html b/doc/html/fusion/tuples/pairs.html index a78ebbf0..ad6503e6 100644 --- a/doc/html/fusion/tuples/pairs.html +++ b/doc/html/fusion/tuples/pairs.html @@ -3,7 +3,7 @@ Pairs - +

    - + Description

    The TR1 - Tuple interface is specified to provide uniform access to std::pair + Tuple interface is specified to provide uniform access to std::pair as if it were a 2 element tuple.

    - + Specification

     tuple_size<std::pair<T1, T2> >::value
     

    - Type: An MPL Integral Constant + Type: An MPL Integral Constant

    - Value: Returns 2, the number of elements + Value: Returns 2, the number of elements in a pair.

     tuple_element<0, std::pair<T1, T2> >::type
     

    - Type: T1 + Type: T1

    - Value: Returns the type of the first element + Value: Returns the type of the first element of the pair

     tuple_element<1, std::pair<T1, T2> >::type
     

    - Type: T2 + Type: T2

    - Value: Returns thetype of the second element + Value: Returns thetype of the second element of the pair

    @@ -77,21 +77,21 @@
     const P& get(const std::pair<T1, T2>& pr);
     

    - Type: If I - == 0 - P is T1, - else if I == - 1 P - is T2 else the program is + Type: If I + == 0 + P is T1, + else if I == + 1 P + is T2 else the program is ill-formed.

    - Returns: pr.first - if I == - 0 else pr.second.[*Returns: - pr.first if I - == 0 - else pr.second. + Returns: pr.first + if I == + 0 else pr.second.[*Returns: + pr.first if I + == 0 + else pr.second.

    diff --git a/doc/html/index.html b/doc/html/index.html index 8280fe31..3c3cad25 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -3,7 +3,7 @@ Chapter 1. Fusion 2.0 - + @@ -30,7 +30,7 @@
    -

    +

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    @@ -200,7 +200,7 @@
    - +

    Last revised: January 27, 2007 at 12:44:16 GMT

    Last revised: February 07, 2007 at 22:55:21 GMT


    From 94c2c0e526fab2a11be85bc3b84175ffe342a0cf Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Fri, 9 Feb 2007 12:16:39 +0000 Subject: [PATCH 081/234] vc7.1 bugfix (ICE) [SVN r36918] --- .../fusion/sequence/container/deque/deque.hpp | 8 +- .../sequence/container/deque/deque_fwd.hpp | 25 +++++ .../sequence/intrinsic/mpl/detail/as.hpp | 92 +++++++++++-------- .../sequence/intrinsic/mpl/detail/clear.hpp | 41 ++++++--- .../view/transform_view/detail/deref_impl.hpp | 3 +- include/boost/fusion/support/category_of.hpp | 24 ++--- include/boost/fusion/support/is_view.hpp | 6 +- 7 files changed, 128 insertions(+), 71 deletions(-) create mode 100644 include/boost/fusion/sequence/container/deque/deque_fwd.hpp diff --git a/include/boost/fusion/sequence/container/deque/deque.hpp b/include/boost/fusion/sequence/container/deque/deque.hpp index 2dde4d81..eb83f35e 100644 --- a/include/boost/fusion/sequence/container/deque/deque.hpp +++ b/include/boost/fusion/sequence/container/deque/deque.hpp @@ -22,6 +22,7 @@ #include #include +#include #include #include #include @@ -35,12 +36,9 @@ namespace boost { namespace fusion { struct deque_tag; struct void_; - template - struct deque; - template struct deque - : + : detail::deque_keyed_values::type, sequence_base > { @@ -54,7 +52,7 @@ namespace boost { namespace fusion { #include - deque() + deque() {} explicit deque(typename add_reference::type>::type t0) diff --git a/include/boost/fusion/sequence/container/deque/deque_fwd.hpp b/include/boost/fusion/sequence/container/deque/deque_fwd.hpp new file mode 100644 index 00000000..9e5168a7 --- /dev/null +++ b/include/boost/fusion/sequence/container/deque/deque_fwd.hpp @@ -0,0 +1,25 @@ +/*============================================================================= + Copyright (c) 2005-2007 Joel de Guzman + Copyright (c) 2005-2007 Dan Marsden + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_DEQUE_FORWARD_02092007_0749) +#define FUSION_DEQUE_FORWARD_02092007_0749 + +#include +#include + +namespace boost { namespace fusion +{ + struct void_; + + template< + BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( + FUSION_MAX_DEQUE_SIZE, typename T, void_)> + struct deque; +}} + +#endif diff --git a/include/boost/fusion/sequence/intrinsic/mpl/detail/as.hpp b/include/boost/fusion/sequence/intrinsic/mpl/detail/as.hpp index c257844b..77857c12 100644 --- a/include/boost/fusion/sequence/intrinsic/mpl/detail/as.hpp +++ b/include/boost/fusion/sequence/intrinsic/mpl/detail/as.hpp @@ -8,56 +8,74 @@ #if !defined(FUSION_AS_10022005_1442) #define FUSION_AS_10022005_1442 -#include - -namespace boost { namespace fusion { namespace detail +namespace boost { namespace fusion { - template - struct as_impl; - - template <> - struct as_impl + namespace result_of { template - struct apply : result_of::as_list {}; - }; + struct as_list; - template <> - struct as_impl - { template - struct apply : result_of::as_map {}; - }; + struct as_map; - template <> - struct as_impl - { template - struct apply : result_of::as_set {}; - }; + struct as_set; - template <> - struct as_impl - { template - struct apply : result_of::as_vector {}; - }; + struct as_vector; - template<> - struct as_impl - { template - struct apply : result_of::as_deque {}; - }; + struct as_deque; + } - template - struct as + namespace detail { - typedef typename - as_impl::template apply::type - type; - }; + template + struct as_impl; -}}} + template <> + struct as_impl + { + template + struct apply : result_of::as_list {}; + }; + + template <> + struct as_impl + { + template + struct apply : result_of::as_map {}; + }; + + template <> + struct as_impl + { + template + struct apply : result_of::as_set {}; + }; + + template <> + struct as_impl + { + template + struct apply : result_of::as_vector {}; + }; + + template<> + struct as_impl + { + template + struct apply : result_of::as_deque {}; + }; + + template + struct as + { + typedef typename + as_impl::template apply::type + type; + }; + } +}} #endif diff --git a/include/boost/fusion/sequence/intrinsic/mpl/detail/clear.hpp b/include/boost/fusion/sequence/intrinsic/mpl/detail/clear.hpp index 03cacb6a..fc2a1154 100644 --- a/include/boost/fusion/sequence/intrinsic/mpl/detail/clear.hpp +++ b/include/boost/fusion/sequence/intrinsic/mpl/detail/clear.hpp @@ -8,25 +8,40 @@ #if !defined(FUSION_CLEAR_10022005_1442) #define FUSION_CLEAR_10022005_1442 -#include +#include +#include +#include +#include +#include -namespace boost { namespace fusion { namespace detail +namespace boost { namespace fusion { - template - struct clear; + struct cons_tag; + struct map_tag; + struct set_tag; + struct vector_tag; + struct deque_tag; - template <> - struct clear : mpl::identity > {}; + namespace detail + { + template + struct clear; - template <> - struct clear : mpl::identity > {}; + template <> + struct clear : mpl::identity > {}; - template <> - struct clear : mpl::identity > {}; + template <> + struct clear : mpl::identity > {}; - template <> - struct clear : mpl::identity > {}; + template <> + struct clear : mpl::identity > {}; -}}} + template <> + struct clear : mpl::identity > {}; + + template <> + struct clear : mpl::identity > {}; + } +}} #endif diff --git a/include/boost/fusion/sequence/view/transform_view/detail/deref_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/deref_impl.hpp index 3da4e396..5d3b5281 100644 --- a/include/boost/fusion/sequence/view/transform_view/detail/deref_impl.hpp +++ b/include/boost/fusion/sequence/view/transform_view/detail/deref_impl.hpp @@ -68,7 +68,8 @@ namespace boost { namespace fusion return i.f(*i.first1, *i.first2); } }; - }; } + }; + } }} #endif diff --git a/include/boost/fusion/support/category_of.hpp b/include/boost/fusion/support/category_of.hpp index c22ac8c3..73503955 100644 --- a/include/boost/fusion/support/category_of.hpp +++ b/include/boost/fusion/support/category_of.hpp @@ -62,7 +62,7 @@ namespace boost { namespace fusion { template struct category_of - : extension::category_of_impl::type>:: + : extension::category_of_impl::type>:: template apply {}; @@ -70,42 +70,42 @@ namespace boost { namespace fusion struct is_associative : is_base_of< associative_sequence_tag - , typename category_of::type> + , typename category_of::type> {}; template struct is_incrementable : is_base_of< incrementable_traversal_tag - , typename category_of::type> + , typename category_of::type> {}; template struct is_single_pass : is_base_of< single_pass_traversal_tag - , typename category_of::type> + , typename category_of::type> {}; - + template struct is_forward : is_base_of< forward_traversal_tag - , typename category_of::type> - {}; - + , typename category_of::type> + {}; + template struct is_bidirectional : is_base_of< bidirectional_traversal_tag - , typename category_of::type> - {}; - + , typename category_of::type> + {}; + template struct is_random_access : is_base_of< random_access_traversal_tag - , typename category_of::type> + , typename category_of::type> {}; } }} diff --git a/include/boost/fusion/support/is_view.hpp b/include/boost/fusion/support/is_view.hpp index 12818319..3f97049d 100644 --- a/include/boost/fusion/support/is_view.hpp +++ b/include/boost/fusion/support/is_view.hpp @@ -11,7 +11,7 @@ #include #include -namespace boost { namespace fusion +namespace boost { namespace fusion { // Special tags: struct sequence_facade_tag; @@ -54,8 +54,8 @@ namespace boost { namespace fusion namespace traits { template - struct is_view : - extension::is_view_impl::type>:: + struct is_view : + extension::is_view_impl::type>:: template apply::type {}; } From f975648eead7899e2ebb1e3252882f92990fd185 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Fri, 9 Feb 2007 12:16:50 +0000 Subject: [PATCH 082/234] vc7.1 bugfix [SVN r36919] --- test/sequence/deduce_sequence.cpp | 12 ++++++------ test/sequence/deque_misc.cpp | 1 + test/sequence/list_misc.cpp | 1 + test/sequence/tuple_misc.cpp | 2 ++ test/sequence/vector_misc.cpp | 2 ++ 5 files changed, 12 insertions(+), 6 deletions(-) diff --git a/test/sequence/deduce_sequence.cpp b/test/sequence/deduce_sequence.cpp index b8929977..9c6d1ef4 100644 --- a/test/sequence/deduce_sequence.cpp +++ b/test/sequence/deduce_sequence.cpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2007 Tobias Schwinger - - Use modification and distribution are subject to the Boost Software + + 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). ==============================================================================*/ @@ -71,10 +71,10 @@ int main() TEST_SAME_TYPE(deduce< int volatile (&)[2] >::type, int volatile (&)[2]); TEST_SAME_TYPE(deduce< int const volatile (&)[2] >::type, int const volatile (&)[2]); - TEST_SAME_ELEMENTS(deduce_sequence::type,storable1); - TEST_SAME_ELEMENTS(deduce_sequence::type,storable2); - TEST_SAME_ELEMENTS(deduce_sequence::type,storable3); - TEST_SAME_ELEMENTS(deduce_sequence::type,storable4); + TEST_SAME_ELEMENTS(deduce_sequence::type,storable1); + TEST_SAME_ELEMENTS(deduce_sequence::type,storable2); + TEST_SAME_ELEMENTS(deduce_sequence::type,storable3); + TEST_SAME_ELEMENTS(deduce_sequence::type,storable4); return boost::report_errors(); } diff --git a/test/sequence/deque_misc.cpp b/test/sequence/deque_misc.cpp index cd18270b..91a75afa 100644 --- a/test/sequence/deque_misc.cpp +++ b/test/sequence/deque_misc.cpp @@ -8,6 +8,7 @@ http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include +#include #include #define FUSION_SEQUENCE deque diff --git a/test/sequence/list_misc.cpp b/test/sequence/list_misc.cpp index c6ea3149..f113ed0d 100644 --- a/test/sequence/list_misc.cpp +++ b/test/sequence/list_misc.cpp @@ -7,6 +7,7 @@ http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include +#include #include #define FUSION_SEQUENCE list diff --git a/test/sequence/tuple_misc.cpp b/test/sequence/tuple_misc.cpp index 3945dcbc..1f04095e 100644 --- a/test/sequence/tuple_misc.cpp +++ b/test/sequence/tuple_misc.cpp @@ -7,6 +7,8 @@ http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include +#include +#include #define FUSION_SEQUENCE tuple #define FUSION_AT get diff --git a/test/sequence/vector_misc.cpp b/test/sequence/vector_misc.cpp index 69f488e4..c40b5b62 100644 --- a/test/sequence/vector_misc.cpp +++ b/test/sequence/vector_misc.cpp @@ -7,6 +7,8 @@ http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include +#include +#include #define FUSION_SEQUENCE vector #include "misc.hpp" From 0ea1bbb06741673e2f84489fec1e4a857f440b3a Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Thu, 15 Feb 2007 22:41:45 +0000 Subject: [PATCH 083/234] adds functional module [SVN r36955] --- include/boost/fusion/functional.hpp | 17 + include/boost/fusion/functional/adapter.hpp | 18 + .../detail/Attic/gen_result_of_spec.hpp | 102 ++++++ .../adapter/detail/Attic/has_type.hpp | 21 ++ .../detail/Attic/nullary_call_base.hpp | 60 ++++ .../functional/adapter/detail/access.hpp | 37 ++ .../adapter/detail/gen_result_of_spec.hpp | 102 ++++++ .../functional/adapter/detail/has_type.hpp | 21 ++ .../adapter/detail/nullary_call_base.hpp | 60 ++++ .../adapter/detail/pow2_explode.hpp | 117 ++++++ .../functional/adapter/detail/pt_def.hpp | 71 ++++ .../functional/adapter/detail/pt_undef.hpp | 23 ++ .../boost/fusion/functional/adapter/fused.hpp | 78 ++++ .../adapter/fused_function_object.hpp | 83 +++++ .../functional/adapter/fused_procedure.hpp | 79 +++++ .../fusion/functional/adapter/limits.hpp | 36 ++ .../functional/adapter/unfused_generic.hpp | 163 +++++++++ .../adapter/unfused_lvalue_args.hpp | 130 +++++++ .../adapter/unfused_rvalue_args.hpp | 131 +++++++ .../functional/adapter/unfused_typed.hpp | 200 +++++++++++ .../boost/fusion/functional/generation.hpp | 19 + .../generation/detail/gen_make_adapter.hpp | 44 +++ .../functional/generation/make_fused.hpp | 18 + .../generation/make_fused_function_object.hpp | 18 + .../generation/make_fused_procedure.hpp | 18 + .../generation/make_unfused_generic.hpp | 18 + .../generation/make_unfused_lvalue_args.hpp | 18 + .../generation/make_unfused_rvalue_args.hpp | 18 + .../boost/fusion/functional/invocation.hpp | 16 + .../functional/invocation/detail/that_ptr.hpp | 87 +++++ .../fusion/functional/invocation/invoke.hpp | 332 ++++++++++++++++++ .../invocation/invoke_function_object.hpp | 190 ++++++++++ .../invocation/invoke_procedure.hpp | 225 ++++++++++++ .../fusion/functional/invocation/limits.hpp | 23 ++ 34 files changed, 2593 insertions(+) create mode 100644 include/boost/fusion/functional.hpp create mode 100644 include/boost/fusion/functional/adapter.hpp create mode 100644 include/boost/fusion/functional/adapter/detail/Attic/gen_result_of_spec.hpp create mode 100644 include/boost/fusion/functional/adapter/detail/Attic/has_type.hpp create mode 100644 include/boost/fusion/functional/adapter/detail/Attic/nullary_call_base.hpp create mode 100644 include/boost/fusion/functional/adapter/detail/access.hpp create mode 100644 include/boost/fusion/functional/adapter/detail/gen_result_of_spec.hpp create mode 100644 include/boost/fusion/functional/adapter/detail/has_type.hpp create mode 100644 include/boost/fusion/functional/adapter/detail/nullary_call_base.hpp create mode 100644 include/boost/fusion/functional/adapter/detail/pow2_explode.hpp create mode 100644 include/boost/fusion/functional/adapter/detail/pt_def.hpp create mode 100644 include/boost/fusion/functional/adapter/detail/pt_undef.hpp create mode 100644 include/boost/fusion/functional/adapter/fused.hpp create mode 100644 include/boost/fusion/functional/adapter/fused_function_object.hpp create mode 100644 include/boost/fusion/functional/adapter/fused_procedure.hpp create mode 100644 include/boost/fusion/functional/adapter/limits.hpp create mode 100644 include/boost/fusion/functional/adapter/unfused_generic.hpp create mode 100644 include/boost/fusion/functional/adapter/unfused_lvalue_args.hpp create mode 100644 include/boost/fusion/functional/adapter/unfused_rvalue_args.hpp create mode 100644 include/boost/fusion/functional/adapter/unfused_typed.hpp create mode 100644 include/boost/fusion/functional/generation.hpp create mode 100644 include/boost/fusion/functional/generation/detail/gen_make_adapter.hpp create mode 100644 include/boost/fusion/functional/generation/make_fused.hpp create mode 100644 include/boost/fusion/functional/generation/make_fused_function_object.hpp create mode 100644 include/boost/fusion/functional/generation/make_fused_procedure.hpp create mode 100644 include/boost/fusion/functional/generation/make_unfused_generic.hpp create mode 100644 include/boost/fusion/functional/generation/make_unfused_lvalue_args.hpp create mode 100644 include/boost/fusion/functional/generation/make_unfused_rvalue_args.hpp create mode 100644 include/boost/fusion/functional/invocation.hpp create mode 100644 include/boost/fusion/functional/invocation/detail/that_ptr.hpp create mode 100644 include/boost/fusion/functional/invocation/invoke.hpp create mode 100644 include/boost/fusion/functional/invocation/invoke_function_object.hpp create mode 100644 include/boost/fusion/functional/invocation/invoke_procedure.hpp create mode 100644 include/boost/fusion/functional/invocation/limits.hpp diff --git a/include/boost/fusion/functional.hpp b/include/boost/fusion/functional.hpp new file mode 100644 index 00000000..12662d97 --- /dev/null +++ b/include/boost/fusion/functional.hpp @@ -0,0 +1,17 @@ +/*============================================================================= + 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). +==============================================================================*/ + +#if !defined(BOOST_FUSION_FUNCTIONAL_HPP_INCLUDED) +#define BOOST_FUSION_FUNCTIONAL_HPP_INCLUDED + +#include +#include +#include + +#endif + diff --git a/include/boost/fusion/functional/adapter.hpp b/include/boost/fusion/functional/adapter.hpp new file mode 100644 index 00000000..734dac39 --- /dev/null +++ b/include/boost/fusion/functional/adapter.hpp @@ -0,0 +1,18 @@ +/*============================================================================= + 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). +==============================================================================*/ + +#if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_HPP_INCLUDED) +#define BOOST_FUSION_FUNCTIONAL_ADAPTER_HPP_INCLUDED +#include +#include +#include +#include +#include +#include +#include +#endif diff --git a/include/boost/fusion/functional/adapter/detail/Attic/gen_result_of_spec.hpp b/include/boost/fusion/functional/adapter/detail/Attic/gen_result_of_spec.hpp new file mode 100644 index 00000000..29335dc3 --- /dev/null +++ b/include/boost/fusion/functional/adapter/detail/Attic/gen_result_of_spec.hpp @@ -0,0 +1,102 @@ +/*============================================================================= + 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). +==============================================================================*/ + +// No include guard - this file is included multiple times intentionally. + +#if !defined(BOOST_PP_IS_ITERATING) + +# if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_DETAIL_GEN_RESULT_OF_SPEC_HPP_INCLUDED) + +# include +# include +# include +# include +# include + +# include + +# include + +# define BOOST_FUSION_FUNCTIONAL_ADAPTER_DETAIL_GEN_RESULT_OF_SPEC_HPP_INCLUDED +# endif + +# if !defined(BOOST_FUSION_CLASS_TPL_PARAMS) +# error "BOOST_FUSION_CLASS_TPL_PARAMS undefined" +# endif +# if !defined(BOOST_FUSION_CLASS_TPL_SPEC) +# error "BOOST_FUSION_CLASS_TPL_SPEC undefined" +# endif + +# if !defined(BOOST_FUSION_FUNC_OBJ_ARITY) +# define BOOST_PP_ITERATION_LIMITS (1,1) +# else +# define BOOST_PP_ITERATION_LIMITS (0,BOOST_FUSION_FUNC_OBJ_ARITY) +# endif +# define BOOST_PP_FILENAME_1 \ + + +namespace boost +{ + #include BOOST_PP_ITERATE() +} + +# undef BOOST_FUSION_CLASS_TPL_PARAMS +# undef BOOST_FUSION_CLASS_TPL_SPEC +# if defined(BOOST_FUSION_FUNC_OBJ_ARITY) +# undef BOOST_FUSION_FUNC_OBJ_ARITY +# endif + +#else // defined(BOOST_PP_IS_ITERATING) +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// + +# define N BOOST_PP_ITERATION() + + template< BOOST_FUSION_CLASS_TPL_PARAMS + BOOST_PP_ENUM_TRAILING_PARAMS(N, typename A) > + struct result_of< BOOST_FUSION_CLASS_TPL_SPEC (BOOST_PP_ENUM_PARAMS(N,A)) > + { + typedef typename BOOST_FUSION_CLASS_TPL_SPEC ::template result + ::type BOOST_PP_INTERCEPT)>::type type; + }; + + template< BOOST_FUSION_CLASS_TPL_PARAMS + BOOST_PP_ENUM_TRAILING_PARAMS(N, typename A) > + struct result_of< BOOST_FUSION_CLASS_TPL_SPEC & (BOOST_PP_ENUM_PARAMS(N,A)) > + { + typedef typename BOOST_FUSION_CLASS_TPL_SPEC ::template result + ::type BOOST_PP_INTERCEPT)>::type type; + }; + + template< BOOST_FUSION_CLASS_TPL_PARAMS + BOOST_PP_ENUM_TRAILING_PARAMS(N, typename A) > + struct result_of< BOOST_FUSION_CLASS_TPL_SPEC const (BOOST_PP_ENUM_PARAMS(N,A)) > + { + typedef typename BOOST_FUSION_CLASS_TPL_SPEC ::template result + ::type BOOST_PP_INTERCEPT)>::type type; + }; + + template< BOOST_FUSION_CLASS_TPL_PARAMS + BOOST_PP_ENUM_TRAILING_PARAMS(N, typename A) > + struct result_of< BOOST_FUSION_CLASS_TPL_SPEC const & (BOOST_PP_ENUM_PARAMS(N,A)) > + { + typedef typename BOOST_FUSION_CLASS_TPL_SPEC ::template result + ::type BOOST_PP_INTERCEPT)>::type type; + }; + +# undef N + +#endif + diff --git a/include/boost/fusion/functional/adapter/detail/Attic/has_type.hpp b/include/boost/fusion/functional/adapter/detail/Attic/has_type.hpp new file mode 100644 index 00000000..98056a26 --- /dev/null +++ b/include/boost/fusion/functional/adapter/detail/Attic/has_type.hpp @@ -0,0 +1,21 @@ +/*============================================================================= + 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). +==============================================================================*/ + +#if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_DETAIL_HAS_TYPE_HPP_INCLUDED) +#define BOOST_FUSION_FUNCTIONAL_ADAPTER_DETAIL_HAS_TYPE_HPP_INCLUDED + +#include + +namespace boost { namespace fusion { namespace detail +{ + // Actually it's a sin... But MSVC's weird interpretation of ADL makes + // me do this - tosh. + using boost::mpl::aux::has_type; +}}} + +#endif diff --git a/include/boost/fusion/functional/adapter/detail/Attic/nullary_call_base.hpp b/include/boost/fusion/functional/adapter/detail/Attic/nullary_call_base.hpp new file mode 100644 index 00000000..efef076e --- /dev/null +++ b/include/boost/fusion/functional/adapter/detail/Attic/nullary_call_base.hpp @@ -0,0 +1,60 @@ +/*============================================================================= + 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). +==============================================================================*/ + +#if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_DETAIL_NULLARY_CALL_BASE_HPP_INCLUDED) +#define BOOST_FUSION_FUNCTIONAL_ADAPTER_DETAIL_NULLARY_CALL_BASE_HPP_INCLUDED + +#include + +#include + +#include +#include + +namespace boost { namespace fusion { namespace detail +{ + struct reserved { }; + + template ::type + ::template result >::value> + struct nullary_call_base + { + template inline void operator()(T reserved::*) const { } + protected: + typedef boost::blank r0; + }; + + template + struct nullary_call_base + { + private: + typedef typename remove_reference::type function; + protected: + typedef typename function::template result r0; + public: + + inline typename function::template result::type + operator()() const + { + fusion::vector0 arg; + return static_cast(this)->fnc_transformed(arg); + } + + inline typename function::template result::type + operator()() + { + fusion::vector0 arg; + return static_cast(this)->fnc_transformed(arg); + } + }; + +}}} + +#endif + diff --git a/include/boost/fusion/functional/adapter/detail/access.hpp b/include/boost/fusion/functional/adapter/detail/access.hpp new file mode 100644 index 00000000..29f4ad97 --- /dev/null +++ b/include/boost/fusion/functional/adapter/detail/access.hpp @@ -0,0 +1,37 @@ +/*============================================================================= + 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). +==============================================================================*/ + +#if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_DETAIL_ACCESS_HPP_INCLUDED) +#define BOOST_FUSION_FUNCTIONAL_ADAPTER_DETAIL_ACCESS_HPP_INCLUDED + +namespace boost { namespace fusion { namespace detail +{ + // const reference deduction for function templates that accept T const & + template struct cref { typedef T const& type; }; + template struct cref { typedef T const& type; }; + template struct cref { typedef T const& type; }; + + // mutable reference deduction for function templates that accept T & + template struct mref { typedef T & type; }; + template struct mref { typedef T & type; }; + + // generic reference deduction for function templates that are overloaded + // to accept both T const & and T & + template struct gref { typedef T const& type; }; + template struct gref { typedef T & type; }; + template struct gref { typedef T const& type; }; + + // boost::result_of to Fusion PFO parameter + template struct r2fp { typedef T const type; }; + template struct r2fp { typedef T const type; }; + template struct r2fp { typedef T type; }; + +}}} + +#endif + diff --git a/include/boost/fusion/functional/adapter/detail/gen_result_of_spec.hpp b/include/boost/fusion/functional/adapter/detail/gen_result_of_spec.hpp new file mode 100644 index 00000000..29335dc3 --- /dev/null +++ b/include/boost/fusion/functional/adapter/detail/gen_result_of_spec.hpp @@ -0,0 +1,102 @@ +/*============================================================================= + 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). +==============================================================================*/ + +// No include guard - this file is included multiple times intentionally. + +#if !defined(BOOST_PP_IS_ITERATING) + +# if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_DETAIL_GEN_RESULT_OF_SPEC_HPP_INCLUDED) + +# include +# include +# include +# include +# include + +# include + +# include + +# define BOOST_FUSION_FUNCTIONAL_ADAPTER_DETAIL_GEN_RESULT_OF_SPEC_HPP_INCLUDED +# endif + +# if !defined(BOOST_FUSION_CLASS_TPL_PARAMS) +# error "BOOST_FUSION_CLASS_TPL_PARAMS undefined" +# endif +# if !defined(BOOST_FUSION_CLASS_TPL_SPEC) +# error "BOOST_FUSION_CLASS_TPL_SPEC undefined" +# endif + +# if !defined(BOOST_FUSION_FUNC_OBJ_ARITY) +# define BOOST_PP_ITERATION_LIMITS (1,1) +# else +# define BOOST_PP_ITERATION_LIMITS (0,BOOST_FUSION_FUNC_OBJ_ARITY) +# endif +# define BOOST_PP_FILENAME_1 \ + + +namespace boost +{ + #include BOOST_PP_ITERATE() +} + +# undef BOOST_FUSION_CLASS_TPL_PARAMS +# undef BOOST_FUSION_CLASS_TPL_SPEC +# if defined(BOOST_FUSION_FUNC_OBJ_ARITY) +# undef BOOST_FUSION_FUNC_OBJ_ARITY +# endif + +#else // defined(BOOST_PP_IS_ITERATING) +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// + +# define N BOOST_PP_ITERATION() + + template< BOOST_FUSION_CLASS_TPL_PARAMS + BOOST_PP_ENUM_TRAILING_PARAMS(N, typename A) > + struct result_of< BOOST_FUSION_CLASS_TPL_SPEC (BOOST_PP_ENUM_PARAMS(N,A)) > + { + typedef typename BOOST_FUSION_CLASS_TPL_SPEC ::template result + ::type BOOST_PP_INTERCEPT)>::type type; + }; + + template< BOOST_FUSION_CLASS_TPL_PARAMS + BOOST_PP_ENUM_TRAILING_PARAMS(N, typename A) > + struct result_of< BOOST_FUSION_CLASS_TPL_SPEC & (BOOST_PP_ENUM_PARAMS(N,A)) > + { + typedef typename BOOST_FUSION_CLASS_TPL_SPEC ::template result + ::type BOOST_PP_INTERCEPT)>::type type; + }; + + template< BOOST_FUSION_CLASS_TPL_PARAMS + BOOST_PP_ENUM_TRAILING_PARAMS(N, typename A) > + struct result_of< BOOST_FUSION_CLASS_TPL_SPEC const (BOOST_PP_ENUM_PARAMS(N,A)) > + { + typedef typename BOOST_FUSION_CLASS_TPL_SPEC ::template result + ::type BOOST_PP_INTERCEPT)>::type type; + }; + + template< BOOST_FUSION_CLASS_TPL_PARAMS + BOOST_PP_ENUM_TRAILING_PARAMS(N, typename A) > + struct result_of< BOOST_FUSION_CLASS_TPL_SPEC const & (BOOST_PP_ENUM_PARAMS(N,A)) > + { + typedef typename BOOST_FUSION_CLASS_TPL_SPEC ::template result + ::type BOOST_PP_INTERCEPT)>::type type; + }; + +# undef N + +#endif + diff --git a/include/boost/fusion/functional/adapter/detail/has_type.hpp b/include/boost/fusion/functional/adapter/detail/has_type.hpp new file mode 100644 index 00000000..98056a26 --- /dev/null +++ b/include/boost/fusion/functional/adapter/detail/has_type.hpp @@ -0,0 +1,21 @@ +/*============================================================================= + 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). +==============================================================================*/ + +#if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_DETAIL_HAS_TYPE_HPP_INCLUDED) +#define BOOST_FUSION_FUNCTIONAL_ADAPTER_DETAIL_HAS_TYPE_HPP_INCLUDED + +#include + +namespace boost { namespace fusion { namespace detail +{ + // Actually it's a sin... But MSVC's weird interpretation of ADL makes + // me do this - tosh. + using boost::mpl::aux::has_type; +}}} + +#endif diff --git a/include/boost/fusion/functional/adapter/detail/nullary_call_base.hpp b/include/boost/fusion/functional/adapter/detail/nullary_call_base.hpp new file mode 100644 index 00000000..efef076e --- /dev/null +++ b/include/boost/fusion/functional/adapter/detail/nullary_call_base.hpp @@ -0,0 +1,60 @@ +/*============================================================================= + 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). +==============================================================================*/ + +#if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_DETAIL_NULLARY_CALL_BASE_HPP_INCLUDED) +#define BOOST_FUSION_FUNCTIONAL_ADAPTER_DETAIL_NULLARY_CALL_BASE_HPP_INCLUDED + +#include + +#include + +#include +#include + +namespace boost { namespace fusion { namespace detail +{ + struct reserved { }; + + template ::type + ::template result >::value> + struct nullary_call_base + { + template inline void operator()(T reserved::*) const { } + protected: + typedef boost::blank r0; + }; + + template + struct nullary_call_base + { + private: + typedef typename remove_reference::type function; + protected: + typedef typename function::template result r0; + public: + + inline typename function::template result::type + operator()() const + { + fusion::vector0 arg; + return static_cast(this)->fnc_transformed(arg); + } + + inline typename function::template result::type + operator()() + { + fusion::vector0 arg; + return static_cast(this)->fnc_transformed(arg); + } + }; + +}}} + +#endif + diff --git a/include/boost/fusion/functional/adapter/detail/pow2_explode.hpp b/include/boost/fusion/functional/adapter/detail/pow2_explode.hpp new file mode 100644 index 00000000..3d5afcb8 --- /dev/null +++ b/include/boost/fusion/functional/adapter/detail/pow2_explode.hpp @@ -0,0 +1,117 @@ +/*============================================================================= + 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). +==============================================================================*/ + +#if !defined(BOOST_PP_IS_ITERATING) +# error "This file has to be included by a preprocessor loop construct!" +#elif BOOST_PP_ITERATION_DEPTH() == 1 + +# if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_DETAIL_POW2_EXPLODE_HPP_INCLUDED) +# include +# include +# include +# define BOOST_FUSION_FUNCTIONAL_ADAPTER_DETAIL_POW2_EXPLODE_HPP_INCLUDED +# endif + +# define BOOST_PP_VALUE 0 +# include BOOST_PP_ASSIGN_SLOT(1) + +# define BOOST_PP_FILENAME_2 \ + +# define BOOST_PP_VALUE 1 << (N >> 4) +# if BOOST_PP_VALUE > BOOST_PP_LIMIT_ITERATION +# error "Preprocessor limit exceeded." +# endif +# include BOOST_PP_ASSIGN_SLOT(2) +# define BOOST_PP_ITERATION_LIMITS (0,BOOST_PP_DEC(BOOST_PP_SLOT_2())) +# include BOOST_PP_ITERATE() + +#elif BOOST_PP_ITERATION_DEPTH() == 2 + +# if BOOST_PP_SLOT_1() < 1 << N +# include BOOST_PP_INDIRECT_SELF +# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1 +# include BOOST_PP_ASSIGN_SLOT(1) +# if BOOST_PP_SLOT_1() < 1 << N +# include BOOST_PP_INDIRECT_SELF +# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1 +# include BOOST_PP_ASSIGN_SLOT(1) +# if BOOST_PP_SLOT_1() < 1 << N +# include BOOST_PP_INDIRECT_SELF +# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1 +# include BOOST_PP_ASSIGN_SLOT(1) +# if BOOST_PP_SLOT_1() < 1 << N +# include BOOST_PP_INDIRECT_SELF +# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1 +# include BOOST_PP_ASSIGN_SLOT(1) +# if BOOST_PP_SLOT_1() < 1 << N +# include BOOST_PP_INDIRECT_SELF +# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1 +# include BOOST_PP_ASSIGN_SLOT(1) +# if BOOST_PP_SLOT_1() < 1 << N +# include BOOST_PP_INDIRECT_SELF +# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1 +# include BOOST_PP_ASSIGN_SLOT(1) +# if BOOST_PP_SLOT_1() < 1 << N +# include BOOST_PP_INDIRECT_SELF +# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1 +# include BOOST_PP_ASSIGN_SLOT(1) +# if BOOST_PP_SLOT_1() < 1 << N +# include BOOST_PP_INDIRECT_SELF +# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1 +# include BOOST_PP_ASSIGN_SLOT(1) +# if BOOST_PP_SLOT_1() < 1 << N +# include BOOST_PP_INDIRECT_SELF +# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1 +# include BOOST_PP_ASSIGN_SLOT(1) +# if BOOST_PP_SLOT_1() < 1 << N +# include BOOST_PP_INDIRECT_SELF +# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1 +# include BOOST_PP_ASSIGN_SLOT(1) +# if BOOST_PP_SLOT_1() < 1 << N +# include BOOST_PP_INDIRECT_SELF +# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1 +# include BOOST_PP_ASSIGN_SLOT(1) +# if BOOST_PP_SLOT_1() < 1 << N +# include BOOST_PP_INDIRECT_SELF +# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1 +# include BOOST_PP_ASSIGN_SLOT(1) +# if BOOST_PP_SLOT_1() < 1 << N +# include BOOST_PP_INDIRECT_SELF +# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1 +# include BOOST_PP_ASSIGN_SLOT(1) +# if BOOST_PP_SLOT_1() < 1 << N +# include BOOST_PP_INDIRECT_SELF +# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1 +# include BOOST_PP_ASSIGN_SLOT(1) +# if BOOST_PP_SLOT_1() < 1 << N +# include BOOST_PP_INDIRECT_SELF +# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1 +# include BOOST_PP_ASSIGN_SLOT(1) +# if BOOST_PP_SLOT_1() < 1 << N +# include BOOST_PP_INDIRECT_SELF +# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1 +# include BOOST_PP_ASSIGN_SLOT(1) +# endif +# endif +# endif +# endif +# endif +# endif +# endif +# endif +# endif +# endif +# endif +# endif +# endif +# endif +# endif +# endif + +#endif + diff --git a/include/boost/fusion/functional/adapter/detail/pt_def.hpp b/include/boost/fusion/functional/adapter/detail/pt_def.hpp new file mode 100644 index 00000000..8f85cf44 --- /dev/null +++ b/include/boost/fusion/functional/adapter/detail/pt_def.hpp @@ -0,0 +1,71 @@ +/*============================================================================= + 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). +==============================================================================*/ + +// No include guard - this file is included multiple times intentionally. + +#if BOOST_PP_SLOT_1() & 0x001 +# define PT0 T0 & +#else +# define PT0 T0 const & +#endif +#if BOOST_PP_SLOT_1() & 0x002 +# define PT1 T1 & +#else +# define PT1 T1 const & +#endif +#if BOOST_PP_SLOT_1() & 0x004 +# define PT2 T2 & +#else +# define PT2 T2 const & +#endif +#if BOOST_PP_SLOT_1() & 0x008 +# define PT3 T3 & +#else +# define PT3 T3 const & +#endif +#if BOOST_PP_SLOT_1() & 0x010 +# define PT4 T4 & +#else +# define PT4 T4 const & +#endif +#if BOOST_PP_SLOT_1() & 0x020 +# define PT5 T5 & +#else +# define PT5 T5 const & +#endif +#if BOOST_PP_SLOT_1() & 0x040 +# define PT6 T6 & +#else +# define PT6 T6 const & +#endif +#if BOOST_PP_SLOT_1() & 0x080 +# define PT7 T7 & +#else +# define PT7 T7 const & +#endif +#if BOOST_PP_SLOT_1() & 0x100 +# define PT8 T8 & +#else +# define PT8 T8 const & +#endif +#if BOOST_PP_SLOT_1() & 0x200 +# define PT9 T9 & +#else +# define PT9 T9 const & +#endif +#if BOOST_PP_SLOT_1() & 0x400 +# define PT10 T10 & +#else +# define PT10 T10 const & +#endif +#if BOOST_PP_SLOT_1() & 0x800 +# define PT11 T11 & +#else +# define PT11 T11 const & +#endif + diff --git a/include/boost/fusion/functional/adapter/detail/pt_undef.hpp b/include/boost/fusion/functional/adapter/detail/pt_undef.hpp new file mode 100644 index 00000000..dca50043 --- /dev/null +++ b/include/boost/fusion/functional/adapter/detail/pt_undef.hpp @@ -0,0 +1,23 @@ +/*============================================================================= + 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). +==============================================================================*/ + +// No include guard - this file is included multiple times intentionally. + +#undef PT0 +#undef PT1 +#undef PT2 +#undef PT3 +#undef PT4 +#undef PT5 +#undef PT6 +#undef PT7 +#undef PT8 +#undef PT9 +#undef PT10 +#undef PT11 + diff --git a/include/boost/fusion/functional/adapter/fused.hpp b/include/boost/fusion/functional/adapter/fused.hpp new file mode 100644 index 00000000..21c25d84 --- /dev/null +++ b/include/boost/fusion/functional/adapter/fused.hpp @@ -0,0 +1,78 @@ +/*============================================================================= + 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). +==============================================================================*/ + +#if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_FUSED_HPP_INCLUDED) +#define BOOST_FUSION_FUNCTIONAL_ADAPTER_FUSED_HPP_INCLUDED + +#include + +#include +#include + +namespace boost { namespace fusion +{ + template class fused; + + //----- ---- --- -- - - - - + + template + class fused + { + Function fnc_transformed; + + typedef typename boost::add_reference::type func_fwd_t; + typedef typename detail::call_param::type func_const_fwd_t; + + public: + + inline explicit fused(func_const_fwd_t f = Function()) + : fnc_transformed(f) + { } + + template + inline typename result_of::invoke::type + operator()(Seq const & s) const + { + return fusion::invoke(this->fnc_transformed,s); + } + + template + inline typename result_of::invoke::type + operator()(Seq const & s) + { + return fusion::invoke(this->fnc_transformed,s); + } + + template + inline typename result_of::invoke::type + operator()(Seq & s) const + { + return fusion::invoke(this->fnc_transformed,s); + } + + template + inline typename result_of::invoke::type + operator()(Seq & s) + { + return fusion::invoke(this->fnc_transformed,s); + } + + template + struct result + : result_of::invoke + { }; + }; + +}} + +#define BOOST_FUSION_CLASS_TPL_PARAMS typename F +#define BOOST_FUSION_CLASS_TPL_SPEC fusion::fused +#include + +#endif + diff --git a/include/boost/fusion/functional/adapter/fused_function_object.hpp b/include/boost/fusion/functional/adapter/fused_function_object.hpp new file mode 100644 index 00000000..300b1d42 --- /dev/null +++ b/include/boost/fusion/functional/adapter/fused_function_object.hpp @@ -0,0 +1,83 @@ +/*============================================================================= + 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). +==============================================================================*/ + +#if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_FUSED_FUNCTION_OBJECT_HPP_INCLUDED) +#define BOOST_FUSION_FUNCTIONAL_ADAPTER_FUSED_FUNCTION_OBJECT_HPP_INCLUDED + +#include + +#include +#include + +namespace boost { namespace fusion +{ + template class fused_function_object; + + //----- ---- --- -- - - - - + + template + class fused_function_object + { + Function fnc_transformed; + + typedef typename boost::add_reference::type func_fwd_t; + typedef typename detail::call_param::type func_const_fwd_t; + + public: + + inline explicit fused_function_object(func_const_fwd_t f = Function()) + : fnc_transformed(f) + { } + + template + inline typename result_of::invoke_function_object::type operator()(Seq const & s) const + { + return fusion::invoke_function_object< + func_const_fwd_t >(this->fnc_transformed,s); + } + + template + inline typename result_of::invoke_function_object::type + operator()(Seq const & s) + { + return fusion::invoke_function_object< + func_fwd_t >(this->fnc_transformed,s); + } + + template + inline typename result_of::invoke_function_object::type + operator()(Seq & s) const + { + return fusion::invoke_function_object< + func_const_fwd_t >(this->fnc_transformed,s); + } + + template + inline typename result_of::invoke_function_object::type + operator()(Seq & s) + { + return fusion::invoke_function_object< + func_fwd_t >(this->fnc_transformed,s); + } + + template + struct result + : result_of::invoke_function_object + { }; + }; + +}} + +#define BOOST_FUSION_CLASS_TPL_PARAMS typename F +#define BOOST_FUSION_CLASS_TPL_SPEC fusion::fused_function_object +#include + +#endif + diff --git a/include/boost/fusion/functional/adapter/fused_procedure.hpp b/include/boost/fusion/functional/adapter/fused_procedure.hpp new file mode 100644 index 00000000..43c94759 --- /dev/null +++ b/include/boost/fusion/functional/adapter/fused_procedure.hpp @@ -0,0 +1,79 @@ +/*============================================================================= + 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). +==============================================================================*/ + +#if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_FUSED_PROCEDURE_HPP_INCLUDED) +#define BOOST_FUSION_FUNCTIONAL_ADAPTER_FUSED_PROCEDURE_HPP_INCLUDED + +#include + +#include +#include + +namespace boost { namespace fusion +{ + template class fused_procedure; + + //----- ---- --- -- - - - - + + template + class fused_procedure + { + Function fnc_transformed; + + typedef typename boost::add_reference::type func_fwd_t; + typedef typename detail::call_param::type func_const_fwd_t; + + public: + + inline explicit fused_procedure(func_const_fwd_t f = Function()) + : fnc_transformed(f) + { } + + template + inline typename result_of::invoke_procedure::type + operator()(Seq const & s) const + { + return fusion::invoke_procedure< + func_const_fwd_t >(this->fnc_transformed,s); + } + + template + inline typename result_of::invoke_procedure::type + operator()(Seq const & s) + { + return fusion::invoke_procedure< + func_fwd_t >(this->fnc_transformed,s); + } + + template + inline typename result_of::invoke_procedure::type + operator()(Seq & s) const + { + return fusion::invoke_procedure< + func_const_fwd_t >(this->fnc_transformed,s); + } + + template + inline typename result_of::invoke_procedure::type + operator()(Seq & s) + { + return fusion::invoke_procedure< + func_fwd_t >(this->fnc_transformed,s); + } + + template + struct result + : result_of::invoke_procedure + { }; + + typedef void result_type; + }; +}} + +#endif + diff --git a/include/boost/fusion/functional/adapter/limits.hpp b/include/boost/fusion/functional/adapter/limits.hpp new file mode 100644 index 00000000..fa2e5a3b --- /dev/null +++ b/include/boost/fusion/functional/adapter/limits.hpp @@ -0,0 +1,36 @@ +/*============================================================================= + 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). +==============================================================================*/ + +#if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_LIMITS_HPP_INCLUDED) +# define BOOST_FUSION_FUNCTIONAL_ADAPTER_LIMITS_HPP_INCLUDED + +# include + +# if !defined(BOOST_FUSION_UNFUSED_GENERIC_MAX_ARITY) +# define BOOST_FUSION_UNFUSED_GENERIC_MAX_ARITY 6 +# elif BOOST_FUSION_UNFUSED_GENERIC_MAX_ARITY > FUSION_MAX_VECTOR_SIZE +# error "BOOST_FUSION_UNFUSED_GENERIC_MAX_ARITY > FUSION_MAX_VECTOR_SIZE" +# endif +# if !defined(BOOST_FUSION_UNFUSED_RVALUE_ARGS_MAX_ARITY) +# define BOOST_FUSION_UNFUSED_RVALUE_ARGS_MAX_ARITY 6 +# elif BOOST_FUSION_UNFUSED_RVALUE_ARGS_MAX_ARITY > FUSION_MAX_VECTOR_SIZE +# error "BOOST_FUSION_UNFUSED_RVALUE_ARGS_MAX_ARITY > FUSION_MAX_VECTOR_SIZE" +# endif +# if !defined(BOOST_FUSION_UNFUSED_LVALUE_ARGS_MAX_ARITY) +# define BOOST_FUSION_UNFUSED_LVALUE_ARGS_MAX_ARITY 6 +# elif BOOST_FUSION_UNFUSED_LVALUE_ARGS_MAX_ARITY > FUSION_MAX_VECTOR_SIZE +# error "BOOST_FUSION_UNFUSED_LVALUE_ARGS_MAX_ARITY > FUSION_MAX_VECTOR_SIZE" +# endif +# if !defined(BOOST_FUSION_UNFUSED_TYPED_MAX_ARITY) +# define BOOST_FUSION_UNFUSED_TYPED_MAX_ARITY 6 +# elif BOOST_FUSION_UNFUSED_TYPED_MAX_ARITY > FUSION_MAX_VECTOR_SIZE +# error "BOOST_FUSION_UNFUSED_TYPED_MAX_ARITY > FUSION_MAX_VECTOR_SIZE" +# endif + +#endif + diff --git a/include/boost/fusion/functional/adapter/unfused_generic.hpp b/include/boost/fusion/functional/adapter/unfused_generic.hpp new file mode 100644 index 00000000..6cf811ee --- /dev/null +++ b/include/boost/fusion/functional/adapter/unfused_generic.hpp @@ -0,0 +1,163 @@ +/*============================================================================= + 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). +==============================================================================*/ + +#if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_UNFUSED_GENERIC_HPP_INCLUDED) +#if !defined(BOOST_PP_IS_ITERATING) + +#include +#include + +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include + +namespace boost { namespace fusion +{ + template class unfused_generic; + + //----- ---- --- -- - - - - + + struct void_; + + template class unfused_generic + : public detail::nullary_call_base, Function> + { + Function fnc_transformed; + + template + friend struct detail::nullary_call_base; + + typedef detail::nullary_call_base< + fusion::unfused_generic, Function > base; + + typedef typename boost::remove_reference::type function; + typedef typename detail::call_param::type func_const_fwd_t; + + public: + + inline explicit unfused_generic(func_const_fwd_t f = Function()) + : fnc_transformed(f) + { } + + using base::operator(); + + template < + BOOST_PP_ENUM_BINARY_PARAMS(BOOST_FUSION_UNFUSED_GENERIC_MAX_ARITY, + typename T, = fusion::void_ BOOST_PP_INTERCEPT), + class _ = fusion::void_ + > + struct result; + + template + struct result< + BOOST_PP_ENUM_PARAMS(BOOST_FUSION_UNFUSED_GENERIC_MAX_ARITY, + fusion::void_ BOOST_PP_INTERCEPT),_> + : base::r0 + { }; + + #define BOOST_FUSION_CODE(tpl_params,arg_types,params,args) \ + template \ + inline typename function::template result< \ + BOOST_PP_CAT(fusion::vector,N) >::type \ + operator()(params) const \ + { \ + BOOST_PP_CAT(fusion::vector,N) arg(args); \ + return this->fnc_transformed(arg); \ + } \ + template \ + inline typename function::template result< \ + BOOST_PP_CAT(fusion::vector,N) >::type \ + operator()(params) \ + { \ + BOOST_PP_CAT(fusion::vector,N) arg(args); \ + return this->fnc_transformed(arg); \ + } + + #define BOOST_PP_INDIRECT_SELF \ + + #define BOOST_PP_FILENAME_1 \ + + #define BOOST_PP_ITERATION_LIMITS \ + (1,BOOST_FUSION_UNFUSED_GENERIC_MAX_ARITY) + #define N BOOST_PP_ITERATION_1 + #include BOOST_PP_ITERATE() + #undef N + #undef BOOST_FUSION_CODE + }; +}} + +#define BOOST_FUSION_CLASS_TPL_PARAMS class F +#define BOOST_FUSION_CLASS_TPL_SPEC fusion::unfused_generic +#define BOOST_FUSION_FUNC_OBJ_ARITY BOOST_FUSION_UNFUSED_GENERIC_MAX_ARITY +#include + +#define BOOST_FUSION_FUNCTIONAL_ADAPTER_UNFUSED_GENERIC_HPP_INCLUDED +#else // defined(BOOST_PP_IS_ITERATING) +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// + +#include + +#if BOOST_PP_SLOT_1() == 0 + template + struct result +#if N < BOOST_FUSION_UNFUSED_GENERIC_MAX_ARITY + < BOOST_PP_ENUM_PARAMS(N,T), + BOOST_PP_ENUM_PARAMS( + BOOST_PP_SUB(BOOST_FUSION_UNFUSED_GENERIC_MAX_ARITY,N), + fusion::void_ BOOST_PP_INTERCEPT), _ > +#endif + : function::template result< BOOST_PP_CAT(fusion::vector,N)< + BOOST_PP_ENUM_BINARY_PARAMS(N,typename detail::gref::type + BOOST_PP_INTERCEPT) > > + { }; +#endif + +#if BOOST_WORKAROUND(BOOST_MSVC,BOOST_TESTED_AT(1400)) + template + inline typename function::template result< + BOOST_PP_CAT(fusion::vector,N) >::type + operator()(BOOST_PP_ENUM_BINARY_PARAMS(N,PT,a)) const + { + BOOST_PP_CAT(fusion::vector,N) + arg(BOOST_PP_ENUM_PARAMS(N,a)); + return this->fnc_transformed(arg); + } + template + inline typename function::template result< + BOOST_PP_CAT(fusion::vector,N) >::type + operator()(BOOST_PP_ENUM_BINARY_PARAMS(N,PT,a)) + { + BOOST_PP_CAT(fusion::vector,N) + arg(BOOST_PP_ENUM_PARAMS(N,a)); + return this->fnc_transformed(arg); + } +#else + BOOST_FUSION_CODE(BOOST_PP_ENUM_PARAMS(N,typename T), + BOOST_PP_ENUM_PARAMS(N,PT), BOOST_PP_ENUM_BINARY_PARAMS(N,PT,a), + BOOST_PP_ENUM_PARAMS(N,a) ) + // ...generates uglier code but is faster - it caches ENUM_* +#endif + +#include + +#endif // defined(BOOST_PP_IS_ITERATING) +#endif + diff --git a/include/boost/fusion/functional/adapter/unfused_lvalue_args.hpp b/include/boost/fusion/functional/adapter/unfused_lvalue_args.hpp new file mode 100644 index 00000000..a0152fb2 --- /dev/null +++ b/include/boost/fusion/functional/adapter/unfused_lvalue_args.hpp @@ -0,0 +1,130 @@ +/*============================================================================= + 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). +==============================================================================*/ + +#if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_UNFUSED_LVALUE_ARGS_HPP_INCLUDED) +#if !defined(BOOST_PP_IS_ITERATING) + +#include +#include +#include +#include +#include + +#include + +#include + +#include +#include +#include + +namespace boost { namespace fusion +{ + template class unfused_lvalue_args; + + //----- ---- --- -- - - - - + + struct void_; + + template class unfused_lvalue_args + : public detail::nullary_call_base + , Function> + { + Function fnc_transformed; + + template + friend struct detail::nullary_call_base; + + typedef detail::nullary_call_base< + fusion::unfused_lvalue_args, Function > base; + + typedef typename boost::remove_reference::type function; + typedef typename detail::call_param::type func_const_fwd_t; + + public: + + inline explicit unfused_lvalue_args(func_const_fwd_t f = function()) + : fnc_transformed(f) + { } + + using base::operator(); + + template < + BOOST_PP_ENUM_BINARY_PARAMS( + BOOST_FUSION_UNFUSED_LVALUE_ARGS_MAX_ARITY, + typename T, = fusion::void_ BOOST_PP_INTERCEPT ), + class _ = fusion::void_ > + struct result; + + template + struct result + : base::r0 + { }; + + #define BOOST_PP_FILENAME_1 \ + + #define BOOST_PP_ITERATION_LIMITS \ + (1,BOOST_FUSION_UNFUSED_LVALUE_ARGS_MAX_ARITY) + #include BOOST_PP_ITERATE() + }; +}} + +#define BOOST_FUSION_CLASS_TPL_PARAMS class F +#define BOOST_FUSION_CLASS_TPL_SPEC fusion::unfused_lvalue_args +#define BOOST_FUSION_FUNC_OBJ_ARITY BOOST_FUSION_UNFUSED_LVALUE_ARGS_MAX_ARITY +#include + +#define BOOST_FUSION_FUNCTIONAL_ADAPTER_UNFUSED_LVALUE_ARGS_HPP_INCLUDED +#else // defined(BOOST_PP_IS_ITERATING) +//////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +//////////////////////////////////////////////////////////////////////////////// +#define N BOOST_PP_ITERATION() + + template + struct result +#if N < BOOST_FUSION_UNFUSED_LVALUE_ARGS_MAX_ARITY + < BOOST_PP_ENUM_PARAMS(N,T), + BOOST_PP_ENUM_PARAMS( + BOOST_PP_SUB(BOOST_FUSION_UNFUSED_LVALUE_ARGS_MAX_ARITY,N), + fusion::void_ BOOST_PP_INTERCEPT), _ > +#endif + : function::template result< BOOST_PP_CAT(fusion::vector,N)< + BOOST_PP_ENUM_BINARY_PARAMS(N,typename detail::mref::type + BOOST_PP_INTERCEPT) > > + { }; + + template + inline typename function::template result >::type + operator()(BOOST_PP_ENUM_BINARY_PARAMS(N,T,& a)) const + { + BOOST_PP_CAT(fusion::vector,N)< + BOOST_PP_ENUM_BINARY_PARAMS(N,T,& BOOST_PP_INTERCEPT) > + arg(BOOST_PP_ENUM_PARAMS(N,a)); + return this->fnc_transformed(arg); + } + + template + inline typename function::template result >::type + operator()(BOOST_PP_ENUM_BINARY_PARAMS(N,T,& a)) + { + BOOST_PP_CAT(fusion::vector,N)< + BOOST_PP_ENUM_BINARY_PARAMS(N,T,& BOOST_PP_INTERCEPT) > + arg(BOOST_PP_ENUM_PARAMS(N,a)); + return this->fnc_transformed(arg); + } +#undef N +#endif // defined(BOOST_PP_IS_ITERATING) +#endif + diff --git a/include/boost/fusion/functional/adapter/unfused_rvalue_args.hpp b/include/boost/fusion/functional/adapter/unfused_rvalue_args.hpp new file mode 100644 index 00000000..21856bff --- /dev/null +++ b/include/boost/fusion/functional/adapter/unfused_rvalue_args.hpp @@ -0,0 +1,131 @@ +/*============================================================================= + 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). +==============================================================================*/ + +#if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_UNFUSED_RVALUE_ARGS_HPP_INCLUDED) +#if !defined(BOOST_PP_IS_ITERATING) + +#include +#include +#include +#include +#include + +#include + +#include + +#include +#include +#include + +namespace boost { namespace fusion +{ + template class unfused_rvalue_args; + + //----- ---- --- -- - - - - + + struct void_; + + template class unfused_rvalue_args + : public detail::nullary_call_base + , Function> + { + Function fnc_transformed; + + template + friend struct detail::nullary_call_base; + + typedef detail::nullary_call_base< + fusion::unfused_rvalue_args, Function > base; + + typedef typename boost::remove_reference::type function; + typedef typename detail::call_param::type func_const_fwd_t; + + public: + + inline explicit unfused_rvalue_args(func_const_fwd_t f = function()) + : fnc_transformed(f) + { } + + using base::operator(); + + template < + BOOST_PP_ENUM_BINARY_PARAMS( + BOOST_FUSION_UNFUSED_RVALUE_ARGS_MAX_ARITY, + typename T, = fusion::void_ BOOST_PP_INTERCEPT ), + class _ = fusion::void_ > + struct result; + + template + struct result + : base::r0 + { }; + + #define BOOST_PP_FILENAME_1 \ + + #define BOOST_PP_ITERATION_LIMITS \ + (1,BOOST_FUSION_UNFUSED_RVALUE_ARGS_MAX_ARITY) + #include BOOST_PP_ITERATE() + }; +}} + +#define BOOST_FUSION_CLASS_TPL_PARAMS class F +#define BOOST_FUSION_CLASS_TPL_SPEC fusion::unfused_rvalue_args +#define BOOST_FUSION_FUNC_OBJ_ARITY BOOST_FUSION_UNFUSED_RVALUE_ARG_MAX_ARITY +#include + +#define BOOST_FUSION_FUNCTIONAL_ADAPTER_UNFUSED_RVALUE_ARGS_HPP_INCLUDED +#else // defined(BOOST_PP_IS_ITERATING) +//////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +//////////////////////////////////////////////////////////////////////////////// +#define N BOOST_PP_ITERATION() + + template + struct result +#if N < BOOST_FUSION_UNFUSED_RVALUE_ARGS_MAX_ARITY + < BOOST_PP_ENUM_PARAMS(N,T), + BOOST_PP_ENUM_PARAMS( + BOOST_PP_SUB(BOOST_FUSION_UNFUSED_RVALUE_ARGS_MAX_ARITY,N), + fusion::void_ BOOST_PP_INTERCEPT), _ > +#endif + : function::template result< BOOST_PP_CAT(fusion::vector,N)< + BOOST_PP_ENUM_BINARY_PARAMS(N,typename detail::cref::type + BOOST_PP_INTERCEPT) > > + { }; + + template + inline typename function::template result >::type + operator()(BOOST_PP_ENUM_BINARY_PARAMS(N,T,const& a)) const + { + BOOST_PP_CAT(fusion::vector,N)< + BOOST_PP_ENUM_BINARY_PARAMS(N,T,const& BOOST_PP_INTERCEPT) > + arg(BOOST_PP_ENUM_PARAMS(N,a)); + return this->fnc_transformed(arg); + } + + template + inline typename function::template result >::type + operator()(BOOST_PP_ENUM_BINARY_PARAMS(N,T,const& a)) + { + BOOST_PP_CAT(fusion::vector,N)< + BOOST_PP_ENUM_BINARY_PARAMS(N,T,const& BOOST_PP_INTERCEPT) > + arg(BOOST_PP_ENUM_PARAMS(N,a)); + return this->fnc_transformed(arg); + } + +#undef N +#endif // defined(BOOST_PP_IS_ITERATING) +#endif + diff --git a/include/boost/fusion/functional/adapter/unfused_typed.hpp b/include/boost/fusion/functional/adapter/unfused_typed.hpp new file mode 100644 index 00000000..7eae5d53 --- /dev/null +++ b/include/boost/fusion/functional/adapter/unfused_typed.hpp @@ -0,0 +1,200 @@ +/*============================================================================= + 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). +==============================================================================*/ + +#if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_UNFUSED_TYPED_HPP_INCLUDED) +#if !defined(BOOST_PP_IS_ITERATING) + +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +namespace boost { namespace fusion +{ + + template class unfused_typed; + + //----- ---- --- -- - - - - + + namespace detail + { + template + struct unfused_typed_impl; + + template ::type > + struct unfused_typed_next_base + { + // type of the next base class + typedef unfused_typed_impl + < Derived, Function, NextSeq, result_of::size::value, + has_type< typename Function::template result< + typename result_of::as_vector::type > >::value + > + type; + }; + + template + struct unfused_typed_impl + : unfused_typed_next_base::type + { }; + + template + struct unfused_typed_impl + : nullary_call_base + { }; + + template + struct unfused_typed_impl + : nullary_call_base + { }; + + } + + template + class unfused_typed + : public detail::unfused_typed_next_base + < unfused_typed, + typename remove_reference::type, Sequence, Sequence + >::type + { + Function fnc_transformed; + + template + friend struct detail::unfused_typed_impl; + + template + friend struct detail::nullary_call_base; + + typedef typename boost::remove_reference::type function; + typedef typename detail::call_param::type func_const_fwd_t; + + typedef typename detail::unfused_typed_next_base,function,Sequence,Sequence>::type base; + + public: + + inline explicit unfused_typed(func_const_fwd_t f = Function()) + : fnc_transformed(f) + { } + + template < + BOOST_PP_ENUM_BINARY_PARAMS(BOOST_FUSION_UNFUSED_TYPED_MAX_ARITY, + typename T, = fusion::void_ BOOST_PP_INTERCEPT), + class _ = fusion::void_ + > + struct result; + + template + struct result< + BOOST_PP_ENUM_PARAMS(BOOST_FUSION_UNFUSED_TYPED_MAX_ARITY, + fusion::void_ BOOST_PP_INTERCEPT),_> + : base::r0 + { }; + }; + + #define BOOST_PP_FILENAME_1 + #define BOOST_PP_ITERATION_LIMITS (1,BOOST_FUSION_UNFUSED_TYPED_MAX_ARITY) + #include BOOST_PP_ITERATE() + +}} + +#define BOOST_FUSION_CLASS_TPL_PARAMS class F, class S +#define BOOST_FUSION_CLASS_TPL_SPEC fusion::unfused_typed +#define BOOST_FUSION_FUNC_OBJ_ARITY BOOST_FUSION_UNFUSED_TYPED_MAX_ARITY +#include + +#define BOOST_FUSION_FUNCTIONAL_ADAPTER_UNFUSED_TYPED_HPP_INCLUDED +#else // defined(BOOST_PP_IS_ITERATING) +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// +#define N BOOST_PP_ITERATION() + + namespace detail + { + + template + struct unfused_typed_impl + : unfused_typed_next_base::type + { + private: + typedef typename unfused_typed_next_base< + Derived,Function,Sequence>::type base; + + // Notes: + // - conversion to fusion::vector might not be perfect (there is + // currently no "inrinsic converting ctor" that would allow us + // to let the user choose the sequence implementation) + // - value_at_c (instead of iteration) is OK because of conversion + // to fusion::vector - we would need iteration for arbitrary + // sequences + typedef typename result_of::as_vector::type arg_vector_t; + public: + + using base::operator(); + + typedef typename Function:: + template result BOOST_PP_CAT(r,N); + +#define M(z,i,s) \ + typename call_param::type>::type a##i + + inline typename Function::template result::type + operator()(BOOST_PP_ENUM(N,M,arg_vector_t)) const + { + arg_vector_t arg(BOOST_PP_ENUM_PARAMS(N,a)); + return static_cast(this)->fnc_transformed(arg); + } + + inline typename Function::template result::type + operator()(BOOST_PP_ENUM(N,M,arg_vector_t)) + { + arg_vector_t arg(BOOST_PP_ENUM_PARAMS(N,a)); + return static_cast(this)->fnc_transformed(arg); + } + +#undef M + }; + + } // namespace detail + + template + template + struct unfused_typed::result +#if N < BOOST_FUSION_UNFUSED_TYPED_MAX_ARITY + < BOOST_PP_ENUM_PARAMS(N,T), + BOOST_PP_ENUM_PARAMS( + BOOST_PP_SUB(BOOST_FUSION_UNFUSED_TYPED_MAX_ARITY,N), + fusion::void_ BOOST_PP_INTERCEPT), _ > +#endif + : BOOST_PP_CAT(base::r,N) + { }; + +#undef N +#endif // defined(BOOST_PP_IS_ITERATING) +#endif + diff --git a/include/boost/fusion/functional/generation.hpp b/include/boost/fusion/functional/generation.hpp new file mode 100644 index 00000000..3dabd3ee --- /dev/null +++ b/include/boost/fusion/functional/generation.hpp @@ -0,0 +1,19 @@ +/*============================================================================= + Copyright (c) 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). +==============================================================================*/ + +#if !defined(BOOST_FUSION_FUNCTIONAL_GENERATION_HPP_INCLUDED) +#define BOOST_FUSION_FUNCTIONAL_GENERATION_HPP_INCLUDED + +#include +#include +#include +#include +#include +#include + +#endif diff --git a/include/boost/fusion/functional/generation/detail/gen_make_adapter.hpp b/include/boost/fusion/functional/generation/detail/gen_make_adapter.hpp new file mode 100644 index 00000000..1c2c3e95 --- /dev/null +++ b/include/boost/fusion/functional/generation/detail/gen_make_adapter.hpp @@ -0,0 +1,44 @@ +/*============================================================================= + Copyright (c) 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). +==============================================================================*/ + +// No include guard - this file is included multiple times intentionally. + +#include +#include + +#if !defined(BOOST_FUSION_CLASS_TPL_NAME) +# error "BOOST_FUSION_CLASS_TPL_NAME undefined" +#endif + +#define BOOST_FUSION_FUNC_NAME BOOST_PP_CAT(make_,BOOST_FUSION_CLASS_TPL_NAME) + +namespace boost { namespace fusion +{ + + namespace result_of + { + template + struct BOOST_FUSION_FUNC_NAME + { + typedef fusion::BOOST_FUSION_CLASS_TPL_NAME< + typename fusion::detail::as_fusion_element::type > type; + }; + } + + template + inline typename result_of::BOOST_FUSION_FUNC_NAME::type + BOOST_FUSION_FUNC_NAME(F const & f) + { + return typename result_of::BOOST_FUSION_FUNC_NAME::type(f); + } + +}} + +#undef BOOST_FUSION_CLASS_TPL_NAME +#undef BOOST_FUSION_FUNC_NAME + diff --git a/include/boost/fusion/functional/generation/make_fused.hpp b/include/boost/fusion/functional/generation/make_fused.hpp new file mode 100644 index 00000000..12365824 --- /dev/null +++ b/include/boost/fusion/functional/generation/make_fused.hpp @@ -0,0 +1,18 @@ +/*============================================================================= + Copyright (c) 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). +==============================================================================*/ + +#if !defined(BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_FUSED_HPP_INCLUDED) +#define BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_FUSED_HPP_INCLUDED + +#include + +#define BOOST_FUSION_CLASS_TPL_NAME fused +#include + +#endif + diff --git a/include/boost/fusion/functional/generation/make_fused_function_object.hpp b/include/boost/fusion/functional/generation/make_fused_function_object.hpp new file mode 100644 index 00000000..4146ddd6 --- /dev/null +++ b/include/boost/fusion/functional/generation/make_fused_function_object.hpp @@ -0,0 +1,18 @@ +/*============================================================================= + Copyright (c) 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). +==============================================================================*/ + +#if !defined(BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_FUSED_FUNCTION_OBJECT_HPP_INCLUDED) +#define BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_FUSED_FUNCTION_OBJECT_HPP_INCLUDED + +#include + +#define BOOST_FUSION_CLASS_TPL_NAME fused_function_object +#include + +#endif + diff --git a/include/boost/fusion/functional/generation/make_fused_procedure.hpp b/include/boost/fusion/functional/generation/make_fused_procedure.hpp new file mode 100644 index 00000000..0687577c --- /dev/null +++ b/include/boost/fusion/functional/generation/make_fused_procedure.hpp @@ -0,0 +1,18 @@ +/*============================================================================= + Copyright (c) 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). +==============================================================================*/ + +#if !defined(BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_FUSED_PROCEDURE_HPP_INCLUDED) +#define BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_FUSED_PROCEDURE_HPP_INCLUDED + +#include + +#define BOOST_FUSION_CLASS_TPL_NAME fused_procedure +#include + +#endif + diff --git a/include/boost/fusion/functional/generation/make_unfused_generic.hpp b/include/boost/fusion/functional/generation/make_unfused_generic.hpp new file mode 100644 index 00000000..87a99c59 --- /dev/null +++ b/include/boost/fusion/functional/generation/make_unfused_generic.hpp @@ -0,0 +1,18 @@ +/*============================================================================= + Copyright (c) 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). +==============================================================================*/ + +#if !defined(BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_UNFUSED_GENERIC_HPP_INCLUDED) +#define BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_UNFUSED_GENERIC_HPP_INCLUDED + +#include + +#define BOOST_FUSION_CLASS_TPL_NAME unfused_generic +#include + +#endif + diff --git a/include/boost/fusion/functional/generation/make_unfused_lvalue_args.hpp b/include/boost/fusion/functional/generation/make_unfused_lvalue_args.hpp new file mode 100644 index 00000000..f3c49e45 --- /dev/null +++ b/include/boost/fusion/functional/generation/make_unfused_lvalue_args.hpp @@ -0,0 +1,18 @@ +/*============================================================================= + Copyright (c) 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). +==============================================================================*/ + +#if !defined(BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_UNFUSED_LVALUE_ARGS_HPP_INCLUDED) +#define BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_UNFUSED_LVALUE_ARGS_HPP_INCLUDED + +#include + +#define BOOST_FUSION_CLASS_TPL_NAME unfused_lvalue_args +#include + +#endif + diff --git a/include/boost/fusion/functional/generation/make_unfused_rvalue_args.hpp b/include/boost/fusion/functional/generation/make_unfused_rvalue_args.hpp new file mode 100644 index 00000000..9322e1e0 --- /dev/null +++ b/include/boost/fusion/functional/generation/make_unfused_rvalue_args.hpp @@ -0,0 +1,18 @@ +/*============================================================================= + Copyright (c) 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). +==============================================================================*/ + +#if !defined(BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_UNFUSED_RVALUE_ARGS_HPP_INCLUDED) +#define BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_UNFUSED_RVALUE_ARGS_HPP_INCLUDED + +#include + +#define BOOST_FUSION_CLASS_TPL_NAME unfused_rvalue_args +#include + +#endif + diff --git a/include/boost/fusion/functional/invocation.hpp b/include/boost/fusion/functional/invocation.hpp new file mode 100644 index 00000000..3ca68c34 --- /dev/null +++ b/include/boost/fusion/functional/invocation.hpp @@ -0,0 +1,16 @@ +/*============================================================================= + 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). +==============================================================================*/ + +#if !defined(BOOST_FUSION_FUNCTIONAL_INVOCATION_HPP_INCLUDED) +#define BOOST_FUSION_FUNCTIONAL_INVOCATION_HPP_INCLUDED + +#include +#include +#include + +#endif diff --git a/include/boost/fusion/functional/invocation/detail/that_ptr.hpp b/include/boost/fusion/functional/invocation/detail/that_ptr.hpp new file mode 100644 index 00000000..a92c436b --- /dev/null +++ b/include/boost/fusion/functional/invocation/detail/that_ptr.hpp @@ -0,0 +1,87 @@ +/*============================================================================= + 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). +==============================================================================*/ + +#if !defined(BOOST_FUSION_FUNCTIONAL_INVOCATION_DETAIL_THAT_PTR_HPP_INCLUDED) +#define BOOST_FUSION_FUNCTIONAL_INVOCATION_DETAIL_THAT_PTR_HPP_INCLUDED + +#include +#include +#include +#include + +namespace boost { namespace fusion { namespace detail +{ + template + struct that_ptr + { + private: + + typedef typename remove_reference::type pointee; + + template + static inline pointee * do_get_pointer(T &, pointee * x) + { + return x; + } + template + static inline pointee * do_get_pointer(T & x, void const *) + { + return get_pointer(x); + } + + public: + + static inline pointee * get(pointee * x) + { + return x; + } + + static inline pointee * get(pointee & x) + { + return boost::addressof(x); + } + + template static inline pointee * get(T & x) + { + return do_get_pointer(x, boost::addressof(x)); + } + }; + + template struct non_const_pointee; + + namespace adl_barrier + { + using boost::get_pointer; + void const * BOOST_TT_DECL get_pointer(...); // fallback + + template< typename T> char const_tester(T *); + template< typename T> long const_tester(T const *); + + template + struct non_const_pointee_impl + { + static Ptr & what; + + static bool const value = + sizeof(const_tester(get_pointer(what))) == 1; + }; + } + + template struct non_const_pointee + : adl_barrier::non_const_pointee_impl< + typename remove_cv< + typename remove_reference::type >::type > + { + typedef non_const_pointee type; + typedef bool value_type; + }; + +}}} + +#endif + diff --git a/include/boost/fusion/functional/invocation/invoke.hpp b/include/boost/fusion/functional/invocation/invoke.hpp new file mode 100644 index 00000000..61e09b39 --- /dev/null +++ b/include/boost/fusion/functional/invocation/invoke.hpp @@ -0,0 +1,332 @@ +/*============================================================================= + Copyright (c) 2005-2006 João Abecasis + 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). +==============================================================================*/ + +#if !defined(BOOST_FUSION_FUNCTIONAL_INVOCATION_INVOKE_HPP_INCLUDED) +#if !defined(BOOST_PP_IS_ITERATING) + +#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 + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + namespace result_of + { + template struct invoke; + } + + template + inline typename result_of::invoke::type + invoke(Function, Sequence &); + + template + inline typename result_of::invoke::type + invoke(Function, Sequence const &); + + //----- ---- --- -- - - - - + + namespace detail + { + namespace ft = function_types; + + template< + typename Function, class Sequence, + int N = result_of::size::value, + bool CBI = ft::is_callable_builtin::value, + bool MFP = ft::is_member_function_pointer::value, + bool RandomAccess = boost::is_convertible< + typename traits::category_of::type, + fusion::random_access_traversal_tag + >::value + > + struct invoke_impl + { + typedef boost::blank result; + }; + + template struct invoke_param_types; + + template + // contains type member with the result, empty on error + struct invoke_result + : mpl::if_< + mpl::or_< + mpl::equal_to< ft::function_arity, N >, + mpl::and_< ft::is_callable_builtin, + mpl::less< ft::function_arity, N > > + >, ft::result_type, boost::blank + >::type + { }; + template + struct invoke_result + : boost::result_of + { }; + + // Transform for F so that boost::result_of< F(...) > works + template struct invoke_result_of_prep + : mpl::if_< ft::is_function, boost::add_reference, + boost::remove_cv + >::type + { }; + + #define BOOST_PP_FILENAME_1 + #define BOOST_PP_ITERATION_LIMITS (0, BOOST_FUSION_INVOKE_MAX_ARITY) + #include BOOST_PP_ITERATE() + + template + struct invoke_data_member + { + private: + + typedef typename result_of::front::type that; + + typedef mpl::or_< is_convertible, + is_convertible, + non_const_pointee > non_const_cond; + + typedef typename mpl::eval_if< non_const_cond, + mpl::identity, add_const >::type qualified_class; + + typedef typename mpl::eval_if< non_const_cond, + mpl::identity, add_const >::type qualified_type; + + public: + + template + struct result + : boost::add_reference + { }; + + static inline typename result<>::type call(T C::* f, Sequence & s) + { + typename result_of::front::type c = fusion::front(s); + return that_ptr::get(c)->*f; + } + }; + + template + struct invoke_impl + : detail::invoke_data_member + { }; + + template + struct invoke_impl + : detail::invoke_data_member + { }; + + } + + namespace result_of + { + template struct invoke + : detail::invoke_impl< + typename boost::remove_reference::type, Sequence + >::template result<> + { }; + } + + template + inline typename result_of::invoke::type + invoke(Function f, Sequence & s) + { + return detail::invoke_impl< + typename boost::remove_reference::type,Sequence + >::call(f,s); + } + + template + inline typename result_of::invoke::type + invoke(Function f, Sequence const & s) + { + return detail::invoke_impl< + typename boost::remove_reference::type,Sequence const + >::call(f,s); + } + +}} + +#define BOOST_FUSION_FUNCTIONAL_INVOCATION_INVOKE_HPP_INCLUDED +#else // defined(BOOST_PP_IS_ITERATING) +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// +#define N BOOST_PP_ITERATION() + + template + struct invoke_impl + { + private: + typedef typename invoke_result_of_prep::type func; + public: + + template + struct result + : invoke_result< Function, mpl::size_t, CBI, +#define M(z,j,data) typename result_of::at_c::type + func(BOOST_PP_ENUM(N,M,~)) > +#undef M + { }; + + template + static inline typename result::type + call(F & f, Sequence & s) + { +#define M(z,j,data) fusion::at_c(s) + return f( BOOST_PP_ENUM(N,M,~) ); + } + }; + +#if N > 0 + template + struct invoke_impl + { + public: + + template + struct result + : invoke_result< Function, mpl::size_t > + { }; + + template + static inline typename result::type + call(F & f, Sequence & s) + { + return (that_ptr >::type + >::get(fusion::at_c<0>(s))->*f)(BOOST_PP_ENUM_SHIFTED(N,M,~)); + } + }; +#endif + +#undef M + +#define M(z,j,data) \ + typename seq::I##j i##j = \ + fusion::next(BOOST_PP_CAT(i,BOOST_PP_DEC(j))); + + template + struct invoke_impl + { + private: + typedef typename invoke_result_of_prep::type func; + typedef invoke_param_types seq; + public: + + template + struct result + : invoke_result< Function, mpl::size_t, CBI, + func(BOOST_PP_ENUM_PARAMS(N,typename seq::T)) > + { }; + + template + static inline typename 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) ); + } + }; + +#if N > 0 + template + struct invoke_impl + { + private: + typedef invoke_param_types seq; + public: + + template + struct result + : invoke_result< Function, mpl::size_t > + { }; + + template + static inline typename result::type + call(F & f, Sequence & s) + { + typename seq::I0 i0 = fusion::begin(s); + BOOST_PP_REPEAT_FROM_TO(1,N,M,~) + + return (that_ptr< typename mpl::front< + ft::parameter_types >::type + >::get(*i0)->*f)(BOOST_PP_ENUM_SHIFTED_PARAMS(N,*i)); + } + }; +#endif + +#undef M + + template struct invoke_param_types + { +#if N > 0 + typedef typename result_of::begin::type I0; + typedef typename result_of::deref::type T0; + +#define M(z,i,data) \ + typedef typename result_of::next< \ + BOOST_PP_CAT(I,BOOST_PP_DEC(i))>::type I##i; \ + typedef typename result_of::deref::type T##i; + + BOOST_PP_REPEAT_FROM_TO(1,N,M,~) +#undef M +#endif + }; + + +#undef N +#endif // defined(BOOST_PP_IS_ITERATING) +#endif + diff --git a/include/boost/fusion/functional/invocation/invoke_function_object.hpp b/include/boost/fusion/functional/invocation/invoke_function_object.hpp new file mode 100644 index 00000000..92908b99 --- /dev/null +++ b/include/boost/fusion/functional/invocation/invoke_function_object.hpp @@ -0,0 +1,190 @@ +/*============================================================================= + Copyright (c) 2005-2006 João Abecasis + 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). +==============================================================================*/ + +#if !defined(BOOST_FUSION_FUNCTIONAL_INVOCATION_INVOKE_FUNCTION_OBJECT_HPP_INCLUDED) +#if !defined(BOOST_PP_IS_ITERATING) + +#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 invoke_function_object; + } + + template + inline typename result_of::invoke_function_object::type + invoke_function_object(Function, Sequence &); + + template + inline typename result_of::invoke_function_object::type invoke_function_object(Function, Sequence const &); + + //----- ---- --- -- - - - - + + namespace detail + { + template< + class Function, class Sequence, + int N = result_of::size::value, + bool RandomAccess = boost::is_convertible< + typename traits::category_of::type, + fusion::random_access_traversal_tag + >::value + > + struct invoke_function_object_impl + { + typedef boost::blank result; + }; + + template + struct invoke_function_object_param_types; + + #define BOOST_PP_FILENAME_1 \ + + #define BOOST_PP_ITERATION_LIMITS \ + (0, BOOST_FUSION_INVOKE_FUNCTION_OBJECT_MAX_ARITY) + #include BOOST_PP_ITERATE() + } + + namespace result_of + { + template struct invoke_function_object + : detail::invoke_function_object_impl< + typename boost::remove_reference::type, Sequence + >::template result<> + { }; + } + + template + inline typename result_of::invoke_function_object::type + invoke_function_object(Function f, Sequence & s) + { + return detail::invoke_function_object_impl< + typename boost::remove_reference::type,Sequence + >::call(f,s); + } + + template + inline typename result_of::invoke_function_object::type + invoke_function_object(Function f, Sequence const & s) + { + return detail::invoke_function_object_impl< + typename boost::remove_reference::type,Sequence const + >::call(f,s); + } + +}} + +#define BOOST_FUSION_FUNCTIONAL_INVOCATION_INVOKE_FUNCTION_OBJECT_HPP_INCLUDED +#else // defined(BOOST_PP_IS_ITERATING) +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// +#define N BOOST_PP_ITERATION() + + template + struct invoke_function_object_impl + { + public: + + template + struct result + : Function::template result < +#define M(z,j,data) \ + typename boost::remove_reference< \ + typename result_of::value_at_c::type >::type + BOOST_PP_ENUM(N,M,~) > +#undef M + { }; + + template + static inline typename result::type + call(F & f, Sequence & s) + { +#define M(z,j,data) fusion::at_c(s) + return f( BOOST_PP_ENUM(N,M,~) ); +#undef M + } + }; + + template + struct invoke_function_object_impl + { + private: + typedef invoke_function_object_param_types seq; + public: + + template + struct result + : Function::template result < + BOOST_PP_ENUM_PARAMS(N,typename seq::T) > + { }; + + template + static inline typename 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) ); + } + }; + + template + struct invoke_function_object_param_types + { +#if N > 0 + typedef typename result_of::begin::type I0; + typedef typename boost::remove_reference< + typename result_of::value_of::type >::type T0; + +#define M(z,i,data) \ + typedef typename result_of::next< \ + BOOST_PP_CAT(I,BOOST_PP_DEC(i))>::type I##i; \ + typedef typename boost::remove_reference< \ + typename result_of::value_of::type >::type T##i; + + BOOST_PP_REPEAT_FROM_TO(1,N,M,~) +#undef M +#endif + }; + +#undef N +#endif // defined(BOOST_PP_IS_ITERATING) +#endif + diff --git a/include/boost/fusion/functional/invocation/invoke_procedure.hpp b/include/boost/fusion/functional/invocation/invoke_procedure.hpp new file mode 100644 index 00000000..db0b029e --- /dev/null +++ b/include/boost/fusion/functional/invocation/invoke_procedure.hpp @@ -0,0 +1,225 @@ +/*============================================================================= + Copyright (c) 2005-2006 João Abecasis + 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). +==============================================================================*/ + +#if !defined(BOOST_FUSION_FUNCTIONAL_INVOCATION_INVOKE_PROCEDURE_HPP_INCLUDED) +#if !defined(BOOST_PP_IS_ITERATING) + +#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 +#include +#include +#include + +namespace boost { namespace fusion +{ + namespace result_of + { + template struct invoke_procedure; + } + + template + inline void invoke_procedure(Function, Sequence &); + + template + inline void invoke_procedure(Function, Sequence const &); + + //----- ---- --- -- - - - - + + namespace detail + { + namespace ft = function_types; + + template< + typename Function, class Sequence, + int N = result_of::size::value, + bool CBI = ft::is_callable_builtin::value, + bool MFP = ft::is_member_function_pointer::value, + bool RandomAccess = boost::is_convertible< + typename traits::category_of::type, + fusion::random_access_traversal_tag + >::value + > + struct invoke_procedure_impl + { + typedef boost::blank result; + }; + + template + // Contains void type member, empty on arity mismatch + struct invoke_procedure_result + : mpl::if_< + mpl::or_< + mpl::bool_, + mpl::equal_to< ft::function_arity, N >, + mpl::and_< ft::is_callable_builtin, + mpl::less< ft::function_arity, N > > + >, mpl::identity, boost::blank + >::type + { }; + + #define BOOST_PP_FILENAME_1 \ + + #define BOOST_PP_ITERATION_LIMITS \ + (0, BOOST_FUSION_INVOKE_PROCEDURE_MAX_ARITY) + #include BOOST_PP_ITERATE() + + } + + namespace result_of + { + template struct invoke_procedure + : detail::invoke_procedure_impl< + typename boost::remove_reference::type, Sequence + >::result + { }; + } + + template + inline void invoke_procedure(Function f, Sequence & s) + { + detail::invoke_procedure_impl< + typename boost::remove_reference::type,Sequence + >::call(f,s); + } + + template + inline void invoke_procedure(Function f, Sequence const & s) + { + detail::invoke_procedure_impl< + typename boost::remove_reference::type,Sequence const + >::call(f,s); + } + +}} + +#define BOOST_FUSION_FUNCTIONAL_INVOCATION_INVOKE_PROCEDURE_HPP_INCLUDED +#else // defined(BOOST_PP_IS_ITERATING) +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// +#define N BOOST_PP_ITERATION() + +#define M(z,j,data) fusion::at_c(s) + + template + struct invoke_procedure_impl + { + struct result + : invoke_procedure_result< Function, mpl::size_t, CBI > + { }; + + static inline void call(Function & f, Sequence & s) + { + f(BOOST_PP_ENUM(N,M,~)); + } + }; + +#if N > 0 + template + struct invoke_procedure_impl + { + struct result + : invoke_procedure_result< Function, mpl::size_t > + { }; + + static inline void call(Function & f, Sequence & s) + { + (that_ptr >::type + >::get(fusion::at_c<0>(s))->*f)(BOOST_PP_ENUM_SHIFTED(N,M,~)); + } + }; +#endif + +#undef M + +#define M(z,j,data) \ + typedef typename result_of::next< BOOST_PP_CAT(I,BOOST_PP_DEC(j)) \ + >::type I ## j ; \ + I##j i##j = fusion::next(BOOST_PP_CAT(i,BOOST_PP_DEC(j))); + + template + struct invoke_procedure_impl + { + struct result + : invoke_procedure_result< Function, mpl::size_t, CBI > + { }; + + 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) ); + } + }; + +#if N > 0 + template + struct invoke_procedure_impl + { + struct result + : invoke_procedure_result< Function, mpl::size_t > + { }; + + static inline void call(Function & f, Sequence & s) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(s); + BOOST_PP_REPEAT_FROM_TO(1,N,M,~) + + (that_ptr >::type + >::get(*i0)->*f)(BOOST_PP_ENUM_SHIFTED_PARAMS(N,*i)); + } + }; +#endif + +#undef M + +#undef N +#endif // defined(BOOST_PP_IS_ITERATING) +#endif + diff --git a/include/boost/fusion/functional/invocation/limits.hpp b/include/boost/fusion/functional/invocation/limits.hpp new file mode 100644 index 00000000..9cb5a04a --- /dev/null +++ b/include/boost/fusion/functional/invocation/limits.hpp @@ -0,0 +1,23 @@ +/*============================================================================= + 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). +==============================================================================*/ + +#if !defined(BOOST_FUSION_FUNCTIONAL_INVOCATION_LIMITS_HPP_INCLUDED) +# define BOOST_FUSION_FUNCTIONAL_INVOCATION_LIMITS_HPP_INCLUDED + +# if !defined(BOOST_FUSION_INVOKE_MAX_ARITY) +# define BOOST_FUSION_INVOKE_MAX_ARITY 6 +# endif +# if !defined(BOOST_FUSION_INVOKE_PROCEDURE_MAX_ARITY) +# define BOOST_FUSION_INVOKE_PROCEDURE_MAX_ARITY 6 +# endif +# if !defined(BOOST_FUSION_INVOKE_FUNCTION_OBJECT_MAX_ARITY) +# define BOOST_FUSION_INVOKE_FUNCTION_OBJECT_MAX_ARITY 6 +# endif + +#endif + From 0832de9bb36afc25b5e3b152ef6666a10c157cc1 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Thu, 15 Feb 2007 22:48:01 +0000 Subject: [PATCH 084/234] adds functional module [SVN r36956] --- doc/functional.qbk | 1665 ++++++++++++++++++++++++++++++++++++++++++++ doc/fusion.qbk | 52 +- 2 files changed, 1712 insertions(+), 5 deletions(-) create mode 100644 doc/functional.qbk diff --git a/doc/functional.qbk b/doc/functional.qbk new file mode 100644 index 00000000..a56c9725 --- /dev/null +++ b/doc/functional.qbk @@ -0,0 +1,1665 @@ +[section Functional] + +Components to call functions and function objects and to make Fusion code +callable through a function object interface. + +[heading Header] + #include + +[heading Fused and unfused forms] + +What is a function call? + + f (a,b,c) + +It is a name and a tuple written next to each other, left-to-right. + +Although the C++ syntax does not allow to replace [^(a,b,c)] with some Fusion +__sequence__, introducing yet another function provides a solution: + + invoke(f,my_sequence) + +Alternatively it's possible to apply a simple transformation to [^f] in order +to achieve the same effect: + + f tuple <=> ``f'`` (tuple) + +Now, [^f'] is an unary function that takes the arguments to `f` as a tuple; +[^f'] is the /fused/ form of `f`. +Reading the above equivalence right-to-left to get the inverse transformation, +`f` is the /unfused/ form of [^f']. + +[heading Calling functions and function objects] + +Having generic C++ code call back arbitrary functions provided by the client +used to be a heavily repetitive task, as different functions can differ in +arity, invocation syntax and other properties that might be part of the type. +Transporting arguments as Fusion sequences and factoring out the invocation +makes Fusion algorithms applicable to function arguments and also reduces +the problem to one invocation syntax and a fixed arity (instead of an arbitrary +number of arbitrary arguments times several syntactic variants times additional +properties). + +Transforming an unfused function into its fused counterpart allows n-ary +calls from an algorithm that invokes an unary __poly_func_obj__ with +__sequence__ arguments. + +The library provides several function templates to invoke different kinds of +functions and adapters to transform them into fused form, respectively. +Every variant has a corresponding generator function template that returns +an adapter instance for the given argument. + +[heading Making Fusion code callable through a function object interface] + +Transforming a fused function into its unfused counterpart allows to create +function objects to accept arbitrary calls. In other words, an unary function +object can be implemented instead of (maybe heavily overloaded) function +templates or function call operators. + +The library provides several adapter variants that implement this +transformation, ranging from strictly typed to fully generic. The latter +provides a reusable solution to __the_forwarding_problem__. +Every generic variant has a corresponding generator function template that +returns an adapter instance for the given argument. + +[/ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ] + +[section Concepts] + +[section:callable Callable Object] + +A pointer to a function, a pointer to member function, a pointer to member +data, or a class type whose objects can appear immediately to the left of a +function call operator. + +[/ TODO: note about TR1, link to current draft] + +[endsect] + + +[section:poly Polymorphic Function Object] + +[heading Description] + +A type of function object with a nested metafunction `result`. `result` +returns the result type of calling the function object, given the argument +types. + +[heading Refinement of] +* __callable_obj__ + +[variablelist Notation + [[`F`][A Polymorphic Function Object type]] + [[`f`][A Polymorphic Function Object]] + [[`T1 ...TN`][Arbitrary types]] + [[`t1 ...tN`][Objects with types `T1 ...TN`]] +] + +[heading Expression requirements] + +[table + [[Expression][Return Type][Runtime Complexity]] + [[`f(t1, ...tN)`][`F::result::type`][Unspecified]] +] + +[heading Models] +* all Fusion __functional_adapters__ + +[endsect] + + +[section:def_callable Deferred Callable Object] + +[heading Description] + +__callable_obj__ that works with __boost_result_of__ to determine the result +of a call (such as the function objects provided by the standard library). + +[heading Refinement of] +* __callable_obj__ + +[variablelist Notation + [[`F`][A Deferred Callable Object type]] + [[`T1 ...TN`][Arbitrary types]] +] + +[heading Expression requirements] + +[table + [[Expression][Type]] + [[__boost_result_of_call__`< F(T1 ...TN) >::type`][Unspecified]] +] + +[heading Models] +* all Fusion __functional_adapters__ + +[endsect] + +[endsect] + +[/ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ] + +[section Invocation] + +[section Functions] + +[section invoke] + +[heading Description] + +Calls a __def_callable_obj__ with the arguments from a __sequence__. + +The corresponding metafunction, __result_of_invoke__ does not define a +`type` member for target functions of non-class type whose arity is not +satisfied by the size of the sequence. + +The first template parameter can be specialized explicitly to avoid copying +and/or to control the const qualification of a function object. + +If the target function is a pointer to a class members, the corresponding +object can be specified as a reference, pointer, or smart pointer. +In case of the latter, a freestanding [^get_pointer] function must be +defined (Boost provides this function for [^std::auto_ptr] and +__boost_shared_ptr_call__). + +[heading Synopsis] + template< + typename Function, + class Sequence + > + typename __result_of_invoke__::type + invoke(Function f, Sequence & s); + + template< + typename Function, + class Sequence + > + typename __result_of_invoke__::type + invoke(Function f, Sequence const & s); + +[heading Parameters] +[table + [[Parameter] [Requirement] [Description]] + [[`f`] [A __def_callable_obj__] [The function to call.]] + [[`s`] [A __forward_sequence__] [The arguments.]] +] + +[heading Expression Semantics] + + invoke(f,s); + +[*Return type]: Return type of `f` when invoked with the elements in `s` as its +arguments. + +[*Semantics]: Invokes `f` with the elements in `s` as arguments and returns +the result of the call expression. + +[heading Header] + #include + +[heading Example] + __std_plus_doc__ add; + assert(invoke(add,__make_vector__(1,1)) == 2); + +[heading See also] +* __invoke_procedure__ +* __invoke_function_object__ +* __result_of_invoke__ +* __fused__ + +[endsect] + +[section invoke_procedure] + +[heading Description] + +Calls a __callable_obj__ with the arguments from a __sequence__. The result +of the call is ignored. + +The corresponding metafunction, __result_of_invoke_procedure, does not define +a `type` member for target functions of non-class type whose arity is not +satisfied by the size of the sequence. + +The first template parameter can be specialized explicitly to avoid copying +and/or to control the const qualification of a function object. + +For pointers to class members corresponding object can be specified as +a reference, pointer, or smart pointer. In case of the latter, a freestanding +[^get_pointer] function must be defined (Boost provides this function for +[^std::auto_ptr] and __boost_shared_ptr_call__). + +The target function must not be a pointer to a member object (dereferencing +such a pointer without returning anything does not make sense, so it isn't +implemented). + +[heading Synopsis] + template< + typename Function, + class Sequence + > + typename __result_of_invoke_procedure__::type + invoke_procedure(Function f, Sequence & s); + + template< + typename Function, + class Sequence + > + typename __result_of_invoke_procedure__::type + invoke_procedure(Function f, Sequence const & s); + +[heading Parameters] +[table + [[Parameter] [Requirement] [Description]] + [[`f`] [Model of __callable_obj__] [The function to call.]] + [[`s`] [Model of __forward_sequence__] [The arguments.]] +] + +[heading Expression Semantics] + + invoke_procedure(f,s); + +[*Return type]: `void` + +[*Semantics]: Invokes `f` with the elements in `s` as arguments. + +[heading Header] + #include + +[heading Example] + __vector__ v(1,2); + using namespace boost::lambda; + invoke_procedure(_1 += _2, v); + assert(__front__(v) == 3); + +[heading See also] +* __invoke__ +* __invoke_function_object__ +* __result_of_invoke_procedure__ +* __fused_procedure__ + +[endsect] + +[section invoke_function_object] + +[heading Description] + +Calls a __poly_func_obj__ with the arguments from a __sequence__. + +The corresponding metafunction, __result_of_invoke_function_object__, does +not define a `type` member, if the nested `result` class template of the +target function object is empty. + +The first template parameter can be specialized explicitly to avoid copying +and/or to control the const qualification of a function object. + +[heading Synopsis] + template< + typename Function, + class Sequence + > + typename __result_of_invoke_function_object__::type + invoke_function_object(Function f, Sequence & s); + + template< + typename Function, + class Sequence + > + typename __result_of_invoke_function_object__::type + invoke_function_object(Function f, Sequence const & s); + +[heading Parameters] +[table + [[Parameter] [Requirement] [Description]] + [[`f`] [Model of __poly_func_obj__] [The function object to call.]] + [[`s`] [Model of __forward_sequence__] [The arguments.]] +] + +[heading Expression Semantics] + + invoke_procedure(f,s); + +[*Return type]: Return type of `f` when invoked with the elements in `s` as its +arguments. + +[*Semantics]: Invokes `f` with the elements in `s` as arguments and returns the +result of the call expression. + +[heading Header] + #include + +[heading Example] + struct sub + { + template + struct result + { + typedef T type; + }; + + template + T operator()(T lhs, T rhs) const + { + return lhs - rhs; + } + }; + + void try_it() + { + sub f; + assert(f(2,1) == invoke_function_object(f,__make_vector__(2,1))); + } + +[heading See also] +* __invoke__ +* __invoke_procedure__ +* __result_of_invoke_function_object__ +* __fused_function_object__ + +[endsect] + +[endsect] [/ Functions] + +[section Metafunctions] + +[section invoke] + +[heading Description] +Returns the result type of __invoke__. + +Empty for non-class target function types whose arity is not satisfied by +the size of the sequence. + +[heading Synopsis] + namespace result_of + { + template< + typename Function, + class Sequence + > + struct invoke + { + typedef __unspecified__ type; + }; + } + +[heading See also] +* __invoke__ +* __fused__ + +[endsect] + +[section invoke_procedure] + +[heading Description] +Returns the result type of __invoke_procedure__. + +Empty for non-class target function types whose arity is not satisfied by +the size of the sequence. + +[heading Synopsis] + namespace result_of + { + template< + typename Function, + class Sequence + > + struct invoke_procedure + { + typedef __unspecified__ type; + }; + } + +[heading See also] +* __invoke_procedure__ +* __fused_procedure__ + +[endsect] + +[section invoke_function_object] + +[heading Description] +Returns the result type of __invoke_function_object__. + +Empty if the target function's nested `result` class template is empty. + +[heading Synopsis] + namespace result_of + { + template< + class Function, + class Sequence + > + struct invoke_function_object + { + typedef __unspecified__ type; + }; + } + +[heading See also] +* __invoke_function_object__ +* __fused_function_object__ + +[endsect] + +[endsect] [/ Metafunctions ] + +[endsect] [/ Invocation ] + +[/ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ] + +[section:adapters Adapters] + +Function object templates to transform a particular target function. + +[section fused] + +[heading Description] + +An unary __poly_func_obj__ adapter template for __def_callable_obj__ target +functions. It takes a __forward_sequence__ that contains the arguments for the +target function. + +The nested `result` metafunction does not define a `type` member for target +functions of non-class type whose arity is not satisfied by the size of the +sequence. + +The type of the target function is allowed to be const qualified or a +reference. Const qualification is preserved and propagated appropriately +(in other words, only const versions of [^operator()] can be used for an +target function object that is const or, if the target function object +is held by value, the adapter is const - these semantics have nothing to +do with the const qualification of a member function, which is referring +to the type of object pointed to by [^this], which is specified with the +first element in the sequence passed to the adapter). + +If the target function is a pointer to a class members, the corresponding +object can be specified as a reference, pointer, or smart pointer. +In case of the latter, a freestanding [^get_pointer] function must be +defined (Boost provides this function for [^std::auto_ptr] and +__boost_shared_ptr_call__). + +[heading Header] + #include + +[heading Synopsis] + template + class fused; + +[heading Template parameters] + +[table + [[Parameter] [Description] [Default]] + [[`Function`] [A __def_callable_obj__] []] +] + +[heading Model of] + +* __poly_func_obj__ +* __def_callable_obj__ + +[variablelist Notation + [[`R`] [A possibly const qualified __def_callable_obj__ type or reference type thereof]] + [[`r`] [An object convertible to `R`]] + [[`s`] [A __sequence__ of arguments that are accepted by `r`]] + [[`f`] [An instance of `fused`]] +] + +[heading Expression Semantics] + +[table + [[Expression] [Semantics]] + [[`fused(r)`] [Creates a fused function as described above, initializes the target function with `r`.]] + [[`fused()`] [Creates a fused function as described above, attempts to use `R`'s default constructor.]] + [[`f(s)`] [Calls `r` with the elements in `s` as its arguments.]] +] + +[heading Example] + fused< __std_plus_doc__ > f; + assert(f(__make_vector__(1,2l)) == 3l); + +[heading See also] + +* __fused_procedure__ +* __fused_function_object__ +* __invoke__ +* __deduce__ + +[endsect] + +[section fused_procedure] + +[heading Description] + +An unary __poly_func_obj__ adapter template for __callable_obj__ target +functions. It takes a __forward_sequence__ that contains the arguments for +the target function. + +The result is discared and the adapter's return type is `void`. The nested +`result` metafunction does not define a `type` member for target functions +of non-class type whose arity is not satisfied by the size of the sequence. + +The type of the target function is allowed to be const qualified or a +reference. Const qualification is preserved and propagated appropriately +(in other words, only const versions of [^operator()] can be used for an +target function object that is const or, if the target function object +is held by value, the adapter is const - these semantics have nothing to +do with the const qualification of a member function, which is referring +to the type of object pointed to by [^this], which is specified with the +first element in the sequence passed to the adapter). + +If the target function is a pointer to a members function, the corresponding +object can be specified as a reference, pointer, or smart pointer. +In case of the latter, a freestanding [^get_pointer] function must be +defined (Boost provides this function for [^std::auto_ptr] and +__boost_shared_ptr_call__). + +The target function must not be a pointer to a member object (dereferencing +such a pointer without returning anything does not make sense, so it isn't +implemented). + +[heading Header] + #include + +[heading Synopsis] + template + class fused_procedure; + +[heading Template parameters] + +[table + [[Parameter] [Description] [Default]] + [[`Function`] [__callable_obj__ type] []] +] + +[heading Model of] + +* __poly_func_obj__ +* __def_callable_obj__ + +[variablelist Notation + [[`R`] [A possibly const qualified __callable_obj__ type or reference type thereof]] + [[`r`] [An object convertible to `R`]] + [[`s`] [A __sequence__ of arguments that are accepted by `r`]] + [[`f`] [An instance of `fused`]] +] + +[heading Expression Semantics] + +[table + [[Expression] [Semantics]] + [[`fused_procedure(r)`] [Creates a fused function as described above, initializes the target function with `r`.]] + [[`fused_procedure()`] [Creates a fused function as described above, attempts to use `R`'s default constructor.]] + [[`f(s)`] [Calls `r` with the elements in `s` as its arguments.]] +] + +[heading Example] + template + void n_ary_for_each(SequenceOfSequences const & s, Func const & f) + { + __for_each__(__zip_view__(s), + fused_procedure(f)); + } + + void try_it() + { + __vector__ a(2,2.0f); + __vector__ b(1,1.5f); + using namespace boost::lambda; + n_ary_for_each(__vector_tie__(a,b), _1 -= _2); + assert(a == __make_vector__(1,0.5f)); + } + +[heading See also] + +* __fused__ +* __fused_function_object__ +* __invoke_procedure__ + +[endsect] + +[section fused_function_object] + +[heading Description] + +An unary __poly_func_obj__ adapter template for a __poly_func_obj__ target +function. It takes a __forward_sequence__ that contains the arguments for the +target function. + +The nested `result` metafunction is inhertied from the target function. + +The type of the target function is allowed to be const qualified or a +reference. Const qualification is preserved and propagated appropriately +(in other words, only const versions of [^operator()] can be used for an +target function object that is const or, if the target function object +is held by value, the adapter is const). + +[heading Header] + #include + +[heading Synopsis] + template + class fused_function_object; + +[heading Template parameters] + +[table + [[Parameter] [Description] [Default]] + [[`Function`] [__poly_func_obj__ type] []] +] + +[heading Model of] + +* __poly_func_obj__ +* __def_callable_obj__ + +[variablelist Notation + [[`R`] [A possibly const qualified __poly_func_obj__ type or reference type thereof]] + [[`r`] [An object convertible to `R`]] + [[`s`] [A __sequence__ of arguments that are accepted by `r`]] + [[`f`] [An instance of `fused`]] +] + +[heading Expression Semantics] + +[table + [[Expression] [Semantics]] + [[`fused_function_object(r)`] [Creates a fused function as described above, initializes the target function with `r`.]] + [[`fused_function_object()`] [Creates a fused function as described above, attempts to use `R`'s default constructor.]] + [[`f(s)`] [Calls `r` with the elements in `s` as its arguments.]] +] + +[heading Example] + template + typename __result_of_transform__< zip_view const, + fused_function_object >::type + n_ary_transform(SeqOfSeqs const & s, Func const & f) + { + return __transform__(zip_view(s), + fused_function_object(f)); + } + + struct sub + { + template + struct result + { + typedef T type; + }; + + template + T operator()(T lhs, T rhs) const + { + return lhs - rhs; + } + }; + + void try_it() + { + __vector__ a(2,2.0f); + __vector__ b(1,1.5f); + __vector__ c(1,0.5f); + assert(c == n_ary_transform(__vector_tie__(a,b), sub())); + } + +[heading See also] + +* __fused__ +* __fused_procedure__ +* __invoke_function_object__ +* __deduce__ + +[endsect] + + +[section unfused_generic] + +[heading Description] + +An n-ary __poly_func_obj__ adapter template for an unary __poly_func_obj__ +target function. When called, its arguments are bundled to a +__random_access_sequence__ of references that is passed to the target function. +Non-const __lvalue__ arguments are transported as references to non-const, otherwise +references to const are used. + +[tip Detecting mutable LValues on a per-argument basis is currently a +compile time expensive operation (see __the_forwarding_problem__ for +details). Therefore, there are two, lightweight and more restricted variants +of this class template, __unfused_lvalue_args__ and __unfused_rvalue_args__.] + +The overload set of the adapter's function call operator can be restricted +by removing the `type` member from the nested result metafunction of the +__poly_func_obj__ (in this case the substitution-failure-is-not-an-error +principle applies for non-nullary case and nullary calls are explicitly +disabled by the library). + +[caution As the nullary call operator cannot be a template it will be +instantiated along with the class template, so it must be disabled (as +described above) in cases where it isn't instantiable.] + +The type of the target function is allowed to be const qualified or a +reference. Const qualification is preserved and propagated appropriately +(in other words, only const versions of [^operator()] can be used if +the target function object is const - or, in case the target function +object is held by value, the adapter is const). + +[heading Header] + #include + +[heading Synopsis] + template + class unfused_generic; + +[heading Template parameters] + +[table + [[Parameter] [Description] [Default]] + [[`Function`] [An unary __poly_func_obj__] []] +] + +[heading Model of] + +* __poly_func_obj__ +* __def_callable_obj__ + +[variablelist Notation + [[`F`] [A possibly const qualified, unary __poly_func_obj__ type or reference type thereof]] + [[`f`] [An object convertible to `F`]] + [[`UG`] [The type `unfused_generic`]] + [[`ug`] [An instance of `UG`, initialized with `f`]] + [[`a0`...`aN`] [Arguments to `ug`]] +] + +[heading Expression Semantics] + +[table + [[Expression] [Semantics]] + [[`UG(f)`] [Creates a fused function as described above, initializes the target function with `f`.]] + [[`UG()`] [Creates a fused function as described above, attempts to use `F`'s default constructor.]] + [[`ug(a0`...`aN)`] [Calls `f` with a __sequence__ that contains references to the arguments `a0`...`aN`.]] +] + +[heading Example] + template + class fused_bound_1st + { + typename traits::__deduce__::type fnc_deferred; + typename traits::__deduce__::type xxx_bound; + public: + + fused_bound_1st(Function deferred, T bound) + : fnc_deferred(deferred), xxx_bound(bound) + { } + + template + struct result + : __result_of_invoke__< Function, + typename __result_of_push_front__::type > + { }; + + template + typename result::type operator()(Seq const & s) const + { + return __invoke__(fnc_deferred, push_front(s,xxx_bound)); + } + }; + + template + unfused_generic< fused_bound_1st > + bind_1st(Function f, T const & x) + { + return unfused_generic< fused_bound_1st >( + fused_bound_1st(f,x) ); + } + + int test_func(int a, int b, int c) + { + return a+b+c; + } + + void try_it() + { + assert(bind_1st(& test_func,3)(-2,-1) == 0); + assert(bind_1st(__std_plus_doc__(), 1)(0.5f) == 1.5f); + } + +[heading See also] +* __unfused_lvalue_args__ +* __unfused_rvalue_args__ +* __unfused_typed__ +* __deduce__ +* __deduce_sequence__ + +[endsect] + + +[section unfused_lvalue_args] + +[heading Description] + +An n-ary __poly_func_obj__ adapter template for an unary __poly_func_obj__ +target function. When called, its arguments are bundled to a +__random_access_sequence__ of references that is passed to the target function +object. Only __lvalue__ arguments are accepted. + +The overload set of the adapter's function call operator can be restricted +by removing the `type` member from the nested result metafunction of the +__poly_func_obj__ (in this case the substitution-failure-is-not-an-error +principle applies for non-nullary calls and nullary calls are explicitly +disabled by the library). + +[caution As the nullary call operator cannot be a template it will be +instantiated along with the class template, so it must be disabled (as +described above) in cases where it isn't instantiable.] + +The type of the target function is allowed to be const qualified or a +reference. Const qualification is preserved and propagated appropriately +(in other words, only const versions of [^operator()] can be used if +the target function object is const - or, in case the target function +object is held by value, the adapter is const). + +[heading Header] + #include + +[heading Synopsis] + template + class unfused_lvalue_args; + +[heading Template parameters] + +[table + [[Parameter] [Description] [Default]] + [[`Function`] [A unary __poly_func_obj__] []] +] + +[heading Model of] + +* __poly_func_obj__ +* __def_callable_obj__ + +[variablelist Notation + [[`F`] [A possibly const qualified, unary __poly_func_obj__ type or reference type thereof]] + [[`f`] [An object convertible to `F`]] + [[`UL`] [The type `unfused_lvalue_args`]] + [[`ul`] [An instance of `UL`, initialized with `f`]] + [[`a0`...`aN`] [Arguments to `ul`]] +] + +[heading Expression Semantics] + +[table + [[Expression] [Semantics]] + [[`UL(f)`] [Creates a fused function as described above, initializes the target function with `f`.]] + [[`UL()`] [Creates a fused function as described above, attempts to use `F`'s default constructor.]] + [[`ul(a0`...`aN)`] [Calls `f` with a __sequence__ that contains references to the arguments `a0`...`aN`.]] +] + +[heading Example] + struct fused_incrementer + { + template + struct result + { + typedef void type; + }; + + template + void operator()(Seq const & s) const + { + __for_each__(s,++boost::lambda::_1); + } + }; + + void try_it() + { + unfused_lvalue_args increment; + int a = 2; char b = 'X'; + increment(a,b); + assert(a == 3 && b == 'Y'); + } + +[heading See also] +* __unfused_rvalue_args__ +* __unfused_generic__ +* __unfused_typed__ + +[endsect] + +[section unfused_rvalue_args] + +[heading Description] + +An n-ary __poly_func_obj__ adapter template for an unary __poly_func_obj__ +target function. When called, its arguments are bundled to a +__random_access_sequence__ of references that is passed to the target +function object. All referenced objects in the sequence are const qualified. + +The overload set of the adapter's function call operator can be restricted +by removing the `type` member from the nested result metafunction of the +__poly_func_obj__ (in this case the substitution-failure-is-not-an-error +principle applies for non-nullary calls and nullary calls are explicitly +disabled by the library). + +[caution As the nullary call operator cannot be a template it will be +instantiated along with the class template, so it must be disabled (as +described above) in cases where it isn't instantiable.] + +The type of the target function is allowed to be const qualified or a +reference. Const qualification is preserved and propagated appropriately +(in other words, only const versions of [^operator()] can be used if +the target function object is const - or, in case the target function object +is held by value, the adapter is const). + +[heading Header] + #include + +[heading Synopsis] + template + class unfused_rvalue_args; + +[heading Template parameters] + +[table + [[Parameter] [Description] [Default]] + [[`Function`] [A unary __poly_func_obj__] []] +] + +[heading Model of] + +* __poly_func_obj__ +* __def_callable_obj__ + +[variablelist Notation + [[`F`] [A possibly const qualified, unary __poly_func_obj__ type or reference type thereof]] + [[`f`] [An object convertible to `F`]] + [[`UR`] [The type `unfused_rvalue_args`]] + [[`ur`] [An instance of `UR`, initialized with `f`]] + [[`a0`...`aN`] [Arguments to `ur`]] +] + +[heading Expression Semantics] + +[table + [[Expression] [Semantics]] + [[`UR(f)`] [Creates a fused function as described above, initializes the target function with `f`.]] + [[`UR()`] [Creates a fused function as described above, attempts to use `F`'s default constructor.]] + [[`ur(a0`...`aN)`] [Calls `f` with a __sequence__ that contains references to the arguments `a0`...`aN`.]] +] + +[heading Example] + struct sequence_printer + { + template + struct result + { + typedef void type; + }; + + template + void operator()(Seq const & s) const + { + std::cout << s << std::endl; + } + }; + + void try_it() + { + unfused_rvalue_args print; + print(24,"bottles of beer in",'a',"box."); + } + +[heading See also] +* __unfused_lvalue_args__ +* __unfused_generic__ +* __unfused_typed__ +* __deduce__ +* __deduce_sequence__ + +[endsect] + +[section unfused_typed] + +[heading Description] + +An n-ary __poly_func_obj__ adapter template for an unary __poly_func_obj__ +target function. When called, its arguments are bundled to a +__random_access_sequence__ that is passed to the target function object. + +The call operators of the resulting function object are strictly typed +(in other words, non-templatized) with the types from a __sequence__. +By default, call operators with zero to N parameters are generated to, +where N is the size of the __sequence__ that specifies the types. + +The overload set of the adapter's function call operator can be restricted +by removing the `type` member from the nested result metafunction of the +__poly_func_obj__ (in this case the substitution-failure-is-not-an-error +principle applies for non-nullary calls and nullary calls are explicitly +disabled by the library). + +[caution As the function call operators are not templates, they are +instantiated along with the class template, so they must be disabled (as +described above) in cases where they are not instantiable.] + +The type of the target function is allowed to be const qualified or a +reference. Const qualification is preserved and propagated appropriately +(in other words, only const versions of [^operator()] can be used if +the target function object is const - or, in case the target function object +is held by value, the adapter is const). + +[tip If the type sequence passed to this template contains non-reference +elements, the element is copied only once - the call operator's signature +is optimized automatically to avoid by-value parameters.] + +[heading Header] + #include + +[heading Synopsis] + template + class unfused_typed; + +[heading Template parameters] + +[table + [[Parameter] [Description] [Default]] + [[`Function`] [A unary __poly_func_obj__] []] + [[`Sequence`] [A __sequence__] []] +] + +[heading Model of] + +* __poly_func_obj__ +* __def_callable_obj__ + +[variablelist Notation + [[`F`] [A possibly const qualified, unary __poly_func_obj__ type or reference type thereof]] + [[`f`] [An object convertible to `F`]] + [[`S`] [A __sequence__ of parameter types]] + [[`UT`] [The type `unfused_typed`]] + [[`ut`] [An instance of `UT`, initialized with `f`]] + [[`a0`...`aN`] [Arguments to `ut`, convertible to the types in `S`]] +] + +[heading Expression Semantics] + +[table + [[Expression] [Semantics]] + [[`UT(f)`] [Creates a fused function as described above, initializes the target function with `f`.]] + [[`UT()`] [Creates a fused function as described above, attempts to use `F`'s default constructor.]] + [[`ut(a0`...`aN)`] [Calls `f` with an instance of `S` (or a subsequence of `S` starting at the first element, + if fewer arguments are given and the overload hasn't been disabled) initialized with + `a0`...`aN`.]] +] + +[heading Example] + struct add_assign // applies operator+= + { + typedef void result_type; // for simplicity + + template + void operator()(T & lhs, T const & rhs) const + { + lhs += rhs; + } + }; + + template + class fused_parallel_adder + { + Tie tie_dest; + public: + explicit fused_parallel_adder(Tie const & dest) + : tie_dest(dest) + { } + + template + struct result + { + typedef void type; + }; + + template + void operator()(Seq const & s) const + { + __for_each__(__zip__(tie_dest,s), __fused__() ); + } + }; + + // accepts a tie and creates a typed function object from it + struct fused_parallel_adder_maker + { + template + struct result + { + typedef unfused_typed, + typename mpl::transform >::type > type; + }; + + template + typename result::type operator()(Seq const & tie) + { + return typename result::type(fused_parallel_adder(tie)); + } + }; + __unfused_lvalue_args__ parallel_add; + + int main() + { + int a = 2; char b = 'X'; + // the second call is strictly typed with the types deduced from the + // first call + parallel_add(a,b)(3,2); + parallel_add(a,b)(3); + parallel_add(a,b)(); + assert(a == 8 && b == 'Z'); + + return 0; + } + +[heading See also] +* __unfused_generic__ +* __unfused_lvalue_args__ +* __unfused_rvalue_args__ +* __deduce__ +* __deduce_sequence__ + +[endsect] + +[endsect] [/ Adapters] + +[/ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ] + +[section Generation] + +[section Functions] + +[section make_fused] + +[heading Description] +Creates a __fused__ adapter for a given __def_callable_obj__. The usual +__element_conversion__ is applied to the target function. + +[heading Synopsis] + template + inline typename __result_of_make_fused__::type + make_fused(F const & f); + +[heading Parameters] +[table + [[Parameter] [Requirement] [Description]] + [[`f`] [Model of __def_callable_obj__] [The function to transform.]] +] + +[heading Expression Semantics] + + make_fused(f); + +[*Return type]: A specialization of __fused__. + +[*Semantics]: Returns a __fused__ adapter for `f`. + +[heading Header] + + #include + +[heading Example] + float sub(float a, float b) { return a - b; } + + void try_it() + { + __vector__ a(2,2.0f); + __vector__ b(1,1.5f); + __vector__ c(1.0f,0.5f); + assert(c == __transform__(__zip__(a,b), make_fused(& sub))); + assert(c == __transform__(__zip__(a,b), make_fused(__std_minus_doc__()))); + } + +[heading See also] +* __fused__ +* __deduce__ +* __result_of_make_fused__ + +[endsect] + +[section make_fused_procedure] + +[heading Description] +Creates a __fused_procedure__ adapter for a given __def_callable_obj__. +The usual __element_conversion__ applied to the target function. + +[heading Synopsis] + template + inline typename __result_of_make_fused_procedure__::type + make_fused_procedure(F const & f); + +[heading Parameters] +[table + [[Parameter] [Requirement] [Description]] + [[`f`] [Model of __callable_obj__] [The function to transform.]] +] + +[heading Expression Semantics] + + make_fused_procedure(f); + +[*Return type]: A specialization of __fused_procedure__. + +[*Semantics]: Returns a __fused_procedure__ adapter for `f`. + +[heading Header] + + #include + +[heading Example] + __vector__ v(1,2,3); + using namespace boost::lambda; + make_fused_procedure(_1 += _2 - _3)(v); + assert(__front__(v) == 0); + +[heading See also] +* __fused_procedure__ +* __deduce__ +* __result_of_make_fused_procedure__ + +[endsect] + +[section make_fused_function_object] + +[heading Description] +Creates a __fused_function_object__ adapter for a given __def_callable_obj__. +The usual __element_conversion__ is applied to the target function. + +[heading Synopsis] + template + inline typename __result_of_make_fused_function_object__::type + make_fused_function_object(F const & f); + +[heading Parameters] +[table + [[Parameter] [Requirement] [Description]] + [[`f`] [Model of __poly_func_obj__] [The function to transform.]] +] + +[heading Expression Semantics] + + make_fused_function_object(f); + +[*Return type]: A specialization of __fused_function_object__. + +[*Semantics]: Returns a __fused_function_object__ adapter for `f`. + +[heading Header] + + #include + +[heading Example] + struct sub + { + template + struct result + { + typedef T type; + }; + + template + T operator()(T lhs, T rhs) const + { + return lhs - rhs; + } + }; + + void try_it() + { + __vector__ a(2,2.0f); + __vector__ b(1,1.5f); + __vector__ c(1,0.5f); + assert(c == __transform__(__zip__(a,b), make_fused_function_object(sub()))); + } + +[heading See also] +* __fused_function_object__ +* __deduce__ +* __result_of_make_fused_function_object__ + +[endsect] + +[section make_unfused_generic] + +[heading Description] +Creates a __unfused_generic__ adapter for a given, unary __poly_func_obj__. +The usual __element_conversion__ is applied to the target function. + +[heading Synopsis] + template + inline typename __result_of_make_unfused_generic__::type + make_unfused_generic(F const & f); + +[heading Parameters] +[table + [[Parameter] [Requirement] [Description]] + [[`f`] [Model of __poly_func_obj__] [The function to transform.]] +] + +[heading Expression Semantics] + + make_unfused_generic(f); + +[*Return type]: A specialization of __unfused_generic__. + +[*Semantics]: Returns a __unfused_generic__ adapter for `f`. + +[heading Header] + + #include + +[heading Example] + struct bottles_song + { + template + struct result + : mpl::if_< mpl::less< __result_of_size__, mpl::int_<2> >, + boost::blank, mpl::identity >::type + { }; + + template + void operator()(Seq & s) const + { + typename result_of::at_c::type n = at_c<0>(s); + typename result_of::at_c::type what = at_c<1>(s); + + std::cout + << n << " bottles of " << what << " on the wall.\n" + << n << " bottles of " << what << "!\n" + << "Take one down - pass it around.\n"; + + n -= 1; // glug glug... + + std::cout + << n << " bottles of " << what << " on the wall.\n" + << std::endl; + } + }; + + void try_it() + { + unsigned n_milk = 99; + for(int i = 0; i < 3; ++i) + make_unfused_generic(bottles_song())(n_milk,"milk"); + // 96 bottles left for me + } + +[heading See also] +* __unfused_generic__ +* __deduce__ +* __result_of_make_unfused_generic__ + +[endsect] + +[section make_unfused_lvalue_args] + +[heading Description] +Creates a __unfused_lvalue_args__ adapter for a given, unary __poly_func_obj__. +The usual __element_conversion__ is applied to the target function. + +[heading Synopsis] + template + inline typename __result_of_make_unfused_lvalue_args__::type + make_unfused_lvalue_args(F const & f); + +[heading Parameters] +[table + [[Parameter] [Requirement] [Description]] + [[`f`] [Model of __poly_func_obj__] [The function to transform.]] +] + +[heading Expression Semantics] + + make_unfused_lvalue_args(f); + +[*Return type]: A specialization of __unfused_lvalue_args__. + +[*Semantics]: Returns a __unfused_lvalue_args__ adapter for `f`. + +[heading Header] + + #include + +[heading Example] + struct fused_incrementer + { + template + struct result + { + typedef void type; + }; + + template + void operator()(Seq const & s) const + { + __for_each__(s,++boost::lambda::_1); + } + }; + + void try_it() + { + int a = 2; char b = 'X'; + make_unfused_lvalue_args(fused_incrementer())(a,b); + assert(a == 3 && b == 'Y'); + } + +[heading See also] +* __unfused_lvalue_args__ +* __deduce__ +* __result_of_make_unfused_lvalue_args__ + +[endsect] + +[section make_unfused_rvalue_args] + +[heading Description] +Creates a __unfused_rvalue_args__ adapter for a given, unary __poly_func_obj__. +The usual __element_conversion__ is applied to the target function. + +[heading Synopsis] + template + inline typename __result_of_make_unfused_rvalue_args__::type + make_unfused_rvalue_args(F const & f); + +[heading Parameters] +[table + [[Parameter] [Requirement] [Description]] + [[`f`] [Model of __poly_func_obj__] [The function to transform.]] +] + +[heading Expression Semantics] + + make_unfused_rvalue_args(f); + +[*Return type]: A specialization of __unfused_rvalue_args__. + +[*Semantics]: Returns a __unfused_rvalue_args__ adapter for `f`. + +[heading Header] + + #include + +[heading Example] + struct sequence_printer + { + template + struct result + { + typedef void type; + }; + + template + void operator()(Seq const & s) const + { + std::cout << s << std::endl; + } + }; + + void try_it() + { + make_unfused_rvalue_args(sequence_printer()) + (24,"bottles of beer in",'a',"box."); + } + +[heading See also] +* __unfused_rvalue_args__ +* __deduce__ +* __result_of_make_unfused_rvalue_args__ + +[endsect] + +[endsect] [/ Functions] + +[section Metafunctions] + +[section make_fused] + +[heading Description] +Returns the result type of __make_fused__. + +[heading Header] + + #include + +[heading Synopsis] + namespace result_of + { + template + struct make_fused + { + typedef __unspecified__ type; + }; + } + +[heading See also] +* __make_fused__ + +[endsect] + +[section make_fused_procedure] + +[heading Description] +Returns the result type of __make_fused_procedure__. + +[heading Header] + + #include + +[heading Synopsis] + namespace result_of + { + template + struct make_fused_procedure + { + typedef __unspecified__ type; + }; + } + +[heading See also] +* __make_fused_procedure__ + +[endsect] + +[section make_fused_function_object] + +[heading Description] +Returns the result type of __make_fused_function_object__. + +[heading Header] + + #include + +[heading Synopsis] + namespace result_of + { + template + struct make_fused_function_object + { + typedef __unspecified__ type; + }; + } + +[heading See also] +* __make_fused_function_object__ + +[endsect] + +[section make_unfused_generic] + +[heading Description] +Returns the result type of __make_unfused_generic__. + +[heading Header] + + #include + +[heading Synopsis] + namespace result_of + { + template + struct make_unfused_generic + { + typedef __unspecified__ type; + }; + } + +[heading See also] +* __make_unfused_generic__ + +[endsect] + +[section make_unfused_lvalue_args] + +[heading Description] +Returns the result type of __make_unfused_lvalue_args__. + +[heading Header] + + #include + +[heading Synopsis] + namespace result_of + { + template + struct make_unfused_lvalue_args + { + typedef __unspecified__ type; + }; + } + +[heading See also] +* __make_unfused_lvalue_args__ + +[endsect] + +[section make_unfused_rvalue_args] + +[heading Description] +Returns the result type of __make_unfused_rvalue_args__. + +[heading Header] + + #include + +[heading Synopsis] + namespace result_of + { + template + struct make_unfused_rvalue_args + { + typedef __unspecified__ type; + }; + } + +[heading See also] +* __make_unfused_rvalue_args__ + +[endsect] + +[endsect] [/ Metafunctions] + +[endsect] [/ Generation] + +[endsect] [/ Functional ] diff --git a/doc/fusion.qbk b/doc/fusion.qbk index 032bafa1..0f1d006f 100644 --- a/doc/fusion.qbk +++ b/doc/fusion.qbk @@ -29,6 +29,8 @@ [def __mlist_archive__ [@http://news.gmane.org/gmane.comp.parsers.spirit.general]] [def __jaakko_jarvi__ [@http://www.boost.org/people/jaakko_jarvi.htm Jaakko Jarvi]] [def __david_abrahams__ [@http://www.boost.org/people/dave_abrahams.htm David Abrahams]] +[def __the_forwarding_problem__ [@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2002/n1385.htm The Forwarding Problem]] + [def __boost_any__ [@http://boost.org/doc/html/any.html Boost.Any]] [def __new_iterator_concepts__ [@http://boost.org/libs/iterator/doc/new-iter-concepts.html New Iterator Concepts]] [def __boost_array_library__ [@http://www.boost.org/doc/html/array.html Boost.Array Library]] @@ -36,12 +38,19 @@ [def __boost_tuple_library__ [@http://www.boost.org/libs/tuple/doc/tuple_users_guide.html Boost.Tuple Library]] [def __boost_ref__ [@http://www.boost.org/doc/html/ref.html Boost.Ref]] [def __boost_ref_call__ [@http://www.boost.org/doc/html/ref.html `ref`]] +[def __boost_result_of__ [@http://www.boost.org/libs/utility/utility.htm#result_of Boost.ResultOf]] +[def __boost_result_of_call__ [@http://www.boost.org/libs/utility/utility.htm#result_of `boost::result_of`]] +[def __boost_enable_if__ [@http://www.boost.org/libs/utility/enable_if.html Boost.EnableIf utility]] +[def __boost_shared_ptr_call__ [@http://www.boost.org/libs/smart_ptr/smart_ptr.hpp `boost::shared_ptr`]] [def __std_pair_doc__ [@http://www.sgi.com/tech/stl/pair.html `std::pair`]] +[def __std_plus_doc__ [@http://www.sgi.com/tech/stl/plus.html `std::plus`]] +[def __std_minus_doc__ [@http://www.sgi.com/tech/stl/minus.html `std::minus`]] + +[def __mpl_integral_constant__ [@http://www.boost.org/libs/mpl/doc/refmanual/integral-constant.html MPL Integral Constant]] +[def __mpl_boolean_constant__ [@http://www.boost.org/libs/mpl/doc/refmanual/integral-constant.html MPL Boolean Constant]] +[def __mpl_metafunction_class__ [@http://www.boost.org/libs/mpl/doc/refmanual/metafunction-class.html MPL Metafunction Class]] +[def __mpl_lambda_expression__ [@http://www.boost.org/libs/mpl/doc/refmanual/lambda-expression.html MPL Lambda Expression]] -[def __mpl_integral_constant__ MPL Integral Constant] -[def __mpl_boolean_constant__ MPL Boolean Constant] -[def __mpl_metafunction_class__ MPL Metafunction Class] -[def __mpl_lambda_expression__ MPL Lambda Expression] [def __lvalue__ LValue] [def __unspecified__ /unspecified/] @@ -103,6 +112,7 @@ [def __joint_view__ [link fusion.sequences.views.joint_view `joint_view`]] [def __transform_view__ [link fusion.sequences.views.transform_view `transform_view`]] [def __reverse_view__ [link fusion.sequences.views.reverse_view `reverse_view`]] +[def __zip_view__ [link fusion.sequences.views.zip_view `zip_view`]] [def __std_pair__ [link fusion.sequences.adapted.std__pair `std::pair`]] [def __boost_array__ [link fusion.sequences.adapted.boost__array `boost::array`]] @@ -176,7 +186,6 @@ [def __algorithm__ [link fusion.algorithms Algorithm]] [def __algorithms__ [link fusion.algorithms Algorithms]] -[def __poly_func_obj__ [link fusion.algorithms.concepts.poly Polymorphic Function Object]] [def __fold__ [link fusion.algorithms.iteration.functions.fold `fold`]] [def __result_of_fold__ [link fusion.algorithms.iteration.metafunctions.fold `result_of::fold`]] [def __accumulate__ [link fusion.algorithms.iteration.functions.accumulate `accumulate`]] @@ -239,6 +248,38 @@ [def __tr1_tuple_pair__ [link fusion.tuples.pairs `TR1 and std::pair`]] [def __tuple_get__ [link fusion.tuples.class_template_tuple.element_access `get`]] +[def __callable_obj__ [link fusion.functional.concepts.callable Callable Object]] +[def __poly_func_obj__ [link fusion.functional.concepts.poly Polymorphic Function Object]] +[def __def_callable_obj__ [link fusion.functional.concepts.def_callable Deferred Callable Object]] +[def __functional_adapters__ [link fusion.functional.adapters functional adapters]] +[def __fused__ [link fusion.functional.adapters.fused `fused`]] +[def __fused_procedure__ [link fusion.functional.adapters.fused_procedure `fused_procedure`]] +[def __fused_function_object__ [link fusion.functional.adapters.fused_function_object `fused_function_object`]] +[def __unfused_generic__ [link fusion.functional.adapters.unfused_generic `unfused_generic`]] +[def __unfused_lvalue_args__ [link fusion.functional.adapters.unfused_lvalue_args `unfused_lvalue_args`]] +[def __unfused_rvalue_args__ [link fusion.functional.adapters.unfused_rvalue_args `unfused_rvalue_args`]] +[def __unfused_typed__ [link fusion.functional.adapters.unfused_typed `unfused_typed`]] +[def __invoke__ [link fusion.functional.invocation.functions.invoke `invoke`]] +[def __invoke_procedure__ [link fusion.functional.invocation.functions.invoke_procedure `invoke_procedure`]] +[def __invoke_function_object__ [link fusion.functional.invocation.functions.invoke_function_object `invoke_function_object`]] +[def __make_fused__ [link fusion.functional.generation.functions.make_fused `make_fused`]] +[def __make_fused_procedure__ [link fusion.functional.generation.functions.make_fused_procedure `make_fused_procedure`]] +[def __make_fused_function_object__ [link fusion.functional.generation.functions.make_fused_function_object `make_fused_function_object`]] +[def __make_unfused_generic__ [link fusion.functional.generation.functions.make_unfused_generic `make_unfused_generic`]] +[def __make_unfused_rvalue_args__ [link fusion.functional.generation.functions.make_unfused_rvalue_args `make_unfused_rvalue_args`]] +[def __make_unfused_lvalue_args__ [link fusion.functional.generation.functions.make_unfused_lvalue_args `make_unfused_lvalue_args`]] +[def __make_unfused_typed__ [link fusion.functional.generation.functions.make_unfused_typed `make_unfused_typed`]] +[def __result_of_invoke__ [link fusion.functional.invocation.metafunctions.invoke `result_of::invoke`]] +[def __result_of_invoke_procedure__ [link fusion.functional.invocation.metafunctions.invoke_procedure `result_of::invoke_procedure`]] +[def __result_of_invoke_function_object__ [link fusion.functional.invocation.metafunctions.invoke_function_object `result_of::invoke_function_object`]] +[def __result_of_make_fused__ [link fusion.functional.generation.metafunctions.make_fused `make_fused`]] +[def __result_of_make_fused_procedure__ [link fusion.functional.generation.metafunctions.make_fused_procedure `make_fused_procedure`]] +[def __result_of_make_fused_function_object__ [link fusion.functional.generation.metafunctions.make_fused_function_object `make_fused_function_object`]] +[def __result_of_make_unfused_generic__ [link fusion.functional.generation.metafunctions.make_unfused_generic `make_unfused_generic`]] +[def __result_of_make_unfused_rvalue_args__ [link fusion.functional.generation.metafunctions.make_unfused_rvalue_args `make_unfused_rvalue_args`]] +[def __result_of_make_unfused_lvalue_args__ [link fusion.functional.generation.metafunctions.make_unfused_lvalue_args `make_unfused_lvalue_args`]] +[def __result_of_make_unfused_typed__ [link fusion.functional.generation.metafunctions.make_unfused_typed `make_unfused_typed`]] + [def __recursive_inline__ [link fusion.notes.recursive_inlined_functions Recursive Inlined Functions]] [def __overloaded_functions__ [link fusion.notes.overloaded_functions Overloaded Functions]] [def __tag_dispatching__ [link fusion.notes.tag_dispatching /tag dispatching/]] @@ -260,6 +301,7 @@ [include algorithms.qbk] [include tuples.qbk] [include extension.qbk] +[include functional.qbk] [include notes.qbk] [include changelog.qbk] [include acknowledgements.qbk] From 67f0df4958395e1d8da6bc3e857e8b5e24717e3c Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Thu, 15 Feb 2007 23:01:23 +0000 Subject: [PATCH 085/234] moves Polymorphic Function Object concept to functional module [SVN r36957] --- doc/algorithms.qbk | 30 +----------------------------- 1 file changed, 1 insertion(+), 29 deletions(-) diff --git a/doc/algorithms.qbk b/doc/algorithms.qbk index 08e7d023..b659f80b 100644 --- a/doc/algorithms.qbk +++ b/doc/algorithms.qbk @@ -37,34 +37,6 @@ sequence type. [heading Header] #include -[section Concepts] - -[section:poly Polymorphic Function Object] - -[heading Description] - -A type of function object with a nested metafunction `result`. `result` -returns the result type of calling the function object, given the argument -types. - -[variablelist Notation - [[`F`][A Polymorphic Function Object type]] - [[`f`][A Polymorphic Function Object]] - [[`T1 ...TN`][Arbitrary types]] - [[`t1 ...tN`][Objects with types `T1 ...TN`]] -] - -[heading Expression requirements] - -[table - [[Expression][Return Type][Runtime Complexity]] - [[`f(t1, ...tN)`][`F::result::type`][Unspecified]] -] - -[endsect] - -[endsect] - [section Iteration] The iteration algorithms provide the fundamental algorithms for traversing @@ -2409,4 +2381,4 @@ Constant. [endsect] -[endsect] \ No newline at end of file +[endsect] From ca6f831b96121c84d69714afb5265a83781f661a Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Thu, 15 Feb 2007 23:11:24 +0000 Subject: [PATCH 086/234] adds documentation for functional module [SVN r36959] --- doc/html/fusion/acknowledgements.html | 2 +- doc/html/fusion/algorithms.html | 109 ++++-- doc/html/fusion/algorithms/iteration.html | 21 +- .../algorithms/iteration/functions.html | 2 +- .../iteration/functions/accumulate.html | 52 +-- .../algorithms/iteration/functions/fold.html | 46 +-- .../iteration/functions/for_each.html | 42 +-- .../algorithms/iteration/metafunctions.html | 2 +- .../iteration/metafunctions/accumulate.html | 44 +-- .../iteration/metafunctions/fold.html | 44 +-- .../iteration/metafunctions/for_each.html | 36 +- doc/html/fusion/algorithms/query.html | 22 +- .../fusion/algorithms/query/functions.html | 2 +- .../algorithms/query/functions/all.html | 56 ++-- .../algorithms/query/functions/any.html | 56 ++-- .../algorithms/query/functions/count.html | 46 +-- .../algorithms/query/functions/count_if.html | 44 +-- .../algorithms/query/functions/find.html | 42 +-- .../algorithms/query/functions/find_if.html | 49 +-- .../algorithms/query/functions/none.html | 56 ++-- .../algorithms/query/metafunctions.html | 2 +- .../algorithms/query/metafunctions/all.html | 38 +-- .../algorithms/query/metafunctions/any.html | 38 +-- .../algorithms/query/metafunctions/count.html | 30 +- .../query/metafunctions/count_if.html | 30 +- .../algorithms/query/metafunctions/find.html | 34 +- .../query/metafunctions/find_if.html | 40 +-- .../algorithms/query/metafunctions/none.html | 38 +-- .../fusion/algorithms/transformation.html | 48 ++- .../algorithms/transformation/functions.html | 2 +- .../transformation/functions/clear.html | 30 +- .../transformation/functions/erase.html | 58 ++-- .../transformation/functions/erase_key.html | 34 +- .../transformation/functions/filter.html | 38 +-- .../transformation/functions/filter_if.html | 51 +-- .../transformation/functions/insert.html | 38 +-- .../functions/insert_range.html | 40 +-- .../transformation/functions/join.html | 38 +-- .../transformation/functions/pop_back.html | 32 +- .../transformation/functions/pop_front.html | 32 +- .../transformation/functions/push_back.html | 36 +- .../transformation/functions/push_front.html | 36 +- .../transformation/functions/remove.html | 38 +-- .../transformation/functions/remove_if.html | 44 +-- .../transformation/functions/replace.html | 48 +-- .../transformation/functions/replace_if.html | 48 +-- .../transformation/functions/reverse.html | 30 +- .../transformation/functions/transform.html | 78 ++--- .../transformation/functions/zip.html | 46 +-- .../transformation/metafunctions.html | 2 +- .../transformation/metafunctions/clear.html | 24 +- .../transformation/metafunctions/erase.html | 40 +-- .../metafunctions/erase_key.html | 30 +- .../transformation/metafunctions/filter.html | 34 +- .../metafunctions/filter_if.html | 39 ++- .../transformation/metafunctions/insert.html | 34 +- .../metafunctions/insert_range.html | 34 +- .../transformation/metafunctions/join.html | 22 +- .../metafunctions/pop_back.html | 26 +- .../metafunctions/pop_front.html | 26 +- .../metafunctions/push_back.html | 30 +- .../metafunctions/push_front.html | 30 +- .../transformation/metafunctions/remove.html | 34 +- .../metafunctions/remove_if.html | 43 +-- .../transformation/metafunctions/replace.html | 28 +- .../metafunctions/replace_if.html | 34 +- .../transformation/metafunctions/reverse.html | 26 +- .../metafunctions/transform.html | 32 +- .../transformation/metafunctions/zip.html | 34 +- doc/html/fusion/change_log.html | 6 +- doc/html/fusion/extension.html | 181 +++++----- doc/html/fusion/functional/adapters.html | 50 +++ .../fusion/functional/adapters/fused.html | 203 ++++++++++++ .../adapters/fused_function_object.html | 221 +++++++++++++ .../functional/adapters/fused_procedure.html | 219 +++++++++++++ .../functional/adapters/unfused_generic.html | 270 +++++++++++++++ .../adapters/unfused_lvalue_args.html | 235 +++++++++++++ .../adapters/unfused_rvalue_args.html | 235 +++++++++++++ .../functional/adapters/unfused_typed.html | 309 ++++++++++++++++++ doc/html/fusion/functional/concepts.html | 45 +++ .../fusion/functional/concepts/callable.html | 45 +++ .../functional/concepts/def_callable.html | 100 ++++++ doc/html/fusion/functional/concepts/poly.html | 110 +++++++ doc/html/fusion/functional/generation.html | 58 ++++ .../functional/generation/functions.html | 46 +++ .../generation/functions/make_fused.html | 129 ++++++++ .../functions/make_fused_function_object.html | 143 ++++++++ .../functions/make_fused_procedure.html | 124 +++++++ .../functions/make_unfused_generic.html | 155 +++++++++ .../functions/make_unfused_lvalue_args.html | 142 ++++++++ .../functions/make_unfused_rvalue_args.html | 141 ++++++++ .../functional/generation/metafunctions.html | 46 +++ .../generation/metafunctions/make_fused.html | 72 ++++ .../make_fused_function_object.html | 72 ++++ .../metafunctions/make_fused_procedure.html | 72 ++++ .../metafunctions/make_unfused_generic.html | 72 ++++ .../make_unfused_lvalue_args.html | 72 ++++ .../make_unfused_rvalue_args.html | 72 ++++ doc/html/fusion/functional/invocation.html | 53 +++ .../functional/invocation/functions.html | 43 +++ .../invocation/functions/invoke.html | 160 +++++++++ .../functions/invoke_function_object.html | 173 ++++++++++ .../functions/invoke_procedure.html | 166 ++++++++++ .../functional/invocation/metafunctions.html | 43 +++ .../invocation/metafunctions/invoke.html | 75 +++++ .../metafunctions/invoke_function_object.html | 75 +++++ .../metafunctions/invoke_procedure.html | 75 +++++ doc/html/fusion/introduction.html | 34 +- doc/html/fusion/iterators.html | 4 +- doc/html/fusion/iterators/concepts.html | 2 +- .../concepts/bidirectional_iterator.html | 58 ++-- .../iterators/concepts/forward_iterator.html | 144 ++++---- .../concepts/random_access_iterator.html | 50 +-- doc/html/fusion/iterators/functions.html | 2 +- .../fusion/iterators/functions/advance.html | 42 +-- .../fusion/iterators/functions/advance_c.html | 38 +-- .../fusion/iterators/functions/deref.html | 34 +- .../fusion/iterators/functions/distance.html | 30 +- doc/html/fusion/iterators/functions/next.html | 34 +- .../fusion/iterators/functions/prior.html | 34 +- doc/html/fusion/iterators/metafunctions.html | 2 +- .../iterators/metafunctions/advance.html | 46 +-- .../iterators/metafunctions/advance_c.html | 44 +-- .../fusion/iterators/metafunctions/deref.html | 38 +-- .../iterators/metafunctions/distance.html | 37 ++- .../iterators/metafunctions/equal_to.html | 42 +-- .../fusion/iterators/metafunctions/next.html | 32 +- .../fusion/iterators/metafunctions/prior.html | 36 +- .../iterators/metafunctions/value_of.html | 38 +-- doc/html/fusion/iterators/operators.html | 2 +- .../operators/operator_equality.html | 22 +- .../operators/operator_inequality.html | 22 +- .../operators/operator_unary_star.html | 32 +- doc/html/fusion/notes.html | 110 +++---- doc/html/fusion/organization.html | 22 +- doc/html/fusion/preface.html | 14 +- doc/html/fusion/quick_start.html | 110 +++---- doc/html/fusion/references.html | 2 +- doc/html/fusion/sequences.html | 79 ++++- doc/html/fusion/sequences/adapted.html | 12 +- .../sequences/adapted/boost__array.html | 24 +- .../sequences/adapted/boost__tuple.html | 14 +- .../sequences/adapted/boost__variant.html | 14 +- .../sequences/adapted/mpl_sequence.html | 18 +- .../fusion/sequences/adapted/std__pair.html | 24 +- doc/html/fusion/sequences/concepts.html | 6 +- .../concepts/associative_sequence.html | 77 ++--- .../concepts/bidirectional_sequence.html | 58 ++-- .../sequences/concepts/forward_sequence.html | 126 +++---- .../concepts/random_access_sequence.html | 70 ++-- doc/html/fusion/sequences/containers.html | 4 +- .../fusion/sequences/containers/cons.html | 100 +++--- .../fusion/sequences/containers/list.html | 84 ++--- doc/html/fusion/sequences/containers/map.html | 78 ++--- doc/html/fusion/sequences/containers/set.html | 66 ++-- .../fusion/sequences/containers/vector.html | 74 ++--- doc/html/fusion/sequences/conversion.html | 16 +- .../sequences/conversion/functions.html | 2 +- .../conversion/functions/as_list.html | 26 +- .../conversion/functions/as_map.html | 34 +- .../conversion/functions/as_set.html | 28 +- .../conversion/functions/as_vector.html | 26 +- .../sequences/conversion/metafunctions.html | 2 +- .../conversion/metafunctions/as_list.html | 28 +- .../conversion/metafunctions/as_map.html | 36 +- .../conversion/metafunctions/as_set.html | 30 +- .../conversion/metafunctions/as_vector.html | 28 +- doc/html/fusion/sequences/generation.html | 23 +- .../sequences/generation/functions.html | 2 +- .../generation/functions/list_tie.html | 42 +-- .../generation/functions/make_cons.html | 40 +-- .../generation/functions/make_list.html | 46 +-- .../generation/functions/make_map.html | 72 ++-- .../generation/functions/make_set.html | 56 ++-- .../generation/functions/make_vector.html | 46 +-- .../sequences/generation/functions/tiers.html | 28 +- .../generation/functions/vector_tie.html | 42 +-- .../sequences/generation/metafunctions.html | 2 +- .../generation/metafunctions/list_tie.html | 36 +- .../generation/metafunctions/make_cons.html | 30 +- .../generation/metafunctions/make_list.html | 36 +- .../generation/metafunctions/make_map.html | 56 ++-- .../generation/metafunctions/make_set.html | 46 +-- .../generation/metafunctions/make_vector.html | 36 +- .../generation/metafunctions/vector_tie.html | 36 +- doc/html/fusion/sequences/intrinsics.html | 35 +- .../sequences/intrinsics/functions.html | 2 +- .../sequences/intrinsics/functions/at.html | 42 +-- .../sequences/intrinsics/functions/at_c.html | 42 +-- .../intrinsics/functions/at_key.html | 38 +-- .../sequences/intrinsics/functions/back.html | 36 +- .../sequences/intrinsics/functions/begin.html | 34 +- .../sequences/intrinsics/functions/empty.html | 32 +- .../sequences/intrinsics/functions/end.html | 34 +- .../sequences/intrinsics/functions/front.html | 36 +- .../intrinsics/functions/has_key.html | 34 +- .../sequences/intrinsics/functions/size.html | 26 +- .../sequences/intrinsics/metafunctions.html | 2 +- .../intrinsics/metafunctions/at.html | 46 +-- .../intrinsics/metafunctions/at_c.html | 42 +-- .../intrinsics/metafunctions/at_key.html | 46 +-- .../intrinsics/metafunctions/back.html | 28 +- .../intrinsics/metafunctions/begin.html | 32 +- .../intrinsics/metafunctions/empty.html | 35 +- .../intrinsics/metafunctions/end.html | 32 +- .../intrinsics/metafunctions/front.html | 30 +- .../intrinsics/metafunctions/has_key.html | 37 ++- .../intrinsics/metafunctions/size.html | 29 +- .../intrinsics/metafunctions/value_at.html | 32 +- .../intrinsics/metafunctions/value_at_c.html | 28 +- .../metafunctions/value_at_key.html | 30 +- doc/html/fusion/sequences/operators.html | 19 +- .../sequences/operators/comparison.html | 12 +- .../sequences/operators/comparison/equal.html | 44 +-- .../operators/comparison/greater_than.html | 36 +- .../comparison/greater_than_equal.html | 36 +- .../operators/comparison/less_than.html | 40 +-- .../operators/comparison/less_than_equal.html | 36 +- .../operators/comparison/not_equal.html | 34 +- doc/html/fusion/sequences/operators/i_o.html | 44 +-- .../fusion/sequences/operators/i_o/in.html | 24 +- .../fusion/sequences/operators/i_o/out.html | 24 +- doc/html/fusion/sequences/views.html | 4 +- .../fusion/sequences/views/filter_view.html | 66 ++-- .../sequences/views/iterator_range.html | 78 ++--- .../fusion/sequences/views/joint_view.html | 74 ++--- .../fusion/sequences/views/reverse_view.html | 58 ++-- .../fusion/sequences/views/single_view.html | 56 ++-- .../sequences/views/transform_view.html | 112 +++---- doc/html/fusion/sequences/views/zip_view.html | 60 ++-- doc/html/fusion/support.html | 2 +- doc/html/fusion/support/category_of.html | 24 +- doc/html/fusion/support/deduce.html | 20 +- doc/html/fusion/support/deduce_sequence.html | 18 +- doc/html/fusion/support/is_sequence.html | 39 +-- doc/html/fusion/support/is_view.html | 37 ++- doc/html/fusion/support/pair.html | 92 +++--- doc/html/fusion/support/tag_of.html | 30 +- doc/html/fusion/tuples.html | 6 +- .../fusion/tuples/class_template_tuple.html | 8 +- .../class_template_tuple/construction.html | 56 ++-- .../class_template_tuple/element_access.html | 40 +-- .../relational_operators.html | 132 ++++---- .../tuple_creation_functions.html | 26 +- .../tuple_helper_classes.html | 31 +- doc/html/fusion/tuples/pairs.html | 45 +-- doc/html/index.html | 211 +++++++++++- 247 files changed, 8675 insertions(+), 3833 deletions(-) create mode 100644 doc/html/fusion/functional/adapters.html create mode 100644 doc/html/fusion/functional/adapters/fused.html create mode 100644 doc/html/fusion/functional/adapters/fused_function_object.html create mode 100644 doc/html/fusion/functional/adapters/fused_procedure.html create mode 100644 doc/html/fusion/functional/adapters/unfused_generic.html create mode 100644 doc/html/fusion/functional/adapters/unfused_lvalue_args.html create mode 100644 doc/html/fusion/functional/adapters/unfused_rvalue_args.html create mode 100644 doc/html/fusion/functional/adapters/unfused_typed.html create mode 100644 doc/html/fusion/functional/concepts.html create mode 100644 doc/html/fusion/functional/concepts/callable.html create mode 100644 doc/html/fusion/functional/concepts/def_callable.html create mode 100644 doc/html/fusion/functional/concepts/poly.html create mode 100644 doc/html/fusion/functional/generation.html create mode 100644 doc/html/fusion/functional/generation/functions.html create mode 100644 doc/html/fusion/functional/generation/functions/make_fused.html create mode 100644 doc/html/fusion/functional/generation/functions/make_fused_function_object.html create mode 100644 doc/html/fusion/functional/generation/functions/make_fused_procedure.html create mode 100644 doc/html/fusion/functional/generation/functions/make_unfused_generic.html create mode 100644 doc/html/fusion/functional/generation/functions/make_unfused_lvalue_args.html create mode 100644 doc/html/fusion/functional/generation/functions/make_unfused_rvalue_args.html create mode 100644 doc/html/fusion/functional/generation/metafunctions.html create mode 100644 doc/html/fusion/functional/generation/metafunctions/make_fused.html create mode 100644 doc/html/fusion/functional/generation/metafunctions/make_fused_function_object.html create mode 100644 doc/html/fusion/functional/generation/metafunctions/make_fused_procedure.html create mode 100644 doc/html/fusion/functional/generation/metafunctions/make_unfused_generic.html create mode 100644 doc/html/fusion/functional/generation/metafunctions/make_unfused_lvalue_args.html create mode 100644 doc/html/fusion/functional/generation/metafunctions/make_unfused_rvalue_args.html create mode 100644 doc/html/fusion/functional/invocation.html create mode 100644 doc/html/fusion/functional/invocation/functions.html create mode 100644 doc/html/fusion/functional/invocation/functions/invoke.html create mode 100644 doc/html/fusion/functional/invocation/functions/invoke_function_object.html create mode 100644 doc/html/fusion/functional/invocation/functions/invoke_procedure.html create mode 100644 doc/html/fusion/functional/invocation/metafunctions.html create mode 100644 doc/html/fusion/functional/invocation/metafunctions/invoke.html create mode 100644 doc/html/fusion/functional/invocation/metafunctions/invoke_function_object.html create mode 100644 doc/html/fusion/functional/invocation/metafunctions/invoke_procedure.html diff --git a/doc/html/fusion/acknowledgements.html b/doc/html/fusion/acknowledgements.html index 04b602c0..16c64ee6 100644 --- a/doc/html/fusion/acknowledgements.html +++ b/doc/html/fusion/acknowledgements.html @@ -3,7 +3,7 @@ Acknowledgements - + diff --git a/doc/html/fusion/algorithms.html b/doc/html/fusion/algorithms.html index 830b9c3d..ac0bf9c1 100644 --- a/doc/html/fusion/algorithms.html +++ b/doc/html/fusion/algorithms.html @@ -3,12 +3,12 @@ Algorithms - + - + @@ -21,33 +21,100 @@

    -PrevUpHomeNext +PrevUpHomeNext

    - + Lazy Evaluation

    @@ -61,39 +128,39 @@ fusion algorithms are functional in nature such that algorithms are non mutating (no side effects). However, due to the high cost of returning full sequences such as vectors and lists, Views are returned from Fusion - algorithms instead. For example, the transform algorithm does not actually - return a transformed version of the original sequence. transform returns a transform_view. This view holds a + algorithms instead. For example, the transform algorithm does not actually + return a transformed version of the original sequence. transform returns a transform_view. This view holds a reference to the original sequence plus the transform function. Iteration over - the transform_view + the transform_view will apply the transform function over the sequence elements on demand. This lazy evaluation scheme allows us to chain as many algorithms as we want without incurring a high runtime penalty.

    - + Sequence Extension

    The lazy evaluation scheme where Algorithms return Views also allows operations - such as push_back to be totally generic. In - Fusion, push_back is actually a generic algorithm - that works on all sequences. Given an input sequence s - and a value x, Fusion's push_back algorithm simply returns - a joint_view: - a view that holds a reference to the original sequence s - and the value x. Functions + such as push_back to be totally generic. In + Fusion, push_back is actually a generic algorithm + that works on all sequences. Given an input sequence s + and a value x, Fusion's push_back 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 + 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 functions to convert back to the original sequence type.

    - + Header

    @@ -106,7 +173,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/iteration.html b/doc/html/fusion/algorithms/iteration.html index 21d00c0c..b24155cb 100644 --- a/doc/html/fusion/algorithms/iteration.html +++ b/doc/html/fusion/algorithms/iteration.html @@ -3,11 +3,10 @@ Iteration - + - + @@ -21,21 +20,31 @@
    -PrevUpHomeNext +PrevUpHomeNext

    The iteration algorithms provide the fundamental algorithms for traversing a sequence repeatedly applying an operation to its elements.

    - + Header

    @@ -48,7 +57,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/iteration/functions.html b/doc/html/fusion/algorithms/iteration/functions.html index 5c3db0bd..2bd75e70 100644 --- a/doc/html/fusion/algorithms/iteration/functions.html +++ b/doc/html/fusion/algorithms/iteration/functions.html @@ -3,7 +3,7 @@ Functions - + diff --git a/doc/html/fusion/algorithms/iteration/functions/accumulate.html b/doc/html/fusion/algorithms/iteration/functions/accumulate.html index fa695d10..5e75eec2 100644 --- a/doc/html/fusion/algorithms/iteration/functions/accumulate.html +++ b/doc/html/fusion/algorithms/iteration/functions/accumulate.html @@ -3,7 +3,7 @@ accumulate - + @@ -26,18 +26,18 @@
    - + Description

    - Repeatedly applies binary Polymorphic - Function Object f - to each element of a sequence and the previous state. accumulate is equivalent to - fold. + Function Object f + to each element of a sequence and the previous state. accumulate is equivalent to + fold.

    - + Synopsis
    @@ -46,11 +46,11 @@
         typename State,
         typename F
         >
    -typename result_of::accumulate<Sequence, State, F>::type accumulate(
    +typename result_of::accumulate<Sequence, State, F>::type accumulate(
         Sequence& seq, State const& initial_state, F const& f);
     
    -

    Table 1.33. Parameters

    +

    Table 1.33. Parameters

    @@ -64,26 +64,26 @@ - + - + - + @@ -93,7 +93,7 @@
    seqseq A model of Forward - Sequence, f(eN ....f(e2,f(e1,initial_state))) must be a valid expression for - each element e1 to - eN in seq + Sequence, f(eN ....f(e2,f(e1,initial_state))) must be a valid expression for + each element e1 to + eN in seq Operation's argument
    initial_stateinitial_state Any type Initial state
    ff A - model of binary Polymorphic Function Object
    - + Expression Semantics
    @@ -101,28 +101,28 @@ accumulate(seq, initial_state, f);

    - Return type: Any type + Return type: Any type

    - Semantics: Equivalent to f(eN ....f(e2,f(e1,initial_state))) - where e1 ...eN are the elements of seq. + Semantics: Equivalent to f(eN ....f(e2,f(e1,initial_state))) + where e1 ...eN are the elements of seq.

    - + Complexity

    - Linear, exactly result_of::size<Sequence>::value applications of f. + Linear, exactly result_of::size<Sequence>::value applications of f.

    - + Header
     #include <boost/fusion/algorithm/iteration/accumulate.hpp>
     
    - + Example
    @@ -141,8 +141,8 @@
         }
     };
     ...
    -const vector<int,int> vec(1,2);
    -assert(accumulate(vec,std::string(""), make_string()) == "12");
    +const vector<int,int> vec(1,2);
    +assert(accumulate(vec,std::string(""), make_string()) == "12");
     
    diff --git a/doc/html/fusion/algorithms/iteration/functions/fold.html b/doc/html/fusion/algorithms/iteration/functions/fold.html index 4f5a2792..435e08ae 100644 --- a/doc/html/fusion/algorithms/iteration/functions/fold.html +++ b/doc/html/fusion/algorithms/iteration/functions/fold.html @@ -3,7 +3,7 @@ fold - + @@ -26,17 +26,17 @@
    - + Description

    - Repeatedly applies binary Polymorphic - Function Object f + Function Object f to each element of a sequence and the previous state.

    - + Synopsis
    @@ -45,11 +45,11 @@
         typename State,
         typename F
         >
    -typename result_of::fold<Sequence, State, F>::type fold(
    +typename result_of::fold<Sequence, State, F>::type fold(
         Sequence& seq, State const& initial_state, F const& f);
     
    -

    Table 1.32. Parameters

    +

    Table 1.32. Parameters

    @@ -63,25 +63,25 @@ - + - + - + @@ -91,7 +91,7 @@
    seqseq A model of Forward - Sequence,f(e) must be a valid expression for each - element e in seq + Sequence,f(e) must be a valid expression for each + element e in seq Operation's argument
    initial_stateinitial_state Any type Initial state
    ff A - model of binary Polymorphic Function Object
    - + Expression Semantics
    @@ -99,28 +99,28 @@ fold(seq, initial_state, f);

    - Return type: Any type + Return type: Any type

    - Semantics: Equivalent to f(eN ....f(e2,f(e1,initial_state))) - where e1 ...eN are the elements of seq. + Semantics: Equivalent to f(eN ....f(e2,f(e1,initial_state))) + where e1 ...eN are the elements of seq.

    - + Complexity

    - Linear, exactly result_of::size<Sequence>::value applications of f. + Linear, exactly result_of::size<Sequence>::value applications of f.

    - + Header
     #include <boost/fusion/algorithm/iteration/fold.hpp>
     
    - + Example
    @@ -139,8 +139,8 @@
         }
     };
     ...
    -const vector<int,int> vec(1,2);
    -assert(fold(vec,std::string(""), make_string()) == "12");
    +const vector<int,int> vec(1,2);
    +assert(fold(vec,std::string(""), make_string()) == "12");
     
    diff --git a/doc/html/fusion/algorithms/iteration/functions/for_each.html b/doc/html/fusion/algorithms/iteration/functions/for_each.html index 0c8769ff..74271b03 100644 --- a/doc/html/fusion/algorithms/iteration/functions/for_each.html +++ b/doc/html/fusion/algorithms/iteration/functions/for_each.html @@ -3,7 +3,7 @@ for_each - + @@ -26,14 +26,14 @@
    - + Description

    Applies a unary function object to each element of a sequence.

    - + Synopsis
    @@ -41,11 +41,11 @@
         typename Sequence,
         typename F
         >
    -typename result_of::for_each<Sequence, F>::type for_each(
    +typename result_of::for_each<Sequence, F>::type for_each(
         Sequence& seq, F const& f);
     
    -

    Table 1.34. Parameters

    +

    Table 1.34. Parameters

    @@ -59,17 +59,17 @@ - + - + @@ -78,36 +78,36 @@
    seqseq A model of Forward - Sequence, f(e) must be a valid expression for each - element e in seq + Sequence, f(e) must be a valid expression for each + element e in seq Operation's argument
    ff A unary function object Operation's argument
    - + Expression Semantics
    -for_each(seq, f);
    +for_each(seq, f);
     

    - Return type: void + Return type: void

    - Semantics: Calls f(e) for each element e - in seq. + Semantics: Calls f(e) for each element e + in seq.

    - + Complexity

    - Linear, exactly result_of::size<Sequence>::value applications of f. + Linear, exactly result_of::size<Sequence>::value applications of f.

    - + Header
     #include <boost/fusion/algorithm/iteration/for_each.hpp>
     
    - + Example
    @@ -120,9 +120,9 @@
         }
     };
     ...
    -vector<int,int> vec(1,2);
    -for_each(vec, increment());
    -assert(vec == make_vector(2,3));
    +vector<int,int> vec(1,2);
    +for_each(vec, increment());
    +assert(vec == make_vector(2,3));
     
    diff --git a/doc/html/fusion/algorithms/iteration/metafunctions.html b/doc/html/fusion/algorithms/iteration/metafunctions.html index 1bd66d25..6330fe0d 100644 --- a/doc/html/fusion/algorithms/iteration/metafunctions.html +++ b/doc/html/fusion/algorithms/iteration/metafunctions.html @@ -3,7 +3,7 @@ Metafunctions - + diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html b/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html index c779df6e..467fe2f6 100644 --- a/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html +++ b/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html @@ -3,7 +3,7 @@ accumulate - + @@ -26,14 +26,14 @@
    - + Description

    - Returns the result type of accumulate. + Returns the result type of accumulate.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.36. Parameters

    +

    Table 1.36. Parameters

    @@ -61,7 +61,7 @@ - + - + - + @@ -91,34 +91,34 @@
    SequenceSequence A model of Forward @@ -70,17 +70,17 @@ The sequence to iterate
    StateState Any type The initial state for the first application of - F + F
    FF A - model of binary Polymorphic Function Object
    - + Expression Semantics
    -result_of::accumulate<Sequence, State, F>::type
    +result_of::accumulate<Sequence, State, F>::type
     

    - Return type: Any 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 Semantics: Returns the result of applying + accumulate to a sequence + of type Sequence, with + an initial state of type State + and binary Polymorphic - Function Object of type F. + Function Object of type F.

    - + Complexity

    - Linear, exactly result_of::size<Sequence>::value applications of F. + Linear, exactly result_of::size<Sequence>::value applications of F.

    - + Header
    diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/fold.html b/doc/html/fusion/algorithms/iteration/metafunctions/fold.html
    index ee735622..a0f1e15f 100644
    --- a/doc/html/fusion/algorithms/iteration/metafunctions/fold.html
    +++ b/doc/html/fusion/algorithms/iteration/metafunctions/fold.html
    @@ -3,7 +3,7 @@
     
     fold
     
    -
    +
     
     
     
    @@ -26,14 +26,14 @@
     
     
    - + Description

    - Returns the result type of fold. + Returns the result type of fold.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.35. Parameters

    +

    Table 1.35. Parameters

    @@ -61,7 +61,7 @@ - + - + - + @@ -91,34 +91,34 @@
    SequenceSequence A model of Forward @@ -70,17 +70,17 @@ The sequence to iterate
    StateState Any type The initial state for the first application of - F + F
    FF A - model of binary Polymorphic Function Object
    - + Expression Semantics
    -result_of::fold<Sequence, State, F>::type
    +result_of::fold<Sequence, State, F>::type
     

    - Return type: Any 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 Semantics: Returns the result of applying + fold to a sequence of + type Sequence, with an + initial state of type State + and binary Polymorphic - Function Object of type F. + Function Object of type F.

    - + Complexity

    - Linear, exactly result_of::size<Sequence>::value applications of F. + Linear, exactly result_of::size<Sequence>::value applications of F.

    - + Header
    diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html b/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html
    index 6f865f32..0aa28932 100644
    --- a/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html
    +++ b/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html
    @@ -3,7 +3,7 @@
     
     for_each
     
    -
    +
     
     
     
    @@ -26,15 +26,15 @@
     
     

    - A metafunction returning the result type of applying for_each to a sequence. The - return type of for_each is always void. + A metafunction returning the result type of applying for_each to a sequence. The + return type of for_each is always void.

    - + Description
    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.37. Parameters

    +

    Table 1.37. Parameters

    @@ -62,7 +62,7 @@ - + - + @@ -80,32 +80,32 @@
    SequenceSequence A model of Forward @@ -71,7 +71,7 @@ Operation's argument
    FF Any type Operation's argument
    - + Expression Semantics
    -result_of::for_each<Sequence, F>::type
    +result_of::for_each<Sequence, F>::type
     

    - Return type: void. + Return type: void.

    - Semantics: Returns the return type of - for_each for a sequence of type - Sequence and a unary - function object F. The - return type is always void. + Semantics: Returns the return type of + for_each for a sequence of type + Sequence and a unary + function object F. The + return type is always void.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/query.html b/doc/html/fusion/algorithms/query.html
    index 9b5c8953..2df7f938 100644
    --- a/doc/html/fusion/algorithms/query.html
    +++ b/doc/html/fusion/algorithms/query.html
    @@ -3,7 +3,7 @@
     
     Query
     
    -
    +
     
     
     
    @@ -27,13 +27,31 @@
     Query
     
     

    The query algorithms provide support for searching and analyzing sequences.

    - + Header

    diff --git a/doc/html/fusion/algorithms/query/functions.html b/doc/html/fusion/algorithms/query/functions.html
    index 112f1f24..51a98f99 100644
    --- a/doc/html/fusion/algorithms/query/functions.html
    +++ b/doc/html/fusion/algorithms/query/functions.html
    @@ -3,7 +3,7 @@
     
     Functions
     
    -
    +
     
     
     
    diff --git a/doc/html/fusion/algorithms/query/functions/all.html b/doc/html/fusion/algorithms/query/functions/all.html
    index 923fa47a..fea60b5f 100644
    --- a/doc/html/fusion/algorithms/query/functions/all.html
    +++ b/doc/html/fusion/algorithms/query/functions/all.html
    @@ -3,7 +3,7 @@
     
     all
     
    -
    +
     
     
     
    @@ -26,18 +26,18 @@
     
     
    - + Description

    - For a sequence seq and - unary function object f, - all returns true if - f returns true for every - element of seq. + For a sequence seq and + unary function object f, + all returns true if + f returns true for every + element of seq.

    - + Synopsis
    @@ -45,11 +45,11 @@
         typename Sequence,
         typename F
         >
    -typename result_of::all<Sequence,F>::type all(
    +typename result_of::all<Sequence,F>::type all(
         Sequence const& seq, F f);
     
    -

    Table 1.39. Parameters

    +

    Table 1.39. Parameters

    @@ -63,19 +63,19 @@ - + - + @@ -84,38 +84,38 @@
    seqseq A model of Forward - Sequence, f(e) is a valid expression, convertible - to bool, for every element - e in seq + Sequence, f(e) is a valid expression, convertible + to bool, for every element + e in seq The sequence to search
    ff A unary function object The search predicate
    - + Expression Semantics
    -all(seq, f);
    +all(seq, f);
     

    - Return type: bool + Return type: bool

    - Semantics: Returns true if and only - if f(e) - evaluates to true for every - element e in seq. + Semantics: Returns true if and only + if f(e) + evaluates to true for every + element e in seq.

    - + Complexity

    - Linear. At most result_of::size<Sequence>::value comparisons. + Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
     #include <boost/fusion/algorithm/query/all.hpp>
     
    - + Example
    @@ -128,8 +128,8 @@
         }
     };
     ...
    -assert(all(make_vector(1,3), odd()));
    -assert(!all(make_vector(1,2), odd()));
    +assert(all(make_vector(1,3), odd()));
    +assert(!all(make_vector(1,2), odd()));
     
    diff --git a/doc/html/fusion/algorithms/query/functions/any.html b/doc/html/fusion/algorithms/query/functions/any.html index e5f4872d..936bbfe4 100644 --- a/doc/html/fusion/algorithms/query/functions/any.html +++ b/doc/html/fusion/algorithms/query/functions/any.html @@ -3,7 +3,7 @@ any - + @@ -26,18 +26,18 @@
    - + Description

    - For a sequence seq and - unary function object f, - any returns true if - f returns true for at - least one element of seq. + For a sequence seq and + unary function object f, + any returns true if + f returns true for at + least one element of seq.

    - + Synopsis
    @@ -45,11 +45,11 @@
         typename Sequence,
         typename F
         >
    -typename result_of::any<Sequence,F>::type any(
    +typename result_of::any<Sequence,F>::type any(
         Sequence const& seq, F f);
     
    -

    Table 1.38. Parameters

    +

    Table 1.38. Parameters

    @@ -63,19 +63,19 @@ - + - + @@ -84,38 +84,38 @@
    seqseq A model of Forward - Sequence, f(e) must be a valid expression, convertible - to bool, for each element - e in seq + Sequence, f(e) must be a valid expression, convertible + to bool, for each element + e in seq The sequence to search
    ff A unary function object The search predicate
    - + Expression semantics
    -any(seq, f);
    +any(seq, f);
     

    - Return type: bool + Return type: bool

    - Semantics: Returns true if and only - if f(e) - evaluates to true for some - element e in seq. + Semantics: Returns true if and only + if f(e) + evaluates to true for some + element e in seq.

    - + Complexity

    - Linear. At most result_of::size<Sequence>::value comparisons. + Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
     #include <boost/fusion/algorithm/query/any.hpp>
     
    - + Example
    @@ -128,8 +128,8 @@
         }
     };
     ...
    -assert(any(make_vector(1,2), odd()));
    -assert(!any(make_vector(2,4), odd()));
    +assert(any(make_vector(1,2), odd()));
    +assert(!any(make_vector(2,4), odd()));
     
    diff --git a/doc/html/fusion/algorithms/query/functions/count.html b/doc/html/fusion/algorithms/query/functions/count.html index 673735ad..8ffca992 100644 --- a/doc/html/fusion/algorithms/query/functions/count.html +++ b/doc/html/fusion/algorithms/query/functions/count.html @@ -3,7 +3,7 @@ count - + @@ -26,14 +26,14 @@
    - + Description

    Returns the number of elements of a given type within a sequence.

    - + Synopsis
    @@ -41,11 +41,11 @@
         typename Sequence,
         typename T
         >
    -typename result_of::count<Sequence, T>::type count(
    +typename result_of::count<Sequence, T>::type count(
         Sequence const& seq, T const& t);
     
    -

    Table 1.43. Parameters

    +

    Table 1.43. Parameters

    @@ -59,20 +59,20 @@ - + - + @@ -81,42 +81,42 @@
    seqseq A model of Forward - Sequence, e == t - must be a valid expression, convertible to bool, - for each element e - in seq + Sequence, e == t + must be a valid expression, convertible to bool, + for each element e + in seq The sequence to search
    TT Any type The type to count
    - + Expression Semantics
    -count(seq, t);
    +count(seq, t);
     

    - Return type: int + Return type: int

    - Semantics: Returns the number of elements - of type T and equal to - t in seq. + Semantics: Returns the number of elements + of type T and equal to + t in seq.

    - + Complexity

    - Linear. At most result_of::size<Sequence>::value comparisons. + Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
     #include <boost/fusion/algorithm/query/count.hpp>
     
    - + Example
    -const vector<double,int,int> vec(1.0,2,3);
    -assert(count(vec,2) == 1);
    +const vector<double,int,int> vec(1.0,2,3);
    +assert(count(vec,2) == 1);
     
    diff --git a/doc/html/fusion/algorithms/query/functions/count_if.html b/doc/html/fusion/algorithms/query/functions/count_if.html index 4d4d8b0f..cd36bc88 100644 --- a/doc/html/fusion/algorithms/query/functions/count_if.html +++ b/doc/html/fusion/algorithms/query/functions/count_if.html @@ -3,7 +3,7 @@ count_if - + @@ -26,15 +26,15 @@
    - + Description

    Returns the number of elements within a sequence with a type for which - a given unary function object evaluates to true. + a given unary function object evaluates to true.

    - + Synopsis
    @@ -42,11 +42,11 @@
         typename Sequence,
         typename F
         >
    -typename result_of::count_if<Sequence, F>::type count_if(
    +typename result_of::count_if<Sequence, F>::type count_if(
         Sequence const& seq, F f);
     
    -

    Table 1.44. Parameters

    +

    Table 1.44. Parameters

    @@ -60,19 +60,19 @@ - + - + @@ -81,41 +81,41 @@
    seqseq A model of Forward - Sequence, f(e) is a valid expression, convertible - to bool, for each element - e in seq + Sequence, f(e) is a valid expression, convertible + to bool, for each element + e in seq The sequence to search
    ff A unary function object The search predicate
    - + Expression Semantics
    -count_if(seq, f)
    +count_if(seq, f)
     

    - Return type: int + Return type: int

    - Semantics: Returns the number of elements - in seq where f evaluates to true. + Semantics: Returns the number of elements + in seq where f evaluates to true.

    - + Complexity

    - Linear. At most result_of::size<Sequence>::value comparisons. + Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
     #include <boost/fusion/algorithm/query/count_if.hpp>
     
    - + Example
    -const vector<int,int,int> vec(1,2,3);
    -assert(count_if(vec,odd()) == 2);
    +const vector<int,int,int> vec(1,2,3);
    +assert(count_if(vec,odd()) == 2);
     
    diff --git a/doc/html/fusion/algorithms/query/functions/find.html b/doc/html/fusion/algorithms/query/functions/find.html index 8ddaaddd..41946f47 100644 --- a/doc/html/fusion/algorithms/query/functions/find.html +++ b/doc/html/fusion/algorithms/query/functions/find.html @@ -3,7 +3,7 @@ find - + @@ -26,14 +26,14 @@
    - + Description

    Finds the first element of a given type within a sequence.

    - + Synopsis
    @@ -50,7 +50,7 @@
     unspecified find(Sequence& seq);
     
    -

    Table 1.41. Parameters

    +

    Table 1.41. Parameters

    @@ -64,7 +64,7 @@ - + - + @@ -82,45 +82,45 @@
    seqseq A model of Forward @@ -73,7 +73,7 @@ The sequence to search
    TT Any type The type to search for
    - + Expression Semantics
    -find<T>(seq)
    +find<T>(seq)
     

    - Return type: A model of the same iterator - category as the iterators of seq. + Return type: A model of the same iterator + category as the iterators of seq.

    - Semantics: Returns an iterator to the - first element of seq - of type T, or end(seq) if there is no such element. Equivalent - to find_if<boost::is_same<_, T> >(seq) + Semantics: Returns an iterator to the + first element of seq + of type T, or end(seq) if there is no such element. Equivalent + to find_if<boost::is_same<_, T> >(seq)

    - + Complexity

    - Linear. At most result_of::size<Sequence>::value comparisons. + Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
     #include <boost/fusion/algorithm/query/find.hpp>
     
    - + Example
    -const vector<char,int> vec('a','0');
    -assert(*find<int>(vec) == '0');
    -assert(find<double>(vec) == end(vec));
    +const vector<char,int> vec('a','0');
    +assert(*find<int>(vec) == '0');
    +assert(find<double>(vec) == end(vec));
     
    diff --git a/doc/html/fusion/algorithms/query/functions/find_if.html b/doc/html/fusion/algorithms/query/functions/find_if.html index ff2a73e5..21fbb442 100644 --- a/doc/html/fusion/algorithms/query/functions/find_if.html +++ b/doc/html/fusion/algorithms/query/functions/find_if.html @@ -3,7 +3,7 @@ find_if - + @@ -27,14 +27,15 @@ find_if

    Finds the first element within a sequence with a type for which a given - MPL Lambda Expression evaluates to boost::mpl::true_. + MPL + Lambda Expression evaluates to boost::mpl::true_.

    - + Description
    - + Synopsis
    @@ -51,7 +52,7 @@
     unspecified find_if(Sequence& seq);
     
    -

    Table 1.42. Parameters

    +

    Table 1.42. Parameters

    @@ -65,7 +66,7 @@ - + - + + unary MPL + Lambda Expression +
    seqseq A model of Forward @@ -74,55 +75,57 @@ The sequence to search
    FF A - unary MPL Lambda Expression The search predicate
    - + Expression Semantics
    -find_if<F>(seq)
    +find_if<F>(seq)
     

    - Return type: An iterator of the same - iterator category as the iterators of seq. + Return type: An iterator of the same + iterator category as the iterators of seq.

    - Semantics: Returns the first element - of seq for which MPL - Lambda Expression F evaluates - to boost::mpl::true_, or end(seq) + Semantics: Returns the first element + of seq for which MPL + Lambda Expression F + evaluates to boost::mpl::true_, or end(seq) if there is no such element.

    - + Complexity

    - Linear. At most result_of::size<Sequence>::value comparisons. + Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
     #include <boost/fusion/algorithm/query/find_if.hpp>
     
    - + Example
    -const vector<double,int> vec(1.0,2);
    -assert(*find_if<is_integral<mpl::_> >(vec) == 2);
    -assert(find_if<is_class<mpl::_> >(vec) == end(vec));
    +const vector<double,int> vec(1.0,2);
    +assert(*find_if<is_integral<mpl::_> >(vec) == 2);
    +assert(find_if<is_class<mpl::_> >(vec) == end(vec));
     
    diff --git a/doc/html/fusion/algorithms/query/functions/none.html b/doc/html/fusion/algorithms/query/functions/none.html index 97373012..ef8532a6 100644 --- a/doc/html/fusion/algorithms/query/functions/none.html +++ b/doc/html/fusion/algorithms/query/functions/none.html @@ -3,7 +3,7 @@ none - + @@ -26,18 +26,18 @@
    - + Description

    - For a sequence seq and - unary function object f, - none returns true if - f returns false for every - element of seq. + For a sequence seq and + unary function object f, + none returns true if + f returns false for every + element of seq.

    - + Synopsis
    @@ -45,11 +45,11 @@
         typename Sequence,
         typename F
         >
    -typename result_of::none<Sequence,F>::type none(
    +typename result_of::none<Sequence,F>::type none(
         Sequence const& seq, F f);
     
    -

    Table 1.40. Parameters

    +

    Table 1.40. Parameters

    @@ -63,19 +63,19 @@ - + - + @@ -84,38 +84,38 @@
    seqseq A model of Forward - Sequence, f(e) is a valid expression, convertible - to bool, for every element - e in seq + Sequence, f(e) is a valid expression, convertible + to bool, for every element + e in seq The sequence to search
    ff A unary function object The search predicate
    - + Expression Semantics
    -none(seq, f);
    +none(seq, f);
     

    - Return type: bool + Return type: bool

    - Semantics: Returns true if and only - if f(e) - evaluates to false for every - element e in seq. Result equivalent to !any(seq, f). + Semantics: Returns true if and only + if f(e) + evaluates to false for every + element e in seq. Result equivalent to !any(seq, f).

    - + Complexity

    - Linear. At most result_of::size<Sequence>::value comparisons. + Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
     #include <boost/fusion/algorithm/query/none.hpp>
     
    - + Example
    @@ -128,8 +128,8 @@
         }
     };
     ...
    -assert(none(make_vector(2,4), odd()));
    -assert(!none(make_vector(1,2), odd()));
    +assert(none(make_vector(2,4), odd()));
    +assert(!none(make_vector(1,2), odd()));
     
    diff --git a/doc/html/fusion/algorithms/query/metafunctions.html b/doc/html/fusion/algorithms/query/metafunctions.html index 544b0b11..7f643624 100644 --- a/doc/html/fusion/algorithms/query/metafunctions.html +++ b/doc/html/fusion/algorithms/query/metafunctions.html @@ -3,7 +3,7 @@ Metafunctions - + diff --git a/doc/html/fusion/algorithms/query/metafunctions/all.html b/doc/html/fusion/algorithms/query/metafunctions/all.html index aeaad077..9bc0533a 100644 --- a/doc/html/fusion/algorithms/query/metafunctions/all.html +++ b/doc/html/fusion/algorithms/query/metafunctions/all.html @@ -3,7 +3,7 @@ all - + @@ -26,14 +26,14 @@
    - + Description

    - A metafunction returning the result type of all. + A metafunction returning the result type of all.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.46. Parameters

    +

    Table 1.46. Parameters

    @@ -61,7 +61,7 @@ - + - + @@ -82,34 +82,34 @@
    SequenceSequence A model of Forward @@ -70,9 +70,9 @@ Operation's argument
    FF A - model of unary Polymorphic Function Object
    - + Expression Semantics
    -result_of::all<Sequence, F>::type
    +result_of::all<Sequence, F>::type
     

    - Return type: bool. + Return type: bool.

    - Semantics: Returns the return type of - all - given a sequence of type Sequence - and a unary Semantics: Returns the return type of + all + given a sequence of type Sequence + and a unary Polymorphic - Function Object of type F. - The return type is always bool. + Function Object of type F. + The return type is always bool.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/query/metafunctions/any.html b/doc/html/fusion/algorithms/query/metafunctions/any.html
    index 8be75c89..6951335f 100644
    --- a/doc/html/fusion/algorithms/query/metafunctions/any.html
    +++ b/doc/html/fusion/algorithms/query/metafunctions/any.html
    @@ -3,7 +3,7 @@
     
     any
     
    -
    +
     
     
     
    @@ -26,14 +26,14 @@
     
     
    - + Description

    - A metafunction returning the result type of any. + A metafunction returning the result type of any.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.45. Parameters

    +

    Table 1.45. Parameters

    @@ -61,7 +61,7 @@ - + - + @@ -82,34 +82,34 @@
    SequenceSequence A model of Forward @@ -70,9 +70,9 @@ Operation's argument
    FF A - model of unary Polymorphic Function Object
    - + Expression Semantics
    -result_of::any<Sequence, F>::type
    +result_of::any<Sequence, F>::type
     

    - Return type: bool. + Return type: bool.

    - Semantics: Returns the return type of - any - given a sequence of type Sequence - and a unary Semantics: Returns the return type of + any + given a sequence of type Sequence + and a unary Polymorphic - Function Object of type F. - The return type is always bool. + Function Object of type F. + The return type is always bool.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/query/metafunctions/count.html b/doc/html/fusion/algorithms/query/metafunctions/count.html
    index 112f2ccc..f70a7a02 100644
    --- a/doc/html/fusion/algorithms/query/metafunctions/count.html
    +++ b/doc/html/fusion/algorithms/query/metafunctions/count.html
    @@ -3,7 +3,7 @@
     
     count
     
    -
    +
     
     
     
    @@ -26,15 +26,15 @@
     
     
    - + Description

    - A metafunction that returns the result type of count + A metafunction that returns the result type of count given the sequence and search types.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.50. Parameters

    +

    Table 1.50. Parameters

    @@ -63,7 +63,7 @@ - + - + @@ -81,30 +81,30 @@
    SequenceSequence A model of Forward @@ -72,7 +72,7 @@ Operation's argument
    TT Any type Operation's argument
    - + Expression Semantics
    -result_of::count<T>::type
    +result_of::count<T>::type
     

    - Return type: int. + Return type: int.

    - Semantics: Returns the return type of - count. The return type is always - int. + Semantics: Returns the return type of + count. The return type is always + int.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/query/metafunctions/count_if.html b/doc/html/fusion/algorithms/query/metafunctions/count_if.html
    index a0b2fcb6..5b722547 100644
    --- a/doc/html/fusion/algorithms/query/metafunctions/count_if.html
    +++ b/doc/html/fusion/algorithms/query/metafunctions/count_if.html
    @@ -3,7 +3,7 @@
     
     count_if
     
    -
    +
     
     
     
    @@ -26,15 +26,15 @@
     
     
    - + Description

    - A metafunction that returns the result type of count_if + A metafunction that returns the result type of count_if given the sequence and predicate types.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.51. Parameters

    +

    Table 1.51. Parameters

    @@ -62,7 +62,7 @@ - + - + @@ -80,30 +80,30 @@
    SequenceSequence A model of Forward @@ -71,7 +71,7 @@ Operation's argument
    PredPred A unary function object Operation's argument
    - + Expression Semantics
    -result_of::count_if<Sequence, Pred>::type
    +result_of::count_if<Sequence, Pred>::type
     

    - Return type: int. + Return type: int.

    - Semantics: Returns the return type of - count_if. The return type is - always int. + Semantics: Returns the return type of + count_if. The return type is + always int.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/query/metafunctions/find.html b/doc/html/fusion/algorithms/query/metafunctions/find.html
    index 51823f66..49131bdc 100644
    --- a/doc/html/fusion/algorithms/query/metafunctions/find.html
    +++ b/doc/html/fusion/algorithms/query/metafunctions/find.html
    @@ -3,7 +3,7 @@
     
     find
     
    -
    +
     
     
     
    @@ -26,15 +26,15 @@
     
     
    - + Description

    - Returns the result type of find, + Returns the result type of find, given the sequence and search types.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.48. Parameters

    +

    Table 1.48. Parameters

    @@ -62,7 +62,7 @@ - + - + @@ -80,31 +80,31 @@
    SequenceSequence Model of Forward @@ -71,7 +71,7 @@ Operation's argument
    TT Any type Operation's argument
    - + Expression Semantics
    -result_of::find<Sequence, T>::type
    +result_of::find<Sequence, T>::type
     

    - Return type: A model of the same iterator - category as the iterators of Sequence. + Return type: A model of the same iterator + category as the iterators of Sequence.

    - Semantics: Returns an iterator to the - first element of type T - in Sequence, or result_of::end<Sequence>::type if there is no such element. + Semantics: Returns an iterator to the + first element of type T + in Sequence, or result_of::end<Sequence>::type if there is no such element.

    - + Complexity

    - Linear, at most result_of::size<Sequence>::value comparisons. + Linear, at most result_of::size<Sequence>::value comparisons.

    - + Header
    diff --git a/doc/html/fusion/algorithms/query/metafunctions/find_if.html b/doc/html/fusion/algorithms/query/metafunctions/find_if.html
    index 1fbcfbcd..f2020c20 100644
    --- a/doc/html/fusion/algorithms/query/metafunctions/find_if.html
    +++ b/doc/html/fusion/algorithms/query/metafunctions/find_if.html
    @@ -3,7 +3,7 @@
     
     find_if
     
    -
    +
     
     
     
    @@ -26,15 +26,15 @@
     
     
    - + Description

    - Returns the result type of find_if + Returns the result type of find_if given the sequence and predicate types.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.49. Parameters

    +

    Table 1.49. Parameters

    @@ -62,7 +62,7 @@ - + - + + model of MPL + Lambda Expression +
    SequenceSequence A model of Forward @@ -71,41 +71,43 @@ Operation's argument
    PredPred A - model of MPL Lambda Expression Operation's arguments
    - + Expression Semantics
    -result_of::find_if<Sequence, Pred>::type
    +result_of::find_if<Sequence, Pred>::type
     

    - Return type: A model of the same iterator - category as the iterators of Sequence. + Return type: A model of the same iterator + category as the iterators of Sequence.

    - Semantics: Returns an iterator to the - first element in Sequence - for which Pred evaluates - to true. Returns result_of::end<Sequence>::type if there is no such element. + Semantics: Returns an iterator to the + first element in Sequence + for which Pred evaluates + to true. Returns result_of::end<Sequence>::type if there is no such element.

    - + Complexity

    - Linear. At most result_of::size<Sequence>::value comparisons. + Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
    diff --git a/doc/html/fusion/algorithms/query/metafunctions/none.html b/doc/html/fusion/algorithms/query/metafunctions/none.html
    index 3b794020..d2cfecc8 100644
    --- a/doc/html/fusion/algorithms/query/metafunctions/none.html
    +++ b/doc/html/fusion/algorithms/query/metafunctions/none.html
    @@ -3,7 +3,7 @@
     
     none
     
    -
    +
     
     
     
    @@ -26,14 +26,14 @@
     
     
    - + Description

    - A metafunction returning the result type of none. + A metafunction returning the result type of none.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.47. Parameters

    +

    Table 1.47. Parameters

    @@ -61,7 +61,7 @@ - + - + @@ -82,34 +82,34 @@
    SequenceSequence A model of Forward @@ -70,9 +70,9 @@ Operation's argument
    FF A - model of unary Polymorphic Function Object
    - + Expression Semantics
    -result_of::none<Sequence, F>::type
    +result_of::none<Sequence, F>::type
     

    - Return type: bool. + Return type: bool.

    - Semantics: Returns the return type of - none given a sequence of type - Sequence and a unary - Semantics: Returns the return type of + none given a sequence of type + Sequence and a unary + Polymorphic Function - Object of type F. - The return type is always bool. + Object of type F. + The return type is always bool.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation.html b/doc/html/fusion/algorithms/transformation.html
    index da6c68f9..eb90fe6f 100644
    --- a/doc/html/fusion/algorithms/transformation.html
    +++ b/doc/html/fusion/algorithms/transformation.html
    @@ -3,7 +3,7 @@
     
     Transformation
     
    -
    +
     
     
     
    @@ -27,7 +27,49 @@
     Transformation
     
     

    The transformation algorithms create new sequences out of existing sequences @@ -39,14 +81,14 @@ [Note] Note -

    +

    As the transformation algorithms return views onto their input arguments, it is important that the lifetime of the input arguments is greater than the period during which you wish to use the results.

    - + Header

    diff --git a/doc/html/fusion/algorithms/transformation/functions.html b/doc/html/fusion/algorithms/transformation/functions.html
    index 49375ca0..3143ea86 100644
    --- a/doc/html/fusion/algorithms/transformation/functions.html
    +++ b/doc/html/fusion/algorithms/transformation/functions.html
    @@ -3,7 +3,7 @@
     
     Functions
     
    -
    +
     
     
     
    diff --git a/doc/html/fusion/algorithms/transformation/functions/clear.html b/doc/html/fusion/algorithms/transformation/functions/clear.html
    index 6527f7f9..369a6060 100644
    --- a/doc/html/fusion/algorithms/transformation/functions/clear.html
    +++ b/doc/html/fusion/algorithms/transformation/functions/clear.html
    @@ -3,7 +3,7 @@
     
     clear
     
    -
    +
     
     
     
    @@ -26,24 +26,24 @@
     
     
    - + Description

    - clear returns an empty sequence. + clear returns an empty sequence.

    - + Synposis
     template<
         typename Sequence
         >
    -typename result_of::clear<Sequence const>::type clear(Sequence const& seq);
    +typename result_of::clear<Sequence const>::type clear(Sequence const& seq);
     
    -

    Table 1.61. Parameters

    +

    Table 1.61. Parameters

    @@ -56,7 +56,7 @@ - +
    Description
    seqseq A model of Forward @@ -67,42 +67,42 @@
    - + Expression Semantics
    -clear(seq);
    +clear(seq);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Expression Semantics: Returns a sequence + Expression Semantics: Returns a sequence with no elements.

    - + Complexity

    Constant.

    - + Header
     #include <boost/fusion/algorithm/transformation/clear.hpp>
     
    - + Example
    -assert(clear(make_vector(1,2,3)) == make_vector());
    +assert(clear(make_vector(1,2,3)) == make_vector());
     
    diff --git a/doc/html/fusion/algorithms/transformation/functions/erase.html b/doc/html/fusion/algorithms/transformation/functions/erase.html index bfe74a05..e083ed1a 100644 --- a/doc/html/fusion/algorithms/transformation/functions/erase.html +++ b/doc/html/fusion/algorithms/transformation/functions/erase.html @@ -3,7 +3,7 @@ erase - + @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ those at a specified iterator, or between two iterators.

    - + Synposis
    @@ -42,7 +42,7 @@
         typename Sequence,
         typename First
         >
    -typename result_of::erase<Sequence const, First>::type erase(
    +typename result_of::erase<Sequence const, First>::type erase(
         Sequence const& seq, First const& it1);
     
     template<
    @@ -50,11 +50,11 @@
         typename First,
         typename Last
         >
    -typename result_of::erase<Sequence const, First, Last>::type erase(
    +typename result_of::erase<Sequence const, First, Last>::type erase(
         Sequence const& seq, First const& it1, Last const& it2);
     
    -

    Table 1.62. Parameters

    +

    Table 1.62. Parameters

    @@ -68,7 +68,7 @@ - + - + - - + -
    seqseq A model of Forward @@ -77,82 +77,82 @@ Operation's argument
    it1it1 A model of Forward Iterator Iterator into seq +Iterator into seq
    it2it2 A model of Forward Iterator Iterator into seq - after it1 +Iterator into seq + after it1
    - + Expression Semantics
    -erase(seq, pos);
    +erase(seq, pos);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence, containing - all the elements of seq - except the element at pos. + Semantics: Returns a new sequence, containing + all the elements of seq + except the element at pos.

    -erase(seq, first, last);
    +erase(seq, first, last);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence, with - all the elements of seq, - in their original order, except those in the range [first,last). + Semantics: Returns a new sequence, with + all the elements of seq, + 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>
     
    - + Example
    -const vector<int, double, char> vec(1, 2.0, 'c');
    -assert(erase(vec, next(begin(vec))) == make_vector(1, 'c'));
    -assert(erase(vec, next(begin(vec)), end(vec)) == make_vector(1));
    +const vector<int, double, char> vec(1, 2.0, 'c');
    +assert(erase(vec, next(begin(vec))) == make_vector(1, 'c'));
    +assert(erase(vec, next(begin(vec)), end(vec)) == make_vector(1));
     
    diff --git a/doc/html/fusion/algorithms/transformation/functions/erase_key.html b/doc/html/fusion/algorithms/transformation/functions/erase_key.html index 5749087b..234c96ce 100644 --- a/doc/html/fusion/algorithms/transformation/functions/erase_key.html +++ b/doc/html/fusion/algorithms/transformation/functions/erase_key.html @@ -3,7 +3,7 @@ erase_key - + @@ -26,20 +26,20 @@
    - + Description

    For an Associative - Sequence seq, + Sequence seq, returns a Forward Sequence containing all the elements of the original except those with a given key.

    - + Synposis
    @@ -50,7 +50,7 @@
     typename result_of::erase_key<Sequence const, Key>::type erase_key(Sequence const& seq);
     
    -

    Table 1.63. Parameters

    +

    Table 1.63. Parameters

    @@ -64,7 +64,7 @@ - + - + @@ -82,43 +82,43 @@
    seqseq A model of Associative @@ -73,7 +73,7 @@ Operation's argument
    KeyKey Any type Key to erase
    - + Expression Semantics
    -erase_key<Key>(seq);
    +erase_key<Key>(seq);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence, containing - all the elements of seq, - except those with key Key. + Semantics: Returns a new sequence, containing + all the elements of seq, + except those with key Key.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
     #include <boost/fusion/algorithm/transformation/erase_key.hpp>
     
    - + Example
    -assert(erase_key<int>(make_map<int, long>('a', 'b')) == make_map<long>('b'));
    +assert(erase_key<int>(make_map<int, long>('a', 'b')) == make_map<long>('b'));
     
    diff --git a/doc/html/fusion/algorithms/transformation/functions/filter.html b/doc/html/fusion/algorithms/transformation/functions/filter.html index 36fbced3..c1d7b498 100644 --- a/doc/html/fusion/algorithms/transformation/functions/filter.html +++ b/doc/html/fusion/algorithms/transformation/functions/filter.html @@ -3,7 +3,7 @@ filter - + @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ the elements of a specified type.

    - + Synopsis
    @@ -42,10 +42,10 @@
         typename T,
         typename Sequence
         >
    -typename result_of::filter<Sequence const, T>::type filter(Sequence const& seq);
    +typename result_of::filter<Sequence const, T>::type filter(Sequence const& seq);
     
    -

    Table 1.52. Parameters

    +

    Table 1.52. Parameters

    @@ -59,7 +59,7 @@ - + - + @@ -77,45 +77,45 @@
    seqseq A model of Forward @@ -68,7 +68,7 @@ Operation's argument
    TT Any type The type to retain
    - + Expression Semantics
    -filter<T>(seq);
    +filter<T>(seq);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence containing - all the elements of seq - of type T. Equivalent - to filter_if<boost::same_type<_, T> >(seq). + Semantics: Returns a sequence containing + all the elements of seq + of type T. Equivalent + 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>
     
    - + Example
    -const vector<int,int,long,long> vec(1,2,3,4);
    -assert(filter<int>(vec) == make_vector(1,2));
    +const vector<int,int,long,long> vec(1,2,3,4);
    +assert(filter<int>(vec) == make_vector(1,2));
     
    diff --git a/doc/html/fusion/algorithms/transformation/functions/filter_if.html b/doc/html/fusion/algorithms/transformation/functions/filter_if.html index 3bec7204..6c1844b6 100644 --- a/doc/html/fusion/algorithms/transformation/functions/filter_if.html +++ b/doc/html/fusion/algorithms/transformation/functions/filter_if.html @@ -3,7 +3,7 @@ filter_if - + @@ -26,16 +26,16 @@
    - + Description

    - For a given sequence, filter_if returns a new sequences - containing only the elements with types for which a given MPL Lambda - Expression evaluates to boost::mpl::true_. + For a given sequence, filter_if returns a new sequences + containing only the elements with types for which a given MPL + Lambda Expression evaluates to boost::mpl::true_.

    - + Synopsis
    @@ -43,10 +43,10 @@
         typename Pred,
         typename Sequence
         >
    -typename result_of::filter_if<Sequence const, Pred>::type filter_if(Sequence const& seq);
    +typename result_of::filter_if<Sequence const, Pred>::type filter_if(Sequence const& seq);
     
    -

    Table 1.53. Parameters

    +

    Table 1.53. Parameters

    @@ -60,7 +60,7 @@ - + - + - + unary MPL + Lambda Expression + +
    seqseq A model of Forward @@ -69,56 +69,57 @@ Operation's argument
    PredPred A - unary MPL Lambda ExpressionThe predicate to filter - byThe predicate to filter by
    - + Expression Semantics
    -filter_if<Pred>(seq);
    +filter_if<Pred>(seq);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence containing - all the elements of seq - with types for which Pred - evaluates to boost::mpl::true_. The order of the retained elements + Semantics: Returns a sequence containing + all the elements of seq + with types for which Pred + evaluates to boost::mpl::true_. The order of the retained elements 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>
     
    - + Example
    -const vector<int,int,double,double> vec(1,2,3.0,4.0);
    -assert(filter_if<is_integral<mpl::_> >(vec) == make_vector(1,2));
    +const vector<int,int,double,double> vec(1,2,3.0,4.0);
    +assert(filter_if<is_integral<mpl::_> >(vec) == make_vector(1,2));
     
    diff --git a/doc/html/fusion/algorithms/transformation/functions/insert.html b/doc/html/fusion/algorithms/transformation/functions/insert.html index 05cf07ef..d03f78e5 100644 --- a/doc/html/fusion/algorithms/transformation/functions/insert.html +++ b/doc/html/fusion/algorithms/transformation/functions/insert.html @@ -3,7 +3,7 @@ insert - + @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ element inserted the position described by a given iterator.

    - + Synposis
    @@ -46,7 +46,7 @@
     unspecified insert(Sequence const& seq, Pos const& pos, T const& t);
     
    -

    Table 1.64. Parameters

    +

    Table 1.64. Parameters

    @@ -60,7 +60,7 @@ - + - + - + @@ -87,46 +87,46 @@
    seqseq A model of Forward @@ -69,7 +69,7 @@ Operation's argument
    pospos A model of Forward @@ -78,7 +78,7 @@ The position to insert at
    tt Any type The value to insert
    - + Expression Semantics
    -insert(seq, p, t);
    +insert(seq, p, t);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence, containing - all the elements of seq, + Semantics: Returns a new sequence, containing + all the elements of seq, in their original order, and a new element with the type and value of - t inserted at iterator - pos. + t inserted at iterator + pos.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
     #include <boost/fusion/algorithm/transformation/insert.hpp>
     
    - + Example
    -const vector<int,int> vec(1,2);
    -assert(insert(vec, next(begin(vec)), 3) == make_vector(1,3,2));
    +const vector<int,int> vec(1,2);
    +assert(insert(vec, next(begin(vec)), 3) == make_vector(1,3,2));
     
    diff --git a/doc/html/fusion/algorithms/transformation/functions/insert_range.html b/doc/html/fusion/algorithms/transformation/functions/insert_range.html index 87e5f3e3..818d035b 100644 --- a/doc/html/fusion/algorithms/transformation/functions/insert_range.html +++ b/doc/html/fusion/algorithms/transformation/functions/insert_range.html @@ -3,7 +3,7 @@ insert_range - + @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ iterator.

    - + Synposis
    @@ -43,11 +43,11 @@
         typename Pos,
         typename Range
         >
    -typename result_of::insert_range<Sequence const, Pos, Range>::type insert_range(
    +typename result_of::insert_range<Sequence const, Pos, Range>::type insert_range(
         Sequence const& seq, Pos const& pos, Range const& range);
     
    -

    Table 1.65. Parameters

    +

    Table 1.65. Parameters

    @@ -61,7 +61,7 @@ - + - + - +
    seqseq A model of Forward @@ -70,7 +70,7 @@ Operation's argument
    pospos A model of Forward @@ -79,7 +79,7 @@ The position to insert at
    rangerange A model of Forward @@ -91,46 +91,46 @@
    - + Expression Semantics
    -insert(seq, pos, range);
    +insert(seq, pos, range);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence, containing - all the elements of seq, - and the elements of range - inserted at iterator pos. + Semantics: Returns a new sequence, containing + all the elements of seq, + and the elements of range + inserted at iterator pos. 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>
     
    - + Example
    -const vector<int,int> vec(1,2);
    -assert(insert_range(vec, next(begin(vec)), make_vector(3,4)) == make_vector(1,3,4,2));
    +const vector<int,int> vec(1,2);
    +assert(insert_range(vec, next(begin(vec)), make_vector(3,4)) == make_vector(1,3,4,2));
     
    diff --git a/doc/html/fusion/algorithms/transformation/functions/join.html b/doc/html/fusion/algorithms/transformation/functions/join.html index 97d8e1c6..b4aa0a12 100644 --- a/doc/html/fusion/algorithms/transformation/functions/join.html +++ b/doc/html/fusion/algorithms/transformation/functions/join.html @@ -3,7 +3,7 @@ join - + @@ -26,7 +26,7 @@
    - + Description

    @@ -34,17 +34,17 @@ first followed by the elements of the second.

    - + Synopsis
     template<
         typename LhSequence,
         typename RhSequence>
    -typename result_of::join<LhSequence, RhSequence>::type join(LhSequence const& lhs, RhSequence const& rhs);
    +typename result_of::join<LhSequence, RhSequence>::type join(LhSequence const& lhs, RhSequence const& rhs);
     
    -

    Table 1.66. Parameters

    +

    Table 1.66. Parameters

    @@ -58,7 +58,7 @@ - + - +
    lhslhs A model of Forward @@ -67,7 +67,7 @@ Operation's argument
    rhsrhs A model of Forward @@ -79,46 +79,46 @@
    - + Expression Semantics
    -join(lhs, rhs);
    +join(lhs, rhs);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence containing - all the elements of lhs - followed by all the elements of rhs. + Semantics: Returns a sequence containing + all the elements of lhs + followed by all the elements of rhs. The order of th elements is preserved.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
     #include <boost/fusion/algorithm/transformation/join.hpp>
     
    - + Example
    -vector<int,char> v1(1, 'a');
    -vector<int,char> v2(2, 'b');
    -assert(join(v1, v2) == make_vector(1,'a',2,'b'));
    +vector<int,char> v1(1, 'a');
    +vector<int,char> v2(2, 'b');
    +assert(join(v1, v2) == make_vector(1,'a',2,'b'));
     
    diff --git a/doc/html/fusion/algorithms/transformation/functions/pop_back.html b/doc/html/fusion/algorithms/transformation/functions/pop_back.html index 22304598..1968618e 100644 --- a/doc/html/fusion/algorithms/transformation/functions/pop_back.html +++ b/doc/html/fusion/algorithms/transformation/functions/pop_back.html @@ -3,7 +3,7 @@ pop_back - + @@ -26,24 +26,24 @@
    - + Description

    Returns a new sequence, with the last element of the original removed.

    - + Synopsis
     template<
         typename Sequence
         >
    -typename result_of::pop_back<Sequence const>::type pop_back(Sequence const& seq);
    +typename result_of::pop_back<Sequence const>::type pop_back(Sequence const& seq);
     
    -

    Table 1.68. Parameters

    +

    Table 1.68. Parameters

    @@ -56,7 +56,7 @@ - +
    Description
    seqseq A model of Forward @@ -67,44 +67,44 @@
    - + Expression Semantics
    -pop_back(seq);
    +pop_back(seq);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence containing - all the elements of seq, + Semantics: Returns a new sequence containing + all the elements of seq, except the last element. The elements in the new sequence are in the - same order as they were in seq. + 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>
     
    - + Example
    -assert(___pop_back__(make_vector(1,2,3)) == make_vector(1,2));
    +assert(___pop_back__(make_vector(1,2,3)) == make_vector(1,2));
     
    diff --git a/doc/html/fusion/algorithms/transformation/functions/pop_front.html b/doc/html/fusion/algorithms/transformation/functions/pop_front.html index 2dc8a28b..e87c0e38 100644 --- a/doc/html/fusion/algorithms/transformation/functions/pop_front.html +++ b/doc/html/fusion/algorithms/transformation/functions/pop_front.html @@ -3,7 +3,7 @@ pop_front - + @@ -26,24 +26,24 @@
    - + Description

    Returns a new sequence, with the first element of the original removed.

    - + Synopsis
     template<
         typename Sequence
         >
    -typename result_of::pop_front<Sequence const>::type pop_front(Sequence const& seq);
    +typename result_of::pop_front<Sequence const>::type pop_front(Sequence const& seq);
     
    -

    Table 1.69. Parameters

    +

    Table 1.69. Parameters

    @@ -56,7 +56,7 @@ - +
    Description
    seqseq A model of Forward @@ -67,44 +67,44 @@
    - + Expression Semantics
    -pop_front(seq);
    +pop_front(seq);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence containing - all the elements of seq, + Semantics: Returns a new sequence containing + all the elements of seq, except the first element. The elements in the new sequence are in the - same order as they were in seq. + 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>
     
    - + Example
    -assert(pop_front(make_vector(1,2,3)) == make_vector(2,3));
    +assert(pop_front(make_vector(1,2,3)) == make_vector(2,3));
     
    diff --git a/doc/html/fusion/algorithms/transformation/functions/push_back.html b/doc/html/fusion/algorithms/transformation/functions/push_back.html index d2b5ca54..3d4b08fe 100644 --- a/doc/html/fusion/algorithms/transformation/functions/push_back.html +++ b/doc/html/fusion/algorithms/transformation/functions/push_back.html @@ -3,7 +3,7 @@ push_back - + @@ -26,14 +26,14 @@
    - + Description

    Returns a new sequence with an element added at the end.

    - + Synopsis
    @@ -41,11 +41,11 @@
         typename Sequence,
         typename T
         >
    -typename result_of::push_back<Sequence, T>::type push_back(
    +typename result_of::push_back<Sequence, T>::type push_back(
         Sequence const& seq, T const& t);
     
    -

    Table 1.70. Parameters

    +

    Table 1.70. Parameters

    @@ -59,7 +59,7 @@ - + - + @@ -77,44 +77,44 @@
    seqseq A model of Forward @@ -68,7 +68,7 @@ Operation's argument
    tt Any type The value to add to the end
    - + Expression Semantics
    -push_back(seq, t);
    +push_back(seq, t);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence, containing - all the elements of seq, - and new element t appended - to the end. The elements are in the same order as they were in seq. + Semantics: Returns a new sequence, containing + all the elements of seq, + and new element t appended + 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>
     
    - + Example
    -assert(push_back(make_vector(1,2,3),4) == make_vector(1,2,3,4));
    +assert(push_back(make_vector(1,2,3),4) == make_vector(1,2,3,4));
     
    diff --git a/doc/html/fusion/algorithms/transformation/functions/push_front.html b/doc/html/fusion/algorithms/transformation/functions/push_front.html index 99c409be..a85bd7d3 100644 --- a/doc/html/fusion/algorithms/transformation/functions/push_front.html +++ b/doc/html/fusion/algorithms/transformation/functions/push_front.html @@ -3,7 +3,7 @@ push_front - + @@ -26,14 +26,14 @@
    - + Description

    Returns a new sequence with an element added at the beginning.

    - + Synopsis
    @@ -41,11 +41,11 @@
         typename Sequence,
         typename T
         >
    -typename result_of::push_front<Sequence, T>::type push_front(
    +typename result_of::push_front<Sequence, T>::type push_front(
         Sequence const& seq, T const& t);
     
    -

    Table 1.71. Parameters

    +

    Table 1.71. Parameters

    @@ -59,7 +59,7 @@ - + - + @@ -77,45 +77,45 @@
    seqseq A model of Forward @@ -68,7 +68,7 @@ Operation's argument
    tt Any type The value to add to the beginning
    - + Expression Semantics
    -push_back(seq, t);
    +push_back(seq, t);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence, containing - all the elements of seq, - and new element t appended + Semantics: Returns a new sequence, containing + all the elements of seq, + and new element t appended to the beginning. The elements are in the same order as they were in - seq. + seq.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
     #include <boost/fusion/algorithm/transformation/push_front.hpp>
     
    - + Example
    -assert(push_front(make_vector(1,2,3),0) == make_vector(0,1,2,3));
    +assert(push_front(make_vector(1,2,3),0) == make_vector(0,1,2,3));
     
    diff --git a/doc/html/fusion/algorithms/transformation/functions/remove.html b/doc/html/fusion/algorithms/transformation/functions/remove.html index 0aa86bb0..c6db3fd3 100644 --- a/doc/html/fusion/algorithms/transformation/functions/remove.html +++ b/doc/html/fusion/algorithms/transformation/functions/remove.html @@ -3,7 +3,7 @@ remove - + @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ except those of a given type.

    - + Synopsis
    @@ -42,10 +42,10 @@
         typename T,
         typename Sequence
         >
    -typename result_of::remove<Sequence const, T>::type replace(Sequence const& seq);
    +typename result_of::remove<Sequence const, T>::type replace(Sequence const& seq);
     
    -

    Table 1.58. Parameters

    +

    Table 1.58. Parameters

    @@ -59,7 +59,7 @@ - + - + @@ -77,45 +77,45 @@
    seqseq A model of Forward @@ -68,7 +68,7 @@ Operation's argument
    TT Any type Type to remove
    - + Expression Semantics
    -remove<T>(seq);
    +remove<T>(seq);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence, containing - all the elements of seq, - in their original order, except those of type T. - Equivalent to remove_if<boost::is_same<_,T> >(seq). + Semantics: Returns a new sequence, containing + all the elements of seq, + in their original order, except those of type T. + 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>
     
    - + Example
    -const vector<int,double> vec(1,2.0);
    -assert(remove<double>(vec) == make_vector(1));
    +const vector<int,double> vec(1,2.0);
    +assert(remove<double>(vec) == make_vector(1));
     
    diff --git a/doc/html/fusion/algorithms/transformation/functions/remove_if.html b/doc/html/fusion/algorithms/transformation/functions/remove_if.html index fedfd384..5b215f20 100644 --- a/doc/html/fusion/algorithms/transformation/functions/remove_if.html +++ b/doc/html/fusion/algorithms/transformation/functions/remove_if.html @@ -3,7 +3,7 @@ remove_if - + @@ -26,15 +26,15 @@
    - + Description

    Returns a new sequence, containing all the elements of the original except - those where a given unary function object evaluates to true. + those where a given unary function object evaluates to true.

    - + Synopsis
    @@ -42,10 +42,10 @@
         typename Pred,
         typename Sequence
         >
    -typename result_of::remove_if<Sequence const, Pred>::type remove_if(Sequence const& seq);
    +typename result_of::remove_if<Sequence const, Pred>::type remove_if(Sequence const& seq);
     
    -

    Table 1.59. Parameters

    +

    Table 1.59. Parameters

    @@ -59,7 +59,7 @@ - + - + + model of unary MPL + Lambda Expression +
    seqseq A model of Forward @@ -68,55 +68,57 @@ Operation's argument
    PredPred A - model of unary MPL Lambda Expression Removal predicate
    - + Expression Semantics
    -remove_if<Pred>(seq);
    +remove_if<Pred>(seq);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence, containing - all the elements of seq, + Semantics: Returns a new sequence, containing + all the elements of seq, in their original order, except those elements with types for which - Pred evaluates to boost::mpl::true_. Equivalent to filter<boost::mpl::not_<Pred> - >(seq). + Pred evaluates to boost::mpl::true_. Equivalent to filter<boost::mpl::not_<Pred> + >(seq).

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
     #include <boost/fusion/algorithm/transformation/remove_if.hpp>
     
    - + Example
    -const vector<int,double> vec(1,2.0);
    -assert(remove_if<is_floating_point<mpl::_> >(vec) == make_vector(1));
    +const vector<int,double> vec(1,2.0);
    +assert(remove_if<is_floating_point<mpl::_> >(vec) == make_vector(1));
     
    diff --git a/doc/html/fusion/algorithms/transformation/functions/replace.html b/doc/html/fusion/algorithms/transformation/functions/replace.html index edae3b05..d9c93a0d 100644 --- a/doc/html/fusion/algorithms/transformation/functions/replace.html +++ b/doc/html/fusion/algorithms/transformation/functions/replace.html @@ -3,7 +3,7 @@ replace - + @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ a new value.

    - + Synopsis
    @@ -42,11 +42,11 @@
         typename Sequence,
         typename T
         >
    -typename result_of::replace<Sequence const, T>::type replace(
    +typename result_of::replace<Sequence const, T>::type replace(
         Sequence const& seq, T const& old_value, T const& new_value);
     
    -

    Table 1.56. Parameters

    +

    Table 1.56. Parameters

    @@ -60,27 +60,27 @@ - + - + - + @@ -89,44 +89,44 @@
    seqseq A model of Forward - Sequence, e == old_value - is a valid expression, convertible to bool, - for each element e - in seq with type - convertible to T + Sequence, e == old_value + is a valid expression, convertible to bool, + for each element e + in seq with type + convertible to T Operation's argument
    old_valueold_value Any type Value to replace
    new_valuenew_value Any type Replacement value
    - + Expression Semantics
    -replace(seq, old_value, new_value);
    +replace(seq, old_value, new_value);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence with - all the values of seq - with new_value assigned - to elements with the same type and equal to old_value. + Semantics: Returns a new sequence with + all the values of seq + with new_value assigned + 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>
     
    - + Example
    -assert(replace(make_vector(1,2), 2, 3) == make_vector(1,3));
    +assert(replace(make_vector(1,2), 2, 3) == make_vector(1,3));
     
    diff --git a/doc/html/fusion/algorithms/transformation/functions/replace_if.html b/doc/html/fusion/algorithms/transformation/functions/replace_if.html index 84209980..2ecf8ca4 100644 --- a/doc/html/fusion/algorithms/transformation/functions/replace_if.html +++ b/doc/html/fusion/algorithms/transformation/functions/replace_if.html @@ -3,7 +3,7 @@ replace_if - + @@ -26,16 +26,16 @@
    - + Description

    Replaces each element of a given sequence for which an unary function - object evaluates to true + object evaluates to true replaced with a new value.

    - + Synopsis
    @@ -43,11 +43,11 @@
         typename Sequence,
         typename F,
         typename T>
    -typename result_of::replace_if<Sequence const, F, T>::type replace_if(
    +typename result_of::replace_if<Sequence const, F, T>::type replace_if(
         Sequence const& seq, F f, T const& new_value);
     
    -

    Table 1.57. Parameters

    +

    Table 1.57. Parameters

    @@ -61,7 +61,7 @@ - + - + - + @@ -88,41 +88,41 @@
    seqseq A model of Forward @@ -70,16 +70,16 @@ Operation's argument
    ff A - function object for which f(e) is a valid expression, convertible - to bool, for each element - e in seq + function object for which f(e) is a valid expression, convertible + to bool, for each element + e in seq Operation's argument
    new_valuenew_value Any type Replacement value
    - + Expression Semantics
    -replace_if(seq, f, new_value);
    +replace_if(seq, f, new_value);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence with - all the elements of seq, - with new_value assigned - to each element for which f - evaluates to true. + Semantics: Returns a new sequence with + all the elements of seq, + with new_value assigned + to each element for which f + evaluates to true.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
     #include <boost/fusion/algorithm/transformation/replace_if.hpp>
     
    - + Example
    @@ -135,7 +135,7 @@
         }
     };
     ...
    -assert(replace_if(make_vector(1,2), odd(), 3) == make_vector(3,2));
    +assert(replace_if(make_vector(1,2), odd(), 3) == make_vector(3,2));
     
    diff --git a/doc/html/fusion/algorithms/transformation/functions/reverse.html b/doc/html/fusion/algorithms/transformation/functions/reverse.html index be62892a..83023aae 100644 --- a/doc/html/fusion/algorithms/transformation/functions/reverse.html +++ b/doc/html/fusion/algorithms/transformation/functions/reverse.html @@ -3,7 +3,7 @@ reverse - + @@ -26,24 +26,24 @@
    - + Description

    Returns a new sequence with the elements of the original in reverse order.

    - + Synposis
     template<
         typename Sequence
         >
    -typename result_of::reverse<Sequence const>::type reverse(Sequence const& seq);
    +typename result_of::reverse<Sequence const>::type reverse(Sequence const& seq);
     
    -

    Table 1.60. Parameters

    +

    Table 1.60. Parameters

    @@ -56,7 +56,7 @@ - +
    Description
    seqseq A model of Bidirectional @@ -67,43 +67,43 @@
    - + Expression Semantics
    -reverse(seq);
    +reverse(seq);
     

    - Return type: A model of Return type: A model of Bidirectional Sequence.

    - Semantics: Returns a new sequence containing - all the elements of seq + Semantics: Returns a new sequence containing + all the elements of seq in reverse order.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
     #include <boost/fusion/algorithm/transformation/reverse.hpp>
     
    - + Example
    -assert(reverse(make_vector(1,2,3)) == make_vector(3,2,1));
    +assert(reverse(make_vector(1,2,3)) == make_vector(3,2,1));
     
    diff --git a/doc/html/fusion/algorithms/transformation/functions/transform.html b/doc/html/fusion/algorithms/transformation/functions/transform.html index 009890d6..f98f369b 100644 --- a/doc/html/fusion/algorithms/transformation/functions/transform.html +++ b/doc/html/fusion/algorithms/transformation/functions/transform.html @@ -3,7 +3,7 @@ transform - + @@ -26,19 +26,19 @@
    - + Description

    - For a sequence seq and - seq and + Polymorphic Function - Object F, transform returns a new sequence with - elements created by applying F - to each element of seq. + Object F, transform returns a new sequence with + elements created by applying F + to each element of seq.

    - + Unary version synopsis
    @@ -47,11 +47,11 @@ typenameSequence,typenameF> -typenameresult_of::transform<Sequenceconst,F>::typetransform( +typenameresult_of::transform<Sequenceconst,F>::typetransform(Sequenceconst&seq,Ff);
    -

    Table 1.54. Parameters

    +

    Table 1.54. Parameters

    @@ -65,7 +65,7 @@ - + - + @@ -88,25 +88,25 @@
    seqseq A model of Forward @@ -74,12 +74,12 @@ Operation's argument
    ff A - model of unary Polymorphic - Function Object where f(e) is a valid expression for each element - e of seq + Function Object where f(e) is a valid expression for each element + e of seq Transformation function
    - + Expression Semantics
    -transform(seq, f);
    +transform(seq, f);
     

    - Return type: A model of Return type: A model of Forward Sequence

    - Semantics: Returns a new sequence, containing - the return values of f(e) for each element e - within seq. + Semantics: Returns a new sequence, containing + the return values of f(e) for each element e + within seq.

    - + Binary version synopsis
    @@ -116,11 +116,11 @@ typename Sequence2, typename F > -typename result_of::transform<Sequence1 const, Sequence2 const, F>::type transform( +typename result_of::transform<Sequence1 const, Sequence2 const, F>::type transform( Sequence1 const& seq1, Sequence2 const& seq2, F f);
    -

    Table 1.55. Parameters

    +

    Table 1.55. Parameters

    @@ -134,7 +134,7 @@ - + - + - + @@ -166,31 +166,31 @@
    seq1seq1 A model of Forward @@ -143,7 +143,7 @@ Operation's argument
    seq2seq2 A model of Forward @@ -152,13 +152,13 @@ Operation's argument
    ff A - model of binary Polymorphic - Function Object where f(e1, e2) is a valid expression for each pair - of elements e1 and - e2 of seq1 and seq2 + Function Object where f(e1, e2) is a valid expression for each pair + of elements e1 and + e2 of seq1 and seq2 respectively Transformation function

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence, containing - the return values of f(e1, e2) for each pair of elements e1 and e2 - within seq1 and seq2 respectively. + Semantics: Returns a new sequence, containing + the return values of f(e1, e2) for each pair of elements e1 and e2 + within seq1 and seq2 respectively.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
     #include <boost/fusion/algorithm/transformation/transform.hpp>
     
    - + Example
    @@ -209,7 +209,7 @@
         };
     };
     ...
    -assert(transform(make_vector(1,2,3), triple()) == make_vector(3,6,9));
    +assert(transform(make_vector(1,2,3), triple()) == make_vector(3,6,9));
     
    diff --git a/doc/html/fusion/algorithms/transformation/functions/zip.html b/doc/html/fusion/algorithms/transformation/functions/zip.html index 0afe3fe8..1a46ccb2 100644 --- a/doc/html/fusion/algorithms/transformation/functions/zip.html +++ b/doc/html/fusion/algorithms/transformation/functions/zip.html @@ -3,7 +3,7 @@ zip - + @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ of the members of the component sequences.

    - + Synopsis
    @@ -44,11 +44,11 @@
         ...
         typename SequenceN
         >
    -typename result_of::zip<Sequence1, Sequence2, ... SequenceN>::type 
    +typename result_of::zip<Sequence1, Sequence2, ... SequenceN>::type 
     zip(Sequence1 const& seq1, Sequence2 const& seq2, ... SequenceN const& seqN);
     
    -

    Table 1.67. Parameters

    +

    Table 1.67. Parameters

    @@ -62,7 +62,7 @@
    -seq1 to seqN +seq1 to seqN Each sequence is a model of
    - + Expression Semantics
    -zip(seq1, seq2, ... seqN);
    +zip(seq1, seq2, ... seqN);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence containing - tuples of elements from sequences seq1 - to seqN. For example, - applying zip to tuples (1, 2, 3) - and ('a', 'b', - 'c') - would return ((1, 'a'),(2, 'b'),(3, - 'c')) + Semantics: Returns a sequence containing + tuples of elements from sequences seq1 + to seqN. For example, + applying zip to tuples (1, 2, 3) + and ('a', 'b', + 'c') + would return ((1, 'a'),(2, 'b'),(3, + 'c'))

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
     #include <boost/fusion/algorithm/transformation/zip.hpp>
     
    - + Example
    -vector<int,char> v1(1, 'a');
    -vector<int,char> v2(2, 'b');
    -assert(zip(v1, v2) == make_vector(make_vector(1, 2),make_vector('a', 'b'));
    +vector<int,char> v1(1, 'a');
    +vector<int,char> v2(2, 'b');
    +assert(zip(v1, v2) == make_vector(make_vector(1, 2),make_vector('a', 'b'));
     
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions.html b/doc/html/fusion/algorithms/transformation/metafunctions.html index d9dbdf55..adc5b67d 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions.html @@ -3,7 +3,7 @@ Metafunctions - + diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/clear.html b/doc/html/fusion/algorithms/transformation/metafunctions/clear.html index e6f50c6f..3f89f8f8 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions/clear.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions/clear.html @@ -3,7 +3,7 @@ clear - + @@ -26,15 +26,15 @@
    - + Description

    - Returns the result type of clear, given the input sequence + Returns the result type of clear, given the input sequence type.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.80. Parameters

    +

    Table 1.80. Parameters

    @@ -60,7 +60,7 @@ - + @@ -68,30 +68,30 @@
    Description
    SequenceSequence Any type Operation's argument
    - + Expression Semantics
    -result_of::clear<Sequence>::type
    +result_of::clear<Sequence>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns an empty sequence. + Semantics: Returns an empty sequence.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/erase.html b/doc/html/fusion/algorithms/transformation/metafunctions/erase.html
    index 635dd8c4..1e498c8c 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/erase.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/erase.html
    @@ -3,7 +3,7 @@
     
     erase
     
    -
    +
     
     
     
    @@ -26,15 +26,15 @@
     
     

    - Returns the result type of erase, given the input sequence + Returns the result type of erase, given the input sequence and range delimiting iterator types.

    - + Description
    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.81. Parameters

    +

    Table 1.81. Parameters

    @@ -62,7 +62,7 @@ - + - + - +
    SequenceSequence A model of Forward @@ -71,7 +71,7 @@ Operation's argument
    It1It1 A model of Forward @@ -80,7 +80,7 @@ Operation's argument
    It2It2 A model of Forward @@ -92,44 +92,44 @@
    - + Expression Semantics
    -result_of::erase<Sequence, It1>::type
    +result_of::erase<Sequence, It1>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence with - the element at It1 removed. + Semantics: Returns a new sequence with + the element at It1 removed.

    -result_of::erase<Sequence, It1, It2>::type
    +result_of::erase<Sequence, It1, It2>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence with - the elements between It1 - and It2 removed. + Semantics: Returns a new sequence with + the elements between It1 + and It2 removed.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html b/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html
    index 8783615f..2b02d7bf 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html
    @@ -3,7 +3,7 @@
     
     erase_key
     
    -
    +
     
     
     
    @@ -26,15 +26,15 @@
     
     
    - + Description

    - Returns the result type of erase_key, given the sequence + Returns the result type of erase_key, given the sequence and key types.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.82. Parameters

    +

    Table 1.82. Parameters

    @@ -62,7 +62,7 @@ - + - + @@ -80,32 +80,32 @@
    SequenceSequence A model of Associative @@ -71,7 +71,7 @@ Operation's argument
    KeyKey Any type Key type
    - + Expression Semantics
    -result_of::erase_key<Sequence, Key>::type
    +result_of::erase_key<Sequence, Key>::type
     

    - Return type: A model of Return type: A model of Associative Sequence.

    - Semantics: Returns a sequence with the - elements of Sequence, - except those with key Key. + Semantics: Returns a sequence with the + elements of Sequence, + except those with key Key.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/filter.html b/doc/html/fusion/algorithms/transformation/metafunctions/filter.html
    index 9aef964b..2b4b2df4 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/filter.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/filter.html
    @@ -3,7 +3,7 @@
     
     filter
     
    -
    +
     
     
     
    @@ -26,15 +26,15 @@
     
     
    - + Description

    - Returns the result type of filter given the sequence type + Returns the result type of filter given the sequence type and type to retain.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.72. Parameter

    +

    Table 1.72. Parameter

    @@ -62,7 +62,7 @@ - + - + @@ -80,34 +80,34 @@
    SequenceSequence A model of Forward @@ -71,7 +71,7 @@ Operation's argument
    TT Any type Type to retain
    - + Expression Semantics
    -result_of::filter<Sequence, T>::type
    +result_of::filter<Sequence, T>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence containing - the elements of Sequence - that are of type T. Equivalent - to result_of::filter_if<Sequence, - boost::is_same<mpl::_, T> >::type. + Semantics: Returns a sequence containing + the elements of Sequence + that are of type T. Equivalent + to result_of::filter_if<Sequence, + boost::is_same<mpl::_, T> >::type.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html
    index 1dc865d8..45bb3be3 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html
    @@ -3,7 +3,7 @@
     
     filter_if
     
    -
    +
     
     
     
    @@ -26,15 +26,16 @@
     
     
    - + Description

    - Returns the result type of filter_if given the sequence - and unary MPL Lambda Expression predicate type. + Returns the result type of filter_if given the sequence + and unary MPL + Lambda Expression predicate type.

    - + Synopsis
    @@ -48,7 +49,7 @@
     };
     
    -

    Table 1.73. Parameter

    +

    Table 1.73. Parameter

    @@ -62,7 +63,7 @@ - + - + + unary MPL + Lambda Expression +
    SequenceSequence A model of Forward @@ -71,42 +72,44 @@ Operation's argument
    PredPred A - unary MPL Lambda Expression Type to retain
    - + Expression Semantics
    -result_of::filter_if<Sequence, Pred>::type
    +result_of::filter_if<Sequence, Pred>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence containing - the elements of Sequence - for which Pred evaluates - to boost::mpl::true_. + Semantics: Returns a sequence containing + the elements of Sequence + for which Pred evaluates + to boost::mpl::true_.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/insert.html b/doc/html/fusion/algorithms/transformation/metafunctions/insert.html
    index 0295bdcb..2d57d8b4 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/insert.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/insert.html
    @@ -3,7 +3,7 @@
     
     insert
     
    -
    +
     
     
     
    @@ -26,15 +26,15 @@
     
     
    - + Description

    - Returns the result type of insert, given the sequence, + Returns the result type of insert, given the sequence, position iterator and insertion types.

    - + Synopsis
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.83. Parameters

    +

    Table 1.83. Parameters

    @@ -63,7 +63,7 @@ - + - + - + @@ -90,33 +90,33 @@
    SequenceSequence A model of Forward @@ -72,7 +72,7 @@ Operation's argument
    PositionPosition A model of Forward @@ -81,7 +81,7 @@ Operation's argument
    TT Any type Operation's argument
    - + Expression Semantics
    -result_of::insert<Sequence, Position, T>::type
    +result_of::insert<Sequence, Position, T>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence with an - element of type T inserted - at position Position - in Sequence. + Semantics: Returns a sequence with an + element of type T inserted + at position Position + in Sequence.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html b/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html
    index 5238abb0..3f3ca8c7 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html
    @@ -3,7 +3,7 @@
     
     insert_range
     
    -
    +
     
     
     
    @@ -26,15 +26,15 @@
     
     
    - + Description

    - Returns the result type of insert_range, given the input + Returns the result type of insert_range, given the input sequence, position iterator and insertion range types.

    - + Synopsis
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.84. Parameters

    +

    Table 1.84. Parameters

    @@ -63,7 +63,7 @@ - + - + - +
    SequenceSequence A model of Forward @@ -72,7 +72,7 @@ Operation's argument
    PositionPosition A model of Forward @@ -81,7 +81,7 @@ Operation's argument
    RangeRange A model of Forward @@ -93,33 +93,33 @@
    - + Expression Semantics
    -result_of::insert_range<Sequence, Position, Range>::type
    +result_of::insert_range<Sequence, Position, Range>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence with the - elements of Range inserted - at position Position - into Sequence. + Semantics: Returns a sequence with the + elements of Range inserted + at position Position + into Sequence.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/join.html b/doc/html/fusion/algorithms/transformation/metafunctions/join.html
    index 8ff354de..a03f6d07 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/join.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/join.html
    @@ -3,7 +3,7 @@
     
     join
     
    -
    +
     
     
     
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the result of joining 2 sequences, given the sequence types.

    - + Synopsis
    @@ -47,33 +47,33 @@
     };
     
    - + Expression Semantics
    -result_of::join<LhSequence, RhSequence>::type
    +result_of::join<LhSequence, RhSequence>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence containing - the elements of LhSequence - followed by the elements of RhSequence. + Semantics: Returns a sequence containing + the elements of LhSequence + followed by the elements of RhSequence. The order of the elements in the 2 sequences is preserved.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html b/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html
    index ba9e6cb7..37e39e0d 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html
    @@ -3,7 +3,7 @@
     
     pop_back
     
    -
    +
     
     
     
    @@ -26,15 +26,15 @@
     
     
    - + Description

    - Returns the result type of pop_back, given the input sequence + Returns the result type of pop_back, given the input sequence type.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.85. Parameters

    +

    Table 1.85. Parameters

    @@ -60,7 +60,7 @@ - +
    Description
    SequenceSequence A model of Forward @@ -71,32 +71,32 @@
    - + Expression Semantics
    -result_of::pop_back<Sequence>::type
    +result_of::pop_back<Sequence>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence with all - the elements of Sequence + Semantics: Returns a sequence with all + the elements of Sequence except the last element.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html b/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html
    index 2f91bf00..b1285bd9 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html
    @@ -3,7 +3,7 @@
     
     pop_front
     
    -
    +
     
     
     
    @@ -26,15 +26,15 @@
     
     
    - + Description

    - Returns the result type of pop_front, given the input sequence + Returns the result type of pop_front, given the input sequence type.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.86. Parameters

    +

    Table 1.86. Parameters

    @@ -60,7 +60,7 @@ - +
    Description
    SequenceSequence A model of Forward @@ -71,32 +71,32 @@
    - + Expression Semantics
    -result_of::pop_front<Sequence>::type
    +result_of::pop_front<Sequence>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence with all - the elements of Sequence + Semantics: Returns a sequence with all + the elements of Sequence except the first element.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html b/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html
    index 62c966da..2fedcafd 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html
    @@ -3,7 +3,7 @@
     
     push_back
     
    -
    +
     
     
     
    @@ -26,15 +26,15 @@
     
     
    - + Description

    - Returns the result type of push_back, given the types of + Returns the result type of push_back, given the types of the input sequence and element to push.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.87. Parameters

    +

    Table 1.87. Parameters

    @@ -62,7 +62,7 @@ - + - + @@ -80,33 +80,33 @@
    SequenceSequence A model of Forward @@ -71,7 +71,7 @@ Operation's argument
    TT Any type Operation's argument
    - + Expression Semantics
    -result_of::push_back<Sequence, T>::type
    +result_of::push_back<Sequence, T>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence with the - elements of Sequence - and an element of type T + Semantics: Returns a sequence with the + elements of Sequence + and an element of type T added to the end.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html b/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html
    index 3d5806ee..562e7479 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html
    @@ -3,7 +3,7 @@
     
     push_front
     
    -
    +
     
     
     
    @@ -26,15 +26,15 @@
     
     
    - + Description

    - Returns the result type of push_front, given the types + Returns the result type of push_front, given the types of the input sequence and element to push.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.88. Parameters

    +

    Table 1.88. Parameters

    @@ -62,7 +62,7 @@ - + - + @@ -80,33 +80,33 @@
    SequenceSequence A model of Forward @@ -71,7 +71,7 @@ Operation's argument
    TT Any type Operation's argument
    - + Expression Semantics
    -result_of::push_front<Sequence, T>::type
    +result_of::push_front<Sequence, T>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence with the - elements of Sequence - and an element of type T + Semantics: Returns a sequence with the + elements of Sequence + and an element of type T added to the beginning.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/remove.html b/doc/html/fusion/algorithms/transformation/metafunctions/remove.html
    index e8c40d72..809ea73f 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/remove.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/remove.html
    @@ -3,7 +3,7 @@
     
     remove
     
    -
    +
     
     
     
    @@ -26,15 +26,15 @@
     
     
    - + Description

    - Returns the result type of remove, given the sequence and + Returns the result type of remove, given the sequence and removal types.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.77. Parameters

    +

    Table 1.77. Parameters

    @@ -62,7 +62,7 @@ - + - + @@ -80,34 +80,34 @@
    SequenceSequence A model of Forward @@ -71,7 +71,7 @@ Operation's argument
    TT Any type Remove elements of this type
    - + Expression Semantics
    -result_of::remove<Sequence, T>::type
    +result_of::remove<Sequence, T>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence containing - the elements of Sequence - not of type T. Equivalent - to result_of::replace_if<Sequence, - boost::is_same<mpl::_, T> >::type. + Semantics: Returns a sequence containing + the elements of Sequence + not of type T. Equivalent + to result_of::replace_if<Sequence, + boost::is_same<mpl::_, T> >::type.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html
    index c7bf5cf6..aa1aeb7b 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html
    @@ -3,7 +3,7 @@
     
     remove_if
     
    -
    +
     
     
     
    @@ -26,15 +26,16 @@
     
     
    - + Description

    - Returns the result type of remove_if, given the input sequence - and unary MPL Lambda Expression predicate types. + Returns the result type of remove_if, given the input sequence + and unary MPL + Lambda Expression predicate types.

    - + Synopsis
    @@ -48,7 +49,7 @@
     };
     
    -

    Table 1.78. Parameters

    +

    Table 1.78. Parameters

    @@ -62,7 +63,7 @@ - + - + - +
    SequenceSequence A model of Forward @@ -71,44 +72,46 @@ Operation's argument
    PredPred A - model of unary MPL Lambda ExpressionRemove elements - which evaluate to boost::mpl::true_ + model of unary MPL + Lambda Expression +Remove elements which evaluate + to boost::mpl::true_
    - + Expression Semantics
    -result_of::remove_if<Sequence, Pred>::type
    +result_of::remove_if<Sequence, Pred>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence containing - the elements of Sequence - for which Pred evaluates - to boost::mpl::false_. + Semantics: Returns a sequence containing + the elements of Sequence + for which Pred evaluates + to boost::mpl::false_.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/replace.html b/doc/html/fusion/algorithms/transformation/metafunctions/replace.html
    index 75193f00..f74b9ff9 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/replace.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/replace.html
    @@ -3,7 +3,7 @@
     
     replace
     
    -
    +
     
     
     
    @@ -26,15 +26,15 @@
     
     
    - + Description

    - Returns the result type of replace, given the types of + Returns the result type of replace, given the types of the input sequence and element to replace.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.75. Parameters

    +

    Table 1.75. Parameters

    @@ -62,7 +62,7 @@ - + - + @@ -80,31 +80,31 @@
    SequenceSequence A model of Forward @@ -71,7 +71,7 @@ Operation's argument
    TT Any type The type of the search and replacement objects
    - + Expression Semantics
    -result_of::replace<Sequence,T>::type
    +result_of::replace<Sequence,T>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns the return type of - replace. + Semantics: Returns the return type of + replace.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html
    index 8ee42bc8..e160bd4f 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html
    @@ -3,7 +3,7 @@
     
     replace_if
     
    -
    +
     
     
     
    @@ -26,17 +26,17 @@
     
     
    - + Description

    - Returns the result type of replace_if, given the types - of the sequence, replace_if, given the types + of the sequence, Polymorphic Function Object predicate and replacement object.

    - + Synopsis
    @@ -50,7 +50,7 @@
     };
     
    -

    Table 1.76. Parameters

    +

    Table 1.76. Parameters

    @@ -64,7 +64,7 @@ - + - + - + @@ -91,31 +91,31 @@
    SequenceSequence A model of Forward @@ -73,16 +73,16 @@ Operation's argument
    FF A - model of unary Polymorphic Function Object Replacement predicate
    TT Any type The type of the replacement object
    - + Expression Semantics
    -result_of::replace_if<Sequence,F,T>::type
    +result_of::replace_if<Sequence,F,T>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns the return type of - replace_if. + Semantics: Returns the return type of + replace_if.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html b/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html
    index e8be4300..6861a736 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html
    @@ -3,7 +3,7 @@
     
     reverse
     
    -
    +
     
     
     
    @@ -26,15 +26,15 @@
     
     
    - + Description

    - Returns the result type of reverse, given the input sequence + Returns the result type of reverse, given the input sequence type.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.79. Parameters

    +

    Table 1.79. Parameters

    @@ -60,7 +60,7 @@ - +
    Description
    SequenceSequence A model of Bidirectional @@ -71,31 +71,31 @@
    - + Expression Semantics
    -result_of::reverse<Sequence>::type
    +result_of::reverse<Sequence>::type
     

    - Return type: A model of Return type: A model of Bidirectional Sequence.

    - Semantics: Returns a sequence with the - elements in the reverse order to Sequence. + Semantics: Returns a sequence with the + elements in the reverse order to Sequence.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/transform.html b/doc/html/fusion/algorithms/transformation/metafunctions/transform.html
    index 629edba8..cb5ce13e 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/transform.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/transform.html
    @@ -3,7 +3,7 @@
     
     transform
     
    -
    +
     
     
     
    @@ -26,17 +26,17 @@
     
     
    - + Description

    - Returns the result of type transform, given the sequence - and transform, given the sequence + and Polymorphic Function Object types.

    - + Synopsis
    @@ -50,7 +50,7 @@
     };
     
    -

    Table 1.74. Parameters

    +

    Table 1.74. Parameters

    @@ -64,7 +64,7 @@ - + - + @@ -84,31 +84,31 @@
    SequenceSequence A model of Forward @@ -72,9 +72,9 @@ Operation's argument
    FF A - model of unary Polymorphic Function Object
    - + Expression Semantics
    -result_of::transform<Sequence, F>::type
    +result_of::transform<Sequence, F>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence with values - F::result<E>::type for each element type E in Sequence. + Semantics: Returns a sequence with values + F::result<E>::type for each element type E in Sequence.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/zip.html b/doc/html/fusion/algorithms/transformation/metafunctions/zip.html
    index 9bc86f32..3a3124b4 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/zip.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/zip.html
    @@ -3,7 +3,7 @@
     
     zip
     
    -
    +
     
     
     
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -34,7 +34,7 @@ of the members of the component sequences.

    - + Synopsis
    @@ -50,37 +50,37 @@
     };
     
    - + Expression Semantics
    -result_of::zip<Sequence1, Sequence2, ... SequenceN>::type
    +result_of::zip<Sequence1, Sequence2, ... SequenceN>::type
     

    - Return type: A model of the most restrictive - traversal category of sequences Sequence1 - to SequenceN. + Return type: A model of the most restrictive + traversal category of sequences Sequence1 + to SequenceN.

    - Semantics: Return a sequence containing + Semantics: Return a sequence containing tuples of elements from each sequence. For example, applying zip to tuples - (1, 2, - 3) - and ('a', 'b', - 'c') - would return ((1, 'a'),(2, 'b'),(3, - 'c')) + (1, 2, + 3) + and ('a', 'b', + 'c') + would return ((1, 'a'),(2, 'b'),(3, + 'c'))

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/change_log.html b/doc/html/fusion/change_log.html
    index 8da6cb1f..d3079150 100644
    --- a/doc/html/fusion/change_log.html
    +++ b/doc/html/fusion/change_log.html
    @@ -3,7 +3,7 @@
     
     Change log
     
    -
    +
     
     
     
    @@ -30,11 +30,11 @@
         

    • - Sep 27, 2006: Added boost::tuple + Sep 27, 2006: Added boost::tuple support.
    • - Nov 17, 2006: Added boost::variant + Nov 17, 2006: Added boost::variant support.
    diff --git a/doc/html/fusion/extension.html b/doc/html/fusion/extension.html index ddcc9407..5e5861f8 100644 --- a/doc/html/fusion/extension.html +++ b/doc/html/fusion/extension.html @@ -3,11 +3,11 @@ Extension - + - + @@ -20,15 +20,15 @@

    -PrevUpHomeNext +PrevUpHomeNext

    The Fusion library is designed to be extensible, new sequences types can easily - be added. In fact, the library support for std::pair, - boost::array and MPL + be added. In fact, the library support for std::pair, + boost::array and MPL sequences is entirely provided using the extension mechanism.

    @@ -48,7 +48,7 @@

    - + Our example

    @@ -73,14 +73,14 @@

    We are going to pretend that this type has been provided by a 3rd party library, and therefore cannot be modified. We shall work through all the necessary steps - to enable example_struct to + to enable example_struct to serve as an Associative Sequence as described in the Quick Start guide.

    - + Enabling Tag Dispatching

    @@ -95,9 +95,9 @@ }

    - Next we need to enable the traits::tag_of + Next we need to enable the traits::tag_of metafunction to return our newly chosen tag type for operations involving our - sequence. This is done by specializing traits::tag_of + sequence. This is done by specializing traits::tag_of for our sequence type.

    @@ -112,8 +112,8 @@
     }}}
     

    - traits::tag_of also has a second template argument, - that can be used in conjuction with boost::enable_if + traits::tag_of also has a second template argument, + that can be used in conjuction with boost::enable_if to provide tag support for groups of related types. This feature is not necessary for our sequence, but for an example see the code in:

    @@ -121,7 +121,7 @@ #include <boost/fusion/sequence/adapted/mpl/tag_of.hpp>

    - + Designing a suitable iterator

    @@ -131,9 +131,9 @@ access iterator in our example.

    - We will use a simple design, in which the 2 members of example_struct - are given numbered indices, 0 for name - and 1 for age respectively. + We will use a simple design, in which the 2 members of example_struct + are given numbered indices, 0 for name + and 1 for age respectively.

     template<typename Struct, int Pos>
    @@ -160,37 +160,37 @@
             of the current element.
           
     
  • - The typedefs struct_type - and index provide convenient + The typedefs struct_type + and index provide convenient access to information we will need later in the implementation.
  • - The typedef category allows - the traits::category_of + The typedef category allows + the traits::category_of metafunction to establish the traversal category of the iterator.
  • - The constructor stores a reference to the example_struct + The constructor stores a reference to the example_struct being iterated over.
  • We also need to enable tag dispatching for our iterator type, with another specialization - of traits::tag_of. + of traits::tag_of.

    In isolation, the iterator implementation is pretty dry. Things should become clearer as we add features to our implementation.

    - + A first couple of instructive features

    - To start with, we will get the result_of::value_of metafunction working. To - do this, we provide a specialization of the boost::fusion::extension::value_of_impl + To start with, we will get the result_of::value_of metafunction working. To + do this, we provide a specialization of the boost::fusion::extension::value_of_impl template for our iterator's tag type.

    @@ -215,29 +215,30 @@
     

    The implementation itself is pretty simple, it just uses 2 partial specializations - to provide the type of the 2 different members of example_struct, + to provide the type of the 2 different members of example_struct, based on the index of the iterator.

    - To understand how value_of_impl - is used by the library we will look at the implementation of value_of: + To understand how value_of_impl + is used by the library we will look at the implementation of value_of:

     template <typename Iterator>
    -struct value_of
    +struct value_of
         : extension::value_of_impl<typename detail::tag_of<Iterator>::type>::
             template apply<Iterator>
     {};
     

    - So value_of + So value_of uses tag dispatching - to select an MPL Metafunction Class to provide its functionality. You will - notice this pattern throughout the implementation of Fusion. + to select an MPL + Metafunction Class to provide its functionality. You will notice this + pattern throughout the implementation of Fusion.

    Ok, lets enable dereferencing of our iterator. In this case we must provide - a suitable specialization of deref_impl. + a suitable specialization of deref_impl.

     template<>
    @@ -275,17 +276,17 @@
     }
     

    - The use of deref_impl is very - similar to that of value_of_impl, - but it also provides some runtime functionality this time via the call static member function. To see how - deref_impl is used, lets have - a look at the implementation of deref: + The use of deref_impl is very + similar to that of value_of_impl, + but it also provides some runtime functionality this time via the call static member function. To see how + deref_impl is used, lets have + a look at the implementation of deref:

     namespace result_of
     {
         template <typename Iterator>
    -    struct deref
    +    struct deref
             : extension::deref_impl<typename detail::tag_of<Iterator>::type>::
                 template apply<Iterator>
         {};
    @@ -293,24 +294,24 @@
     
     template <typename Iterator>
     typename result_of::deref<Iterator>::type
    -deref(Iterator const& i)
    +deref(Iterator const& i)
     {
         typedef result_of::deref<Iterator> deref_meta;
         return deref_meta::call(i);
     }
     

    - So again result_of::deref uses tag - dispatching in exactly the same way as the value_of implementation. The runtime - functionality used by deref is provided by the call static function of the selected MPL - Metafunction Class. + So again result_of::deref uses tag + dispatching in exactly the same way as the value_of implementation. The runtime + functionality used by deref is provided by the call static function of the selected MPL + Metafunction Class.

    - The actual implementation of deref_impl - is slightly more complex than that of value_of_impl. - We also need to implement the call + The actual implementation of deref_impl + is slightly more complex than that of value_of_impl. + We also need to implement the call function, which returns a reference to the appropriate member of the underlying - sequence. We also require a little bit of metaprogramming to return const references if the underlying sequence + sequence. We also require a little bit of metaprogramming to return const references if the underlying sequence is const.

    @@ -318,23 +319,23 @@ -
    [Note] Note

    +

    Although there is a fair amount of left to do to produce a fully fledged - Fusion sequence, value_of and deref illustrate all the signficant + Fusion sequence, value_of and deref illustrate all the signficant concepts required. The remainder of the process is very repetitive, simply - requiring implementation of a suitable xxxx_impl - for each feature xxxx. + requiring implementation of a suitable xxxx_impl + for each feature xxxx.

    - + Implementing the remaining iterator functionality

    - Ok, now we have seen the way value_of and deref work, everything else will work + Ok, now we have seen the way value_of and deref work, everything else will work in pretty much the same way. Lets start with forward iteration, by providing - a next_impl: + a next_impl:

     template<>
    @@ -356,40 +357,40 @@
     };
     

    - This should be very familiar from our deref_impl + This should be very familiar from our deref_impl implementation, we will be using this approach again and again now. Our design - is simply to increment the index + is simply to increment the index counter to move on to the next element. The various other iterator manipulations - we need to perform will all just involve simple calculations with the index variables. + we need to perform will all just involve simple calculations with the index variables.

    - We also need to provide a suitable equal_to_impl + We also need to provide a suitable equal_to_impl so that iterators can be correctly compared. A Bidirectional - Iterator will also need an implementation of prior_impl. + Iterator will also need an implementation of prior_impl. For a Random - Access Iterator distance_impl - and advance_impl also need + Access Iterator distance_impl + and advance_impl also need to be provided in order to satisfy the necessary complexity guarantees. As our iterator is a Random Access Iterator we will have to implement all of these functions.

    - Full implementations of prior_impl, - advance_impl, distance_impl and equal_to_impl + Full implementations of prior_impl, + advance_impl, distance_impl and equal_to_impl are provided in the example code.

    - + Implementing the intrinsic functions of the sequence

    In order that Fusion can correctly identify our sequence as a Fusion sequence, - we need to enable is_sequence - for our sequence type. As usual we just create an impl + we need to enable is_sequence + for our sequence type. As usual we just create an impl type specialized for our sequence tag:

    @@ -401,14 +402,14 @@
     };
     

    - We've some similar formalities to complete, providing category_of_impl - so Fusion can correctly identify our sequence type, and is_view_impl + We've some similar formalities to complete, providing category_of_impl + so Fusion can correctly identify our sequence type, and is_view_impl so Fusion can correctly identify our sequence as not being a View type. Implementations are provide in the example code.

    Now we've completed some formalities, on to more interesting features. Lets - get begin working so that we can get an + get begin working so that we can get an iterator to start accessing the data in our sequence.

    @@ -431,32 +432,32 @@
     

    The implementation uses the same ideas we have applied throughout, in this case we are just creating one of the iterators we developed earlier, pointing - to the first element in the sequence. The implementation of end is very similar, and is provided + to the first element in the sequence. The implementation of end is very similar, and is provided in the example code.

    For our Random - Access Sequence we will also need to implement size_impl, - value_at_impl and at_impl. + Access Sequence we will also need to implement size_impl, + value_at_impl and at_impl.

    - + Enabling our type as an associative container

    - In order for example_struct + In order for example_struct to serve as an associative container, we need to enable 3 lookup features, - at_key, value_at_key and has_key. We also need to provide an - implementation of the is_associative + at_key, value_at_key and has_key. We also need to provide an + implementation of the is_associative trait so that our sequence can be correctly identified as an associative container.

    - To implement at_key_impl we - need to associate the fields::age and - fields::age types described in the Quick - Start guide with the appropriate members of example_struct. + To implement at_key_impl we + need to associate the fields::age and + fields::age types described in the Quick + Start guide with the appropriate members of example_struct. Our implementation is as follows:

    @@ -499,15 +500,15 @@
     

    Its all very similar to the implementations we've seen previously, such as - deref_impl and value_of_impl. Instead of identifying the - members by index or position, we are now selecting them using the types fields::name and fields::age. The - implementations of value_at_key_impl - and has_key_impl are equally + deref_impl and value_of_impl. Instead of identifying the + members by index or position, we are now selecting them using the types fields::name and fields::age. The + implementations of value_at_key_impl + and has_key_impl are equally straightforward, and are provided in the example code, along with an implementation - of is_associative_impl. + of is_associative_impl.

    - + Summary

    @@ -517,8 +518,8 @@ pattern.

    - The support for std::pair, MPL - sequences, and boost::array all use the same approach, and provide + The support for std::pair, MPL + sequences, and boost::array all use the same approach, and provide additional examples of the approach for a variety of types.

    @@ -528,7 +529,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/adapters.html b/doc/html/fusion/functional/adapters.html new file mode 100644 index 00000000..9a1cd030 --- /dev/null +++ b/doc/html/fusion/functional/adapters.html @@ -0,0 +1,50 @@ + + + + Adapters + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + + +

    + Function object templates to transform a particular target function. +

    +
    + + + +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/adapters/fused.html b/doc/html/fusion/functional/adapters/fused.html new file mode 100644 index 00000000..3da74549 --- /dev/null +++ b/doc/html/fusion/functional/adapters/fused.html @@ -0,0 +1,203 @@ + + + +fused + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + An unary Polymorphic Function + Object adapter template for Deferred + Callable Object target functions. It takes a Forward + Sequence that contains the arguments for the target function. +

    +

    + The nested result metafunction + does not define a type + member for target functions of non-class type whose arity is not satisfied + by the size of the sequence. +

    +

    + The type of the target function is allowed to be const qualified or a reference. + Const qualification is preserved and propagated appropriately (in other + words, only const versions of operator() can be used + for an target function object that is const or, if the target function + object is held by value, the adapter is const - these semantics have nothing + to do with the const qualification of a member function, which is referring + to the type of object pointed to by this, which is specified + with the first element in the sequence passed to the adapter). +

    +

    + If the target function is a pointer to a class members, the corresponding + object can be specified as a reference, pointer, or smart pointer. In case + of the latter, a freestanding get_pointer function must + be defined (Boost provides this function for std::auto_ptr + and boost::shared_ptr). +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/adapter/fused.hpp>
    +
    +
    + + Synopsis +
    +
    +template <typename Function>
    +class fused;
    +
    +
    + + Template + parameters +
    +
    +++++ + + + + + + + + + + +
    ParameterDescriptionDefault
    FunctionA + Deferred + Callable Object + 
    +
    + + Model of +
    + +
    +

    Notation

    +
    +
    R
    +
    + A possibly const qualified Deferred + Callable Object type or reference type thereof +
    +
    r
    +
    + An object convertible to R +
    +
    s
    +
    + A Sequence of arguments that + are accepted by r +
    +
    f
    +
    + An instance of fused<R> +
    +
    +
    +
    + + Expression + Semantics +
    +
    ++++ + + + + + + + + + + + + + + + + + + +
    ExpressionSemantics
    fused<R>(r)Creates + a fused function as described above, initializes the target function + with r.
    fused<R>()Creates + a fused function as described above, attempts to use R's default constructor.
    f(s)Calls + r with the elements + in s as its arguments.
    +
    + + Example +
    +
    +fused< std::plus<long> > f;
    +assert(f(make_vector(1,2l)) == 3l);
    +
    +
    + + See also +
    + +
    + + + +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/adapters/fused_function_object.html b/doc/html/fusion/functional/adapters/fused_function_object.html new file mode 100644 index 00000000..695bfc7b --- /dev/null +++ b/doc/html/fusion/functional/adapters/fused_function_object.html @@ -0,0 +1,221 @@ + + + +fused_function_object + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + An unary Polymorphic Function + Object adapter template for a Polymorphic + Function Object target function. It takes a Forward + Sequence that contains the arguments for the target function. +

    +

    + The nested result metafunction + is inhertied from the target function. +

    +

    + The type of the target function is allowed to be const qualified or a reference. + Const qualification is preserved and propagated appropriately (in other + words, only const versions of operator() can be used + for an target function object that is const or, if the target function + 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 +
    +
    +++++ + + + + + + + + + + +
    ParameterDescriptionDefault
    Function +Polymorphic Function Object + type 
    +
    + + Model + of +
    + +
    +

    Notation

    +
    +
    R
    +
    + A possibly const qualified Polymorphic + Function Object type or reference type thereof +
    +
    r
    +
    + An object convertible to R +
    +
    s
    +
    + A Sequence of arguments that + are accepted by r +
    +
    f
    +
    + An instance of fused<R> +
    +
    +
    +
    + + Expression + Semantics +
    +
    ++++ + + + + + + + + + + + + + + + + + + +
    ExpressionSemantics
    fused_function_object<R>(r)Creates a fused function + as described above, initializes the target function with r.
    fused_function_object<R>()Creates a fused + function as described above, attempts to use R's + default constructor.
    f(s)Calls + r with the elements + in s as its arguments.
    +
    + + Example +
    +
    +template<class SeqOfSeqs, class Func>
    +typename result_of::transform< zip_view<SeqOfSeqs> const,
    +    fused_function_object<Func const &> >::type
    +n_ary_transform(SeqOfSeqs const & s, Func const & f)
    +{
    +    return transform(zip_view<SeqOfSeqs>(s), 
    +        fused_function_object<Func const &>(f));
    +} 
    +
    +struct sub
    +{
    +    template<typename T, typename _>
    +    struct result
    +    {
    +        typedef T type;
    +    };
    +
    +    template<typename T>
    +    T operator()(T lhs, T rhs) const
    +    {
    +        return lhs - rhs;
    +    }
    +};
    +
    +void try_it()
    +{
    +    vector<int,float> a(2,2.0f);
    +    vector<int,float> b(1,1.5f);
    +    vector<int,float> c(1,0.5f);
    +    assert(c == n_ary_transform(vector_tie(a,b), sub()));
    +}
    +
    +
    + + See + also +
    + +
    + + + +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/adapters/fused_procedure.html b/doc/html/fusion/functional/adapters/fused_procedure.html new file mode 100644 index 00000000..409fdb56 --- /dev/null +++ b/doc/html/fusion/functional/adapters/fused_procedure.html @@ -0,0 +1,219 @@ + + + +fused_procedure + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + An unary Polymorphic Function + Object adapter template for Callable + Object target functions. It takes a Forward + Sequence that contains the arguments for the target function. +

    +

    + The result is discared and the adapter's return type is void. + The nested result metafunction + does not define a type + member for target functions of non-class type whose arity is not satisfied + by the size of the sequence. +

    +

    + The type of the target function is allowed to be const qualified or a reference. + Const qualification is preserved and propagated appropriately (in other + words, only const versions of operator() can be used + for an target function object that is const or, if the target function + object is held by value, the adapter is const - these semantics have nothing + to do with the const qualification of a member function, which is referring + to the type of object pointed to by this, which is specified + with the first element in the sequence passed to the adapter). +

    +

    + If the target function is a pointer to a members function, the corresponding + object can be specified as a reference, pointer, or smart pointer. In case + of the latter, a freestanding get_pointer function must + be defined (Boost provides this function for std::auto_ptr + and boost::shared_ptr). +

    +

    + The target function must not be a pointer to a member object (dereferencing + such a pointer without returning anything does not make sense, so it isn't + implemented). +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/adapter/fused_procedure.hpp>
    +
    +
    + + Synopsis +
    +
    +template <typename Function>
    +class fused_procedure;
    +
    +
    + + Template + parameters +
    +
    +++++ + + + + + + + + + + +
    ParameterDescriptionDefault
    Function +Callable Object + type 
    +
    + + Model + of +
    + +
    +

    Notation

    +
    +
    R
    +
    + A possibly const qualified Callable + Object type or reference type thereof +
    +
    r
    +
    + An object convertible to R +
    +
    s
    +
    + A Sequence of arguments that + are accepted by r +
    +
    f
    +
    + An instance of fused<R> +
    +
    +
    +
    + + Expression + Semantics +
    +
    ++++ + + + + + + + + + + + + + + + + + + +
    ExpressionSemantics
    fused_procedure<R>(r)Creates a fused function + as described above, initializes the target function with r.
    fused_procedure<R>()Creates a fused + function as described above, attempts to use R's + default constructor.
    f(s)Calls + r with the elements + in s as its arguments.
    +
    + + Example +
    +
    +template<class SequenceOfSequences, class Func>
    +void n_ary_for_each(SequenceOfSequences const & s, Func const & f)
    +{
    +    for_each(zip_view<SequenceOfSequences>(s), 
    +        fused_procedure<Func const &>(f));
    +} 
    +
    +void try_it()
    +{
    +    vector<int,float> a(2,2.0f);
    +    vector<int,float> b(1,1.5f);
    +    using namespace boost::lambda;
    +    n_ary_for_each(vector_tie(a,b), _1 -= _2);
    +    assert(a == make_vector(1,0.5f));
    +}
    +
    +
    + + See + also +
    + +
    + + + +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/adapters/unfused_generic.html b/doc/html/fusion/functional/adapters/unfused_generic.html new file mode 100644 index 00000000..ac13cfa1 --- /dev/null +++ b/doc/html/fusion/functional/adapters/unfused_generic.html @@ -0,0 +1,270 @@ + + + +unfused_generic + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + An n-ary Polymorphic Function + Object adapter template for an unary Polymorphic + Function Object target function. When called, its arguments are + bundled to a Random + Access Sequence of references that is passed to the target function. + Non-const LValue arguments are transported as references to non-const, + otherwise references to const are used. +

    +
    + + + + + +
    [Tip]Tip

    + Detecting mutable LValues on a per-argument basis is currently a compile + time expensive operation (see The + Forwarding Problem for details). Therefore, there are two, lightweight + and more restricted variants of this class template, unfused_lvalue_args and unfused_rvalue_args. +

    +

    + The overload set of the adapter's function call operator can be restricted + by removing the type member + from the nested result metafunction of the Polymorphic + Function Object (in this case the substitution-failure-is-not-an-error + principle applies for non-nullary case and nullary calls are explicitly + disabled by the library). +

    +
    + + + + + +
    [Caution]Caution

    + As the nullary call operator cannot be a template it will be instantiated + along with the class template, so it must be disabled (as described above) + in cases where it isn't instantiable. +

    +

    + The type of the target function is allowed to be const qualified or a reference. + Const qualification is preserved and propagated appropriately (in other + words, only const versions of operator() can be used + if the target function object is const - or, in case the target function + object is held by value, the adapter is const). +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/adapter/unfused_generic.hpp>
    +
    +
    + + Synopsis +
    +
    +template <class Function>
    +class unfused_generic;
    +
    +
    + + Template + parameters +
    +
    +++++ + + + + + + + + + + +
    ParameterDescriptionDefault
    FunctionAn + unary Polymorphic + Function Object + 
    +
    + + Model + of +
    + +
    +

    Notation

    +
    +
    F
    +
    + A possibly const qualified, unary Polymorphic + Function Object type or reference type thereof +
    +
    f
    +
    + An object convertible to F +
    +
    UG
    +
    + The type unfused_generic<F> +
    +
    ug
    +
    + An instance of UG, initialized + with f +
    +
    a0...aN
    +
    + Arguments to ug +
    +
    +
    +
    + + Expression + Semantics +
    +
    ++++ + + + + + + + + + + + + + + + + + + +
    ExpressionSemantics
    UG(f)Creates + a fused function as described above, initializes the target function + with f.
    UG()Creates + a fused function as described above, attempts to use F's default constructor.
    +ug(a0...aN) +Calls f with a Sequence + that contains references to the arguments a0...aN.
    +
    + + Example +
    +
    +template <typename Function, typename T>
    +class fused_bound_1st
    +{
    +    typename traits::deduce<Function>::type fnc_deferred;
    +    typename traits::deduce<T>::type        xxx_bound;
    +public:
    +
    +    fused_bound_1st(Function deferred, T bound)
    +        : fnc_deferred(deferred), xxx_bound(bound)
    +    { }
    +
    +    template <class Seq>
    +    struct result
    +        : result_of::invoke< Function,
    +            typename result_of::push_front<Seq, T>::type >
    +    { };
    +
    +    template <class Seq>
    +    typename result<Seq>::type operator()(Seq const & s) const
    +    {
    +        return invoke(fnc_deferred, push_front(s,xxx_bound));
    +    }
    +};
    +
    +template <typename Function, typename T>
    +unfused_generic< fused_bound_1st<Function,T> > 
    +bind_1st(Function f, T const & x)
    +{
    +    return unfused_generic< fused_bound_1st<Function,T> >(
    +        fused_bound_1st<Function,T>(f,x) ); 
    +}
    +
    +int test_func(int a, int b, int c)
    +{
    +    return a+b+c;
    +}
    +
    +void try_it()
    +{
    +    assert(bind_1st(& test_func,3)(-2,-1) == 0);
    +    assert(bind_1st(std::plus<float>(), 1)(0.5f) == 1.5f);
    +}
    +
    +
    + + See + also +
    + +
    + + + +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/adapters/unfused_lvalue_args.html b/doc/html/fusion/functional/adapters/unfused_lvalue_args.html new file mode 100644 index 00000000..ccdf4f9c --- /dev/null +++ b/doc/html/fusion/functional/adapters/unfused_lvalue_args.html @@ -0,0 +1,235 @@ + + + +unfused_lvalue_args + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + An n-ary Polymorphic Function + Object adapter template for an unary Polymorphic + Function Object target function. When called, its arguments are + bundled to a Random + Access Sequence of references that is passed to the target function + object. Only LValue arguments are accepted. +

    +

    + The overload set of the adapter's function call operator can be restricted + by removing the type member + from the nested result metafunction of the Polymorphic + Function Object (in this case the substitution-failure-is-not-an-error + principle applies for non-nullary calls and nullary calls are explicitly + disabled by the library). +

    +
    + + + + + +
    [Caution]Caution

    + As the nullary call operator cannot be a template it will be instantiated + along with the class template, so it must be disabled (as described above) + in cases where it isn't instantiable. +

    +

    + The type of the target function is allowed to be const qualified or a reference. + Const qualification is preserved and propagated appropriately (in other + words, only const versions of operator() can be used + if the target function object is const - or, in case the target function + object is held by value, the adapter is const). +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/adapter/unfused_lvalue_args.hpp>
    +
    +
    + + Synopsis +
    +
    +template <class Function>
    +class unfused_lvalue_args;
    +
    +
    + + Template + parameters +
    +
    +++++ + + + + + + + + + + +
    ParameterDescriptionDefault
    FunctionA + unary Polymorphic + Function Object + 
    +
    + + Model + of +
    + +
    +

    Notation

    +
    +
    F
    +
    + A possibly const qualified, unary Polymorphic + Function Object type or reference type thereof +
    +
    f
    +
    + An object convertible to F +
    +
    UL
    +
    + The type unfused_lvalue_args<F> +
    +
    ul
    +
    + An instance of UL, initialized + with f +
    +
    a0...aN
    +
    + Arguments to ul +
    +
    +
    +
    + + Expression + Semantics +
    +
    ++++ + + + + + + + + + + + + + + + + + + +
    ExpressionSemantics
    UL(f)Creates + a fused function as described above, initializes the target function + with f.
    UL()Creates + a fused function as described above, attempts to use F's default constructor.
    +ul(a0...aN) +Calls f with a Sequence + that contains references to the arguments a0...aN.
    +
    + + Example +
    +
    +struct fused_incrementer
    +{
    +    template <class Seq> 
    +    struct result 
    +    { 
    +        typedef void type;
    +    };
    +
    +    template <class Seq>
    +    void operator()(Seq const & s) const
    +    {
    +        for_each(s,++boost::lambda::_1);
    +    }
    +};
    +
    +void try_it()
    +{
    +    unfused_lvalue_args<fused_incrementer> increment;
    +    int a = 2; char b = 'X';
    +    increment(a,b);
    +    assert(a == 3 && b == 'Y');
    +}
    +
    +
    + + See + also +
    + +
    + + + +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/adapters/unfused_rvalue_args.html b/doc/html/fusion/functional/adapters/unfused_rvalue_args.html new file mode 100644 index 00000000..3033d70b --- /dev/null +++ b/doc/html/fusion/functional/adapters/unfused_rvalue_args.html @@ -0,0 +1,235 @@ + + + +unfused_rvalue_args + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + An n-ary Polymorphic Function + Object adapter template for an unary Polymorphic + Function Object target function. When called, its arguments are + bundled to a Random + Access Sequence of references that is passed to the target function + object. All referenced objects in the sequence are const qualified. +

    +

    + The overload set of the adapter's function call operator can be restricted + by removing the type member + from the nested result metafunction of the Polymorphic + Function Object (in this case the substitution-failure-is-not-an-error + principle applies for non-nullary calls and nullary calls are explicitly + disabled by the library). +

    +
    + + + + + +
    [Caution]Caution

    + As the nullary call operator cannot be a template it will be instantiated + along with the class template, so it must be disabled (as described above) + in cases where it isn't instantiable. +

    +

    + The type of the target function is allowed to be const qualified or a reference. + Const qualification is preserved and propagated appropriately (in other + words, only const versions of operator() can be used + if the target function object is const - or, in case the target function + object is held by value, the adapter is const). +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/adapter/unfused_rvalue_args.hpp>
    +
    +
    + + Synopsis +
    +
    +template <class Function>
    +class unfused_rvalue_args;
    +
    +
    + + Template + parameters +
    +
    +++++ + + + + + + + + + + +
    ParameterDescriptionDefault
    FunctionA + unary Polymorphic + Function Object + 
    +
    + + Model + of +
    + +
    +

    Notation

    +
    +
    F
    +
    + A possibly const qualified, unary Polymorphic + Function Object type or reference type thereof +
    +
    f
    +
    + An object convertible to F +
    +
    UR
    +
    + The type unfused_rvalue_args<F> +
    +
    ur
    +
    + An instance of UR, initialized + with f +
    +
    a0...aN
    +
    + Arguments to ur +
    +
    +
    +
    + + Expression + Semantics +
    +
    ++++ + + + + + + + + + + + + + + + + + + +
    ExpressionSemantics
    UR(f)Creates + a fused function as described above, initializes the target function + with f.
    UR()Creates + a fused function as described above, attempts to use F's default constructor.
    +ur(a0...aN) +Calls f with a Sequence + that contains references to the arguments a0...aN.
    +
    + + Example +
    +
    +struct sequence_printer
    +{
    +    template <class Seq> 
    +    struct result 
    +    { 
    +        typedef void type;
    +    };
    +
    +    template <class Seq>
    +    void operator()(Seq const & s) const
    +    {
    +        std::cout << s << std::endl;
    +    }
    +};
    +
    +void try_it()
    +{
    +    unfused_rvalue_args<sequence_printer> print;
    +    print(24,"bottles of beer in",'a',"box.");
    +}
    +
    +
    + + See + also +
    + +
    + + + +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/adapters/unfused_typed.html b/doc/html/fusion/functional/adapters/unfused_typed.html new file mode 100644 index 00000000..77ae9db0 --- /dev/null +++ b/doc/html/fusion/functional/adapters/unfused_typed.html @@ -0,0 +1,309 @@ + + + +unfused_typed + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + An n-ary Polymorphic Function + Object adapter template for an unary Polymorphic + Function Object target function. When called, its arguments are + bundled to a Random + Access Sequence that is passed to the target function object. +

    +

    + The call operators of the resulting function object are strictly typed + (in other words, non-templatized) with the types from a Sequence. + By default, call operators with zero to N parameters are generated to, + where N is the size of the Sequence + that specifies the types. +

    +

    + The overload set of the adapter's function call operator can be restricted + by removing the type member + from the nested result metafunction of the Polymorphic + Function Object (in this case the substitution-failure-is-not-an-error + principle applies for non-nullary calls and nullary calls are explicitly + disabled by the library). +

    +
    + + + + + +
    [Caution]Caution

    + As the function call operators are not templates, they are instantiated + along with the class template, so they must be disabled (as described + above) in cases where they are not instantiable. +

    +

    + The type of the target function is allowed to be const qualified or a reference. + Const qualification is preserved and propagated appropriately (in other + words, only const versions of operator() can be used + if the target function object is const - or, in case the target function + object is held by value, the adapter is const). +

    +
    + + + + + +
    [Tip]Tip

    + If the type sequence passed to this template contains non-reference elements, + the element is copied only once - the call operator's signature is optimized + automatically to avoid by-value parameters. +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/adapter/unfused_typed.hpp>
    +
    +
    + + Synopsis +
    +
    +template <class Function, class Sequence>
    +class unfused_typed;
    +
    +
    + + Template + parameters +
    +
    +++++ + + + + + + + + + + + + + + + + + +
    ParameterDescriptionDefault
    FunctionA + unary Polymorphic + Function Object + 
    SequenceA + Sequence + 
    +
    + + Model + of +
    + +
    +

    Notation

    +
    +
    F
    +
    + A possibly const qualified, unary Polymorphic + Function Object type or reference type thereof +
    +
    f
    +
    + An object convertible to F +
    +
    S
    +
    + A Sequence of parameter types +
    +
    UT
    +
    + The type unfused_typed<F,S> +
    +
    ut
    +
    + An instance of UT, initialized + with f +
    +
    a0...aN
    +
    + Arguments to ut, convertible + to the types in S +
    +
    +
    +
    + + Expression + Semantics +
    +
    ++++ + + + + + + + + + + + + + + + + + + +
    ExpressionSemantics
    UT(f)Creates + a fused function as described above, initializes the target function + with f.
    UT()Creates + a fused function as described above, attempts to use F's default constructor.
    +ut(a0...aN) +Calls f with an instance of S (or a subsequence of S starting at the first element, + if fewer arguments are given and the overload hasn't been disabled) + initialized with a0...aN.
    +
    + + Example +
    +
    +struct add_assign // applies operator+=
    +{
    +    typedef void result_type; // for simplicity
    +
    +    template <typename T>
    +    void operator()(T & lhs, T const & rhs) const
    +    {
    +        lhs += rhs;
    +    }
    +};
    +
    +template <class Tie>
    +class fused_parallel_adder
    +{
    +    Tie tie_dest;
    +public:
    +    explicit fused_parallel_adder(Tie const & dest)
    +        : tie_dest(dest)
    +    { }
    +
    +    template <class Seq>
    +    struct result
    +    {
    +        typedef void type;
    +    };
    +
    +    template <class Seq>
    +    void operator()(Seq const & s) const
    +    {
    +        for_each(zip(tie_dest,s), fused<add_assign>() );
    +    }
    +};
    +
    +// accepts a tie and creates a typed function object from it
    +struct fused_parallel_adder_maker
    +{
    +    template <class Seq>
    +    struct result
    +    {
    +        typedef unfused_typed<fused_parallel_adder<Seq>, 
    +            typename mpl::transform<Seq, remove_reference<_> >::type > type;
    +    };
    +
    +    template <class Seq>
    +    typename result<Seq>::type operator()(Seq const & tie)
    +    {
    +        return typename result<Seq>::type(fused_parallel_adder<Seq>(tie));
    +    }
    +};
    +unfused_lvalue_args<fused_parallel_adder_maker> parallel_add;
    +
    +int main()
    +{
    +    int a = 2; char b = 'X';
    +    // the second call is strictly typed with the types deduced from the
    +    // first call 
    +    parallel_add(a,b)(3,2);
    +    parallel_add(a,b)(3);
    +    parallel_add(a,b)();
    +    assert(a == 8 && b == 'Z');
    +
    +    return 0;
    +}
    +
    +
    + + See also +
    + +
    + + + +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/concepts.html b/doc/html/fusion/functional/concepts.html new file mode 100644 index 00000000..5cff48ee --- /dev/null +++ b/doc/html/fusion/functional/concepts.html @@ -0,0 +1,45 @@ + + + +Concepts + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    + + + + +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/concepts/callable.html b/doc/html/fusion/functional/concepts/callable.html new file mode 100644 index 00000000..cd5cfdf3 --- /dev/null +++ b/doc/html/fusion/functional/concepts/callable.html @@ -0,0 +1,45 @@ + + + + Callable Object + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +

    + A pointer to a function, a pointer to member function, a pointer to member + data, or a class type whose objects can appear immediately to the left + of a function call operator. + +

    +
    + + + +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/concepts/def_callable.html b/doc/html/fusion/functional/concepts/def_callable.html new file mode 100644 index 00000000..c549764c --- /dev/null +++ b/doc/html/fusion/functional/concepts/def_callable.html @@ -0,0 +1,100 @@ + + + + Deferred + Callable Object + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + Callable Object + that works with Boost.ResultOf + to determine the result of a call (such as the function objects provided + by the standard library). +

    +
    + + Refinement + of +
    + +
    +

    Notation

    +
    +
    F
    +
    + A Deferred Callable Object type +
    +
    T1 + ...TN
    +
    + Arbitrary types +
    +
    +
    +
    + + Expression + requirements +
    +
    ++++ + + + + + + + + +
    ExpressionType
    +boost::result_of< F(T1 ...TN) >::type +Unspecified
    +
    + + Models +
    +
    +
    + + + +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/concepts/poly.html b/doc/html/fusion/functional/concepts/poly.html new file mode 100644 index 00000000..1ea02616 --- /dev/null +++ b/doc/html/fusion/functional/concepts/poly.html @@ -0,0 +1,110 @@ + + + + Polymorphic Function + Object + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + A type of function object with a nested metafunction result. + result returns the result + type of calling the function object, given the argument types. +

    +
    + + Refinement + of +
    + +
    +

    Notation

    +
    +
    F
    +
    + A Polymorphic Function Object type +
    +
    f
    +
    + A Polymorphic Function Object +
    +
    T1 + ...TN
    +
    + Arbitrary types +
    +
    t1 + ...tN
    +
    + Objects with types T1 ...TN +
    +
    +
    +
    + + Expression + requirements +
    +
    +++++ + + + + + + + + + + +
    ExpressionReturn TypeRuntime + Complexity
    f(t1, ...tN)F::result<T1, ...TN>::typeUnspecified
    +
    + + Models +
    +
    +
    + + + +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/generation.html b/doc/html/fusion/functional/generation.html new file mode 100644 index 00000000..22a71e35 --- /dev/null +++ b/doc/html/fusion/functional/generation.html @@ -0,0 +1,58 @@ + + + +Generation + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    + + + + +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/generation/functions.html b/doc/html/fusion/functional/generation/functions.html new file mode 100644 index 00000000..5cd88059 --- /dev/null +++ b/doc/html/fusion/functional/generation/functions.html @@ -0,0 +1,46 @@ + + + +Functions + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    + + + + +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/generation/functions/make_fused.html b/doc/html/fusion/functional/generation/functions/make_fused.html new file mode 100644 index 00000000..fa9a972a --- /dev/null +++ b/doc/html/fusion/functional/generation/functions/make_fused.html @@ -0,0 +1,129 @@ + + + +make_fused + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + Creates a fused adapter for a given Deferred Callable Object. + The usual element + conversion is applied to the target function. +

    +
    + + Synopsis +
    +
    +template <typename F>
    +inline typename make_fused<F>::type
    +make_fused(F const & f);
    +
    +
    + + Parameters +
    +
    +++++ + + + + + + + + + + +
    ParameterRequirementDescription
    fModel + of Deferred + Callable Object +The function to transform.
    +
    + + Expression + Semantics +
    +
    +make_fused(f);
    +
    +

    + Return type: A specialization of fused. +

    +

    + Semantics: Returns a fused adapter for f. +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/generation/make_fused.hpp>
    +
    +
    + + Example +
    +
    +float sub(float a, float b) { return a - b; }
    +
    +void try_it()
    +{
    +    vector<int,float> a(2,2.0f);
    +    vector<int,float> b(1,1.5f);
    +    vector<float,float> c(1.0f,0.5f);
    +    assert(c == transform(zip(a,b), make_fused(& sub)));
    +    assert(c == transform(zip(a,b), make_fused(std::minus<float>())));
    +}
    +
    +
    + + See + also +
    + +
    + + + +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/generation/functions/make_fused_function_object.html b/doc/html/fusion/functional/generation/functions/make_fused_function_object.html new file mode 100644 index 00000000..69f5af66 --- /dev/null +++ b/doc/html/fusion/functional/generation/functions/make_fused_function_object.html @@ -0,0 +1,143 @@ + + + +make_fused_function_object + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + Creates a fused_function_object adapter + for a given Deferred + Callable Object. The usual element + conversion is applied to the target function. +

    +
    + + Synopsis +
    +
    +template <typename F>
    +inline typename make_fused_function_object<F>::type
    +make_fused_function_object(F const & f);
    +
    +
    + + Parameters +
    +
    +++++ + + + + + + + + + + +
    ParameterRequirementDescription
    fModel + of Polymorphic + Function Object +The function to transform.
    +
    + + Expression + Semantics +
    +
    +make_fused_function_object(f);
    +
    +

    + Return type: A specialization of fused_function_object. +

    +

    + Semantics: Returns a fused_function_object adapter + for f. +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/generation/make_fused_function_object.hpp>
    +
    +
    + + Example +
    +
    +struct sub
    +{
    +    template<typename T, typename _>
    +    struct result
    +    {
    +        typedef T type;
    +    };
    +
    +    template<typename T>
    +    T operator()(T lhs, T rhs) const
    +    {
    +        return lhs - rhs;
    +    }
    +};
    +
    +void try_it()
    +{
    +    vector<int,float> a(2,2.0f);
    +    vector<int,float> b(1,1.5f);
    +    vector<int,float> c(1,0.5f);
    +    assert(c == transform(zip(a,b), make_fused_function_object(sub())));
    +}
    +
    +
    + + See + also +
    + +
    + + + +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/generation/functions/make_fused_procedure.html b/doc/html/fusion/functional/generation/functions/make_fused_procedure.html new file mode 100644 index 00000000..daf5d285 --- /dev/null +++ b/doc/html/fusion/functional/generation/functions/make_fused_procedure.html @@ -0,0 +1,124 @@ + + + +make_fused_procedure + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + Creates a fused_procedure adapter for + a given Deferred + Callable Object. The usual element + conversion applied to the target function. +

    +
    + + Synopsis +
    +
    +template <typename F>
    +inline typename make_fused_procedure<F>::type
    +make_fused_procedure(F const & f);
    +
    +
    + + Parameters +
    +
    +++++ + + + + + + + + + + +
    ParameterRequirementDescription
    fModel + of Callable + Object +The function to transform.
    +
    + + Expression + Semantics +
    +
    +make_fused_procedure(f);
    +
    +

    + Return type: A specialization of fused_procedure. +

    +

    + Semantics: Returns a fused_procedure adapter for + f. +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/generation/make_fused_procedure.hpp>
    +
    +
    + + Example +
    +
    +vector<int,int,int> v(1,2,3);
    +using namespace boost::lambda;
    +make_fused_procedure(_1 += _2 - _3)(v);
    +assert(front(v) == 0);
    +
    +
    + + See + also +
    + +
    + + + +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/generation/functions/make_unfused_generic.html b/doc/html/fusion/functional/generation/functions/make_unfused_generic.html new file mode 100644 index 00000000..cec1f676 --- /dev/null +++ b/doc/html/fusion/functional/generation/functions/make_unfused_generic.html @@ -0,0 +1,155 @@ + + + +make_unfused_generic + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + Creates a unfused_generic adapter for + a given, unary Polymorphic + Function Object. The usual element + conversion is applied to the target function. +

    +
    + + Synopsis +
    +
    +template <typename F>
    +inline typename make_unfused_generic<F>::type
    +make_unfused_generic(F const & f);
    +
    +
    + + Parameters +
    +
    +++++ + + + + + + + + + + +
    ParameterRequirementDescription
    fModel + of Polymorphic + Function Object +The function to transform.
    +
    + + Expression + Semantics +
    +
    +make_unfused_generic(f);
    +
    +

    + Return type: A specialization of unfused_generic. +

    +

    + Semantics: Returns a unfused_generic adapter for + f. +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/generation/make_unfused_generic.hpp>
    +
    +
    + + Example +
    +
    +struct bottles_song
    +{
    +    template<class Seq>
    +    struct result
    +        : mpl::if_< mpl::less< result_of::size<Seq>, mpl::int_<2> >,
    +            boost::blank, mpl::identity<void> >::type
    +    { };
    +
    +    template<class Seq> 
    +    void operator()(Seq & s) const
    +    {
    +        typename result_of::at_c<Seq,0>::type n = at_c<0>(s);
    +        typename result_of::at_c<Seq,1>::type what = at_c<1>(s);
    +
    +        std::cout 
    +            << n << " bottles of " << what << " on the wall.\n" 
    +            << n << " bottles of " << what << "!\n"
    +            << "Take one down - pass it around.\n";
    +
    +        n -= 1; // glug glug...
    +
    +        std::cout
    +            << n << " bottles of " << what << " on the wall.\n" 
    +            << std::endl;
    +    }
    +};
    +
    +void try_it()
    +{
    +    unsigned n_milk = 99;
    +    for(int i = 0; i < 3; ++i)
    +        make_unfused_generic(bottles_song())(n_milk,"milk");
    +    // 96 bottles left for me
    +}
    +
    +
    + + See + also +
    + +
    + + + +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/generation/functions/make_unfused_lvalue_args.html b/doc/html/fusion/functional/generation/functions/make_unfused_lvalue_args.html new file mode 100644 index 00000000..d4dccf57 --- /dev/null +++ b/doc/html/fusion/functional/generation/functions/make_unfused_lvalue_args.html @@ -0,0 +1,142 @@ + + + +make_unfused_lvalue_args + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + Creates a unfused_lvalue_args adapter + for a given, unary Polymorphic + Function Object. The usual element + conversion is applied to the target function. +

    +
    + + Synopsis +
    +
    +template <typename F>
    +inline typename make_unfused_lvalue_args<F>::type
    +make_unfused_lvalue_args(F const & f);
    +
    +
    + + Parameters +
    +
    +++++ + + + + + + + + + + +
    ParameterRequirementDescription
    fModel + of Polymorphic + Function Object +The function to transform.
    +
    + + Expression + Semantics +
    +
    +make_unfused_lvalue_args(f);
    +
    +

    + Return type: A specialization of unfused_lvalue_args. +

    +

    + Semantics: Returns a unfused_lvalue_args adapter + for f. +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/generation/make_unfused_lvalue_args.hpp>
    +
    +
    + + Example +
    +
    +struct fused_incrementer
    +{
    +    template <class Seq> 
    +    struct result 
    +    { 
    +        typedef void type;
    +    };
    +
    +    template <class Seq>
    +    void operator()(Seq const & s) const
    +    {
    +        for_each(s,++boost::lambda::_1);
    +    }
    +};
    +
    +void try_it()
    +{
    +    int a = 2; char b = 'X';
    +    make_unfused_lvalue_args(fused_incrementer())(a,b);
    +    assert(a == 3 && b == 'Y');
    +}
    +
    +
    + + See + also +
    + +
    + + + +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/generation/functions/make_unfused_rvalue_args.html b/doc/html/fusion/functional/generation/functions/make_unfused_rvalue_args.html new file mode 100644 index 00000000..1a674940 --- /dev/null +++ b/doc/html/fusion/functional/generation/functions/make_unfused_rvalue_args.html @@ -0,0 +1,141 @@ + + + +make_unfused_rvalue_args + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + Creates a unfused_rvalue_args adapter + for a given, unary Polymorphic + Function Object. The usual element + conversion is applied to the target function. +

    +
    + + Synopsis +
    +
    +template <typename F>
    +inline typename make_unfused_rvalue_args<F>::type
    +make_unfused_rvalue_args(F const & f);
    +
    +
    + + Parameters +
    +
    +++++ + + + + + + + + + + +
    ParameterRequirementDescription
    fModel + of Polymorphic + Function Object +The function to transform.
    +
    + + Expression + Semantics +
    +
    +make_unfused_rvalue_args(f);
    +
    +

    + Return type: A specialization of unfused_rvalue_args. +

    +

    + Semantics: Returns a unfused_rvalue_args adapter + for f. +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/generation/make_unfused_rvalue_args.hpp>
    +
    +
    + + Example +
    +
    +struct sequence_printer
    +{
    +    template <class Seq> 
    +    struct result 
    +    { 
    +        typedef void type;
    +    };
    +
    +    template <class Seq>
    +    void operator()(Seq const & s) const
    +    {
    +        std::cout << s << std::endl;
    +    }
    +};
    +
    +void try_it()
    +{
    +    make_unfused_rvalue_args(sequence_printer())
    +        (24,"bottles of beer in",'a',"box.");
    +}
    +
    +
    + + See + also +
    + +
    + + + +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/generation/metafunctions.html b/doc/html/fusion/functional/generation/metafunctions.html new file mode 100644 index 00000000..3c233649 --- /dev/null +++ b/doc/html/fusion/functional/generation/metafunctions.html @@ -0,0 +1,46 @@ + + + +Metafunctions + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    + + + + +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/generation/metafunctions/make_fused.html b/doc/html/fusion/functional/generation/metafunctions/make_fused.html new file mode 100644 index 00000000..9d7aa0a2 --- /dev/null +++ b/doc/html/fusion/functional/generation/metafunctions/make_fused.html @@ -0,0 +1,72 @@ + + + +make_fused + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + Returns the result type of make_fused. +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/generation/make_fused.hpp>
    +
    +
    + + Synopsis +
    +
    +namespace result_of
    +{
    +    template<typename Function>
    +    struct make_fused
    +    {
    +        typedef unspecified type;
    +    };
    +}
    +
    +
    + + See + also +
    + +
    + + + +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/generation/metafunctions/make_fused_function_object.html b/doc/html/fusion/functional/generation/metafunctions/make_fused_function_object.html new file mode 100644 index 00000000..938658f1 --- /dev/null +++ b/doc/html/fusion/functional/generation/metafunctions/make_fused_function_object.html @@ -0,0 +1,72 @@ + + + +make_fused_function_object + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + Returns the result type of make_fused_function_object. +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/generation/make_fused_function_object.hpp>
    +
    +
    + + Synopsis +
    +
    +namespace result_of
    +{
    +    template<typename Function>
    +    struct make_fused_function_object
    +    {
    +        typedef unspecified type;
    +    };
    +}
    +
    +
    + + See + also +
    + +
    + + + +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/generation/metafunctions/make_fused_procedure.html b/doc/html/fusion/functional/generation/metafunctions/make_fused_procedure.html new file mode 100644 index 00000000..7134f8df --- /dev/null +++ b/doc/html/fusion/functional/generation/metafunctions/make_fused_procedure.html @@ -0,0 +1,72 @@ + + + +make_fused_procedure + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + Returns the result type of make_fused_procedure. +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/generation/make_fused_procedure.hpp>
    +
    +
    + + Synopsis +
    +
    +namespace result_of
    +{
    +    template<typename Function>
    +    struct make_fused_procedure
    +    {
    +        typedef unspecified type;
    +    };
    +}
    +
    +
    + + See + also +
    + +
    + + + +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/generation/metafunctions/make_unfused_generic.html b/doc/html/fusion/functional/generation/metafunctions/make_unfused_generic.html new file mode 100644 index 00000000..b75228e5 --- /dev/null +++ b/doc/html/fusion/functional/generation/metafunctions/make_unfused_generic.html @@ -0,0 +1,72 @@ + + + +make_unfused_generic + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + Returns the result type of make_unfused_generic. +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/generation/make_unfused_generic.hpp>
    +
    +
    + + Synopsis +
    +
    +namespace result_of
    +{
    +    template<typename Function>
    +    struct make_unfused_generic
    +    {
    +        typedef unspecified type;
    +    };
    +}
    +
    +
    + + See + also +
    + +
    + + + +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/generation/metafunctions/make_unfused_lvalue_args.html b/doc/html/fusion/functional/generation/metafunctions/make_unfused_lvalue_args.html new file mode 100644 index 00000000..e0eddb50 --- /dev/null +++ b/doc/html/fusion/functional/generation/metafunctions/make_unfused_lvalue_args.html @@ -0,0 +1,72 @@ + + + +make_unfused_lvalue_args + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + Returns the result type of make_unfused_lvalue_args. +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/generation/make_unfused_lvalue_args.hpp>
    +
    +
    + + Synopsis +
    +
    +namespace result_of
    +{
    +    template<typename Function>
    +    struct make_unfused_lvalue_args
    +    {
    +        typedef unspecified type;
    +    };
    +}
    +
    +
    + + See + also +
    + +
    + + + +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/generation/metafunctions/make_unfused_rvalue_args.html b/doc/html/fusion/functional/generation/metafunctions/make_unfused_rvalue_args.html new file mode 100644 index 00000000..86f0b445 --- /dev/null +++ b/doc/html/fusion/functional/generation/metafunctions/make_unfused_rvalue_args.html @@ -0,0 +1,72 @@ + + + +make_unfused_rvalue_args + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + Returns the result type of make_unfused_rvalue_args. +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/generation/make_unfused_rvalue_args.hpp>
    +
    +
    + + Synopsis +
    +
    +namespace result_of
    +{
    +    template<typename Function>
    +    struct make_unfused_rvalue_args
    +    {
    +        typedef unspecified type;
    +    };
    +}
    +
    +
    + + See + also +
    + +
    + + + +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/invocation.html b/doc/html/fusion/functional/invocation.html new file mode 100644 index 00000000..3b88b6cc --- /dev/null +++ b/doc/html/fusion/functional/invocation.html @@ -0,0 +1,53 @@ + + + +Invocation + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    + + + + +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/invocation/functions.html b/doc/html/fusion/functional/invocation/functions.html new file mode 100644 index 00000000..e868aad6 --- /dev/null +++ b/doc/html/fusion/functional/invocation/functions.html @@ -0,0 +1,43 @@ + + + +Functions + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    + + + + +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/invocation/functions/invoke.html b/doc/html/fusion/functional/invocation/functions/invoke.html new file mode 100644 index 00000000..b6dac72e --- /dev/null +++ b/doc/html/fusion/functional/invocation/functions/invoke.html @@ -0,0 +1,160 @@ + + + +invoke + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + Calls a Deferred + Callable Object with the arguments from a Sequence. +

    +

    + The corresponding metafunction, result_of::invoke does not define a type member for target functions of + non-class type whose arity is not satisfied by the size of the sequence. +

    +

    + The first template parameter can be specialized explicitly to avoid copying + and/or to control the const qualification of a function object. +

    +

    + If the target function is a pointer to a class members, the corresponding + object can be specified as a reference, pointer, or smart pointer. In + case of the latter, a freestanding get_pointer function + must be defined (Boost provides this function for std::auto_ptr + and boost::shared_ptr). +

    +
    + + Synopsis +
    +
    +template<
    +    typename Function, 
    +    class Sequence
    +    >
    +typename result_of::invoke<Function, Sequence>::type
    +invoke(Function f, Sequence & s);
    +
    +template<
    +    typename Function, 
    +    class Sequence
    +    >
    +typename result_of::invoke<Function, Sequence const>::type 
    +invoke(Function f, Sequence const & s);
    +
    +
    + + Parameters +
    +
    +++++ + + + + + + + + + + + + + + + + + +
    ParameterRequirementDescription
    fA + Deferred + Callable Object +The function to call.
    sA + Forward + Sequence +The arguments.
    +
    + + Expression + Semantics +
    +
    +invoke(f,s);
    +
    +

    + Return type: Return type of f when invoked with the elements in + s as its arguments. +

    +

    + Semantics: Invokes f + with the elements in s + 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 +
    + +
    + + + +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/invocation/functions/invoke_function_object.html b/doc/html/fusion/functional/invocation/functions/invoke_function_object.html new file mode 100644 index 00000000..2ebd1693 --- /dev/null +++ b/doc/html/fusion/functional/invocation/functions/invoke_function_object.html @@ -0,0 +1,173 @@ + + + +invoke_function_object + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + Calls a Polymorphic Function + Object with the arguments from a Sequence. +

    +

    + The corresponding metafunction, result_of::invoke_function_object, does + not define a type member, + if the nested result + class template of the target function object is empty. +

    +

    + The first template parameter can be specialized explicitly to avoid copying + and/or to control the const qualification of a function object. +

    +
    + + Synopsis +
    +
    +template<
    +    typename Function, 
    +    class Sequence
    +    >
    +typename result_of::invoke_function_object<Function, Sequence>::type
    +invoke_function_object(Function f, Sequence & s);
    +
    +template<
    +    typename Function, 
    +    class Sequence
    +    >
    +typename result_of::invoke_function_object<Function, Sequence const>::type
    +invoke_function_object(Function f, Sequence const & s);
    +
    +
    + + Parameters +
    +
    +++++ + + + + + + + + + + + + + + + + + +
    ParameterRequirementDescription
    fModel + of Polymorphic + Function Object +The function object to call.
    sModel + of Forward + Sequence +The arguments.
    +
    + + Expression + Semantics +
    +
    +invoke_procedure(f,s);
    +
    +

    + Return type: Return type of f when invoked with the elements in + s as its arguments. +

    +

    + Semantics: Invokes f + with the elements in s + as arguments and returns the result of the call expression. +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/invocation/invoke_function_object.hpp>
    +
    +
    + + Example +
    +
    +struct sub
    +{
    +    template<typename T, typename _>
    +    struct result
    +    {
    +        typedef T type;
    +    };
    +
    +    template<typename T>
    +    T operator()(T lhs, T rhs) const
    +    {
    +        return lhs - rhs;
    +    }
    +};
    +
    +void try_it()
    +{
    +    sub f;
    +    assert(f(2,1) == invoke_function_object(f,make_vector(2,1)));
    +}
    +
    +
    + + See + also +
    + +
    + + + +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/invocation/functions/invoke_procedure.html b/doc/html/fusion/functional/invocation/functions/invoke_procedure.html new file mode 100644 index 00000000..fc6eefd4 --- /dev/null +++ b/doc/html/fusion/functional/invocation/functions/invoke_procedure.html @@ -0,0 +1,166 @@ + + + +invoke_procedure + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + Calls a Callable + Object with the arguments from a Sequence. + The result of the call is ignored. +

    +

    + The corresponding metafunction, __result_of_invoke_procedure, does not + define a type member + for target functions of non-class type whose arity is not satisfied by + the size of the sequence. +

    +

    + The first template parameter can be specialized explicitly to avoid copying + and/or to control the const qualification of a function object. +

    +

    + For pointers to class members corresponding object can be specified as + a reference, pointer, or smart pointer. In case of the latter, a freestanding + get_pointer function must be defined (Boost provides + this function for std::auto_ptr and boost::shared_ptr). +

    +

    + The target function must not be a pointer to a member object (dereferencing + such a pointer without returning anything does not make sense, so it + isn't implemented). +

    +
    + + Synopsis +
    +
    +template<
    +    typename Function, 
    +    class Sequence
    +    >
    +typename result_of::invoke_procedure<Function, Sequence>::type
    +invoke_procedure(Function f, Sequence & s);
    +
    +template<
    +    typename Function, 
    +    class Sequence
    +    >
    +typename result_of::invoke_procedure<Function, Sequence const>::type
    +invoke_procedure(Function f, Sequence const & s);
    +
    +
    + + Parameters +
    +
    +++++ + + + + + + + + + + + + + + + + + +
    ParameterRequirementDescription
    fModel + of Callable + Object +The function to call.
    sModel + of Forward + Sequence +The arguments.
    +
    + + Expression + Semantics +
    +
    +invoke_procedure(f,s);
    +
    +

    + Return type: void +

    +

    + Semantics: Invokes f + with the elements in s + as arguments. +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/invocation/invoke_procedure.hpp>
    +
    +
    + + Example +
    +
    +vector<int,int> v(1,2);
    +using namespace boost::lambda;
    +invoke_procedure(_1 += _2, v);
    +assert(front(v) == 3);
    +
    +
    + + See + also +
    + +
    + + + +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/invocation/metafunctions.html b/doc/html/fusion/functional/invocation/metafunctions.html new file mode 100644 index 00000000..d483f03c --- /dev/null +++ b/doc/html/fusion/functional/invocation/metafunctions.html @@ -0,0 +1,43 @@ + + + +Metafunctions + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    + + + + +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/invocation/metafunctions/invoke.html b/doc/html/fusion/functional/invocation/metafunctions/invoke.html new file mode 100644 index 00000000..78c4606c --- /dev/null +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke.html @@ -0,0 +1,75 @@ + + + +invoke + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + Returns the result type of invoke. +

    +

    + Empty for non-class target function types whose arity is not satisfied + by the size of the sequence. +

    +
    + + Synopsis +
    +
    +namespace result_of
    +{
    +    template<
    +        typename Function, 
    +        class Sequence
    +        > 
    +    struct invoke
    +    {
    +        typedef unspecified type;
    +    };
    +}
    +
    +
    + + See + also +
    + +
    + + + +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/invocation/metafunctions/invoke_function_object.html b/doc/html/fusion/functional/invocation/metafunctions/invoke_function_object.html new file mode 100644 index 00000000..66c4954a --- /dev/null +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke_function_object.html @@ -0,0 +1,75 @@ + + + +invoke_function_object + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + Returns the result type of invoke_function_object. +

    +

    + Empty if the target function's nested result + class template is empty. +

    +
    + + Synopsis +
    +
    +namespace result_of
    +{
    +    template<
    +        class Function, 
    +        class Sequence
    +        > 
    +    struct invoke_function_object
    +    {
    +        typedef unspecified type;
    +    };
    +}
    +
    +
    + + See + also +
    + +
    + + + +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/invocation/metafunctions/invoke_procedure.html b/doc/html/fusion/functional/invocation/metafunctions/invoke_procedure.html new file mode 100644 index 00000000..c7fee8c1 --- /dev/null +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke_procedure.html @@ -0,0 +1,75 @@ + + + +invoke_procedure + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + Returns the result type of invoke_procedure. +

    +

    + Empty for non-class target function types whose arity is not satisfied + by the size of the sequence. +

    +
    + + Synopsis +
    +
    +namespace result_of
    +{
    +    template<
    +        typename Function, 
    +        class Sequence
    +        > 
    +    struct invoke_procedure
    +    {
    +        typedef unspecified type;
    +    };
    +}
    +
    +
    + + See + also +
    + +
    + + + +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/introduction.html b/doc/html/fusion/introduction.html index 593c454c..52f9b4fd 100644 --- a/doc/html/fusion/introduction.html +++ b/doc/html/fusion/introduction.html @@ -3,7 +3,7 @@ Introduction - + @@ -29,9 +29,9 @@ An advantage other languages such as Python and Lisp/ Scheme, ML and Haskell, etc., over C++ is the ability to have heterogeneous containers that can hold arbitrary element types. All the containers in the standard library can only - hold a specific type. A vector<int> - can only hold ints. A list<X> can - only hold elements of type X, + hold a specific type. A vector<int> + can only hold ints. A list<X> can + only hold elements of type X, and so on.

    @@ -41,8 +41,8 @@ on virtual functions to provide polymorphic behavior since the actual type is erased as soon as you store a pointer to a derived class to a pointer to its base. The held objects must be related: you cannot hold objects of unrelated - types such as char, int, class - X, float, + types such as char, int, class + X, float, etc. Oh sure you can use something like Boost.Any to hold arbitrary types, but then you pay more in terms of runtime costs and due to the fact that you practically erased all type information, you'll have @@ -51,7 +51,7 @@

    The Boost.Tuple library written by Jaakko - Jarvi provides heterogeneous containers in C++. The tuple + Jarvi provides heterogeneous containers in C++. The tuple is a basic data structure that can hold heterogeneous types. It's a good first step, but it's not complete. What's missing are the algorithms. It's nice that we can store and retrieve data to and from tuples, pass them around as arguments @@ -89,23 +89,23 @@ fusion algorithms are functional in nature such that algorithms are non mutating (no side effects). However, due to the high cost of returning full sequences such as vectors and lists, Views are returned from Fusion - algorithms instead. For example, the transform algorithm does not actually - return a transformed version of the original sequence. transform returns a transform_view. This view holds a + algorithms instead. For example, the transform algorithm does not actually + return a transformed version of the original sequence. transform returns a transform_view. This view holds a reference to the original sequence plus the transform function. Iteration over - the transform_view + the transform_view will apply the transform function over the sequence elements on demand. This lazy evaluation scheme allows us to chain as many algorithms as we want without incurring a high runtime penalty.

    The lazy evaluation scheme where algorithms return views - allows operations such as push_back to be totally generic. In - Fusion, push_back is actually a generic algorithm - that works on all sequences. Given an input sequence s - and a value x, Fusion's push_back algorithm simply returns - a joint_view: - a view that holds a reference to the original sequence s - and the value x. Functions + allows operations such as push_back to be totally generic. In + Fusion, push_back is actually a generic algorithm + that works on all sequences. Given an input sequence s + and a value x, Fusion's push_back 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.

    diff --git a/doc/html/fusion/iterators.html b/doc/html/fusion/iterators.html index 11313fef..dc2a683e 100644 --- a/doc/html/fusion/iterators.html +++ b/doc/html/fusion/iterators.html @@ -3,7 +3,7 @@ Iterators - + @@ -74,7 +74,7 @@ Sequence.

    - + Header

    diff --git a/doc/html/fusion/iterators/concepts.html b/doc/html/fusion/iterators/concepts.html
    index 303291b2..ccc0b159 100644
    --- a/doc/html/fusion/iterators/concepts.html
    +++ b/doc/html/fusion/iterators/concepts.html
    @@ -3,7 +3,7 @@
     
     Concepts
     
    -
    +
     
     
     
    diff --git a/doc/html/fusion/iterators/concepts/bidirectional_iterator.html b/doc/html/fusion/iterators/concepts/bidirectional_iterator.html
    index 4ec1436f..a91dfacc 100644
    --- a/doc/html/fusion/iterators/concepts/bidirectional_iterator.html
    +++ b/doc/html/fusion/iterators/concepts/bidirectional_iterator.html
    @@ -4,7 +4,7 @@
     Bidirectional
             Iterator
     
    -
    +
     
     
     Bidirectional
             Iterator
     
    - + Description

    @@ -41,27 +41,27 @@

    Notation

    -
    i
    +
    i
    A Bidirectional Iterator
    -
    I
    +
    I
    A Bidirectional Iterator type
    -
    M
    +
    M
    An MPL integral constant
    -
    N
    +
    N
    An integral constant
    - + Refinement of
    @@ -70,7 +70,7 @@ Iterator">Forward Iterator

    - + Expression requirements
    @@ -93,28 +93,28 @@ -next(i) +next(i) Bidirectional Iterator Constant -prior(i) +prior(i) Bidirectional Iterator Constant -advance_c<N>(i) +advance_c<N>(i) Bidirectional Iterator Constant -advance<M>(i) +advance<M>(i) Bidirectional Iterator @@ -123,7 +123,7 @@
    - + Meta Expressions
    @@ -137,13 +137,13 @@ Compile Time Complexity -result_of::prior<I>::type +result_of::prior<I>::type Amortized constant time
    - + Expression Semantics
    @@ -163,14 +163,14 @@ Semantics -prior(i) +prior(i) An - iterator to the element preceding i + iterator to the element preceding i
    - + Invariants

    @@ -179,44 +179,44 @@ Iterator, the following invariants always hold:

    - + Models
    diff --git a/doc/html/fusion/iterators/concepts/forward_iterator.html b/doc/html/fusion/iterators/concepts/forward_iterator.html index 07abf518..428787e2 100644 --- a/doc/html/fusion/iterators/concepts/forward_iterator.html +++ b/doc/html/fusion/iterators/concepts/forward_iterator.html @@ -4,7 +4,7 @@ Forward Iterator - + @@ -30,7 +30,7 @@ Iterator">Forward Iterator
    - + Description

    @@ -41,29 +41,29 @@

    Notation

    -
    i, - j
    +
    i, + j
    Forward Iterators
    -
    I, - J
    +
    I, + J
    Forward Iterator types
    -
    M
    +
    M
    An MPL integral constant
    -
    N
    +
    N
    An integral constant
    - + Expression requirements
    @@ -85,56 +85,56 @@ - + - + - + - + - + - - + + - - + + - - + +
    next(i)next(i) Forward Iterator Constant
    i == - ji == + j Convertible to bool Constant
    i != - ji != + j Convertible to bool Constant
    advance_c<N>(i)advance_c<N>(i) Forward Iterator Constant
    advance<M>(i)advance<M>(i) Forward Iterator Constant
    distance(i, j)result_of::distance<I, J>::typedistance(i, j)result_of::distance<I, J>::type Constant
    deref(i)result_of::deref<I>::typederef(i)result_of::deref<I>::type Constant
    *iresult_of::deref<I>::type*iresult_of::deref<I>::type Constant
    - + Meta Expressions
    @@ -149,41 +149,41 @@ -result_of::next<I>::type +result_of::next<I>::type Amortized constant time -result_of::equal_to<I, J>::type +result_of::equal_to<I, J>::type Amortized constant time -result_of::advance_c<I, N>::type +result_of::advance_c<I, N>::type Linear -result_of::advance<I ,M>::type +result_of::advance<I ,M>::type Linear -result_of::distance<I ,J>::type +result_of::distance<I ,J>::type Linear -result_of::deref<I>::type +result_of::deref<I>::type Amortized constant time -result_of::value_of<I>::type +result_of::value_of<I>::type Amortized constant time
    - + Expression Semantics
    @@ -198,136 +198,136 @@ -next(i) +next(i) An - iterator to the element following i + iterator to the element following i -i == - j +i == + j Iterator equality comparison -i != - j +i != + j Iterator inequality comparison -advance_c<N>(i) +advance_c<N>(i) An - iterator n elements after i + iterator n elements after i in the sequence -advance<M>(i) +advance<M>(i) Equivalent - to advance_c<M::value>(i) + to advance_c<M::value>(i) -distance(i, j) +distance(i, j) The - number of elements between i - and j + number of elements between i + and j -deref(i) +deref(i) The - element at positioni + element at positioni -*i +*i Equivalent - to deref(i) + to deref(i)
    - + Invariants

    The following invariants always hold:

      -
    • !(i - == j) == (i != j)
    • -
    • next(i) == advance_c<1>(i)
    • -
    • distance(i, advance_c<N>(i)) == N
    • +
    • !(i + == j) == (i != j)
    • +
    • next(i) == advance_c<1>(i)
    • +
    • distance(i, advance_c<N>(i)) == N
    • - Using next to traverse the + Using next to traverse the sequence will never return to a previously seen position
    • -deref(i) - is equivalent to *i +deref(i) + is equivalent to *i
    • - If i == - j then *i is equivalent to *j + If i == + j then *i is equivalent to *j
    - + Models
    diff --git a/doc/html/fusion/iterators/concepts/random_access_iterator.html b/doc/html/fusion/iterators/concepts/random_access_iterator.html index ff35adbd..647d48ee 100644 --- a/doc/html/fusion/iterators/concepts/random_access_iterator.html +++ b/doc/html/fusion/iterators/concepts/random_access_iterator.html @@ -4,7 +4,7 @@ Random Access Iterator - + Random Access Iterator
    - + Description

    @@ -41,29 +41,29 @@

    Notation

    -
    i, - j
    +
    i, + j
    Random Access Iterators
    -
    I, - J
    +
    I, + J
    Random Access Iterator types
    -
    M
    +
    M
    An MPL integral constant
    -
    N
    +
    N
    An integral constant
    - + Refinement of
    @@ -73,7 +73,7 @@ Iterator

    - + Expression requirements
    @@ -96,28 +96,28 @@ -next(i) +next(i) Random Access Iterator Constant -prior(i) +prior(i) Random Access Iterator Constant -advance_c<N>(i) +advance_c<N>(i) Random Access Iterator Constant -advance<M>(i) +advance<M>(i) Random Access Iterator @@ -126,7 +126,7 @@
    - + Meta Expressions
    @@ -141,53 +141,53 @@ -result_of::advance_c<I, N>::type +result_of::advance_c<I, N>::type Amortized constant time -result_of::advance<I, M>::type +result_of::advance<I, M>::type Amortized constant time -result_of::distance<I ,J>::type +result_of::distance<I ,J>::type Amortized constant time
    - + Models
    diff --git a/doc/html/fusion/iterators/functions/advance_c.html b/doc/html/fusion/iterators/functions/advance_c.html index bf5c044a..3f0ae941 100644 --- a/doc/html/fusion/iterators/functions/advance_c.html +++ b/doc/html/fusion/iterators/functions/advance_c.html @@ -3,7 +3,7 @@ advance_c - + @@ -26,14 +26,14 @@
    - + Description

    Moves an iterator by a specified distance.

    - + Synopsis
    @@ -41,10 +41,10 @@
         typename I,
         int N
         >
    -typename result_of::advance_c<I, N>::type advance_c(I const& i); 
    +typename result_of::advance_c<I, N>::type advance_c(I const& i); 
     
    -

    Table 1.7. Parameters

    +

    Table 1.7. Parameters

    @@ -58,7 +58,7 @@ - + - + @@ -76,42 +76,42 @@
    ii Model of Forward @@ -67,7 +67,7 @@ Iterator to move relative to
    NN Integer constant Number of positions to move
    - + Expression Semantics
    -advance_c<N>(i);
    +advance_c<N>(i);
     

    - Return type: A model of the same iterator - concept as i. + Return type: A model of the same iterator + concept as i.

    - Semantics: Returns an iterator to the - element N positions from - i. If i + Semantics: Returns an iterator to the + element N positions from + i. If i is a Bidirectional - Iterator then N + Iterator then N may be negative.

    - + Header
     #include <boost/fusion/iterator/advance.hpp>
     
    - + Example
    -typedef vector<int,int,int> vec;
    +typedef vector<int,int,int> vec;
     
     vec v(1,2,3);
    -assert(deref(advance_c<2>(begin(v))) == 3);
    +assert(deref(advance_c<2>(begin(v))) == 3);
     
    diff --git a/doc/html/fusion/iterators/functions/deref.html b/doc/html/fusion/iterators/functions/deref.html index 4b0a5c88..c70c0550 100644 --- a/doc/html/fusion/iterators/functions/deref.html +++ b/doc/html/fusion/iterators/functions/deref.html @@ -3,7 +3,7 @@ deref - + @@ -26,24 +26,24 @@
    - + Description

    Deferences an iterator.

    - + Synopsis
     template<
         typename I
         >
    -typename result_of::deref<I>::type deref(I const& i);
    +typename result_of::deref<I>::type deref(I const& i);
     
    -

    Table 1.2. Parameters

    +

    Table 1.2. Parameters

    @@ -56,7 +56,7 @@ - +
    Description
    ii Model of Forward @@ -67,39 +67,39 @@
    - + Expression Semantics
    -deref(i);
    +deref(i);
     

    - Return type: result_of::deref<I>::type + Return type: result_of::deref<I>::type

    - Semantics: Dereferences the iterator - i. + Semantics: Dereferences the iterator + i.

    - + Header
     #include <boost/fusion/iterator/deref.hpp>
     
    - + Example
    -typedef vector<int,int&> vec;
    +typedef vector<int,int&> vec;
     
     int i(0);
     vec v(1,i);
    -assert(deref(begin(v)) == 1);
    -assert(deref(next(begin(v))) == 0);
    -assert(&(deref(next(begin(v)))) == &i);
    +assert(deref(begin(v)) == 1);
    +assert(deref(next(begin(v))) == 0);
    +assert(&(deref(next(begin(v)))) == &i);
     
    diff --git a/doc/html/fusion/iterators/functions/distance.html b/doc/html/fusion/iterators/functions/distance.html index c09eb69f..a46543b5 100644 --- a/doc/html/fusion/iterators/functions/distance.html +++ b/doc/html/fusion/iterators/functions/distance.html @@ -3,7 +3,7 @@ distance - + @@ -26,14 +26,14 @@
    - + Description

    Returns the distance between 2 iterators.

    - + Synopsis
    @@ -41,10 +41,10 @@
         typename I,
         typename J
         >
    -typename result_of::distance<I, J>::type distance(I const& i, J const& j);
    +typename result_of::distance<I, J>::type distance(I const& i, J const& j);
     
    -

    Table 1.5. Parameters

    +

    Table 1.5. Parameters

    @@ -58,7 +58,7 @@
    -i, j +i, j Models of Forward @@ -69,36 +69,36 @@
    - + Expression Semantics
    -distance(i,j);
    +distance(i,j);
     

    - Return type: int + Return type: int

    - Semantics: Returns the distance between - iterators i and j. + Semantics: Returns the distance between + iterators i and j.

    - + Header
     #include <boost/fusion/iterator/distance.hpp>
     
    - + Example
    -typedef vector<int,int,int> vec;
    +typedef vector<int,int,int> vec;
     
     vec v(1,2,3);
    -assert(distance(begin(v), next(next(begin(v)))) == 2);
    +assert(distance(begin(v), next(next(begin(v)))) == 2);
     
    diff --git a/doc/html/fusion/iterators/functions/next.html b/doc/html/fusion/iterators/functions/next.html index 2329e480..cf0a56b2 100644 --- a/doc/html/fusion/iterators/functions/next.html +++ b/doc/html/fusion/iterators/functions/next.html @@ -3,7 +3,7 @@ next - + @@ -26,24 +26,24 @@
    - + Description

    Moves an iterator 1 position forwards.

    - + Synopsis
     template<
         typename I
         >
    -typename result_of::next<I>::type next(I const& i);
    +typename result_of::next<I>::type next(I const& i);
     
    -

    Table 1.3. Parameters

    +

    Table 1.3. Parameters

    @@ -56,7 +56,7 @@ - +
    Description
    ii Model of Forward @@ -67,7 +67,7 @@
    - + Expression Semantics
    @@ -75,31 +75,31 @@ next(i);

    - Return type: A model of the same iterator - concept as i. + Return type: A model of the same iterator + concept as i.

    - Semantics: Returns an iterator to the - next element after i. + Semantics: Returns an iterator to the + next element after i.

    - + Header
     #include <boost/fusion/iterator/next.hpp>
     
    - + Example
    -typedef vector<int,int,int> vec;
    +typedef vector<int,int,int> vec;
     
     vec v(1,2,3);
    -assert(deref(begin(v)) == 1);
    -assert(deref(next(begin(v))) == 2);
    -assert(deref(next(next(begin(v)))) == 3);
    +assert(deref(begin(v)) == 1);
    +assert(deref(next(begin(v))) == 2);
    +assert(deref(next(next(begin(v)))) == 3);
     
    diff --git a/doc/html/fusion/iterators/functions/prior.html b/doc/html/fusion/iterators/functions/prior.html index 58dbb1bc..12de68c5 100644 --- a/doc/html/fusion/iterators/functions/prior.html +++ b/doc/html/fusion/iterators/functions/prior.html @@ -3,7 +3,7 @@ prior - + @@ -26,24 +26,24 @@
    - + Description

    Moves an iterator 1 position backwards.

    - + Synopsis
     template<
         typename I
         >
    -typename result_of::prior<I>::type prior(I const& i);
    +typename result_of::prior<I>::type prior(I const& i);
     
    -

    Table 1.4. Parameters

    +

    Table 1.4. Parameters

    @@ -56,7 +56,7 @@ - +
    Description
    ii Model of Bidirectional @@ -67,38 +67,38 @@
    - + Expression Semantics
    -prior(i);
    +prior(i);
     

    - Return type: A model of the same iterator - concept as i. + Return type: A model of the same iterator + concept as i.

    - Semantics: Returns an iterator to the - element prior to i. + Semantics: Returns an iterator to the + element prior to i.

    - + Header
     #include <boost/fusion/iterator/prior.hpp>
     
    - + Example
    -typedef vector<int,int> vec;
    +typedef vector<int,int> vec;
     
     vec v(1,2);
    -assert(deref(next(begin(v))) == 2);
    -assert(deref(prior(next(begin(v)))) == 1);
    +assert(deref(next(begin(v))) == 2);
    +assert(deref(prior(next(begin(v)))) == 1);
     
    diff --git a/doc/html/fusion/iterators/metafunctions.html b/doc/html/fusion/iterators/metafunctions.html index 9f4cbefe..2c324a67 100644 --- a/doc/html/fusion/iterators/metafunctions.html +++ b/doc/html/fusion/iterators/metafunctions.html @@ -3,7 +3,7 @@ Metafunctions - +advance - + @@ -26,14 +26,14 @@
    - + Description

    Moves an iterator a specified distance.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.17. Parameters

    +

    Table 1.17. Parameters

    @@ -61,7 +61,7 @@ - + - + + of MPL + Integral Constant +
    II Model of Forward @@ -70,52 +70,54 @@ Iterator to move relative to
    MM Model - of MPL Integral Constant Number of positions to move
    - + Expression Semantics
    -result_of::advance<I,M>::type
    +result_of::advance<I,M>::type
     

    - Return type: A model of the same iterator - concept as I. + Return type: A model of the same iterator + concept as I.

    - Semantics: Returns an iterator a distance - M from I. - If I is a Semantics: Returns an iterator a distance + M from I. + If I is a Bidirectional - Iterator then M + Iterator then M may be negative.

    - + Header
     #include <boost/fusion/iterator/advance.hpp>
     
    - + Example
    -typedef vector<int,double,char> vec;
    -typedef result_of::begin<vec>::type first;
    -typedef result_of::next<first>::type second;
    -typedef result_of::next<second>::type third;
    +typedef vector<int,double,char> vec;
    +typedef result_of::begin<vec>::type first;
    +typedef result_of::next<first>::type second;
    +typedef result_of::next<second>::type third;
     
    -BOOST_MPL_ASSERT((result_of::equal_to<result_of::advance<first, boost::mpl::int_<2> >::type, third>));
    +BOOST_MPL_ASSERT((result_of::equal_to<result_of::advance<first, boost::mpl::int_<2> >::type, third>));
     
    diff --git a/doc/html/fusion/iterators/metafunctions/advance_c.html b/doc/html/fusion/iterators/metafunctions/advance_c.html index 263d912a..07bd853f 100644 --- a/doc/html/fusion/iterators/metafunctions/advance_c.html +++ b/doc/html/fusion/iterators/metafunctions/advance_c.html @@ -3,7 +3,7 @@ advance_c - + @@ -26,14 +26,14 @@
    - + Description

    Moves an iterator by a specified distance.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.18. Parameters

    +

    Table 1.18. Parameters

    @@ -61,7 +61,7 @@ - + - + @@ -79,43 +79,43 @@
    II Model of Forward @@ -70,7 +70,7 @@ Iterator to move relative to
    NN Integer constant Number of positions to move
    - + Expression Semantics
    -result_of::advance_c<I, N>::type
    +result_of::advance_c<I, N>::type
     

    - Return type: A model of the same iterator - concept as I. + Return type: A model of the same iterator + concept as I.

    - Semantics: Returns an iterator a distance - N from I. - If I is a Semantics: Returns an iterator a distance + N from I. + If I is a Bidirectional - Iterator then N - may be negative. Equivalent to result_of::advance<I, boost::mpl::int_<N> >::type. + Iterator then N + may be negative. Equivalent to result_of::advance<I, boost::mpl::int_<N> >::type.

    - + Header
     #include <boost/fusion/iterator/advance.hpp>
     
    - + Example
    -typedef vector<int,double,char> vec;
    -typedef result_of::begin<vec>::type first;
    -typedef result_of::next<first>::type second;
    -typedef result_of::next<second>::type third;
    +typedef vector<int,double,char> vec;
    +typedef result_of::begin<vec>::type first;
    +typedef result_of::next<first>::type second;
    +typedef result_of::next<second>::type third;
     
    -BOOST_MPL_ASSERT((result_of::equal_to<result_of::advance_c<first, 2>::type, third>));
    +BOOST_MPL_ASSERT((result_of::equal_to<result_of::advance_c<first, 2>::type, third>));
     
    diff --git a/doc/html/fusion/iterators/metafunctions/deref.html b/doc/html/fusion/iterators/metafunctions/deref.html index bed43929..c396139f 100644 --- a/doc/html/fusion/iterators/metafunctions/deref.html +++ b/doc/html/fusion/iterators/metafunctions/deref.html @@ -3,7 +3,7 @@ deref - + @@ -26,14 +26,14 @@
    - + Description

    Returns the type that will be returned by dereferencing an iterator.

    - + Synposis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.12. Parameters

    +

    Table 1.12. Parameters

    @@ -59,7 +59,7 @@ - +
    Description
    II Model of Forward @@ -70,42 +70,42 @@
    - + Expression Semantics
    -result_of::deref<I>::type
    +result_of::deref<I>::type
     

    - Return type: Any type + Return type: Any type

    - Semantics: Returns the result of dereferencing - an iterator of type I. + Semantics: Returns the result of dereferencing + an iterator of type I.

    - + Header
     #include <boost/fusion/iterator/deref.hpp>
     
    - + Example
    -typedef vector<int,int&> vec;
    +typedef vector<int,int&> vec;
     typedef const vec const_vec;
    -typedef result_of::begin<vec>::type first;
    -typedef result_of::next<first>::type second;
    +typedef result_of::begin<vec>::type first;
    +typedef result_of::next<first>::type second;
     
    -typedef result_of::begin<const_vec>::type const_first;
    -typedef result_of::next<const_first>::type const_second;
    +typedef result_of::begin<const_vec>::type const_first;
    +typedef result_of::next<const_first>::type const_second;
     
    -BOOST_MPL_ASSERT((boost::is_same<result_of::deref<first>::type, int&>));
    -BOOST_MPL_ASSERT((boost::is_same<result_of::deref<second>::type, int&>));
    +BOOST_MPL_ASSERT((boost::is_same<result_of::deref<first>::type, int&>));
    +BOOST_MPL_ASSERT((boost::is_same<result_of::deref<second>::type, int&>));
     
    diff --git a/doc/html/fusion/iterators/metafunctions/distance.html b/doc/html/fusion/iterators/metafunctions/distance.html index 66ceb33c..89344d1f 100644 --- a/doc/html/fusion/iterators/metafunctions/distance.html +++ b/doc/html/fusion/iterators/metafunctions/distance.html @@ -3,7 +3,7 @@ distance - + @@ -26,14 +26,14 @@
    - + Description

    Returns the distance between two iterators.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.16. Parameters

    +

    Table 1.16. Parameters

    @@ -61,7 +61,7 @@
    -I, J +I, J Models of Forward @@ -72,38 +72,39 @@
    - + Expression Semantics
    -result_of::distance<I, J>::type
    +result_of::distance<I, J>::type
     

    - Return type: A model of MPL Integral Constant. + Return type: A model of MPL + Integral Constant.

    - Semantics: Returns the distance between - iterators of types I and - J. + Semantics: Returns the distance between + iterators of types I and + J.

    - + Header
     #include <boost/fusion/iterator/distance.hpp>
     
    - + Example
    -typedef vector<int,double,char> vec;
    -typedef result_of::begin<vec>::type first;
    -typedef result_of::next<first>::type second;
    -typedef result_of::next<second>::type third;
    -typedef result_of::distance<first,third>::type dist;
    +typedef vector<int,double,char> vec;
    +typedef result_of::begin<vec>::type first;
    +typedef result_of::next<first>::type second;
    +typedef result_of::next<second>::type third;
    +typedef result_of::distance<first,third>::type dist;
     
     BOOST_MPL_ASSERT_RELATION(dist::value, ==, 2);
     
    diff --git a/doc/html/fusion/iterators/metafunctions/equal_to.html b/doc/html/fusion/iterators/metafunctions/equal_to.html index bfa507f1..d47b6190 100644 --- a/doc/html/fusion/iterators/metafunctions/equal_to.html +++ b/doc/html/fusion/iterators/metafunctions/equal_to.html @@ -3,7 +3,7 @@ equal_to - + @@ -26,15 +26,16 @@
    - + Description

    - Returns a true-valued MPL Integral Constant if I - and J are equal. + Returns a true-valued MPL + Integral Constant if I + and J are equal.

    - + Synopsis
    @@ -48,7 +49,7 @@
     };
     
    -

    Table 1.15. Parameters

    +

    Table 1.15. Parameters

    @@ -62,7 +63,7 @@
    -I, J +I, J Any fusion iterators Operation's @@ -71,38 +72,39 @@
    - + Expression Semantics
    -result_of::equal_to<I, J>::type
    +result_of::equal_to<I, J>::type
     

    - Return type: A model of MPL Integral Constant. + Return type: A model of MPL + Integral Constant.

    - Semantics: Returns boost::mpl::true_ - if I and J are iterators to the same position. - Returns boost::mpl::false_ otherwise. + Semantics: Returns boost::mpl::true_ + if I and J are iterators to the same position. + Returns boost::mpl::false_ otherwise.

    - + Header
     #include <boost/fusion/iterator/equal_to.hpp>
     
    - + Example
    -typedef vector<int,double> vec;
    -typedef result_of::begin<vec>::type first;
    -typedef result_of::end<vec>::type last;
    -BOOST_MPL_ASSERT((result_of::equal_to<first, first>));
    -BOOST_MPL_ASSERT_NOT((result_of::equal_to<first,last>));
    +typedef vector<int,double> vec;
    +typedef result_of::begin<vec>::type first;
    +typedef result_of::end<vec>::type last;
    +BOOST_MPL_ASSERT((result_of::equal_to<first, first>));
    +BOOST_MPL_ASSERT_NOT((result_of::equal_to<first,last>));
     
    diff --git a/doc/html/fusion/iterators/metafunctions/next.html b/doc/html/fusion/iterators/metafunctions/next.html index 275b2a74..b67e0ce0 100644 --- a/doc/html/fusion/iterators/metafunctions/next.html +++ b/doc/html/fusion/iterators/metafunctions/next.html @@ -3,7 +3,7 @@ next - + @@ -26,14 +26,14 @@
    - + Description

    Returns the type of the next iterator in a sequence.

    - + Synposis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.13. Parameters

    +

    Table 1.13. Parameters

    @@ -59,7 +59,7 @@ - +
    Description
    II Model of Forward @@ -70,37 +70,37 @@
    - + Expression Semantics
    -result_of::next<I>::type
    +result_of::next<I>::type
     

    - Return type: A model of the same iterator - concept as I. + Return type: A model of the same iterator + concept as I.

    - Semantics: Returns an iterator to the - next element in the sequence after I. + Semantics: Returns an iterator to the + next element in the sequence after I.

    - + Header
     #include <boost/fusion/iterator/next.hpp>
     
    - + Example
    -typedef vector<int,double> vec;
    -typedef result_of::next<result_of::begin<vec>::type>::type second;
    +typedef vector<int,double> vec;
    +typedef result_of::next<result_of::begin<vec>::type>::type second;
     
    -BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<second>::type, double>));
    +BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<second>::type, double>));
     
    diff --git a/doc/html/fusion/iterators/metafunctions/prior.html b/doc/html/fusion/iterators/metafunctions/prior.html index 3200021a..5d3e98bd 100644 --- a/doc/html/fusion/iterators/metafunctions/prior.html +++ b/doc/html/fusion/iterators/metafunctions/prior.html @@ -3,7 +3,7 @@ prior - + @@ -26,14 +26,14 @@
    - + Description

    Returns the type of the previous iterator in a sequence.

    - + Synopsis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.14. Parameters

    +

    Table 1.14. Parameters

    @@ -59,7 +59,7 @@ - +
    Description
    II Model of Bidirectional @@ -70,40 +70,40 @@
    - + Expression Semantics
    -result_of::prior<I>::type
    +result_of::prior<I>::type
     

    - Return type: A model of the same iterator - concept as I. + Return type: A model of the same iterator + concept as I.

    - Semantics: Returns an iterator to the - previous element in the sequence before I. + Semantics: Returns an iterator to the + previous element in the sequence before I.

    - + Header
     #include <boost/fusion/iterator/prior.hpp>
     
    - + Example
    -typedef vector<int,double> vec;
    -typedef result_of::next<result_of::begin<vec>::type>::type second;
    +typedef vector<int,double> vec;
    +typedef result_of::next<result_of::begin<vec>::type>::type second;
     
    -BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<second>::type, double>));
    +BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<second>::type, double>));
     
    -typedef result_of::prior<second>::type first;
    -BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<first>::type, int>));
    +typedef result_of::prior<second>::type first;
    +BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<first>::type, int>));
     
    diff --git a/doc/html/fusion/iterators/metafunctions/value_of.html b/doc/html/fusion/iterators/metafunctions/value_of.html index 42a79d68..1422687a 100644 --- a/doc/html/fusion/iterators/metafunctions/value_of.html +++ b/doc/html/fusion/iterators/metafunctions/value_of.html @@ -3,7 +3,7 @@ value_of - + @@ -26,14 +26,14 @@
    - + Description

    Returns the type stored at the position of an iterator.

    - + Synopsis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.11. Parameters

    +

    Table 1.11. Parameters

    @@ -59,7 +59,7 @@ - +
    Description
    II Model of Forward @@ -70,40 +70,40 @@
    - + Expression Semantics
    -result_of::value_of<I>::type
    +result_of::value_of<I>::type
     

    - Return type: Any type + Return type: Any type

    - Semantics: Returns the type stored in - a sequence at iterator position I. + Semantics: Returns the type stored in + a sequence at iterator position I.

    - + Header
     #include <boost/fusion/iterator/value_of.hpp>
     
    - + Example
    -typedef vector<int,int&,const int&> vec;
    -typedef result_of::begin<vec>::type first;
    -typedef result_of::next<first>::type second;
    -typedef result_of::next<second>::type third;
    +typedef vector<int,int&,const int&> vec;
    +typedef result_of::begin<vec>::type first;
    +typedef result_of::next<first>::type second;
    +typedef result_of::next<second>::type third;
     
    -BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<first>::type, int>));
    -BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<second>::type, int&>));
    -BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<third>::type, const int&>));
    +BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<first>::type, int>));
    +BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<second>::type, int&>));
    +BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<third>::type, const int&>));
     
    diff --git a/doc/html/fusion/iterators/operators.html b/doc/html/fusion/iterators/operators.html index 707d5964..6e6bc780 100644 --- a/doc/html/fusion/iterators/operators.html +++ b/doc/html/fusion/iterators/operators.html @@ -3,7 +3,7 @@ Operators - + diff --git a/doc/html/fusion/iterators/operators/operator_equality.html b/doc/html/fusion/iterators/operators/operator_equality.html index ed63d6e6..e4be64ee 100644 --- a/doc/html/fusion/iterators/operators/operator_equality.html +++ b/doc/html/fusion/iterators/operators/operator_equality.html @@ -4,7 +4,7 @@ Operator == - + Operator ==
    - + Description

    Compares 2 iterators for equality.

    - + Synopsis
    @@ -49,7 +49,7 @@
     unspecified operator==(I const& i, J const& i);
     
    -

    Table 1.9. Parameters

    +

    Table 1.9. Parameters

    @@ -63,7 +63,7 @@
    -i, j +i, j Any fusion iterators Operation's @@ -72,7 +72,7 @@
    - + Expression Semantics
    @@ -80,15 +80,15 @@ i == j

    - Return type: Convertible to bool. + Return type: Convertible to bool.

    - Semantics: Equivalent to result_of::equal_to<I,J>::value - where I and J are the types of i - and j respectively. + Semantics: Equivalent to result_of::equal_to<I,J>::value + where I and J are the types of i + and j respectively.

    - + Header
    diff --git a/doc/html/fusion/iterators/operators/operator_inequality.html b/doc/html/fusion/iterators/operators/operator_inequality.html
    index c6328841..8ccd1d1e 100644
    --- a/doc/html/fusion/iterators/operators/operator_inequality.html
    +++ b/doc/html/fusion/iterators/operators/operator_inequality.html
    @@ -4,7 +4,7 @@
      Operator
             !=
     
    -
    +
     
     
      Operator
             !=
     
    - + Description

    Compares 2 iterators for inequality.

    - + Synopsis
    @@ -48,7 +48,7 @@
     unspecified operator==(I const& i, J const& i);
     
    -

    Table 1.10. Parameters

    +

    Table 1.10. Parameters

    @@ -62,7 +62,7 @@
    -i, j +i, j Any fusion iterators Operation's @@ -71,20 +71,20 @@
    - + Expression Semantics

    - Return type: Convertible to bool. + Return type: Convertible to bool.

    - Semantics: Equivalent to !result_of::equal_to<I,J>::value - where I and J are the types of i - and j respectively. + Semantics: Equivalent to !result_of::equal_to<I,J>::value + where I and J are the types of i + and j respectively.

    - + Header
    diff --git a/doc/html/fusion/iterators/operators/operator_unary_star.html b/doc/html/fusion/iterators/operators/operator_unary_star.html
    index 33199e55..c80293a3 100644
    --- a/doc/html/fusion/iterators/operators/operator_unary_star.html
    +++ b/doc/html/fusion/iterators/operators/operator_unary_star.html
    @@ -4,7 +4,7 @@
      Operator
             *
     
    -
    +
     
     
     
    @@ -30,24 +30,24 @@
             *"> Operator
             *
     
    - + Description

    Dereferences an iterator.

    - + Synopsis
     template<
         typename I
         >
    -typename result_of::deref<I>::type operator*(unspecified<I> const& i);
    +typename result_of::deref<I>::type operator*(unspecified<I> const& i);
     
    -

    Table 1.8. Parameters

    +

    Table 1.8. Parameters

    @@ -60,7 +60,7 @@ - +
    Description
    ii Model of Forward @@ -71,7 +71,7 @@
    - + Expression Semantics
    @@ -79,31 +79,31 @@ *i

    - Return type: Equivalent to the return - type of deref(i). + Return type: Equivalent to the return + type of deref(i).

    - Semantics: Equivalent to deref(i). + Semantics: Equivalent to deref(i).

    - + Header
     #include <boost/fusion/iterator/deref.hpp>
     
    - + Example
    -typedef vector<int,int&> vec;
    +typedef vector<int,int&> vec;
     
     int i(0);
     vec v(1,i);
    -assert(*begin(v) == 1);
    -assert(*next(begin(v)) == 0);
    -assert(&(*next(begin(v))) == &i);
    +assert(*begin(v) == 1);
    +assert(*next(begin(v)) == 0);
    +assert(&(*next(begin(v))) == &i);
     
    diff --git a/doc/html/fusion/notes.html b/doc/html/fusion/notes.html index 0050bee6..0118fc89 100644 --- a/doc/html/fusion/notes.html +++ b/doc/html/fusion/notes.html @@ -3,10 +3,10 @@ Notes - + - + @@ -20,36 +20,36 @@

    -PrevUpHomeNext +PrevUpHomeNext

    - + Recursive Inlined Functions

    - An interesting peculiarity of functions like at when applied to a at when applied to a Forward - Sequence like list is that what could have been + Sequence like list is that what could have been linear runtime complexity effectively becomes constant O(1) due to compiler optimization of C++ inlined functions, however deeply recursive (up to a certain compiler limit of course). Compile time complexity remains linear.

    - + Overloaded Functions

    Associative sequences use function overloading to implement membership testing and type associated key lookup. This amounts to constant runtime and amortized - constant compile time complexities. There is an overloaded function, f(k), for each key type k. The compiler chooses the appropriate function - given a key, k. + constant compile time complexities. There is an overloaded function, f(k), for each key type k. The compiler chooses the appropriate function + given a key, k.

    - + Tag Dispatching

    @@ -68,7 +68,7 @@

    - For example, the fusion result_of::begin metafunction + For example, the fusion result_of::begin metafunction is implemented as follows:

    @@ -86,22 +86,22 @@
         

    1. -Sequence is the type for - which a suitable implementation of result_of::begin_impl +Sequence is the type for + which a suitable implementation of result_of::begin_impl is required
    2. -traits::tag_of is the metafunction that associates - Sequence with an appropriate +traits::tag_of is the metafunction that associates + Sequence with an appropriate tag
    3. -result_of::begin_impl is the template which is specialized +result_of::begin_impl is the template which is specialized to provide an implementation for each tag type

    - + Extensibility

    @@ -113,13 +113,13 @@ and MPL on account of the lazy nature of fusion Algorithms. STL - containers extend themselves in place though member functions such as push_back and insert. MPL + containers extend themselves in place though member functions such as push_back and insert. MPL sequences, on the other hand, are extended through "intrinsic" functions that actually return whole sequences. MPL is purely functional and can not have side effects. For example, MPL's - push_back does not actually - mutate an mpl::vector. It can't do that. Instead, it returns - an extended mpl::vector. + push_back does not actually + mutate an mpl::vector. It can't do that. Instead, it returns + an extended mpl::vector.

    Like MPL, Fusion @@ -129,51 +129,51 @@ are sequences that do not actually contain data, but instead impart an alternative presentation over the data from one or more underlying sequences. Views are proxies. They provide an efficient yet purely functional way to work on - potentially expensive sequence operations. For example, given a vector, Fusion's push_back returns a joint_view, instead of an actual extended - vector. - A joint_view + potentially expensive sequence operations. For example, given a vector, Fusion's push_back returns a joint_view, instead of an actual extended + vector. + A joint_view holds a reference to the original sequence plus the appended data --making it very cheap to pass around.

    - + Element Conversion

    - Functions that take in elemental values to form sequences (e.g. make_list) convert their arguments + Functions that take in elemental values to form sequences (e.g. make_list) convert their arguments to something suitable to be stored as a sequence element. In general, the element types are stored as plain values. Example:

    -make_list(1, 'x')
    +make_list(1, 'x')
     

    - returns a list<int, - char>. + returns a list<int, + char>.

    There are a few exceptions, however.

    - Arrays: + Arrays:

    Array arguments are deduced to reference to const types. For example - [14] + [14] :

    -make_list("Donald", "Daisy")
    +make_list("Donald", "Daisy")
     

    - creates a list + creates a list of type

    -list<const char (&)[7], const char (&)[6]>
    +list<const char (&)[7], const char (&)[6]>
     

    - Function pointers: + Function pointers:

    Function pointers are deduced to the plain non-reference type (i.e. to plain @@ -182,38 +182,38 @@

     void f(int i);
       ...
    -make_list(&f);
    +make_list(&f);
     

    - creates a list + creates a list of type

    -list<void (*)(int)>
    +list<void (*)(int)>
     

    - + boost::ref

    - Fusion's generation functions (e.g. make_list) by default stores the element + Fusion's generation functions (e.g. make_list) by default stores the element types as plain non-reference types. Example:

     void foo(const A& a, B& b) {
         ...
    -    make_list(a, b)
    +    make_list(a, b)
     

    - creates a list + creates a list of type

    -list<A, B>
    +list<A, B>
     

    - Sometimes the plain non-reference type is not desired. You can use boost::ref - and boost::cref to store references or const references + Sometimes the plain non-reference type is not desired. You can use boost::ref + and boost::cref to store references or const references (respectively) instead. The mechanism does not compromise const correctness since a const object wrapped with ref results in a tuple element with const reference type (see the fifth code line below). Examples: @@ -223,11 +223,11 @@

     A a; B b; const A ca = a;
    -make_list(cref(a), b);          // creates list<const A&, B>
    -make_list(ref(a), b);           // creates list<A&, B>
    -make_list(ref(a), cref(b));     // creates list<A&, const B&>
    -make_list(cref(ca));            // creates list<const A&>
    -make_list(ref(ca));             // creates list<const A&>
    +make_list(cref(a), b);          // creates list<const A&, B>
    +make_list(ref(a), b);           // creates list<A&, B>
    +make_list(ref(a), cref(b));     // creates list<A&, const B&>
    +make_list(cref(ca));            // creates list<const A&>
    +make_list(ref(ca));             // creates list<const A&>
     

    See Boost.Ref for @@ -235,11 +235,11 @@



    -

    [14] +

    [14] 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). + 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).

    @@ -249,7 +249,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/organization.html b/doc/html/fusion/organization.html index 6db1b1f6..dd298da5 100644 --- a/doc/html/fusion/organization.html +++ b/doc/html/fusion/organization.html @@ -3,7 +3,7 @@ Organization - + @@ -34,7 +34,7 @@ The library is organized in three layers:

    - + Layers

    @@ -50,7 +50,7 @@ against.

    - + Directory

      @@ -76,7 +76,7 @@
      • adapted -
          +
          • array
          • @@ -93,7 +93,7 @@
          • container -
              +
              • list
              • @@ -125,7 +125,7 @@
              • view -
                  +
                  • filter_view
                  • @@ -159,11 +159,11 @@

                  - + Example

                  - If, for example, you want to use list, + If, for example, you want to use list, depending on the granularity that you desire, you may do so by including one of

                  @@ -174,13 +174,13 @@

    The first includes all sequences. The second includes all of sequence containers. - The third includes only list - [3] + The third includes only list + [3] .



    -

    [3] +

    [3] 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 bfcc85b5..edafa8cd 100644 --- a/doc/html/fusion/preface.html +++ b/doc/html/fusion/preface.html @@ -3,7 +3,7 @@ Preface - + @@ -29,10 +29,10 @@ Algorithms + Data Structures = Programs.

    - --Niklaus Wirth + --Niklaus Wirth

    - + Description

    @@ -50,7 +50,7 @@ of compile time metaprogramming with runtime programming.

    - + Motivation

    @@ -76,7 +76,7 @@ an instant AHA! moment.

    - + How to use this manual

    @@ -84,7 +84,7 @@ icons precede some text to indicate:

    -

    Table 1.1. Icons

    +

    Table 1.1. Icons

    @@ -130,7 +130,7 @@ Tools.

    - + Support

    diff --git a/doc/html/fusion/quick_start.html b/doc/html/fusion/quick_start.html index cc0940d7..61ae0b8b 100644 --- a/doc/html/fusion/quick_start.html +++ b/doc/html/fusion/quick_start.html @@ -3,7 +3,7 @@ Quick Start - + @@ -27,39 +27,39 @@ Quick Start

    I assume the reader is already familiar with tuples (Boost.Tuple) - and its ancestor std::pair. The tuple is a generalization of std::pair + and its ancestor std::pair. The tuple is a generalization of std::pair for multiple heterogeneous elements (triples, quadruples, etc.). The tuple - is more or less a synonym for fusion's vector. + is more or less a synonym for fusion's vector.

    For starters, we shall include all of Fusion's _sequence_s - [1] + [1] :

     #include <boost/fusion/sequence.hpp>
     

    - Let's begin with a vector - [2] + Let's begin with a vector + [2] :

    -vector<int, char, std::string> stuff(1, 'x', "howdy");
    -int i = at_c<0>(stuff);
    -char ch = at_c<1>(stuff);
    -std::string s = at_c<2>(stuff);
    +vector<int, char, std::string> stuff(1, 'x', "howdy");
    +int i = at_c<0>(stuff);
    +char ch = at_c<1>(stuff);
    +std::string s = at_c<2>(stuff);
     

    - Just replace tuple for vector - and get for at_c and this is exactly like + Just replace tuple for vector + and get for at_c and this is exactly like Boost.Tuple. Actually, either names can be used interchangeably. Yet, the similarity ends - there. You can do a lot more with Fusion vector or tuple. + there. You can do a lot more with Fusion vector or tuple. Let's see some examples.

    - + Print the vector as XML

    @@ -91,38 +91,38 @@ Now, finally:

    -for_each(stuff, print_xml());
    +for_each(stuff, print_xml());
     

    - That's it! for_each is a fusion algorithm. + That's it! for_each is a fusion algorithm. It is a generic algorithm similar to STL's. It iterates over the sequence and calls a user supplied function. In our case, - it calls print_xml's operator() for - each element in stuff. + it calls print_xml's operator() for + each element in stuff.

    -
    [Caution] Caution

    - The result of typeid(x).name() is platform specific. The code here is +

    + The result of typeid(x).name() is platform specific. The code here is just for exposition. Of course you already know that :-)

    - for_each is generic. With - print_xml, you can use it to + for_each is generic. With + print_xml, you can use it to print just about any Fusion Sequence.

    - + Print only pointers

    Let's get a little cleverer. Say we wish to write a generic function that takes in an arbitrary sequence and XML prints only those elements - which are pointers. Ah, easy. First, let's include the is_pointer + which are pointers. Ah, easy. First, let's include the is_pointer boost type trait:

    @@ -135,36 +135,36 @@
     template <typename Sequence>
     void xml_print_pointers(Sequence const& seq)
     {
    -    for_each(filter_if<boost::is_pointer<_> >(seq), print_xml());
    +    for_each(filter_if<boost::is_pointer<_> >(seq), print_xml());
     }
     

    - filter_if is another Fusion - algorithm. It returns a filter_view, a conforming Fusion sequence. + filter_if is another Fusion + algorithm. It returns a filter_view, a conforming Fusion sequence. This view reflects only those elements that pass the given predicate. In this - case, the predicate is boost::is_pointer<_>. - This "filtered view" is then passed to the for_each algorithm, which then prints + case, the predicate is boost::is_pointer<_>. + This "filtered view" is then passed to the for_each algorithm, which then prints the "filtered view" as XML.

    Easy, right?

    - + Associative tuples

    Ok, moving on...

    - Apart from vector, fusion has a couple + Apart from vector, fusion has a couple of other sequence types to choose from. Each sequence has its own characteristics. - We have list, set, map, plus a multitude of views that provide various ways to present + We have list, set, map, plus a multitude of views that provide various ways to present the sequences.

    - Fusion's map associate types with elements. - It can be used as a cleverer replacement of the struct. + Fusion's map associate types with elements. + It can be used as a cleverer replacement of the struct. Example:

    @@ -174,32 +174,32 @@
         struct age;
     }
     
    -typedef map<
    -    fusion::pair<fields::name, std::string>
    -  , fusion::pair<fields::age, int> > 
    +typedef map<
    +    fusion::pair<fields::name, std::string>
    +  , fusion::pair<fields::age, int> > 
     person;
     

    - map + map is an associative sequence. Its elements are Fusion pairs which differ somewhat - from std::pair. Fusion pairs only contain one member, + from std::pair. Fusion pairs only contain one member, with the type of their second template parameter. The first type parameter of the pair is used as an index to the associated element in the sequence. - For example, given a a_person - of type, person, you can do: + For example, given a a_person + of type, person, you can do:

     using namespace fields;
    -std::string person_name = at_key<name>(a_person);
    -int person_age = at_key<age>(a_person);
    +std::string person_name = at_key<name>(a_person);
    +int person_age = at_key<age>(a_person);
     

    - Why go through all this trouble, you say? Well, for one, unlike the struct, we are dealing with a generic data structure. + Why go through all this trouble, you say? Well, for one, unlike the struct, we are dealing with a generic data structure. There are a multitude of facilities available at your disposal provided out of the box with fusion or written by others. With these facilities, introspection comes for free, for example. We can write one serialization function (well, two, if you consider loading and saving) that will work for all your fusion - maps. + maps. Example:

    @@ -215,17 +215,17 @@
     template <typename Stuff>
     void save(Stuff const& stuff)
     {
    -    for_each(stuff, saver());
    +    for_each(stuff, saver());
     }
     

    - The save function is generic - and will work for all types of stuff - regardless if it is a person, - a dog or a whole alternate_universe. + The save function is generic + and will work for all types of stuff + regardless if it is a person, + a dog or a whole alternate_universe.

    - + Tip of the Iceberg

    @@ -236,14 +236,14 @@



    -

    [1] +

    [1] There are finer grained header files available if you wish to have more control over which components to include (see section Orgainization for details).

    -

    [2] - 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 +

    [2] + 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.

    diff --git a/doc/html/fusion/references.html b/doc/html/fusion/references.html index ef4f7188..3655c26e 100644 --- a/doc/html/fusion/references.html +++ b/doc/html/fusion/references.html @@ -3,7 +3,7 @@ References - + diff --git a/doc/html/fusion/sequences.html b/doc/html/fusion/sequences.html index b8cbb944..b6cb39fd 100644 --- a/doc/html/fusion/sequences.html +++ b/doc/html/fusion/sequences.html @@ -3,7 +3,7 @@ Sequences - + @@ -66,22 +66,97 @@
    Intrinsics
    Functions
    +
    +
    begin
    +
    end
    +
    empty
    +
    front
    +
    back
    +
    size
    +
    at
    +
    at_c
    +
    has_key
    +
    at_key
    +
    Metafunctions
    +
    +
    begin
    +
    end
    +
    empty
    +
    front
    +
    back
    +
    size
    +
    at
    +
    at_c
    +
    value_at
    +
    value_at_c
    +
    has_key
    +
    at_key
    +
    value_at_key
    +
    Generation
    Functions
    +
    +
    make_list
    +
    make_cons
    +
    make_vector
    +
    make_set
    +
    make_map
    +
    Tiers
    +
    list_tie
    +
    vector_tie
    +
    MetaFunctions
    +
    +
    make_list
    +
    make_cons
    +
    make_vector
    +
    make_set
    +
    make_map
    +
    list_tie
    +
    vector_tie
    +
    Conversion
    Functions
    +
    +
    as_list
    +
    as_vector
    +
    as_set
    +
    as_map
    +
    Metafunctions
    +
    +
    as_list
    +
    as_vector
    +
    as_set
    +
    as_map
    +
    Operators
    I/O
    +
    +
    in
    +
    out
    +
    Comparison
    +
    +
    equal
    +
    not + equal
    +
    less + than
    +
    less + than equal
    +
    greater + than
    +
    greater + than equal
    +

    @@ -95,7 +170,7 @@ type that can be used to iterate through the Sequence's elements.

    - + Header

    diff --git a/doc/html/fusion/sequences/adapted.html b/doc/html/fusion/sequences/adapted.html
    index cd502cc0..7eeeee94 100644
    --- a/doc/html/fusion/sequences/adapted.html
    +++ b/doc/html/fusion/sequences/adapted.html
    @@ -3,7 +3,7 @@
     
     Adapted
     
    -
    +
     
     
     
    @@ -33,18 +33,18 @@
     
    boost::variant

    - Fusion provides a couple of adapters for other sequences such as std::pair, + Fusion provides a couple of adapters for other sequences such as std::pair, MPL sequences, - and boost::array. These adapters are written using + and boost::array. These adapters are written using Fusion's non-intrusive Extension mechanism. If you wish to use these sequences with fusion, simply include the necessary files and they will be regarded as first-class, fully conforming fusion sequences - [4] + [4] .

    - + Header

    @@ -52,7 +52,7 @@
     


    -

    [4] +

    [4] Fusion sequences may also be adapted as fully conforming MPL sequences (see Intrinsics). That way, we can have 2-way adaptation to and from MPL diff --git a/doc/html/fusion/sequences/adapted/boost__array.html b/doc/html/fusion/sequences/adapted/boost__array.html index d97de732..e18a3c93 100644 --- a/doc/html/fusion/sequences/adapted/boost__array.html +++ b/doc/html/fusion/sequences/adapted/boost__array.html @@ -3,7 +3,7 @@ boost::array - + @@ -26,41 +26,41 @@

    - This module provides adapters for boost::array. - Including the module header makes boost::array + This module provides adapters for boost::array. + Including the module header makes boost::array a fully conforming Random Access Sequence.

    - + Header
     #include <boost/fusion/sequence/adapted/array.hpp>
     
    - + Model of
    - + Example
     boost::array<int,3> arr = {{1,2,3}};
     
    -std::cout << *begin(arr) << std::endl;
    -std::cout << *next(begin(arr)) << std::endl;
    -std::cout << *advance_c<2>(begin(arr)) << std::endl;
    -std::cout << *prior(end(arr)) << std::endl;
    -std::cout << at_c<2>(arr) << std::endl;
    +std::cout << *begin(arr) << std::endl;
    +std::cout << *next(begin(arr)) << std::endl;
    +std::cout << *advance_c<2>(begin(arr)) << std::endl;
    +std::cout << *prior(end(arr)) << std::endl;
    +std::cout << at_c<2>(arr) << std::endl;
     
    - + See also

    diff --git a/doc/html/fusion/sequences/adapted/boost__tuple.html b/doc/html/fusion/sequences/adapted/boost__tuple.html index 4b280da3..80f25a88 100644 --- a/doc/html/fusion/sequences/adapted/boost__tuple.html +++ b/doc/html/fusion/sequences/adapted/boost__tuple.html @@ -3,7 +3,7 @@ boost::tuple - + @@ -26,27 +26,27 @@

    - This module provides adapters for boost::tuple. - Including the module header makes boost::tuple + This module provides adapters for boost::tuple. + Including the module header makes boost::tuple a fully conforming Forward Sequence.

    - + Header
     #include <boost/fusion/sequence/adapted/boost_tuple.hpp>
     
    - + Model of
    - + Example
    @@ -55,7 +55,7 @@
     std::cout << *boost::fusion::next(boost::fusion::begin(example_tuple)) << '\n';
     
    - + See also

    diff --git a/doc/html/fusion/sequences/adapted/boost__variant.html b/doc/html/fusion/sequences/adapted/boost__variant.html index 07f77105..080344f6 100644 --- a/doc/html/fusion/sequences/adapted/boost__variant.html +++ b/doc/html/fusion/sequences/adapted/boost__variant.html @@ -3,7 +3,7 @@ boost::variant - + @@ -26,8 +26,8 @@

    - This module provides adapters for boost::variant. - Including the module header makes boost::variant + This module provides adapters for boost::variant. + Including the module header makes boost::variant a fully conforming Forward Sequence. The variant acts as a sequence of the types that can be @@ -36,21 +36,21 @@ value of that type.

    - + Header
     #include <boost/fusion/sequence/adapted/variant.hpp>
     
    - + Model of
    - + Example
    @@ -60,7 +60,7 @@
     std::cout << example_variant << '\n';
     
    - + See also

    diff --git a/doc/html/fusion/sequences/adapted/mpl_sequence.html b/doc/html/fusion/sequences/adapted/mpl_sequence.html index 4f879cf3..b15c4cc2 100644 --- a/doc/html/fusion/sequences/adapted/mpl_sequence.html +++ b/doc/html/fusion/sequences/adapted/mpl_sequence.html @@ -3,7 +3,7 @@ mpl sequence - + @@ -31,14 +31,14 @@ sequences fully conforming fusion sequences.

    - + Header
     #include <boost/fusion/sequence/adapted/mpl.hpp>
     
    - + Model of
      @@ -62,21 +62,21 @@
    - + Example
     mpl::vector_c<int, 123, 456> vec_c;
     fusion::vector2<int, long> v(vec_c);
    -std::cout << at_c<0>(v) << std::endl;
    -std::cout << at_c<1>(v) << std::endl;
    +std::cout << at_c<0>(v) << std::endl;
    +std::cout << at_c<1>(v) << std::endl;
     
     v = mpl::vector_c<int, 456, 789>();
    -std::cout << at_c<0>(v) << std::endl;
    -std::cout << at_c<1>(v) << std::endl;
    +std::cout << at_c<0>(v) << std::endl;
    +std::cout << at_c<1>(v) << std::endl;
     
    - + See also

    diff --git a/doc/html/fusion/sequences/adapted/std__pair.html b/doc/html/fusion/sequences/adapted/std__pair.html index 48a4ff9f..606cda22 100644 --- a/doc/html/fusion/sequences/adapted/std__pair.html +++ b/doc/html/fusion/sequences/adapted/std__pair.html @@ -3,7 +3,7 @@ std::pair - + @@ -26,44 +26,44 @@

    - This module provides adapters for std::pair. - Including the module header makes std::pair + This module provides adapters for std::pair. + Including the module header makes std::pair a fully conforming Random Access Sequence.

    - + Header
     #include <boost/fusion/sequence/adapted/std_pair.hpp>
     
    - + Model of
    - + Example
     std::pair<int, std::string> p(123, "Hola!!!");
    -std::cout << at_c<0>(p) << std::endl;
    -std::cout << at_c<1>(p) << std::endl;
    +std::cout << at_c<0>(p) << std::endl;
    +std::cout << at_c<1>(p) << std::endl;
     std::cout << p << std::endl;
     
    - + See also

    - std::pair, - TR1 - and std::pair + std::pair, + TR1 + and std::pair

    diff --git a/doc/html/fusion/sequences/concepts.html b/doc/html/fusion/sequences/concepts.html index bb237688..bad9e691 100644 --- a/doc/html/fusion/sequences/concepts.html +++ b/doc/html/fusion/sequences/concepts.html @@ -3,7 +3,7 @@ Concepts - + @@ -40,7 +40,7 @@ Fusion Sequences are organized into a hierarchy of concepts.

    - + Traversal

    @@ -58,7 +58,7 @@ Sequence. These concepts pertain to sequence traversal.

    - + Associativity

    diff --git a/doc/html/fusion/sequences/concepts/associative_sequence.html b/doc/html/fusion/sequences/concepts/associative_sequence.html index 411cb77c..e67216b5 100644 --- a/doc/html/fusion/sequences/concepts/associative_sequence.html +++ b/doc/html/fusion/sequences/concepts/associative_sequence.html @@ -4,7 +4,7 @@ Associative Sequence - + Associative Sequence

    - + Description

    @@ -48,30 +48,30 @@

    Notation

    -
    s
    +
    s
    An Associative Sequence
    -
    S
    +
    S
    An Associative Sequence type
    -
    K
    +
    K
    An arbitrary key type
    -
    o
    +
    o
    An arbitrary object
    -
    e
    +
    e
    A Sequence element
    - + Valid Expressions
    @@ -94,34 +94,35 @@ - - + + - + - +
    has_key<K>(s)MPL - Boolean Constant. Convertible to bool.has_key<K>(s) +MPL + Boolean Constant. Convertible to bool.   Constant
    at_key<K>(s)at_key<K>(s) Any type   Constant
    at_key<K>(s) = oat_key<K>(s) = o Any type -s - is mutable and e = o, - where e is the first +s + is mutable and e = o, + where e is the first element in the sequence, is a valid expression. Constant
    - + Result Type Expressions
    @@ -136,32 +137,32 @@ -result_of::has_key<S, K>::type +result_of::has_key<S, K>::type Amortized constant time -result_of::at_key<S, K>::type +result_of::at_key<S, K>::type Amortized constant time -result_of::value_at_key<S, K>::type +result_of::value_at_key<S, K>::type Amortized constant time

    - note result_of::at_key<S, K> returns the actual type returned by - at_key<K>(s). In + note result_of::at_key<S, K> returns the actual type returned by + at_key<K>(s). In most cases, this is a reference. Hence, there is no way to know the exact - element type using result_of::at_key<S, K>.The element at K + element type using result_of::at_key<S, K>.The element at K may actually be a reference to begin with. For this purpose, you can use - result_of::value_at_key<S, N>. + result_of::value_at_key<S, N>.

    - + Expression Semantics
    @@ -176,30 +177,30 @@ -has_key<K>(s) +has_key<K>(s) A - boolean Integral Constant c - such that c::value == - true if and only if there - is one or more elements with the key k - in s; see has_key. + boolean Integral Constant c + such that c::value == + true if and only if there + is one or more elements with the key k + in s; see has_key. -at_key<K>(s) +at_key<K>(s) The - element associated with the key K - in the sequence s; - see at. + element associated with the key K + in the sequence s; + see at.
    - + Models
    diff --git a/doc/html/fusion/sequences/concepts/bidirectional_sequence.html b/doc/html/fusion/sequences/concepts/bidirectional_sequence.html index 29dbc8dd..972f9c7c 100644 --- a/doc/html/fusion/sequences/concepts/bidirectional_sequence.html +++ b/doc/html/fusion/sequences/concepts/bidirectional_sequence.html @@ -4,7 +4,7 @@ Bidirectional Sequence - +Bidirectional Sequence
    - + Description

    @@ -42,7 +42,7 @@ Iterator.

    - + Refinement of
    @@ -53,26 +53,26 @@

    Notation

    -
    s
    +
    s
    A Forward Sequence
    -
    S
    +
    S
    A Forward Sequence type
    -
    o
    +
    o
    An arbitrary object
    -
    e
    +
    e
    A Sequence element
    - + Valid Expressions
    @@ -97,7 +97,7 @@ - + @@ -105,7 +105,7 @@ - + @@ -113,27 +113,27 @@ - + - +
    begin(s)begin(s) Bidirectional IteratorConstant
    end(s)end(s) Bidirectional IteratorConstant
    back(s)back(s) Any type   Constant
    back(s) = oback(s) = o Any type -s - is mutable and e = o, - where e is the first +s + is mutable and e = o, + where e is the first element in the sequence, is a valid expression. Constant
    - + Result Type Expressions
    @@ -148,24 +148,24 @@ -result_of::begin<S>::type +result_of::begin<S>::type Amortized constant time -result_of::end<S>::type +result_of::end<S>::type Amortized constant time -result_of::back<S>::type +result_of::back<S>::type Amortized constant time
    - + Expression Semantics
    @@ -185,28 +185,28 @@ Semantics -back(s) +back(s) The - last element in the sequence; see back. + last element in the sequence; see back.
    - + Models
    diff --git a/doc/html/fusion/sequences/concepts/forward_sequence.html b/doc/html/fusion/sequences/concepts/forward_sequence.html index 96b2cdc2..e4217258 100644 --- a/doc/html/fusion/sequences/concepts/forward_sequence.html +++ b/doc/html/fusion/sequences/concepts/forward_sequence.html @@ -4,7 +4,7 @@ Forward Sequence - + @@ -30,7 +30,7 @@ Sequence">Forward Sequence
    - + Description

    @@ -43,26 +43,26 @@

    Notation

    -
    s
    +
    s
    A Forward Sequence
    -
    S
    +
    S
    A Forward Sequence type
    -
    o
    +
    o
    An arbitrary object
    -
    e
    +
    e
    A Sequence element
    - + Valid Expressions
    @@ -85,55 +85,57 @@ - + - + - - + + - - + + - + - +
    begin(s)begin(s) Forward Iterator   Constant
    end(s)end(s) Forward Iterator   Constant
    size(s)MPL - Integral Constant. Convertible to int.size(s) +MPL + Integral Constant. Convertible to int.   Constant
    empty(s)MPL - Boolean Constant. Convertible to bool.empty(s) +MPL + Boolean Constant. Convertible to bool.   Constant
    front(s)front(s) Any type   Constant
    front(s) = ofront(s) = o Any type -s - is mutable and e = o, - where e is the first +s + is mutable and e = o, + where e is the first element in the sequence, is a valid expression. Constant
    - + Result Type Expressions
    @@ -148,32 +150,32 @@ -result_of::begin<S>::type +result_of::begin<S>::type Amortized constant time -result_of::end<S>::type +result_of::end<S>::type Amortized constant time -result_of::size<S>::type +result_of::size<S>::type Unspecified -result_of::empty<S>::type +result_of::empty<S>::type Constant time -result_of::front<S>::type +result_of::front<S>::type Amortized constant time
    - + Expression Semantics
    @@ -188,37 +190,37 @@ -begin(s) +begin(s) An - iterator to the first element of the sequence; see begin. + iterator to the first element of the sequence; see begin. -end(s) +end(s) A - past-the-end iterator to the sequence; see end. + past-the-end iterator to the sequence; see end. -size(s) +size(s) The - size of the sequence; see size. + size of the sequence; see size. -empty(s) +empty(s) A - boolean Integral Constant c - such that c::value == - true if and only if the sequence - is empty; see empty. + boolean Integral Constant c + such that c::value == + true if and only if the sequence + is empty; see empty. -front(s) +front(s) The - first element in the sequence; see front. + first element in the sequence; see front.
    - + Invariants

    @@ -226,41 +228,41 @@

    • -[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. + 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 + Two different iterations through s will access its elements in the same order.
    - + Models
    diff --git a/doc/html/fusion/sequences/concepts/random_access_sequence.html b/doc/html/fusion/sequences/concepts/random_access_sequence.html index 59829eeb..bb8d6f51 100644 --- a/doc/html/fusion/sequences/concepts/random_access_sequence.html +++ b/doc/html/fusion/sequences/concepts/random_access_sequence.html @@ -4,7 +4,7 @@ Random Access Sequence - +Random Access Sequence
    - + Description

    @@ -43,7 +43,7 @@ sequence elements.

    - + Refinement of
    @@ -55,30 +55,30 @@

    Notation

    -
    s
    +
    s
    A Random Access Sequence
    -
    S
    +
    S
    A Random Access Sequence type
    -
    N
    +
    N
    An integral constant
    -
    o
    +
    o
    An arbitrary object
    -
    e
    +
    e
    A Sequence element
    - + Valid Expressions
    @@ -103,7 +103,7 @@ - + @@ -111,7 +111,7 @@ - + @@ -119,27 +119,27 @@ - + - +
    begin(s)begin(s) Random Access IteratorConstant
    end(s)end(s) Random Access IteratorConstant
    at<N>(s)at<N>(s) Any type   Constant
    at<N>(s) = oat<N>(s) = o Any type -s - is mutable and e = o, - where e is the first +s + is mutable and e = o, + where e is the first element in the sequence, is a valid expression. Constant
    - + Result Type Expressions
    @@ -154,37 +154,37 @@ -result_of::begin<S>::type +result_of::begin<S>::type Amortized constant time -result_of::end<S>::type +result_of::end<S>::type Amortized constant time -result_of::at<S, N>::type +result_of::at<S, N>::type Amortized constant time -result_of::value_at<S, N>::type +result_of::value_at<S, N>::type Amortized constant time

    - note result_of::at<S, N> returns the actual type returned by - at<N>(s). In + note result_of::at<S, N> returns the actual type returned by + at<N>(s). In most cases, this is a reference. Hence, there is no way to know the exact - element type using result_of::at<S, N>.The element at N + element type using result_of::at<S, N>.The element at N may actually be a reference to begin with. For this purpose, you can use - result_of::value_at<S, N>. + result_of::value_at<S, N>.

    - + Expression Semantics
    @@ -204,28 +204,28 @@ Semantics -at<N>(s) +at<N>(s) The - Nth element from the beginning of the sequence; see at. + Nth element from the beginning of the sequence; see at.
    - + Models
    diff --git a/doc/html/fusion/sequences/containers.html b/doc/html/fusion/sequences/containers.html index ea5044ed..3d57eb13 100644 --- a/doc/html/fusion/sequences/containers.html +++ b/doc/html/fusion/sequences/containers.html @@ -3,7 +3,7 @@ Containers - +STL.

    - + Header

    diff --git a/doc/html/fusion/sequences/containers/cons.html b/doc/html/fusion/sequences/containers/cons.html
    index 28d07d89..539b3016 100644
    --- a/doc/html/fusion/sequences/containers/cons.html
    +++ b/doc/html/fusion/sequences/containers/cons.html
    @@ -3,7 +3,7 @@
     
     cons
     
    -
    +
     
     
     
    @@ -26,29 +26,29 @@
     
     
    - + Description

    - cons is a simple cons is a simple Forward Sequence. - It is a lisp style recursive list structure where car - is the head and cdr - is the tail: usually another cons structure or nil: the empty list. Fusion's list is built on top of this more - primitive data structure. It is more efficient than vector when the target sequence + It is a lisp style recursive list structure where car + is the head and cdr + is the tail: usually another cons structure or nil: the empty list. Fusion's list is built on top of this more + primitive data structure. It is more efficient than vector when the target sequence is constructed piecemeal (a data at a time). The runtime cost of access to each element is peculiarly constant (see Recursive Inlined Functions).

    - + Header
     #include <boost/fusion/sequence/container/list/cons.hpp>
     
    - + Synopsis
    @@ -56,7 +56,7 @@
     struct cons;
     
    - + Template parameters
    @@ -73,21 +73,21 @@
    - + - + - +
    CarCar Head type  
    CdrCdr Tail typenilnil
    - + Model of
    - + Expression Semantics
    @@ -150,71 +150,71 @@ -nil() +nil() Creates an empty list. -C() +C() Creates a cons with default constructed elements. -C(car) +C(car) Creates - a cons with car head + a cons with car head and default constructed tail. -C(car, - cdr) +C(car, + cdr) Creates - a cons with car head - and cdr tail. + a cons with car head + and cdr tail. -C(s) +C(s) Copy constructs a cons from a Forward - Sequence, s. + Sequence, s. -l = - s +l = + s Assigns - to a cons, l, from + to a cons, l, from a Forward - Sequence, s. + Sequence, s. -at<N>(l) +at<N>(l) The - Nth element from the beginning of the sequence; see at. + Nth element from the beginning of the sequence; see at.

    - note at<N>(l) is + note at<N>(l) is provided for convenience and compatibility with the original Boost.Tuple - library, despite cons being + library, despite cons being a Forward Sequence - only (at is supposed to + only (at is supposed to be a Random - Access Sequence requirement). The runtime complexity of at is constant (see Recursive + Access Sequence requirement). The runtime complexity of at is constant (see Recursive Inlined Functions).

    - + Example
     cons<int, cons<float> > l(12, cons<float>(5.5f));
    -std::cout << at<0>(l) << std::endl;
    -std::cout << at<1>(l) << std::endl;
    +std::cout << at<0>(l) << std::endl;
    +std::cout << at<1>(l) << std::endl;
     
    diff --git a/doc/html/fusion/sequences/containers/list.html b/doc/html/fusion/sequences/containers/list.html index 52422a6b..a2e02bfe 100644 --- a/doc/html/fusion/sequences/containers/list.html +++ b/doc/html/fusion/sequences/containers/list.html @@ -3,7 +3,7 @@ list - + @@ -26,19 +26,19 @@
    - + Description

    - list is a list is a Forward - Sequence of heterogenous typed data built on top of cons. It is more efficient than - vector + Sequence of heterogenous typed data built on top of cons. It is more efficient than + vector when the target sequence is constructed piecemeal (a data at a time). The runtime cost of access to each element is peculiarly constant (see Recursive Inlined Functions).

    - + Header
    @@ -46,7 +46,7 @@
     #include <boost/fusion/sequence/container/list/list_forward.hpp>
     
    - + Synopsis
    @@ -60,24 +60,24 @@
     struct list;
     

    - The variadic class interface accepts 0 - to FUSION_MAX_LIST_SIZE - elements, where FUSION_MAX_LIST_SIZE - is a user definable predefined maximum that defaults to 10. + The variadic class interface accepts 0 + to FUSION_MAX_LIST_SIZE + elements, where FUSION_MAX_LIST_SIZE + is a user definable predefined maximum that defaults to 10. Example:

     list<int, char, double>
     

    - You may define the preprocessor constant FUSION_MAX_LIST_SIZE + You may define the preprocessor constant FUSION_MAX_LIST_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_LIST_SIZE 20
     
    - + Template parameters
    @@ -94,14 +94,14 @@
    -T0...TN +T0...TN Element types unspecified-type
    - + Model of
    - + Expression Semantics
    @@ -155,58 +155,58 @@ -L() +L() Creates a list with default constructed elements. -L(e0, e1,... - en) +L(e0, e1,... + en) Creates - a list with elements e0...en. + a list with elements e0...en. -L(s) +L(s) Copy constructs a list from a Forward - Sequence, s. + Sequence, s. -l = - s +l = + s Assigns - to a list, l, from + to a list, l, from a Forward - Sequence, s. + Sequence, s. -at<N>(l) +at<N>(l) The - Nth element from the beginning of the sequence; see at. + Nth element from the beginning of the sequence; see at.

    - note at<n>(l) is + note at<n>(l) is provided for convenience and compatibility with the original Boost.Tuple - library, despite list being + library, despite list being a Forward Sequence - only (at is supposed to be a at is supposed to be a Random - Access Sequence requirement). The runtime complexity of at is constant (see Recursive + Access Sequence requirement). The runtime complexity of at is constant (see Recursive Inlined Functions).

    - + Example
     list<int, float> l(12, 5.5f);
    -std::cout << at<0>(l) << std::endl;
    -std::cout << at<1>(l) << std::endl;
    +std::cout << at<0>(l) << std::endl;
    +std::cout << at<1>(l) << std::endl;
     
    diff --git a/doc/html/fusion/sequences/containers/map.html b/doc/html/fusion/sequences/containers/map.html index 734de514..2a003c8f 100644 --- a/doc/html/fusion/sequences/containers/map.html +++ b/doc/html/fusion/sequences/containers/map.html @@ -3,7 +3,7 @@ map - + @@ -26,14 +26,14 @@
    - + Description

    map is an Associative Sequence of heteregenous typed data elements. Each element is a - key/data pair (see fusion::pair) + key/data pair (see fusion::pair) where the key has no data (type only). Type identity is used to impose an equivalence relation on keys. A map may contain at most one element for each key. Membership testing and element key lookup has constant runtime @@ -41,14 +41,14 @@ Functions).

    - + Header
     #include <boost/fusion/sequence/container/map.hpp>
     
    - + Synopsis
    @@ -62,24 +62,24 @@
     struct map;
     

    - The variadic class interface accepts 0 - to FUSION_MAX_MAP_SIZE - elements, where FUSION_MAX_MAP_SIZE - is a user definable predefined maximum that defaults to 10. + The variadic class interface accepts 0 + to FUSION_MAX_MAP_SIZE + elements, where FUSION_MAX_MAP_SIZE + is a user definable predefined maximum that defaults to 10. Example:

    -map<pair<int, char>, pair<char, char>, pair<double, char> >
    +map<pair<int, char>, pair<char, char>, pair<double, char> >
     

    - You may define the preprocessor constant FUSION_MAX_MAP_SIZE + You may define the preprocessor constant FUSION_MAX_MAP_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_MAP_SIZE 20
     
    - + Template parameters
    @@ -96,14 +96,14 @@
    -T0...TN +T0...TN Element types unspecified-type
    - + Model of
      @@ -116,19 +116,19 @@

      Notation

      -
      M
      +
      M
      - A map type + A map type
      -
      m
      +
      m
      - An instance of map + An instance of map
      -
      e0...en
      +
      e0...en
      - Heterogeneous key/value pairs (see fusion::pair) + Heterogeneous key/value pairs (see fusion::pair)
      -
      s
      +
      s
      A Forward @@ -137,7 +137,7 @@
      - + Expression Semantics
      @@ -160,50 +160,50 @@ -M() +M() Creates a map with default constructed elements. -M(e0, e1,... - en) +M(e0, e1,... + en) Creates - a map with element pairs e0...en. + a map with element pairs e0...en. -M(s) +M(s) Copy constructs a map from a Forward - Sequence s. + Sequence s. -m = - s +m = + s Assigns - to a map, m, from + to a map, m, from a Forward - Sequence s. + Sequence s.
    - + Example
     typedef map<
    -    pair<int, char>
    -  , pair<double, std::string> > 
    +    pair<int, char>
    +  , pair<double, std::string> > 
     map_type;
     
     map_type m(
    -    make_pair<int>('X')
    -  , make_pair<double>("Men"));
    +    make_pair<int>('X')
    +  , make_pair<double>("Men"));
     
    -std::cout << at<int>(m) << std::endl;
    -std::cout << at<double>(m) << std::endl;
    +std::cout << at<int>(m) << std::endl;
    +std::cout << at<double>(m) << std::endl;
     
    diff --git a/doc/html/fusion/sequences/containers/set.html b/doc/html/fusion/sequences/containers/set.html index 640bf5c4..21c24be6 100644 --- a/doc/html/fusion/sequences/containers/set.html +++ b/doc/html/fusion/sequences/containers/set.html @@ -3,7 +3,7 @@ set - + @@ -26,7 +26,7 @@
    - + Description

    @@ -39,14 +39,14 @@ Functions).

    - + Header
     #include <boost/fusion/sequence/container/set.hpp>
     
    - + Synopsis
    @@ -60,24 +60,24 @@
     struct set;
     

    - The variadic class interface accepts 0 - to FUSION_MAX_SET_SIZE - elements, where FUSION_MAX_SET_SIZE - is a user definable predefined maximum that defaults to 10. + The variadic class interface accepts 0 + to FUSION_MAX_SET_SIZE + elements, where FUSION_MAX_SET_SIZE + is a user definable predefined maximum that defaults to 10. Example:

     set<int, char, double>
     

    - You may define the preprocessor constant FUSION_MAX_SET_SIZE + You may define the preprocessor constant FUSION_MAX_SET_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_SET_SIZE 20
     
    - + Template parameters
    @@ -94,14 +94,14 @@
    -T0...TN +T0...TN Element types unspecified-type
    - + Model of
      @@ -114,19 +114,19 @@

      Notation

      -
      S
      +
      S
      - A set type + A set type
      -
      s
      +
      s
      - An instance of set + An instance of set
      -
      e0...en
      +
      e0...en
      Heterogeneous values
      -
      fs
      +
      fs
      A Forward @@ -135,7 +135,7 @@
      - + Expression Semantics
      @@ -158,44 +158,44 @@ -S() +S() Creates a set with default constructed elements. -S(e0, e1,... - en) +S(e0, e1,... + en) Creates - a set with elements e0...en. + a set with elements e0...en. -S(fs) +S(fs) Copy constructs a set from a Forward - Sequence fs. + Sequence fs. -s = - fs +s = + fs Assigns - to a set, s, from + to a set, s, from a Forward - Sequence fs. + Sequence fs.
    - + Example
     typedef set<int, float> S;
     S s(12, 5.5f);
    -std::cout << at_key<int>(s) << std::endl;
    -std::cout << at_key<float>(s) << std::endl;
    -std::cout << result_of::has_key<S, double>::value << std::endl;
    +std::cout << at_key<int>(s) << std::endl;
    +std::cout << at_key<float>(s) << std::endl;
    +std::cout << result_of::has_key<S, double>::value << std::endl;
     
    diff --git a/doc/html/fusion/sequences/containers/vector.html b/doc/html/fusion/sequences/containers/vector.html index 5c9f7638..2232e43e 100644 --- a/doc/html/fusion/sequences/containers/vector.html +++ b/doc/html/fusion/sequences/containers/vector.html @@ -3,7 +3,7 @@ vector - + @@ -26,20 +26,20 @@
    - + Description

    - vector is a vector is a Random Access Sequence of heterogenous typed data structured as a simple - struct where each element - is held as a member variable. vector + struct where each element + is held as a member variable. vector is the simplest of the Fusion sequence container, and in many cases the most efficient.

    - + Header
    @@ -54,11 +54,11 @@
     #include <boost/fusion/sequence/container/vector/vector50.hpp>
     
    - + Synopsis

    - Numbered forms + Numbered forms

     template <>
    @@ -79,7 +79,7 @@
     struct vectorN;
     

    - Variadic form + Variadic form

     template <
    @@ -98,24 +98,24 @@
     vector3<int, char, double>
     

    - The variadic form accepts 0 - to FUSION_MAX_VECTOR_SIZE - elements, where FUSION_MAX_VECTOR_SIZE - is a user definable predefined maximum that defaults to 10. + The variadic form accepts 0 + to FUSION_MAX_VECTOR_SIZE + elements, where FUSION_MAX_VECTOR_SIZE + is a user definable predefined maximum that defaults to 10. Example:

     vector<int, char, double>
     

    - You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE + You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Template parameters
    @@ -132,14 +132,14 @@
    -T0...TN +T0...TN Element types unspecified
    - + Model of
    - + Expression Semantics
    @@ -190,42 +190,42 @@ -V() +V() Creates a vector with default constructed elements. -V(e0, e1,... - en) +V(e0, e1,... + en) Creates - a vector with elements e0...en. + a vector with elements e0...en. -V(s) +V(s) Copy constructs a vector from a Forward - Sequence, s. + Sequence, s. -v = - s +v = + s Assigns - to a vector, v, from + to a vector, v, from a Forward - Sequence, s. + Sequence, s.
    - + Example
     vector<int, float> v(12, 5.5f);
    -std::cout << at_c<0>(v) << std::endl;
    -std::cout << at_c<1>(v) << std::endl;
    +std::cout << at_c<0>(v) << std::endl;
    +std::cout << at_c<1>(v) << std::endl;
     
    diff --git a/doc/html/fusion/sequences/conversion.html b/doc/html/fusion/sequences/conversion.html index 86461af0..976f2743 100644 --- a/doc/html/fusion/sequences/conversion.html +++ b/doc/html/fusion/sequences/conversion.html @@ -3,7 +3,7 @@ Conversion - + @@ -27,14 +27,26 @@ Conversion

    All fusion sequences can be converted to one of the Containers types using one of these conversion functions.

    - + Header

    diff --git a/doc/html/fusion/sequences/conversion/functions.html b/doc/html/fusion/sequences/conversion/functions.html
    index ad31a4c8..90dd0560 100644
    --- a/doc/html/fusion/sequences/conversion/functions.html
    +++ b/doc/html/fusion/sequences/conversion/functions.html
    @@ -3,7 +3,7 @@
     
     Functions
     
    -
    +
     
     
     
    diff --git a/doc/html/fusion/sequences/conversion/functions/as_list.html b/doc/html/fusion/sequences/conversion/functions/as_list.html
    index f2422ad0..99e07c10 100644
    --- a/doc/html/fusion/sequences/conversion/functions/as_list.html
    +++ b/doc/html/fusion/sequences/conversion/functions/as_list.html
    @@ -3,7 +3,7 @@
     
     as_list
     
    -
    +
     
     
     
    @@ -26,14 +26,14 @@
     
     
    - + Description

    - Convert a fusion sequence to a list. + Convert a fusion sequence to a list.

    - + Synopsis
    @@ -46,7 +46,7 @@
     as_list(Sequence const& seq);
     
    - + Parameters
    @@ -61,14 +61,14 @@ - +
    Description
    seqseq An instance of Sequence The sequence to convert.
    - + Expression Semantics
    @@ -76,25 +76,25 @@ as_list(seq);

    - Return type: result_of::as_list<Sequence>::type + Return type: result_of::as_list<Sequence>::type

    - Semantics: Convert a fusion sequence, - seq, to a list. + Semantics: Convert a fusion sequence, + seq, to a list.

    - + Header
     #include <boost/fusion/sequence/conversion/as_list.hpp>
     
    - + Example
    -as_list(make_vector('x', 123, "hello"))
    +as_list(make_vector('x', 123, "hello"))
     
    diff --git a/doc/html/fusion/sequences/conversion/functions/as_map.html b/doc/html/fusion/sequences/conversion/functions/as_map.html index c7dd4320..5c306f22 100644 --- a/doc/html/fusion/sequences/conversion/functions/as_map.html +++ b/doc/html/fusion/sequences/conversion/functions/as_map.html @@ -3,7 +3,7 @@ as_map - + @@ -26,14 +26,14 @@
    - + Description

    - Convert a fusion sequence to a map. + Convert a fusion sequence to a map.

    - + Synopsis
    @@ -46,7 +46,7 @@
     as_map(Sequence const& seq);
     
    - + Parameters
    @@ -61,14 +61,14 @@ - +
    Description
    seqseq An instance of Sequence The sequence to convert.
    - + Expression Semantics
    @@ -76,32 +76,32 @@ as_map(seq);

    - Return type: result_of::as_map<Sequence>::type + Return type: result_of::as_map<Sequence>::type

    - Semantics: Convert a fusion sequence, - seq, to a map. + Semantics: Convert a fusion sequence, + seq, to a map.

    - Precondition: The elements of the sequence + Precondition: The elements of the sequence are assumed to be __fusionpair_s. - There may be no duplicate fusion::pair key types. + There may be no duplicate fusion::pair key types.

    - + Header
     #include <boost/fusion/sequence/conversion/as_map.hpp>
     
    - + Example
    -as_map(make_vector(
    -    make_pair<int>('X')
    -  , make_pair<double>("Men")))
    +as_map(make_vector(
    +    make_pair<int>('X')
    +  , make_pair<double>("Men")))
     
    diff --git a/doc/html/fusion/sequences/conversion/functions/as_set.html b/doc/html/fusion/sequences/conversion/functions/as_set.html index 2faadde7..bc76358e 100644 --- a/doc/html/fusion/sequences/conversion/functions/as_set.html +++ b/doc/html/fusion/sequences/conversion/functions/as_set.html @@ -3,7 +3,7 @@ as_set - + @@ -26,14 +26,14 @@
    - + Description

    - Convert a fusion sequence to a set. + Convert a fusion sequence to a set.

    - + Synopsis
    @@ -46,7 +46,7 @@
     as_set(Sequence const& seq);
     
    - + Parameters
    @@ -61,14 +61,14 @@ - +
    Description
    seqseq An instance of Sequence The sequence to convert.
    - + Expression Semantics
    @@ -76,29 +76,29 @@ as_set(seq);

    - Return type: result_of::as_set<Sequence>::type + Return type: result_of::as_set<Sequence>::type

    - Semantics: Convert a fusion sequence, - seq, to a set. + Semantics: Convert a fusion sequence, + seq, to a set.

    - Precondition: There may be no duplicate + Precondition: There may be no duplicate key types.

    - + Header
     #include <boost/fusion/sequence/conversion/as_set.hpp>
     
    - + Example
    -as_set(make_vector('x', 123, "hello"))
    +as_set(make_vector('x', 123, "hello"))
     
    diff --git a/doc/html/fusion/sequences/conversion/functions/as_vector.html b/doc/html/fusion/sequences/conversion/functions/as_vector.html index 45ae6f08..3e8eeae2 100644 --- a/doc/html/fusion/sequences/conversion/functions/as_vector.html +++ b/doc/html/fusion/sequences/conversion/functions/as_vector.html @@ -3,7 +3,7 @@ as_vector - + @@ -26,14 +26,14 @@
    - + Description

    - Convert a fusion sequence to a vector. + Convert a fusion sequence to a vector.

    - + Synopsis
    @@ -46,7 +46,7 @@
     as_vector(Sequence const& seq);
     
    - + Parameters
    @@ -61,14 +61,14 @@ - +
    Description
    seqseq An instance of Sequence The sequence to convert.
    - + Expression Semantics
    @@ -76,25 +76,25 @@ as_vector(seq);

    - Return type: result_of::as_vector<Sequence>::type + Return type: result_of::as_vector<Sequence>::type

    - Semantics: Convert a fusion sequence, - seq, to a vector. + Semantics: Convert a fusion sequence, + seq, to a vector.

    - + Header
     #include <boost/fusion/sequence/conversion/as_vector.hpp>
     
    - + Example
    -as_vector(make_list('x', 123, "hello"))
    +as_vector(make_list('x', 123, "hello"))
     
    diff --git a/doc/html/fusion/sequences/conversion/metafunctions.html b/doc/html/fusion/sequences/conversion/metafunctions.html index 9241e198..07397f1f 100644 --- a/doc/html/fusion/sequences/conversion/metafunctions.html +++ b/doc/html/fusion/sequences/conversion/metafunctions.html @@ -3,7 +3,7 @@ Metafunctions - + diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_list.html b/doc/html/fusion/sequences/conversion/metafunctions/as_list.html index f648890d..ccd7b83e 100644 --- a/doc/html/fusion/sequences/conversion/metafunctions/as_list.html +++ b/doc/html/fusion/sequences/conversion/metafunctions/as_list.html @@ -3,7 +3,7 @@ as_list - + @@ -26,14 +26,14 @@
    - + Description

    - Returns the result type of as_list. + Returns the result type of as_list.

    - + Synopsis
    @@ -41,7 +41,7 @@
     struct as_list;
     
    - + Parameters
    @@ -56,7 +56,7 @@ - + @@ -65,7 +65,7 @@
    Description
    SequenceSequence A fusion Sequence
    - + Expression Semantics
    @@ -73,26 +73,26 @@ result_of::as_list<Sequence>::type;

    - Return type: A list with same elements as the - input sequence, Sequence. + Return type: A list with same elements as the + input sequence, Sequence.

    - Semantics: Convert a fusion sequence, - Sequence, to a list. + Semantics: Convert a fusion sequence, + Sequence, to a list.

    - + Header
     #include <boost/fusion/sequence/conversion/as_list.hpp>
     
    - + Example
    -result_of::as_list<vector<char, int> >::type
    +result_of::as_list<vector<char, int> >::type
     
    diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_map.html b/doc/html/fusion/sequences/conversion/metafunctions/as_map.html index 6599797e..727def9e 100644 --- a/doc/html/fusion/sequences/conversion/metafunctions/as_map.html +++ b/doc/html/fusion/sequences/conversion/metafunctions/as_map.html @@ -3,7 +3,7 @@ as_map - + @@ -26,14 +26,14 @@
    - + Description

    - Returns the result type of as_map. + Returns the result type of as_map.

    - + Synopsis
    @@ -41,7 +41,7 @@
     struct as_map;
     
    - + Parameters
    @@ -56,7 +56,7 @@ - + @@ -65,7 +65,7 @@
    Description
    SequenceSequence A fusion Sequence
    - + Expression Semantics
    @@ -73,33 +73,33 @@ result_of::as_map<Sequence>::type;

    - Return type: A map with same elements as the - input sequence, Sequence. + Return type: A map with same elements as the + input sequence, Sequence.

    - Semantics: Convert a fusion sequence, - Sequence, to a map. + Semantics: Convert a fusion sequence, + Sequence, to a map.

    - Precondition: The elements of the sequence + Precondition: The elements of the sequence are assumed to be __fusionpair_s. - There may be no duplicate fusion::pair key types. + There may be no duplicate fusion::pair key types.

    - + Header
     #include <boost/fusion/sequence/conversion/as_map.hpp>
     
    - + Example
    -result_of::as_map<vector<
    -    fusion::pair<int, char>
    -  , fusion::pair<double, std::string> > >::type
    +result_of::as_map<vector<
    +    fusion::pair<int, char>
    +  , fusion::pair<double, std::string> > >::type
     
    diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_set.html b/doc/html/fusion/sequences/conversion/metafunctions/as_set.html index a033a33b..810416b3 100644 --- a/doc/html/fusion/sequences/conversion/metafunctions/as_set.html +++ b/doc/html/fusion/sequences/conversion/metafunctions/as_set.html @@ -3,7 +3,7 @@ as_set - + @@ -26,14 +26,14 @@
    - + Description

    - Returns the result type of as_set. + Returns the result type of as_set.

    - + Synopsis
    @@ -41,7 +41,7 @@
     struct as_set;
     
    - + Parameters
    @@ -56,7 +56,7 @@ - + @@ -65,7 +65,7 @@
    Description
    SequenceSequence A fusion Sequence
    - + Expression Semantics
    @@ -73,30 +73,30 @@ result_of::as_set<Sequence>::type;

    - Return type: A set with same elements as the - input sequence, Sequence. + Return type: A set with same elements as the + input sequence, Sequence.

    - Semantics: Convert a fusion sequence, - Sequence, to a set. + Semantics: Convert a fusion sequence, + Sequence, to a set.

    - Precondition: There may be no duplicate + Precondition: There may be no duplicate key types.

    - + Header
     #include <boost/fusion/sequence/conversion/as_set.hpp>
     
    - + Example
    -result_of::as_set<vector<char, int> >::type
    +result_of::as_set<vector<char, int> >::type
     
    diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html b/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html index 1f521126..a666e4e3 100644 --- a/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html +++ b/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html @@ -3,7 +3,7 @@ as_vector - + @@ -26,14 +26,14 @@
    - + Description

    - Returns the result type of as_vector. + Returns the result type of as_vector.

    - + Synopsis
    @@ -41,7 +41,7 @@
     struct as_vector;
     
    - + Parameters
    @@ -56,7 +56,7 @@ - + @@ -65,7 +65,7 @@
    Description
    SequenceSequence A fusion Sequence
    - + Expression Semantics
    @@ -73,26 +73,26 @@ result_of::as_vector<Sequence>::type;

    - Return type: A vector with same elements as - the input sequence, Sequence. + Return type: A vector with same elements as + the input sequence, Sequence.

    - Semantics: Convert a fusion sequence, - Sequence, to a vector. + Semantics: Convert a fusion sequence, + Sequence, to a vector.

    - + Header
     #include <boost/fusion/sequence/conversion/as_vector.hpp>
     
    - + Example
    -result_of::as_vector<list<char, int> >::type
    +result_of::as_vector<list<char, int> >::type
     
    diff --git a/doc/html/fusion/sequences/generation.html b/doc/html/fusion/sequences/generation.html index ede641b2..9a7ca6fd 100644 --- a/doc/html/fusion/sequences/generation.html +++ b/doc/html/fusion/sequences/generation.html @@ -3,7 +3,7 @@ Generation - + @@ -27,13 +27,32 @@ Generation

    These are the functions that you can use to generate various forms of Containers from elemental values.

    - + Header

    diff --git a/doc/html/fusion/sequences/generation/functions.html b/doc/html/fusion/sequences/generation/functions.html
    index 202070ae..fe7a10e8 100644
    --- a/doc/html/fusion/sequences/generation/functions.html
    +++ b/doc/html/fusion/sequences/generation/functions.html
    @@ -3,7 +3,7 @@
     
     Functions
     
    -
    +
     
     
     
    diff --git a/doc/html/fusion/sequences/generation/functions/list_tie.html b/doc/html/fusion/sequences/generation/functions/list_tie.html
    index a2abc5cf..294c0f27 100644
    --- a/doc/html/fusion/sequences/generation/functions/list_tie.html
    +++ b/doc/html/fusion/sequences/generation/functions/list_tie.html
    @@ -3,7 +3,7 @@
     
     list_tie
     
    -
    +
     
     
     
    @@ -26,34 +26,34 @@
     
     
    - + Description

    - Constructs a tie using a list sequence. + Constructs a tie using a list sequence.

    - + Synopsis
     template <typename T0, typename T1,... typename TN>
    -list<T0&, T1&,... TN&>
    +list<T0&, T1&,... TN&>
     list_tie(T0& x0, T1& x1... TN& xN);
     

    - The variadic function accepts 0 - to FUSION_MAX_LIST_SIZE - elements, where FUSION_MAX_LIST_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_LIST_SIZE + The variadic function accepts 0 + to FUSION_MAX_LIST_SIZE + elements, where FUSION_MAX_LIST_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_LIST_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -68,21 +68,21 @@ - + xN
    Description
    x0, +x0, x1,... - xN Instances - of T0, + of T0, T1,... - TN + TN The - arguments to list_tie + arguments to list_tie
    - + Expression Semantics
    @@ -90,21 +90,21 @@ list_tie(x0, x1,... xN);

    - Return type: list<T0&, T1&,... + Return type: list<T0&, T1&,... TN&>

    - Semantics: Create a list of references from x0, x1,... xN. + Semantics: Create a list of references from x0, x1,... xN.

    - + Header
     #include <boost/fusion/sequence/generation/list_tie.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/generation/functions/make_cons.html b/doc/html/fusion/sequences/generation/functions/make_cons.html
    index 509d1f7a..80a05980 100644
    --- a/doc/html/fusion/sequences/generation/functions/make_cons.html
    +++ b/doc/html/fusion/sequences/generation/functions/make_cons.html
    @@ -3,7 +3,7 @@
     
     make_cons
     
    -
    +
     
     
     
    @@ -26,29 +26,29 @@
     
     
    - + Description

    - Create a cons from car - (head) and optional cdr + Create a cons from car + (head) and optional cdr (tail).

    - + Synopsis
     template <typename Car>
    -typename result_of::make_cons<Car>::type
    +typename result_of::make_cons<Car>::type
     make_cons(Car const& car);
     
     template <typename Car, typename Cdr>
    -typename result_of::make_cons<Car, Cdr>::type
    +typename result_of::make_cons<Car, Cdr>::type
     make_cons(Car const& car, Cdr const& cdr);
     
    - + Parameters
    @@ -64,17 +64,17 @@ - + - + @@ -82,7 +82,7 @@
    carcar Instance - of Car + of Car The list's head
    cdrcdr Instance - of Cdr + of Cdr The list's tail (optional)
    - + Expression Semantics
    @@ -90,34 +90,34 @@ make_cons(car, cdr);

    - Return type: result_of::make_cons<Car, Cdr>::type or result_of::make_cons<Car>::type + Return type: result_of::make_cons<Car, Cdr>::type or result_of::make_cons<Car>::type

    - Semantics: Create a cons from car - (head) and optional cdr + Semantics: Create a cons from car + (head) and optional cdr (tail).

    - + Header
     #include <boost/fusion/sequence/generation/make_cons.hpp>
     
    - + Example
     make_cons('x', make_cons(123))
     
    - + See also

    - boost::ref + boost::ref

    diff --git a/doc/html/fusion/sequences/generation/functions/make_list.html b/doc/html/fusion/sequences/generation/functions/make_list.html index 71730dfe..6bd9f948 100644 --- a/doc/html/fusion/sequences/generation/functions/make_list.html +++ b/doc/html/fusion/sequences/generation/functions/make_list.html @@ -3,7 +3,7 @@ make_list - + @@ -26,34 +26,34 @@
    - + Description

    - Create a list from one or more values. + Create a list from one or more values.

    - + Synopsis
     template <typename T0, typename T1,... typename TN>
    -typename result_of::make_list<T0, T1,... TN>::type
    +typename result_of::make_list<T0, T1,... TN>::type
     make_list(T0 const& x0, T1 const& x1... TN const& xN);
     

    - The variadic function accepts 0 - to FUSION_MAX_LIST_SIZE - elements, where FUSION_MAX_LIST_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_LIST_SIZE + The variadic function accepts 0 + to FUSION_MAX_LIST_SIZE + elements, where FUSION_MAX_LIST_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_LIST_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -68,21 +68,21 @@ - + xN
    Description
    x0, +x0, x1,... - xN Instances - of T0, + of T0, T1,... - TN + TN The - arguments to make_list + arguments to make_list
    - + Expression Semantics
    @@ -90,32 +90,32 @@ make_list(x0, x1,... xN);

    - Return type: result_of::make_list<T0, T1,... TN>::type + Return type: result_of::make_list<T0, T1,... TN>::type

    - Semantics: Create a list from x0, x1,... xN. + Semantics: Create a list from x0, x1,... xN.

    - + Header
     #include <boost/fusion/sequence/generation/make_list.hpp>
     
    - + Example
     make_list(123, "hello", 12.5)
     
    - + See also

    - boost::ref + boost::ref

    diff --git a/doc/html/fusion/sequences/generation/functions/make_map.html b/doc/html/fusion/sequences/generation/functions/make_map.html index a4747138..0e1388d4 100644 --- a/doc/html/fusion/sequences/generation/functions/make_map.html +++ b/doc/html/fusion/sequences/generation/functions/make_map.html @@ -3,7 +3,7 @@ make_map - + @@ -26,38 +26,38 @@
    - + Description

    - Create a map from one or more key/data + Create a map from one or more key/data pairs.

    - + Synopsis
     template <
         typename K0, typename K1,... typename KN
       , typename T0, typename T1,... typename TN>
    -typename result_of::make_map<K0, K0,... KN, T0, T1,... TN>::type
    +typename result_of::make_map<K0, K0,... KN, T0, T1,... TN>::type
     make_map(T0 const& x0, T1 const& x1... TN const& xN);
     

    - The variadic function accepts 0 - to FUSION_MAX_VECTOR_SIZE - [10] - elements, where FUSION_MAX_VECTOR_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_VECTOR_SIZE + The variadic function accepts 0 + to FUSION_MAX_VECTOR_SIZE + [10] + elements, where FUSION_MAX_VECTOR_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_VECTOR_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -73,31 +73,31 @@ - + KN - - + xN
    K0, +K0, K1,... - KN The key typesKeys associated with x0, x1,... xN +Keys associated with x0, x1,... xN
    x0, +x0, x1,... - xN Instances - of T0, + of T0, T1,... - TN + TN The - arguments to make_map + arguments to make_map
    - + Expression Semantics
    @@ -105,48 +105,48 @@ make_map<K0, K1,... KN>(x0, x1,... xN);

    - Return type: result_of::make_map<K0, K0,... KN, T0, T1,... TN>::type + Return type: result_of::make_map<K0, K0,... KN, T0, T1,... TN>::type

    - Semantics: Create a map from K0, K1,... KN - keys and x0, + Semantics: Create a map from K0, K1,... KN + keys and x0, x1,... - xN data. + xN data.

    - Precondition: There may be no duplicate + Precondition: There may be no duplicate key types.

    - + Header
     #include <boost/fusion/sequence/generation/make_map.hpp>
     
    - + Example
     make_map(
    -    make_pair<int>('X')
    -  , make_pair<double>("Men"))
    +    make_pair<int>('X')
    +  , make_pair<double>("Men"))
     
    - + See also

    - boost::ref, - fusion::pair + boost::ref, + fusion::pair



    -

    [10] - map is implemented - in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE +

    [10] + map is implemented + in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

    diff --git a/doc/html/fusion/sequences/generation/functions/make_set.html b/doc/html/fusion/sequences/generation/functions/make_set.html index 4faf5ca5..62ba710d 100644 --- a/doc/html/fusion/sequences/generation/functions/make_set.html +++ b/doc/html/fusion/sequences/generation/functions/make_set.html @@ -3,7 +3,7 @@ make_set - + @@ -26,35 +26,35 @@
    - + Description

    - Create a set from one or more values. + Create a set from one or more values.

    - + Synopsis
     template <typename T0, typename T1,... typename TN>
    -typename result_of::make_set<T0, T1,... TN>::type
    +typename result_of::make_set<T0, T1,... TN>::type
     make_set(T0 const& x0, T1 const& x1... TN const& xN);
     

    - The variadic function accepts 0 - to FUSION_MAX_VECTOR_SIZE - [9] - elements, where FUSION_MAX_VECTOR_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_VECTOR_SIZE + The variadic function accepts 0 + to FUSION_MAX_VECTOR_SIZE + [9] + elements, where FUSION_MAX_VECTOR_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_VECTOR_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -69,21 +69,21 @@ - + xN
    Description
    x0, +x0, x1,... - xN Instances - of T0, + of T0, T1,... - TN + TN The - arguments to make_set + arguments to make_set
    - + Expression Semantics
    @@ -91,42 +91,42 @@ make_set(x0, x1,... xN);

    - Return type: result_of::make_set<T0, T1,... TN>::type + Return type: result_of::make_set<T0, T1,... TN>::type

    - Semantics: Create a set from x0, x1,... xN. + Semantics: Create a set from x0, x1,... xN.

    - Precondition: There may be no duplicate + Precondition: There may be no duplicate key types.

    - + Header
     #include <boost/fusion/sequence/generation/make_set.hpp>
     
    - + Example
     make_set(123, "hello", 12.5)
     
    - + See also

    - boost::ref + boost::ref



    -

    [9] - set is implemented - in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE +

    [9] + set is implemented + in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

    diff --git a/doc/html/fusion/sequences/generation/functions/make_vector.html b/doc/html/fusion/sequences/generation/functions/make_vector.html index 2a47ca3d..77db2226 100644 --- a/doc/html/fusion/sequences/generation/functions/make_vector.html +++ b/doc/html/fusion/sequences/generation/functions/make_vector.html @@ -3,7 +3,7 @@ make_vector - + @@ -26,34 +26,34 @@
    - + Description

    - Create a vector from one or more values. + Create a vector from one or more values.

    - + Synopsis
     template <typename T0, typename T1,... typename TN>
    -typename result_of::make_vector<T0, T1,... TN>::type
    +typename result_of::make_vector<T0, T1,... TN>::type
     make_vector(T0 const& x0, T1 const& x1... TN const& xN);
     

    - The variadic function accepts 0 - to FUSION_MAX_VECTOR_SIZE - elements, where FUSION_MAX_VECTOR_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_VECTOR_SIZE + The variadic function accepts 0 + to FUSION_MAX_VECTOR_SIZE + elements, where FUSION_MAX_VECTOR_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_VECTOR_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -68,21 +68,21 @@ - + xN
    Description
    x0, +x0, x1,... - xN Instances - of T0, + of T0, T1,... - TN + TN The - arguments to make_vector + arguments to make_vector
    - + Expression Semantics
    @@ -90,32 +90,32 @@ make_vector(x0, x1,... xN);

    - Return type: result_of::make_vector<T0, T1,... TN>::type + Return type: result_of::make_vector<T0, T1,... TN>::type

    - Semantics: Create a vector from x0, x1,... xN. + Semantics: Create a vector from x0, x1,... xN.

    - + Header
     #include <boost/fusion/sequence/generation/make_vector.hpp>
     
    - + Example
     make_vector(123, "hello", 12.5)
     
    - + See also

    - boost::ref + boost::ref

    diff --git a/doc/html/fusion/sequences/generation/functions/tiers.html b/doc/html/fusion/sequences/generation/functions/tiers.html index c68508cd..9524e749 100644 --- a/doc/html/fusion/sequences/generation/functions/tiers.html +++ b/doc/html/fusion/sequences/generation/functions/tiers.html @@ -3,7 +3,7 @@ Tiers - + @@ -32,8 +32,8 @@ flavors.

    Example: @@ -41,14 +41,14 @@

     int i; char c; double d; 
       ...
    -vector_tie(i, c, a);
    +vector_tie(i, c, a);
     

    - 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)) - [11] + 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)) + [11] .

    @@ -57,7 +57,7 @@

     int i; char c; double d; 
    -vector_tie(i, c, d) = make_vector(1,'a', 5.5);
    +vector_tie(i, c, d) = make_vector(1,'a', 5.5);
     std::cout << i << " " <<  c << " " << d;
     

    @@ -66,7 +66,7 @@ when calling functions which return sequences.

    - + Ignore

    @@ -77,13 +77,13 @@

     char c;
    -vector_tie(ignore, c) = make_vector(1, 'a');
    +vector_tie(ignore, c) = make_vector(1, 'a');
     


    -

    [11] +

    [11] see Boost.Ref - for details about ref + for details about ref

    diff --git a/doc/html/fusion/sequences/generation/functions/vector_tie.html b/doc/html/fusion/sequences/generation/functions/vector_tie.html index 5ac0f10c..c47e8001 100644 --- a/doc/html/fusion/sequences/generation/functions/vector_tie.html +++ b/doc/html/fusion/sequences/generation/functions/vector_tie.html @@ -3,7 +3,7 @@ vector_tie - + @@ -26,34 +26,34 @@
    - + Description

    - Constructs a tie using a vector sequence. + Constructs a tie using a vector sequence.

    - + Synopsis
     template <typename T0, typename T1,... typename TN>
    -vector<T0&, T1&,... TN&>
    +vector<T0&, T1&,... TN&>
     vector_tie(T0& x0, T1& x1... TN& xN);
     

    - The variadic function accepts 0 - to FUSION_MAX_VECTOR_SIZE - elements, where FUSION_MAX_VECTOR_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_VECTOR_SIZE + The variadic function accepts 0 + to FUSION_MAX_VECTOR_SIZE + elements, where FUSION_MAX_VECTOR_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_VECTOR_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -68,21 +68,21 @@ - + xN
    Description
    x0, +x0, x1,... - xN Instances - of T0, + of T0, T1,... - TN + TN The - arguments to vector_tie + arguments to vector_tie
    - + Expression Semantics
    @@ -90,21 +90,21 @@ vector_tie(x0, x1,... xN);

    - Return type: vector<T0&, T1&,... + Return type: vector<T0&, T1&,... TN&>

    - Semantics: Create a vector of references from x0, x1,... xN. + Semantics: Create a vector of references from x0, x1,... xN.

    - + Header
     #include <boost/fusion/sequence/generation/vector_tie.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/generation/metafunctions.html b/doc/html/fusion/sequences/generation/metafunctions.html
    index 3143a7b0..c5cc4937 100644
    --- a/doc/html/fusion/sequences/generation/metafunctions.html
    +++ b/doc/html/fusion/sequences/generation/metafunctions.html
    @@ -3,7 +3,7 @@
     
     MetaFunctions
     
    -
    +
     
     
     
    diff --git a/doc/html/fusion/sequences/generation/metafunctions/list_tie.html b/doc/html/fusion/sequences/generation/metafunctions/list_tie.html
    index 09a5b912..52b71219 100644
    --- a/doc/html/fusion/sequences/generation/metafunctions/list_tie.html
    +++ b/doc/html/fusion/sequences/generation/metafunctions/list_tie.html
    @@ -3,7 +3,7 @@
     
     list_tie
     
    -
    +
     
     
     
    @@ -26,14 +26,14 @@
     
     
    - + Description

    - Returns the result type of list_tie. + Returns the result type of list_tie.

    - + Synopsis
    @@ -41,18 +41,18 @@
     struct list_tie;
     

    - The variadic function accepts 0 - to FUSION_MAX_LIST_SIZE - elements, where FUSION_MAX_LIST_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_LIST_SIZE + The variadic function accepts 0 + to FUSION_MAX_LIST_SIZE + elements, where FUSION_MAX_LIST_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_LIST_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -67,17 +67,17 @@ - + TN -
    Description
    T0, +T0, T1,... - TN Any typeThe arguments to list_tie +The arguments to list_tie
    - + Expression Semantics
    @@ -85,21 +85,21 @@ result_of::list_tie<T0, T1,... TN>::type;

    - Return type: list<T0&, T1&,... + Return type: list<T0&, T1&,... TN&>

    - Semantics: Create a list of references from T0, T1,... TN. + Semantics: Create a list of references from T0, T1,... TN.

    - + Header
     #include <boost/fusion/sequence/generation/list_tie.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_cons.html b/doc/html/fusion/sequences/generation/metafunctions/make_cons.html
    index e8c27aac..2fa7c98a 100644
    --- a/doc/html/fusion/sequences/generation/metafunctions/make_cons.html
    +++ b/doc/html/fusion/sequences/generation/metafunctions/make_cons.html
    @@ -3,7 +3,7 @@
     
     make_cons
     
    -
    +
     
     
     
    @@ -26,14 +26,14 @@
     
     
    - + Description

    - Returns the result type of make_cons. + Returns the result type of make_cons.

    - + Synopsis
    @@ -41,7 +41,7 @@
     struct make_cons;
     
    - + Parameters
    @@ -57,15 +57,15 @@ - + - + @@ -73,7 +73,7 @@
    CarCar Any type The list's head type
    CdrCdr A - cons + cons The list's tail type (optional)
    - + Expression Semantics
    @@ -81,24 +81,24 @@ result_of::make_cons<Car, Cdr>::type

    - Return type: A cons with head element, Car, of type converted following the + Return type: A cons with head element, Car, of type converted following the rules for element - conversion, and tail, Cdr. + conversion, and tail, Cdr.

    - Semantics: Create a cons from Car - (head) and optional Cdr + Semantics: Create a cons from Car + (head) and optional Cdr (tail).

    - + Header
     #include <boost/fusion/sequence/generation/make_cons.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_list.html b/doc/html/fusion/sequences/generation/metafunctions/make_list.html
    index 4f6024e6..be44aca3 100644
    --- a/doc/html/fusion/sequences/generation/metafunctions/make_list.html
    +++ b/doc/html/fusion/sequences/generation/metafunctions/make_list.html
    @@ -3,7 +3,7 @@
     
     make_list
     
    -
    +
     
     
     
    @@ -26,14 +26,14 @@
     
     
    - + Description

    - Returns the result type of make_list. + Returns the result type of make_list.

    - + Synopsis
    @@ -41,18 +41,18 @@
     struct make_list;
     

    - The variadic function accepts 0 - to FUSION_MAX_LIST_SIZE - elements, where FUSION_MAX_LIST_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_LIST_SIZE + The variadic function accepts 0 + to FUSION_MAX_LIST_SIZE + elements, where FUSION_MAX_LIST_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_LIST_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -67,17 +67,17 @@ - + TN -
    Description
    T0, +T0, T1,... - TN Any typeTemplate arguments to make_list +Template arguments to make_list
    - + Expression Semantics
    @@ -85,22 +85,22 @@ result_of::make_list<T0, T1,... TN>::type

    - Return type: A list with elements of types + Return type: A list with elements of types converted following the rules for element conversion.

    - Semantics: Create a list from T0, T1,... TN. + Semantics: Create a list from T0, T1,... TN.

    - + Header
     #include <boost/fusion/sequence/generation/make_list.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_map.html b/doc/html/fusion/sequences/generation/metafunctions/make_map.html
    index d1afd7b8..fe576662 100644
    --- a/doc/html/fusion/sequences/generation/metafunctions/make_map.html
    +++ b/doc/html/fusion/sequences/generation/metafunctions/make_map.html
    @@ -3,7 +3,7 @@
     
     make_map
     
    -
    +
     
     
     
    @@ -26,14 +26,14 @@
     
     
    - + Description

    - Returns the result type of make_map. + Returns the result type of make_map.

    - + Synopsis
    @@ -43,19 +43,19 @@
     struct make_map;
     

    - The variadic function accepts 0 - to FUSION_MAX_VECTOR_SIZE - [13] - elements, where FUSION_MAX_VECTOR_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_VECTOR_SIZE + The variadic function accepts 0 + to FUSION_MAX_VECTOR_SIZE + [13] + elements, where FUSION_MAX_VECTOR_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_VECTOR_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -71,27 +71,27 @@ - + KN - - + TN -
    K0, +K0, K1,... - KN Any typeKeys associated with T0, T1,... TN +Keys associated with T0, T1,... TN
    T0, +T0, T1,... - TN Any typeData associated with keys K0, K1,... KN +Data associated with keys K0, K1,... KN
    - + Expression Semantics
    @@ -99,44 +99,44 @@ resulf_of::make_map<K0, K1,... KN, T0, T1,... TN>::type;

    - Return type: result_of::make_map<K0, K0,... KN, T0, T1,... TN>::type + Return type: result_of::make_map<K0, K0,... KN, T0, T1,... TN>::type

    - Semantics: A map with fusion::pair elements where the second_type is converted following + Semantics: A map with fusion::pair elements where the second_type is converted following the rules for element conversion.

    - Precondition: There may be no duplicate + Precondition: There may be no duplicate key types.

    - + Header
     #include <boost/fusion/sequence/generation/make_map.hpp>
     
    - + Example
     result_of::make_map<int, double, char, double>::type
     
    - + See also

    - fusion::pair + fusion::pair



    -

    [13] - map is implemented - in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE +

    [13] + map is implemented + in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

    diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_set.html b/doc/html/fusion/sequences/generation/metafunctions/make_set.html index 5910a7d5..754de52b 100644 --- a/doc/html/fusion/sequences/generation/metafunctions/make_set.html +++ b/doc/html/fusion/sequences/generation/metafunctions/make_set.html @@ -3,7 +3,7 @@ make_set - + @@ -26,14 +26,14 @@
    - + Description

    - Returns the result type of make_set. + Returns the result type of make_set.

    - + Synopsis
    @@ -41,19 +41,19 @@
     struct make_set;
     

    - The variadic function accepts 0 - to FUSION_MAX_VECTOR_SIZE - [12] - elements, where FUSION_MAX_VECTOR_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_VECTOR_SIZE + The variadic function accepts 0 + to FUSION_MAX_VECTOR_SIZE + [12] + elements, where FUSION_MAX_VECTOR_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_VECTOR_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -68,17 +68,17 @@ - + TN -
    Description
    T0, +T0, T1,... - TN Any typeThe arguments to make_set +The arguments to make_set
    - + Expression Semantics
    @@ -86,26 +86,26 @@ result_of::make_set<T0, T1,... TN>::type

    - Return type: A set with elements of types converted + Return type: A set with elements of types converted following the rules for element conversion.

    - Semantics: Create a set from T0, T1,... TN. + Semantics: Create a set from T0, T1,... TN.

    - Precondition: There may be no duplicate + Precondition: There may be no duplicate key types.

    - + Header
     #include <boost/fusion/sequence/generation/make_set.hpp>
     
    - + Example
    @@ -113,9 +113,9 @@
     


    -

    [12] - set is implemented - in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE +

    [12] + set is implemented + in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

    diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_vector.html b/doc/html/fusion/sequences/generation/metafunctions/make_vector.html index 15af0365..ef83d1f5 100644 --- a/doc/html/fusion/sequences/generation/metafunctions/make_vector.html +++ b/doc/html/fusion/sequences/generation/metafunctions/make_vector.html @@ -3,7 +3,7 @@ make_vector - + @@ -26,14 +26,14 @@
    - + Description

    - Returns the result type of make_vector. + Returns the result type of make_vector.

    - + Synopsis
    @@ -41,18 +41,18 @@
     struct make_vector;
     

    - The variadic function accepts 0 - to FUSION_MAX_VECTOR_SIZE - elements, where FUSION_MAX_VECTOR_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_VECTOR_SIZE + The variadic function accepts 0 + to FUSION_MAX_VECTOR_SIZE + elements, where FUSION_MAX_VECTOR_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_VECTOR_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -67,17 +67,17 @@ - + TN -
    Description
    T0, +T0, T1,... - TN Any typeTemplate arguments to make_vector +Template arguments to make_vector
    - + Expression Semantics
    @@ -85,22 +85,22 @@ result_of::make_vector<T0, T1,... TN>::type

    - Return type: A vector with elements of types + Return type: A vector with elements of types converted following the rules for element conversion.

    - Semantics: Create a vector from T0, T1,... TN. + Semantics: Create a vector from T0, T1,... TN.

    - + Header
     #include <boost/fusion/sequence/generation/make_list.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html b/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html
    index e310bfac..bfe44947 100644
    --- a/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html
    +++ b/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html
    @@ -3,7 +3,7 @@
     
     vector_tie
     
    -
    +
     
     
     
    @@ -26,14 +26,14 @@
     
     
    - + Description

    - Returns the result type of vector_tie. + Returns the result type of vector_tie.

    - + Synopsis
    @@ -41,18 +41,18 @@
     struct vector_tie;
     

    - The variadic function accepts 0 - to FUSION_MAX_VECTOR_SIZE - elements, where FUSION_MAX_VECTOR_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_VECTOR_SIZE + The variadic function accepts 0 + to FUSION_MAX_VECTOR_SIZE + elements, where FUSION_MAX_VECTOR_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_VECTOR_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -67,17 +67,17 @@ - + TN -
    Description
    T0, +T0, T1,... - TN Any typeThe arguments to vector_tie +The arguments to vector_tie
    - + Expression Semantics
    @@ -85,21 +85,21 @@ result_of::vector_tie<T0, T1,... TN>::type;

    - Return type: vector<T0&, T1&,... + Return type: vector<T0&, T1&,... TN&>

    - Semantics: Create a vector of references from T0, T1,... TN. + Semantics: Create a vector of references from T0, T1,... TN.

    - + Header
     #include <boost/fusion/sequence/generation/vector_tie.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/intrinsics.html b/doc/html/fusion/sequences/intrinsics.html
    index bb758b81..9df6eb40 100644
    --- a/doc/html/fusion/sequences/intrinsics.html
    +++ b/doc/html/fusion/sequences/intrinsics.html
    @@ -3,7 +3,7 @@
     
     Intrinsics
     
    -
    +
     
     
     
    @@ -27,7 +27,34 @@
     Intrinsics
     
     

    Intrinsics form the essential interface of Fusion _sequence_s. @@ -36,11 +63,11 @@ Intrinsic functions, unlike Algorithms, are not generic across the full Sequence repertoire. They need to be implemented for each Fusion Sequence - [5] + [5] .

    - + Header

    @@ -48,7 +75,7 @@
     


    -

    [5] +

    [5] In practice, many of intrinsic functions have default implementations that will work in majority of cases

    diff --git a/doc/html/fusion/sequences/intrinsics/functions.html b/doc/html/fusion/sequences/intrinsics/functions.html index 37df07d8..640d4768 100644 --- a/doc/html/fusion/sequences/intrinsics/functions.html +++ b/doc/html/fusion/sequences/intrinsics/functions.html @@ -3,7 +3,7 @@ Functions - + diff --git a/doc/html/fusion/sequences/intrinsics/functions/at.html b/doc/html/fusion/sequences/intrinsics/functions/at.html index 7123339a..eda46105 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/at.html +++ b/doc/html/fusion/sequences/intrinsics/functions/at.html @@ -3,7 +3,7 @@ at - + @@ -26,27 +26,27 @@
    - + Description

    Returns the N-th element from the beginning of the sequence.

    - + Synopsis
     template <typename N, typename Sequence>
    -typename result_of::at<Sequence, N>::type
    +typename result_of::at<Sequence, N>::type
     at(Sequence& seq);
     
     template <typename N, typename Sequence>
    -typename result_of::at<Sequence const, N>::type
    +typename result_of::at<Sequence const, N>::type
     at(Sequence const& seq);
     
    - + Parameters
    @@ -62,7 +62,7 @@ - + - + @@ -81,7 +81,7 @@
    seqseq Model of Random @@ -71,7 +71,7 @@ The sequence we wish to investigate.
    NN An MPL integral constant
    - + Expression Semantics
    @@ -89,38 +89,38 @@ at<N>(seq);

    - Return type: Returns a reference to - the N-th element from the beginning of the sequence seq - if seq is mutable and - e = - o, where e + Return type: Returns a reference to + the N-th element from the beginning of the sequence seq + if seq is mutable and + e = + o, where e is the N-th element from the beginning of the sequence, is a valid expression. Else, returns a type convertable to the N-th element from the beginning of the sequence.

    - Precondition: 0 - <= N::value < size(s) + Precondition: 0 + <= N::value < size(s)

    - Semantics: Equivalent to + Semantics: Equivalent to

    -deref(advance<N>(begin(s)))
    +deref(advance<N>(begin(s)))
     
    - + Header
     #include <boost/fusion/sequence/intrinsic/at.hpp>
     
    - + Example
    -vector<int, int, int> v(1, 2, 3);
    +vector<int, int, int> v(1, 2, 3);
     assert(at<mpl::int_<1> >(v) == 2);
     
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/at_c.html b/doc/html/fusion/sequences/intrinsics/functions/at_c.html index 93434c67..735dbda9 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/at_c.html +++ b/doc/html/fusion/sequences/intrinsics/functions/at_c.html @@ -3,7 +3,7 @@ at_c - + @@ -26,27 +26,27 @@
    - + Description

    Returns the N-th element from the beginning of the sequence.

    - + Synopsis
     template <int N, typename Sequence>
    -typename result_of::at_c<Sequence, N>::type
    +typename result_of::at_c<Sequence, N>::type
     at_c(Sequence& seq);
     
     template <int N, typename Sequence>
    -typename result_of::at_c<Sequence const, N>::type
    +typename result_of::at_c<Sequence const, N>::type
     at_c(Sequence const& seq);
     
    - + Parameters
    @@ -62,7 +62,7 @@ - + - +
    seqseq Model of Random @@ -71,7 +71,7 @@ The sequence we wish to investigate.
    NN An integral constant An index from the beginning of @@ -80,7 +80,7 @@
    - + Expression Semantics
    @@ -88,39 +88,39 @@ at_c<N>(seq);

    - Return type: Returns a reference to - the N-th element from the beginning of the sequence seq - if seq is mutable and - e = - o, where e + Return type: Returns a reference to + the N-th element from the beginning of the sequence seq + if seq is mutable and + e = + o, where e is the N-th element from the beginning of the sequence, is a valid expression. Else, returns a type convertable to the N-th element from the beginning of the sequence.

    - Precondition: 0 + Precondition: 0 <= N - < size(s) + < size(s)

    - Semantics: Equivalent to + Semantics: Equivalent to

    -deref(advance<N>(begin(s)))
    +deref(advance<N>(begin(s)))
     
    - + Header
     #include <boost/fusion/sequence/intrinsic/at_c.hpp>
     
    - + Example
    -vector<int, int, int> v(1, 2, 3);
    +vector<int, int, int> v(1, 2, 3);
     assert(at_c<1>(v) == 2);
     
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/at_key.html b/doc/html/fusion/sequences/intrinsics/functions/at_key.html index d534ed7c..34f4c4ba 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/at_key.html +++ b/doc/html/fusion/sequences/intrinsics/functions/at_key.html @@ -3,7 +3,7 @@ at_key - + @@ -26,27 +26,27 @@
    - + Description

    Returns the element associated with a Key from the sequence.

    - + Synopsis
     template <typename Key, typename Sequence>
    -typename result_of::at_key<Sequence, Key>::type
    +typename result_of::at_key<Sequence, Key>::type
     at_key(Sequence& seq);
     
     template <typename Key, typename Sequence>
    -typename result_of::at_key<Sequence const, Key>::type
    +typename result_of::at_key<Sequence const, Key>::type
     at_key(Sequence const& seq);
     
    - + Parameters
    @@ -62,7 +62,7 @@ - + - + @@ -79,7 +79,7 @@
    seqseq Model of Associative @@ -71,7 +71,7 @@ The sequence we wish to investigate.
    KeyKey Any type The queried key.
    - + Expression Semantics
    @@ -87,34 +87,34 @@ at_key<Key>(seq);

    - Return type: Returns a reference to - the element associated with Key from the sequence seq - if seq is mutable and - e = - o, where e + Return type: Returns a reference to + the element associated with Key from the sequence seq + if seq is mutable and + e = + o, where e is the element associated with Key, is a valid expression. Else, returns a type convertable to the element associated with Key.

    - Precondition: has_key<Key>(seq) == true + Precondition: has_key<Key>(seq) == true

    - Semantics: Returns the element associated + Semantics: Returns the element associated with Key.

    - + Header
     #include <boost/fusion/sequence/intrinsic/at_key.hpp>
     
    - + Example
    -set<int, char, bool> s(1, 'x', true);
    +set<int, char, bool> s(1, 'x', true);
     assert(at_key<char>(s) == 'x');
     
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/back.html b/doc/html/fusion/sequences/intrinsics/functions/back.html index 31022b75..32d6d6dd 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/back.html +++ b/doc/html/fusion/sequences/intrinsics/functions/back.html @@ -3,7 +3,7 @@ back - + @@ -26,27 +26,27 @@
    - + Description

    Returns the last element in the sequence.

    - + Synopsis
     template <typename Sequence>
    -typename result_of::back<Sequence>::type
    +typename result_of::back<Sequence>::type
     back(Sequence& seq);
     
     template <typename Sequence>
    -typename result_of::back<Sequence const>::type
    +typename result_of::back<Sequence const>::type
     back(Sequence const& seq);
     
    - + Parameters
    @@ -61,7 +61,7 @@ - +
    Description
    seqseq Model of Bidirectional @@ -71,7 +71,7 @@
    - + Expression Semantics
    @@ -79,34 +79,34 @@ back(seq);

    - Return type: Returns a reference to - the last element in the sequence seq - if seq is mutable and - e = - o, where e + Return type: Returns a reference to + the last element in the sequence seq + if seq is mutable and + e = + o, where e is the last element in the sequence, is a valid expression. Else, returns a type convertable to the last element in the sequence.

    - Precondition: empty(seq) == false + Precondition: empty(seq) == false

    - Semantics: Returns the last element + Semantics: Returns the last element in the sequence.

    - + Header
     #include <boost/fusion/sequence/intrinsic/back.hpp>
     
    - + Example
    -vector<int, int, int> v(1, 2, 3);
    +vector<int, int, int> v(1, 2, 3);
     assert(back(v) == 3);
     
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/begin.html b/doc/html/fusion/sequences/intrinsics/functions/begin.html index 2a42fb86..c2a0336d 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/begin.html +++ b/doc/html/fusion/sequences/intrinsics/functions/begin.html @@ -3,7 +3,7 @@ begin - + @@ -26,27 +26,27 @@
    - + Description

    Returns an iterator pointing to the first element in the sequence.

    - + Synopsis
     template <typename Sequence>
    -typename result_of::begin<Sequence>::type
    +typename result_of::begin<Sequence>::type
     begin(Sequence& seq);
     
     template <typename Sequence>
    -typename result_of::begin<Sequence const>::type
    +typename result_of::begin<Sequence const>::type
     begin(Sequence const& seq);
     
    - + Parameters
    @@ -61,7 +61,7 @@ - +
    Description
    seqseq Model of Forward @@ -72,7 +72,7 @@
    - + Expression Semantics
    @@ -80,41 +80,41 @@ begin(seq);

    - Return type: Return type: Forward - Iterator if seq + Iterator if seq is a Forward Sequence else, Bidirectional - Iterator if seq + Iterator if seq is a Bidirectional Sequence else, Random - Access Iterator if seq + Access Iterator if seq is a Random Access Sequence.

    - Semantics: Returns an iterator pointing + Semantics: Returns an iterator pointing to the first element in the sequence.

    - + Header
     #include <boost/fusion/sequence/intrinsic/begin.hpp>
     
    - + Example
    -vector<int, int, int> v(1, 2, 3);
    -assert(deref(begin(v)) == 1);
    +vector<int, int, int> v(1, 2, 3);
    +assert(deref(begin(v)) == 1);
     
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/empty.html b/doc/html/fusion/sequences/intrinsics/functions/empty.html index 1c2608c2..18dae581 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/empty.html +++ b/doc/html/fusion/sequences/intrinsics/functions/empty.html @@ -3,7 +3,7 @@ empty - + @@ -26,25 +26,25 @@
    - + Description

    - Returns a type convertible to bool - that evaluates to true if - the sequence is empty, else, evaluates to false. + Returns a type convertible to bool + that evaluates to true if + the sequence is empty, else, evaluates to false.

    - + Synopsis
     template <typename Sequence>
    -typename result_of::empty<Sequence>::type
    +typename result_of::empty<Sequence>::type
     empty(Sequence const& seq);
     
    - + Parameters
    @@ -59,7 +59,7 @@ - +
    Description
    seqseq Model of Forward @@ -69,7 +69,7 @@
    - + Expression Semantics
    @@ -77,25 +77,25 @@ empty(seq);

    - Return type: Convertible to bool. + Return type: Convertible to bool.

    - Semantics: Evaluates to true if the sequence is empty, else, evaluates - to false. + Semantics: Evaluates to true if the sequence is empty, else, evaluates + to false.

    - + Header
     #include <boost/fusion/sequence/intrinsic/empty.hpp>
     
    - + Example
    -vector<int, int, int> v(1, 2, 3);
    +vector<int, int, int> v(1, 2, 3);
     assert(empty(v) == false);
     
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/end.html b/doc/html/fusion/sequences/intrinsics/functions/end.html index b5d4fa03..e6e72d93 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/end.html +++ b/doc/html/fusion/sequences/intrinsics/functions/end.html @@ -3,7 +3,7 @@ end - + @@ -26,27 +26,27 @@
    - + Description

    Returns an iterator pointing to one element past the end of the sequence.

    - + Synopsis
     template <typename Sequence>
    -typename result_of::end<Sequence>::type
    +typename result_of::end<Sequence>::type
     end(Sequence& seq);
     
     template <typename Sequence>
    -typename result_of::end<Sequence const>::type
    +typename result_of::end<Sequence const>::type
     end(Sequence const& seq);
     
    - + Parameters
    @@ -61,7 +61,7 @@ - +
    Description
    seqseq Model of Forward @@ -72,7 +72,7 @@
    - + Expression Semantics
    @@ -80,41 +80,41 @@ end(seq);

    - Return type: Return type: Forward - Iterator if seq + Iterator if seq is a Forward Sequence else, Bidirectional - Iterator if seq + Iterator if seq is a Bidirectional Sequence else, Random - Access Iterator if seq + Access Iterator if seq is a Random Access Sequence.

    - Semantics: Returns an iterator pointing + Semantics: Returns an iterator pointing to one element past the end of the sequence.

    - + Header
     #include <boost/fusion/sequence/intrinsic/end.hpp>
     
    - + Example
    -vector<int, int, int> v(1, 2, 3);
    -assert(deref(prior(end(v))) == 3);
    +vector<int, int, int> v(1, 2, 3);
    +assert(deref(prior(end(v))) == 3);
     
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/front.html b/doc/html/fusion/sequences/intrinsics/functions/front.html index 04b9c2ad..0d49a4a9 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/front.html +++ b/doc/html/fusion/sequences/intrinsics/functions/front.html @@ -3,7 +3,7 @@ front - + @@ -26,27 +26,27 @@
    - + Description

    Returns the first element in the sequence.

    - + Synopsis
     template <typename Sequence>
    -typename result_of::front<Sequence>::type
    +typename result_of::front<Sequence>::type
     front(Sequence& seq);
     
     template <typename Sequence>
    -typename result_of::front<Sequence const>::type
    +typename result_of::front<Sequence const>::type
     front(Sequence const& seq);
     
    - + Parameters
    @@ -61,7 +61,7 @@ - +
    Description
    seqseq Model of Forward @@ -71,7 +71,7 @@
    - + Expression Semantics
    @@ -79,34 +79,34 @@ front(seq);

    - Return type: Returns a reference to - the first element in the sequence seq - if seq is mutable and - e = - o, where e + Return type: Returns a reference to + the first element in the sequence seq + if seq is mutable and + e = + o, where e is the first element in the sequence, is a valid expression. Else, returns a type convertable to the first element in the sequence.

    - Precondition: empty(seq) == false + Precondition: empty(seq) == false

    - Semantics: Returns the first element + Semantics: Returns the first element in the sequence.

    - + Header
     #include <boost/fusion/sequence/intrinsic/front.hpp>
     
    - + Example
    -vector<int, int, int> v(1, 2, 3);
    +vector<int, int, int> v(1, 2, 3);
     assert(front(v) == 1);
     
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/has_key.html b/doc/html/fusion/sequences/intrinsics/functions/has_key.html index a6563e3d..7212017e 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/has_key.html +++ b/doc/html/fusion/sequences/intrinsics/functions/has_key.html @@ -3,7 +3,7 @@ has_key - + @@ -26,26 +26,26 @@
    - + Description

    - Returns a type convertible to bool - that evaluates to true if + Returns a type convertible to bool + that evaluates to true if the sequence contains an element associated with a Key, else, evaluates - to false. + to false.

    - + Synopsis
     template <typename Key, typename Sequence>
    -typename result_of::has_key<Sequence, Key>::type
    +typename result_of::has_key<Sequence, Key>::type
     has_key(Sequence const& seq);
     
    - + Parameters
    @@ -61,7 +61,7 @@ - + - + @@ -78,7 +78,7 @@
    seqseq Model of Associative @@ -70,7 +70,7 @@ The sequence we wish to investigate.
    KeyKey Any type The queried key.
    - + Expression Semantics
    @@ -86,25 +86,25 @@ has_key<Key>(seq);

    - Return type: Convertible to bool. + Return type: Convertible to bool.

    - Semantics: Evaluates to true if the sequence contains an element - associated with Key, else, evaluates to false. + Semantics: Evaluates to true if the sequence contains an element + associated with Key, else, evaluates to false.

    - + Header
     #include <boost/fusion/sequence/intrinsic/has_key.hpp>
     
    - + Example
    -set<int, char, bool> s(1, 'x', true);
    +set<int, char, bool> s(1, 'x', true);
     assert(has_key<char>(s) == true);
     
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/size.html b/doc/html/fusion/sequences/intrinsics/functions/size.html index c6d4a132..000c6e4d 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/size.html +++ b/doc/html/fusion/sequences/intrinsics/functions/size.html @@ -3,7 +3,7 @@ size - + @@ -26,24 +26,24 @@
    - + Description

    - Returns a type convertible to int + Returns a type convertible to int that evaluates the number of elements in the sequence.

    - + Synopsis
     template <typename Sequence>
    -typename result_of::size<Sequence>::type
    +typename result_of::size<Sequence>::type
     size(Sequence const& seq);
     
    - + Parameters
    @@ -58,7 +58,7 @@ - +
    Description
    seqseq Model of Forward @@ -68,7 +68,7 @@
    - + Expression Semantics
    @@ -76,25 +76,25 @@ size(seq);

    - Return type: Convertible to int. + Return type: Convertible to int.

    - Semantics: Returns the number of elements + Semantics: Returns the number of elements in the sequence.

    - + Header
     #include <boost/fusion/sequence/intrinsic/size.hpp>
     
    - + Example
    -vector<int, int, int> v(1, 2, 3);
    +vector<int, int, int> v(1, 2, 3);
     assert(size(v) == 3);
     
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions.html b/doc/html/fusion/sequences/intrinsics/metafunctions.html index eafb7ed6..f7b21dc8 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions.html @@ -3,7 +3,7 @@ Metafunctions - + diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/at.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at.html index 2e2c610a..d592b28a 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/at.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/at.html @@ -3,7 +3,7 @@ at - + @@ -26,16 +26,16 @@
    - + Description

    - Returns the result type of at - [6] + Returns the result type of at + [6] .

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.25. Parameters

    +

    Table 1.25. Parameters

    @@ -62,7 +62,7 @@ - + - + + MPL + Integral Constant +
    SeqSeq A model of Forward @@ -71,16 +71,18 @@ Argument sequence
    NN An - MPL Integral Constant Index of element
    - + Expression Semantics
    @@ -88,34 +90,34 @@ result_of::at<Seq, N>::type

    - Return type: Any type. + Return type: Any type.

    - Semantics: Returns the result type of - using at to access the Nth element of Seq. + Semantics: Returns the result type of + using at to access the Nth element of Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/at.hpp>
     
    - + Example
    -typedef vector<int,float,char> vec;
    -BOOST_MPL_ASSERT((boost::is_same<result_of::at<vec, boost::mpl::int_<1> >::type, float&>));
    +typedef vector<int,float,char> vec;
    +BOOST_MPL_ASSERT((boost::is_same<result_of::at<vec, boost::mpl::int_<1> >::type, float&>));
     


    -

    [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/sequences/intrinsics/metafunctions/at_c.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html index 134b681f..7a33a522 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html @@ -3,7 +3,7 @@ at_c - + @@ -26,16 +26,16 @@
    - + Description

    - Returns the result type of at_c - [7] + Returns the result type of at_c + [7] .

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.26. Parameters

    +

    Table 1.26. Parameters

    @@ -62,7 +62,7 @@ - + - + @@ -80,7 +80,7 @@
    SeqSeq A model of Forward @@ -71,7 +71,7 @@ Argument sequence
    MM Positive integer index Index of element
    - + Expression Semantics
    @@ -88,34 +88,34 @@ result_of::at_c<Seq, M>::type

    - Return type: Any type + Return type: Any type

    - Semantics: Returns the result type of - using at_c to access the Mth element of Seq. + Semantics: Returns the result type of + using at_c to access the Mth element of Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/at.hpp>
     
    - + Example
    -typedef vector<int,float,char> vec;
    -BOOST_MPL_ASSERT((boost::is_same<result_of::at_c<vec, 1>::type, float&>));
    +typedef vector<int,float,char> vec;
    +BOOST_MPL_ASSERT((boost::is_same<result_of::at_c<vec, 1>::type, float&>));
     


    -

    [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/sequences/intrinsics/metafunctions/at_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html index abbe3708..c1f395fe 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html @@ -3,7 +3,7 @@ at_key - + @@ -26,16 +26,16 @@
    - + Description

    - Returns the result type of at_key - [8] + Returns the result type of at_key + [8] .

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.30. Parameters

    +

    Table 1.30. Parameters

    @@ -62,7 +62,7 @@ - + - + @@ -80,7 +80,7 @@
    SeqSeq A model of Forward @@ -71,7 +71,7 @@ Argument sequence
    KeyKey Any type Key type
    - + Expression Semantics
    @@ -88,36 +88,36 @@ result_of::at_key<Seq, Key>::type

    - Return type: Any type. + Return type: Any type.

    - Semantics: Returns the result of using - at_key to access the element - with key type Key in - Seq. + Semantics: Returns the result of using + at_key to access the element + with key type Key in + Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/at_key.hpp>
     
    - + Example
    -typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
    -BOOST_MPL_ASSERT((boost::is_same<result_of::at_key<mymap, int>::type, char&>));
    +typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
    +BOOST_MPL_ASSERT((boost::is_same<result_of::at_key<mymap, int>::type, char&>));
     


    -

    [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/sequences/intrinsics/metafunctions/back.html b/doc/html/fusion/sequences/intrinsics/metafunctions/back.html index 3e975356..9641d60a 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/back.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/back.html @@ -3,7 +3,7 @@ back - + @@ -26,14 +26,14 @@
    - + Description

    - Returns the result type of back. + Returns the result type of back.

    - + Synopsis
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.23. Parameters

    +

    Table 1.23. Parameters

    @@ -57,7 +57,7 @@ - +
    Description
    SeqSeq A model of Forward @@ -68,7 +68,7 @@
    - + Expression Semantics
    @@ -76,26 +76,26 @@ result_of::back<Seq>::type

    - Return type: Any type + Return type: Any type

    - Semantics: The type returned by dereferencing - an iterator to the last element in the sequence. Equivalent to result_of::deref<result_of::prior<result_of::end<Seq>::type>::type>::type. + Semantics: The type returned by dereferencing + 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>
     
    - + Example
    -typedef vector<int,char> vec;
    -BOOST_MPL_ASSERT((boost::is_same<result_of::back<vec>::type, char&>));
    +typedef vector<int,char> vec;
    +BOOST_MPL_ASSERT((boost::is_same<result_of::back<vec>::type, char&>));
     
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html b/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html index 34131c86..72dbf953 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html @@ -3,7 +3,7 @@ begin - + @@ -26,14 +26,14 @@
    - + Description

    - Returns the result type of begin. + Returns the result type of begin.

    - + Synopsis
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.19. Parameters

    +

    Table 1.19. Parameters

    @@ -57,7 +57,7 @@ - +
    Description
    SeqSeq A model of Forward @@ -68,7 +68,7 @@
    - + Expression Semantics
    @@ -76,28 +76,28 @@ result_of::begin<Seq>::type

    - Return type: An iterator modelling the - same traversal concept as Seq. + Return type: An iterator modelling the + same traversal concept as Seq.

    - Semantics: Returns the type of an iterator - to the first element of Seq. + Semantics: Returns the type of an iterator + to the first element of Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/begin.hpp>
     
    - + Example
    -typedef vector<int> vec;
    -typedef result_of::begin<vec>::type it;
    -BOOST_MPL_ASSERT((boost::is_same<result_of::deref<it>::type, int&>))
    +typedef vector<int> vec;
    +typedef result_of::begin<vec>::type it;
    +BOOST_MPL_ASSERT((boost::is_same<result_of::deref<it>::type, int&>))
     
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html b/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html index e00ffed1..8384a286 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html @@ -3,7 +3,7 @@ empty - + @@ -26,14 +26,14 @@
    - + Description

    - Returns the result type of empty. + Returns the result type of empty.

    - + Synopsis
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.21. Parameters

    +

    Table 1.21. Parameters

    @@ -57,7 +57,7 @@ - +
    Description
    SeqSeq A model of Forward @@ -68,7 +68,7 @@
    - + Expression Semantics
    @@ -76,30 +76,31 @@ result_of::empty<Seq>::type

    - Return type: An MPL Integral Constant + Return type: An MPL + Integral Constant

    - Semantics: Returns mpl::true_ - if Seq has zero elements, - mpl::false_ otherwise. + Semantics: Returns mpl::true_ + if Seq has zero elements, + mpl::false_ otherwise.

    - + Header
     #include <boost/fusion/sequence/intrinsic/empty.hpp>
     
    - + Example
    -typedef vector<> empty_vec;
    -typedef vector<int,float,char> vec;
    +typedef vector<> empty_vec;
    +typedef vector<int,float,char> vec;
     
    -BOOST_MPL_ASSERT((result_of::empty<empty_vec>));
    -BOOST_MPL_ASSERT_NOT((result_of::empty<vec>));
    +BOOST_MPL_ASSERT((result_of::empty<empty_vec>));
    +BOOST_MPL_ASSERT_NOT((result_of::empty<vec>));
     
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/end.html b/doc/html/fusion/sequences/intrinsics/metafunctions/end.html index b5e57e11..0c9aa1db 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/end.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/end.html @@ -3,7 +3,7 @@ end - + @@ -26,14 +26,14 @@
    - + Description

    - Returns the result type of end. + Returns the result type of end.

    - + Synopsis
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.20. Parameters

    +

    Table 1.20. Parameters

    @@ -57,7 +57,7 @@ - +
    Description
    SeqSeq A model of Forward @@ -68,7 +68,7 @@
    - + Expression Semantics
    @@ -76,28 +76,28 @@ result_of::end<Seq>::type

    - Return type: A model of the same traversal - concept as Seq. + Return type: A model of the same traversal + concept as Seq.

    - Semantics: Returns the type of an iterator - one past the end of Seq. + Semantics: Returns the type of an iterator + one past the end of Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/end.hpp>
     
    - + Example
    -typedef vector<int> vec;
    -typedef result_of::prior<result_of::end<vec>::type>::type first;
    -BOOST_MPL_ASSERT((result_of::equal_to<first, result_of::begin<vec>::type>))
    +typedef vector<int> vec;
    +typedef result_of::prior<result_of::end<vec>::type>::type first;
    +BOOST_MPL_ASSERT((result_of::equal_to<first, result_of::begin<vec>::type>))
     
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/front.html b/doc/html/fusion/sequences/intrinsics/metafunctions/front.html index 8890c856..d742ebb8 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/front.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/front.html @@ -3,7 +3,7 @@ front - + @@ -26,14 +26,14 @@
    - + Description

    - Returns the result type of front. + Returns the result type of front.

    - + Synopsis
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.22. Parameters

    +

    Table 1.22. Parameters

    @@ -57,7 +57,7 @@ - +
    Description
    SeqSeq A model of Forward @@ -68,7 +68,7 @@
    - + Expression Semantics
    @@ -76,27 +76,27 @@ result_of::front<Seq>::type

    - Return type: Any type + Return type: Any type

    - Semantics: The type returned by dereferencing - an iterator to the first element in Seq. - Equivalent to result_of::deref<result_of::begin<Seq>::type>::type. + Semantics: The type returned by dereferencing + an iterator to the first element in Seq. + Equivalent to result_of::deref<result_of::begin<Seq>::type>::type.

    - + Header
     #include <boost/fusion/sequence/intrinsic/front.hpp>
     
    - + Example
    -typedef vector<int,char> vec;
    -BOOST_MPL_ASSERT((boost::is_same<result_of::front<vec>::type, int&>));
    +typedef vector<int,char> vec;
    +BOOST_MPL_ASSERT((boost::is_same<result_of::front<vec>::type, int&>));
     
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html index a15bd554..f999b484 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html @@ -3,7 +3,7 @@ has_key - + @@ -26,14 +26,14 @@
    - + Description

    - Returns the result type of has_key. + Returns the result type of has_key.

    - + Synopsis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.29. Parameters

    +

    Table 1.29. Parameters

    @@ -60,7 +60,7 @@ - + - + @@ -78,7 +78,7 @@
    SeqSeq A model of Forward @@ -69,7 +69,7 @@ Argument sequence
    KeyKey Any type Key type
    - + Expression Semantics
    @@ -86,29 +86,30 @@ result_of::has_key<Seq, Key>::type

    - Return type: An MPL Integral Constant. + Return type: An MPL + Integral Constant.

    - Semantics: Returns mpl::true_ - if Seq contains an element - with key type Key, returns - mpl::false_ otherwise. + Semantics: Returns mpl::true_ + if Seq contains an element + with key type Key, returns + mpl::false_ otherwise.

    - + Header
     #include <boost/fusion/sequence/intrinsic/has_key.hpp>
     
    - + Example
    -typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
    -BOOST_MPL_ASSERT((result_of::has_key<mymap, int>));
    -BOOST_MPL_ASSERT_NOT((result_of::has_key<mymap, void*>));
    +typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
    +BOOST_MPL_ASSERT((result_of::has_key<mymap, int>));
    +BOOST_MPL_ASSERT_NOT((result_of::has_key<mymap, void*>));
     
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/size.html b/doc/html/fusion/sequences/intrinsics/metafunctions/size.html index 57a1e6d6..d15ddd94 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/size.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/size.html @@ -3,7 +3,7 @@ size - + @@ -26,14 +26,14 @@
    - + Description

    - Returns the result type of size. + Returns the result type of size.

    - + Synopsis
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.24. Parameters

    +

    Table 1.24. Parameters

    @@ -57,7 +57,7 @@ - +
    Description
    SeqSeq A model of Forward @@ -68,7 +68,7 @@
    - + Expression Semantics
    @@ -76,26 +76,27 @@ result_of::size<Seq>::type

    - Return type: An MPL Integral Constant. + Return type: An MPL + Integral Constant.

    - Semantics: Returns the number of elements - in Seq. + Semantics: Returns the number of elements + in Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/size.hpp>
     
    - + Example
    -typedef vector<int,float,char> vec;
    -typedef result_of::size<vec>::type size_mpl_integral_constant;
    +typedef vector<int,float,char> vec;
    +typedef result_of::size<vec>::type size_mpl_integral_constant;
     BOOST_MPL_ASSERT_RELATION(size_mpl_integral_constant::value, ==, 3);
     
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html index 7791e45b..f872fc3d 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html @@ -3,7 +3,7 @@ value_at - + @@ -26,14 +26,14 @@
    - + Description

    Returns the actual type at a given index from the Sequence.

    - + Synopsis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.27. Parameters

    +

    Table 1.27. Parameters

    @@ -60,7 +60,7 @@ - + - + + MPL + Integral Constant +
    SeqSeq A model of Forward @@ -69,16 +69,18 @@ Argument sequence
    NN An - MPL Integral Constant Index of element
    - + Expression Semantics
    @@ -86,26 +88,26 @@ result_of::value_at<Seq, N>::type

    - Return type: Any type. + Return type: Any type.

    - Semantics: Returns the actual type at - the Nth element of Seq. + Semantics: Returns the actual type at + the Nth element of Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/value_at.hpp>
     
    - + Example
    -typedef vector<int,float,char> vec;
    -BOOST_MPL_ASSERT((boost::is_same<result_of::value_at<vec, boost::mpl::int_<1> >::type, float>));
    +typedef vector<int,float,char> vec;
    +BOOST_MPL_ASSERT((boost::is_same<result_of::value_at<vec, boost::mpl::int_<1> >::type, float>));
     
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html index e36762f4..b75eacaa 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html @@ -3,7 +3,7 @@ value_at_c - + @@ -26,14 +26,14 @@
    - + Description

    Returns the actual type at a given index from the Sequence.

    - + Synopsis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.28. Parameters

    +

    Table 1.28. Parameters

    @@ -60,7 +60,7 @@ - + - + @@ -78,7 +78,7 @@
    SeqSeq A model of Forward @@ -69,7 +69,7 @@ Argument sequence
    MM Positive integer index Index of element
    - + Expression Semantics
    @@ -86,26 +86,26 @@ result_of::value_at_c<Seq, M>::type

    - Return type: Any type + Return type: Any type

    - Semantics: Returns the actual type at - the Mth element of Seq. + Semantics: Returns the actual type at + the Mth element of Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/value_at.hpp>
     
    - + Example
    -typedef vector<int,float,char> vec;
    -BOOST_MPL_ASSERT((boost::is_same<result_of::value_at_c<vec, 1>::type, float>));
    +typedef vector<int,float,char> vec;
    +BOOST_MPL_ASSERT((boost::is_same<result_of::value_at_c<vec, 1>::type, float>));
     
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html index 05e2e0cd..9982c99e 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html @@ -3,7 +3,7 @@ value_at_key - + @@ -26,14 +26,14 @@
    - + Description

    Returns the actual element type associated with a Key from the Sequence.

    - + Synopsis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.31. Parameters

    +

    Table 1.31. Parameters

    @@ -60,7 +60,7 @@ - + - + @@ -78,7 +78,7 @@
    SeqSeq A model of Forward @@ -69,7 +69,7 @@ Argument sequence
    KeyKey Any type Key type
    - + Expression Semantics
    @@ -86,27 +86,27 @@ result_of::value_at_key<Seq, Key>::type

    - Return type: Any type. + Return type: Any type.

    - Semantics: Returns the actual element - type associated with key type Key - in Seq. + Semantics: Returns the actual element + type associated with key type Key + in Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/value_at_key.hpp>
     
    - + Example
    -typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
    -BOOST_MPL_ASSERT((boost::is_same<result_of::at_key<mymap, int>::type, char>));
    +typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
    +BOOST_MPL_ASSERT((boost::is_same<result_of::at_key<mymap, int>::type, char>));
     
    diff --git a/doc/html/fusion/sequences/operators.html b/doc/html/fusion/sequences/operators.html index ea5ab678..141ad2c4 100644 --- a/doc/html/fusion/sequences/operators.html +++ b/doc/html/fusion/sequences/operators.html @@ -3,7 +3,7 @@ Operators - + @@ -27,7 +27,24 @@ Operators

    These operators, like the Algorithms, diff --git a/doc/html/fusion/sequences/operators/comparison.html b/doc/html/fusion/sequences/operators/comparison.html index 7ecdfbb3..d27d86f5 100644 --- a/doc/html/fusion/sequences/operators/comparison.html +++ b/doc/html/fusion/sequences/operators/comparison.html @@ -3,7 +3,7 @@ Comparison - + @@ -39,16 +39,16 @@ than equal

    - The Comparison operators: ==, - !=, <, - <=, >= - and >= work generically + The Comparison operators: ==, + !=, <, + <=, >= + and >= work generically on all Fusion sequences. Comparison operators are "short- circuited": elementary comparisons start from the first elements and are performed only until the result is clear.

    - + Header
    diff --git a/doc/html/fusion/sequences/operators/comparison/equal.html b/doc/html/fusion/sequences/operators/comparison/equal.html
    index c2efb6bd..82c5dd95 100644
    --- a/doc/html/fusion/sequences/operators/comparison/equal.html
    +++ b/doc/html/fusion/sequences/operators/comparison/equal.html
    @@ -3,7 +3,7 @@
     
     equal
     
    -
    +
     
     
     
    @@ -27,14 +27,14 @@
     
     
    - + Description

    Compare two sequences for equality.

    - + Synopsis
    @@ -43,7 +43,7 @@
     operator==(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -58,8 +58,8 @@ - + @@ -68,7 +68,7 @@
    Description
    a, - ba, + b Instances of Sequence
    - + Expression Semantics
    @@ -76,16 +76,16 @@ a == b

    - Return type: bool + Return type: bool

    - Requirements: + Requirements:

    - For each element, e1, - in sequence a, and for - each element, e2, in - sequence b, a == b is a valid expression returning a + For each element, e1, + in sequence a, and for + each element, e2, in + sequence b, a == b is a valid expression returning a type that is convertible to bool.

    @@ -93,30 +93,30 @@ compile time error.

    - Semantics: + Semantics:

    - For each element, e1, - in sequence a, and for - each element, e2, in - sequence b, e1 == e2 returns true. For any 2 zero length + For each element, e1, + in sequence a, and for + each element, e2, in + sequence b, e1 == e2 returns true. For any 2 zero length _sequence_s, e and f, e == f returns true.

    - + Header
     #include <boost/fusion/sequence/comparison/equal_to.hpp>
     
    - + Example
    -vector<int, char> v1(5, 'a');
    -vector<int, char> v2(5, 'a');
    +vector<int, char> v1(5, 'a');
    +vector<int, char> v2(5, 'a');
     assert(v1 == v2);
     
    diff --git a/doc/html/fusion/sequences/operators/comparison/greater_than.html b/doc/html/fusion/sequences/operators/comparison/greater_than.html index 9b78fc44..3336560e 100644 --- a/doc/html/fusion/sequences/operators/comparison/greater_than.html +++ b/doc/html/fusion/sequences/operators/comparison/greater_than.html @@ -4,7 +4,7 @@ greater than - +
    - + Synopsis
    @@ -43,7 +43,7 @@
     operator>(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -58,8 +58,8 @@ - + @@ -68,7 +68,7 @@
    Description
    a, - ba, + b Instances of Sequence
    - + Expression Semantics
    @@ -76,16 +76,16 @@ a > b

    - Return type: bool + Return type: bool

    - Requirements: + Requirements:

    - For each element, e1, - in sequence a, and for - each element, e2, in - sequence b, a < b is a valid expression returning a + For each element, e1, + in sequence a, and for + each element, e2, in + sequence b, a < b is a valid expression returning a type that is convertible to bool.

    @@ -93,23 +93,23 @@ compile time error.

    - Semantics: Returns b < a. + Semantics: Returns b < a.

    - + Header
     #include <boost/fusion/sequence/comparison/less_equal.hpp>
     
    - + Example
    -vector<int, float> v1(4, 3.3f);
    -vector<short, float> v2(5, 3.3f);
    -vector<long, double> v3(5, 4.4);
    +vector<int, float> v1(4, 3.3f);
    +vector<short, float> v2(5, 3.3f);
    +vector<long, double> v3(5, 4.4);
     assert(v2 > v1);
     assert(v3 > v2);
     
    diff --git a/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html b/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html index 01d5a45a..05a8319f 100644 --- a/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html +++ b/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html @@ -4,7 +4,7 @@ greater than equal - +
    - + Synopsis
    @@ -42,7 +42,7 @@
     operator>=(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -57,8 +57,8 @@ - + @@ -67,7 +67,7 @@
    Description
    a, - ba, + b Instances of Sequence
    - + Expression Semantics
    @@ -75,16 +75,16 @@ a >= b

    - Return type: bool + Return type: bool

    - Requirements: + Requirements:

    - For each element, e1, - in sequence a, and for - each element, e2, in - sequence b, a < b is a valid expression returning a + For each element, e1, + in sequence a, and for + each element, e2, in + sequence b, a < b is a valid expression returning a type that is convertible to bool.

    @@ -92,23 +92,23 @@ compile time error.

    - Semantics: Returns !(a < b). + Semantics: Returns !(a < b).

    - + Header
     #include <boost/fusion/sequence/comparison/greater_equal.hpp>
     
    - + Example
    -vector<int, float> v1(4, 3.3f);
    -vector<short, float> v2(5, 3.3f);
    -vector<long, double> v3(5, 4.4);
    +vector<int, float> v1(4, 3.3f);
    +vector<short, float> v2(5, 3.3f);
    +vector<long, double> v3(5, 4.4);
     assert(v2 >= v1);
     assert(v3 >= v2);
     
    diff --git a/doc/html/fusion/sequences/operators/comparison/less_than.html b/doc/html/fusion/sequences/operators/comparison/less_than.html index f75e097d..b002a5cc 100644 --- a/doc/html/fusion/sequences/operators/comparison/less_than.html +++ b/doc/html/fusion/sequences/operators/comparison/less_than.html @@ -4,7 +4,7 @@ less than - +
    - + Synopsis
    @@ -43,7 +43,7 @@
     operator<(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -58,8 +58,8 @@ - + @@ -68,7 +68,7 @@
    Description
    a, - ba, + b Instances of Sequence
    - + Expression Semantics
    @@ -76,16 +76,16 @@ a < b

    - Return type: bool + Return type: bool

    - Requirements: + Requirements:

    - For each element, e1, - in sequence a, and for - each element, e2, in - sequence b, a < b is a valid expression returning a + For each element, e1, + in sequence a, and for + each element, e2, in + sequence b, a < b is a valid expression returning a type that is convertible to bool.

    @@ -93,25 +93,25 @@ compile time error.

    - Semantics: Returns the lexicographical - comparison of between a - and b. + Semantics: Returns the lexicographical + comparison of between a + and b.

    - + Header
     #include <boost/fusion/sequence/comparison/less.hpp>
     
    - + Example
    -vector<int, float> v1(4, 3.3f);
    -vector<short, float> v2(5, 3.3f);
    -vector<long, double> v3(5, 4.4);
    +vector<int, float> v1(4, 3.3f);
    +vector<short, float> v2(5, 3.3f);
    +vector<long, double> v3(5, 4.4);
     assert(v1 < v2);
     assert(v2 < v3);
     
    diff --git a/doc/html/fusion/sequences/operators/comparison/less_than_equal.html b/doc/html/fusion/sequences/operators/comparison/less_than_equal.html index ad036f2a..1e149368 100644 --- a/doc/html/fusion/sequences/operators/comparison/less_than_equal.html +++ b/doc/html/fusion/sequences/operators/comparison/less_than_equal.html @@ -4,7 +4,7 @@ less than equal - +
    - + Synopsis
    @@ -43,7 +43,7 @@
     operator<=(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -58,8 +58,8 @@ - + @@ -68,7 +68,7 @@
    Description
    a, - ba, + b Instances of Sequence
    - + Expression Semantics
    @@ -76,16 +76,16 @@ a <= b

    - Return type: bool + Return type: bool

    - Requirements: + Requirements:

    - For each element, e1, - in sequence a, and for - each element, e2, in - sequence b, a < b is a valid expression returning a + For each element, e1, + in sequence a, and for + each element, e2, in + sequence b, a < b is a valid expression returning a type that is convertible to bool.

    @@ -93,23 +93,23 @@ compile time error.

    - Semantics: Returns !(b < a). + Semantics: Returns !(b < a).

    - + Header
     #include <boost/fusion/sequence/comparison/less_equal.hpp>
     
    - + Example
    -vector<int, float> v1(4, 3.3f);
    -vector<short, float> v2(5, 3.3f);
    -vector<long, double> v3(5, 4.4);
    +vector<int, float> v1(4, 3.3f);
    +vector<short, float> v2(5, 3.3f);
    +vector<long, double> v3(5, 4.4);
     assert(v1 <= v2);
     assert(v2 <= v3);
     
    diff --git a/doc/html/fusion/sequences/operators/comparison/not_equal.html b/doc/html/fusion/sequences/operators/comparison/not_equal.html index bcd67051..7f96e9ed 100644 --- a/doc/html/fusion/sequences/operators/comparison/not_equal.html +++ b/doc/html/fusion/sequences/operators/comparison/not_equal.html @@ -4,7 +4,7 @@ not equal - + @@ -33,7 +33,7 @@ Compare two sequences for inequality.

    - + Synopsis
    @@ -42,7 +42,7 @@
     operator!=(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -57,8 +57,8 @@ - + @@ -67,7 +67,7 @@
    Description
    a, - ba, + b Instances of Sequence
    - + Expression Semantics
    @@ -75,16 +75,16 @@ a != b

    - Return type: bool + Return type: bool

    - Requirements: + Requirements:

    - For each element, e1, - in sequence a, and for - each element, e2, in - sequence b, a == b is a valid expression returning a + For each element, e1, + in sequence a, and for + each element, e2, in + sequence b, a == b is a valid expression returning a type that is convertible to bool.

    @@ -92,25 +92,25 @@ compile time error.

    - Semantics: + Semantics:

    Returns !(a == b).

    - + Header
     #include <boost/fusion/sequence/comparison/not_equal_to.hpp>
     
    - + Example
    -vector<int, char> v3(5, 'b');
    -vector<int, char> t4(2, 'a');
    +vector<int, char> v3(5, 'b');
    +vector<int, char> t4(2, 'a');
     assert(v1 != v3);
     assert(v1 != t4);
     assert(!(v1 != v2));
    diff --git a/doc/html/fusion/sequences/operators/i_o.html b/doc/html/fusion/sequences/operators/i_o.html
    index 9e39d5d4..c86d5c97 100644
    --- a/doc/html/fusion/sequences/operators/i_o.html
    +++ b/doc/html/fusion/sequences/operators/i_o.html
    @@ -3,7 +3,7 @@
     
     I/O
     
    -
    +
     
     
     
    @@ -30,25 +30,25 @@
     
    out

    - The I/O operators: << - and >> work generically - on all Fusion sequences. The global operator<< has been overloaded for generic + The I/O operators: << + and >> work generically + on all Fusion sequences. The global operator<< has been overloaded for generic output streams such that _sequence_s - are output by recursively calling operator<< for each element. Analogously, - the global operator>> + are output by recursively calling operator<< for each element. Analogously, + the global operator>> has been overloaded to extract _sequence_s - from generic input streams by recursively calling operator>> for each element. + from generic input streams by recursively calling operator>> for each element.

    The default delimiter between the elements is space, and the Sequence is enclosed in parenthesis. For Example:

    -vector<float, int, std::string> a(1.0f, 2, std::string("Howdy folks!");
    +vector<float, int, std::string> a(1.0f, 2, std::string("Howdy folks!");
     cout << a; 
     

    - outputs the vector as: (1.0 2 Howdy folks!) + outputs the vector as: (1.0 2 Howdy folks!)

    The library defines three manipulators for changing the default behavior: @@ -56,23 +56,23 @@

    Manipulators

    -
    tuple_open(arg)
    +
    tuple_open(arg)
    Defines the character that is output before the first element.
    -
    tuple_close(arg)
    +
    tuple_close(arg)
    Defines the character that is output after the last element.
    -
    tuple_delimiter(arg)
    +
    tuple_delimiter(arg)
    Defines the delimiter character between elements.

    - The argument to tuple_open, - tuple_close and tuple_delimiter may be a char, wchar_t, + The argument to tuple_open, + tuple_close and tuple_delimiter may be a char, wchar_t, a C-string, or a wide C-string.

    @@ -82,12 +82,12 @@ std::cout << tuple_open('[') << tuple_close(']') << tuple_delimiter(", ") << a;

    - outputs the same vector, a + outputs the same vector, a as: [1.0, 2, Howdy folks!]

    - The same manipulators work with operator>> and istream - as well. Suppose the std::cin + The same manipulators work with operator>> and istream + as well. Suppose the std::cin stream contains the following data:

    @@ -97,8 +97,8 @@
               The code:
             

    -vector<int, int, int> i;
    -vector<int, int> j;
    +vector<int, int, int> i;
    +vector<int, int> j;
     
     std::cin >> i;
     std::cin >> set_open('[') >> set_close(']') >> set_delimiter(':');
    @@ -106,16 +106,16 @@
     

    reads the data into the _vector_s - i and j. + i and j.

    Note that extracting _sequence_s - with std::string or C-style string elements does + with std::string or C-style string elements does not generally work, since the streamed Sequence representation may not be unambiguously parseable.

    - + Header
    diff --git a/doc/html/fusion/sequences/operators/i_o/in.html b/doc/html/fusion/sequences/operators/i_o/in.html
    index 6920479a..6bf497f7 100644
    --- a/doc/html/fusion/sequences/operators/i_o/in.html
    +++ b/doc/html/fusion/sequences/operators/i_o/in.html
    @@ -3,7 +3,7 @@
     
     in
     
    -
    +
     
     
     
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -34,7 +34,7 @@ stream.

    - + Synopsis
    @@ -43,7 +43,7 @@
     operator>>(IStream& is, Sequence& seq);
     
    - + Parameters
    @@ -73,7 +73,7 @@
    - + Expression Semantics
    @@ -81,26 +81,26 @@ is >> seq

    - Return type: IStream& + Return type: IStream&

    - Semantics: For each element, e, in sequence, seq, - call is >> - e. + Semantics: For each element, e, in sequence, seq, + call is >> + e.

    - + Header
     #include <boost/fusion/sequence/io/in.hpp>
     
    - + Example
    -vector<int, std::string, char> v;
    +vector<int, std::string, char> v;
     std::cin >> v;
     
    diff --git a/doc/html/fusion/sequences/operators/i_o/out.html b/doc/html/fusion/sequences/operators/i_o/out.html index 03cab0ab..10ddfd63 100644 --- a/doc/html/fusion/sequences/operators/i_o/out.html +++ b/doc/html/fusion/sequences/operators/i_o/out.html @@ -3,7 +3,7 @@ out - + @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ stream.

    - + Synopsis
    @@ -43,7 +43,7 @@
     operator<<(OStream& os, Sequence& seq);
     
    - + Parameters
    @@ -73,7 +73,7 @@
    - + Expression Semantics
    @@ -81,26 +81,26 @@ os << seq

    - Return type: OStream& + Return type: OStream&

    - Semantics: For each element, e, in sequence, seq, - call os << - e. + Semantics: For each element, e, in sequence, seq, + call os << + e.

    - + Header
     #include <boost/fusion/sequence/io/out.hpp>
     
    - + Example
    -std::cout << make_vector(123, "Hello", 'x') << std::endl;
    +std::cout << make_vector(123, "Hello", 'x') << std::endl;
     
    diff --git a/doc/html/fusion/sequences/views.html b/doc/html/fusion/sequences/views.html index c13c7c05..d7542b79 100644 --- a/doc/html/fusion/sequences/views.html +++ b/doc/html/fusion/sequences/views.html @@ -3,7 +3,7 @@ Views - + @@ -44,7 +44,7 @@ very cheap to copy and be passed around by value.

    - + Header

    diff --git a/doc/html/fusion/sequences/views/filter_view.html b/doc/html/fusion/sequences/views/filter_view.html
    index 3e68c60b..355cfcf9 100644
    --- a/doc/html/fusion/sequences/views/filter_view.html
    +++ b/doc/html/fusion/sequences/views/filter_view.html
    @@ -3,7 +3,7 @@
     
     filter_view
     
    -
    +
     
     
     
    @@ -26,25 +26,25 @@
     
     
    - + Description

    - filter_view is a view into + filter_view is a view into a subset of its underlying sequence's elements satisfying a given predicate (an MPL metafunction). - The filter_view presents - only those elements for which its predicate evaluates to mpl::true_. + The filter_view presents + only those elements for which its predicate evaluates to mpl::true_.

    - + Header
     #include <boost/fusion/sequence/view/filter_view.hpp>
     
    - + Synopsis
    @@ -52,7 +52,7 @@
     struct filter_view;
     
    - + Template parameters
    @@ -69,7 +69,7 @@
    - + - +
    SequenceSequence A Forward @@ -78,16 +78,16 @@  
    PredPred Unary - Metafunction returning an mpl::bool_ + Metafunction returning an mpl::bool_  
    - + Model of
    - + Expression Semantics
    @@ -134,30 +134,30 @@ -F(s) +F(s) Creates - a filter_view given - a sequence, s. + a filter_view given + a sequence, s. -F(f) +F(f) Copy - constructs a filter_view - from another filter_view, - f. + constructs a filter_view + from another filter_view, + f. -f = - f2 +f = + f2 Assigns - to a filter_view, - f, from another - filter_view, f2. + to a filter_view, + f, from another + filter_view, f2.
    - + Example
    @@ -165,7 +165,7 @@
     using boost::mpl::not_;
     using boost::is_class;
     
    -typedef vector<std::string, char, long, bool, double> vector_type;
    +typedef vector<std::string, char, long, bool, double> vector_type;
     
     vector_type v("a-string", '@', 987654, true, 6.6);
     filter_view<vector_type const, not_<is_class<_> > > view(v);
    diff --git a/doc/html/fusion/sequences/views/iterator_range.html b/doc/html/fusion/sequences/views/iterator_range.html
    index d53044a3..70bf3661 100644
    --- a/doc/html/fusion/sequences/views/iterator_range.html
    +++ b/doc/html/fusion/sequences/views/iterator_range.html
    @@ -3,7 +3,7 @@
     
     iterator_range
     
    -
    +
     
     
     
    @@ -26,22 +26,22 @@
     
     
    - + Description

    - iterator_range presents + iterator_range presents a sub-range of its underlying sequence delimited by a pair of iterators.

    - + Header
     #include <boost/fusion/sequence/view/iterator_range.hpp>
     
    - + Synopsis
    @@ -49,7 +49,7 @@
     struct iterator_range;
     
    - + Template parameters
    @@ -66,14 +66,14 @@ -First +First A fusion Iterator   -Last +Last A fusion Iterator @@ -82,7 +82,7 @@
    - + Model of
    - + Expression Semantics
    @@ -131,43 +131,43 @@ -IR(f, l) +IR(f, l) Creates - an iterator_range - given iterators, f - and l. + an iterator_range + given iterators, f + and l. -IR(ir) +IR(ir) Copy - constructs an iterator_range - from another iterator_range, - ir. + constructs an iterator_range + from another iterator_range, + ir. -ir = - ir2 +ir = + ir2 Assigns - to a iterator_range, - ir, from another - iterator_range, - ir2. + to a iterator_range, + ir, from another + iterator_range, + ir2.
    - + Example
     char const* s = "Ruby";
    -typedef vector<int, char, double, char const*> vector_type;
    +typedef vector<int, char, double, char const*> vector_type;
     vector_type vec(1, 'x', 3.3, s);
     
    -typedef result_of::begin<vector_type>::type A;
    -typedef result_of::end<vector_type>::type B;
    -typedef result_of::next<A>::type C;
    -typedef result_of::prior<B>::type D;
    +typedef result_of::begin<vector_type>::type A;
    +typedef result_of::end<vector_type>::type B;
    +typedef result_of::next<A>::type C;
    +typedef result_of::prior<B>::type D;
     
     C c(vec);
     D d(vec);
    diff --git a/doc/html/fusion/sequences/views/joint_view.html b/doc/html/fusion/sequences/views/joint_view.html
    index fd753d3b..81199a6c 100644
    --- a/doc/html/fusion/sequences/views/joint_view.html
    +++ b/doc/html/fusion/sequences/views/joint_view.html
    @@ -3,7 +3,7 @@
     
     joint_view
     
    -
    +
     
     
     
    @@ -26,22 +26,22 @@
     
     
    - + Description

    - joint_view presents a view + joint_view presents a view which is a concatenation of two sequences.

    - + Header
     #include <boost/fusion/sequence/view/joint_view.hpp>
     
    - + Synopsis
    @@ -49,7 +49,7 @@
     struct joint_view;
     
    - + Template parameters
    @@ -66,7 +66,7 @@ -Sequence1 +Sequence1 A Forward @@ -75,7 +75,7 @@   -Sequence2 +Sequence2 A Forward @@ -86,7 +86,7 @@
    - + Model of
    - + Expression Semantics
    @@ -135,39 +135,39 @@ -JV(s1, s2) +JV(s1, s2) Creates - a joint_view given - sequences, s1 and - s2. + a joint_view given + sequences, s1 and + s2. -JV(jv) +JV(jv) Copy - constructs a joint_view - from another joint_view, - jv. + constructs a joint_view + from another joint_view, + jv. -jv = - jv2 +jv = + jv2 Assigns - to a joint_view, - jv, from another - joint_view, jv2. + to a joint_view, + jv, from another + joint_view, jv2.
    - + Example
    -vector<int, char> v1(3, 'x');
    -vector<std::string, int> v2("hello", 123);
    +vector<int, char> v1(3, 'x');
    +vector<std::string, int> v2("hello", 123);
     joint_view<
    -    vector<int, char>
    -  , vector<std::string, int>
    +    vector<int, char>
    +  , vector<std::string, int>
     > view(v1, v2);
     std::cout << view << std::endl;
     
    diff --git a/doc/html/fusion/sequences/views/reverse_view.html b/doc/html/fusion/sequences/views/reverse_view.html index 883cd7df..e2692be0 100644 --- a/doc/html/fusion/sequences/views/reverse_view.html +++ b/doc/html/fusion/sequences/views/reverse_view.html @@ -3,7 +3,7 @@ reverse_view - + @@ -26,19 +26,19 @@

    - reverse_view presents a + reverse_view presents a reversed view of underlying sequence. The first element will be its last and the last element will be its first.

    - + Header
     #include <boost/fusion/sequence/view/reverse_view.hpp>
     
    - + Synopsis
    @@ -46,7 +46,7 @@
     struct reverse_view;
     
    - + Template parameters
    @@ -62,7 +62,7 @@ Default -Sequence +Sequence A Bidirectional @@ -72,7 +72,7 @@
    - + Model of
    - + Expression Semantics
    @@ -118,34 +118,34 @@ -RV(s) +RV(s) Creates - a unary reverse_view - given sequence, s. + a unary reverse_view + given sequence, s. -RV(rv) +RV(rv) Copy - constructs a reverse_view - from another reverse_view, - rv. + constructs a reverse_view + from another reverse_view, + rv. -rv = - rv2 +rv = + rv2 Assigns - to a reverse_view, - rv, from another - reverse_view, rv2. + to a reverse_view, + rv, from another + reverse_view, rv2.
    - + Example
    -typedef vector<int, short, double> vector_type;
    +typedef vector<int, short, double> vector_type;
     vector_type vec(2, 5, 3.3);
     
     reverse_view<vector_type> reverse(vec);
    diff --git a/doc/html/fusion/sequences/views/single_view.html b/doc/html/fusion/sequences/views/single_view.html
    index fd8bb4cf..69d4fb9d 100644
    --- a/doc/html/fusion/sequences/views/single_view.html
    +++ b/doc/html/fusion/sequences/views/single_view.html
    @@ -3,7 +3,7 @@
     
     single_view
     
    -
    +
     
     
     
    @@ -26,18 +26,18 @@
     
     

    - single_view is a view into + single_view is a view into a value as a single element sequence.

    - + Header
     #include <boost/fusion/sequence/view/single_view.hpp>
     
    - + Synopsis
    @@ -45,7 +45,7 @@
     struct single_view;
     
    - + Template parameters
    @@ -61,14 +61,14 @@ Default -T +T Any type  
    - + Model of
    - + Expression Semantics
    @@ -113,30 +113,30 @@ -S(x) +S(x) Creates - a single_view from - x. + a single_view from + x. -S(s) +S(s) Copy - constructs a single_view - from another single_view, - s. + constructs a single_view + from another single_view, + s. -s = - s2 +s = + s2 Assigns - to a single_view, - s, from another - single_view, s2. + to a single_view, + s, from another + single_view, s2.
    - + Example
    diff --git a/doc/html/fusion/sequences/views/transform_view.html b/doc/html/fusion/sequences/views/transform_view.html
    index c557b852..0c956438 100644
    --- a/doc/html/fusion/sequences/views/transform_view.html
    +++ b/doc/html/fusion/sequences/views/transform_view.html
    @@ -3,7 +3,7 @@
     
     transform_view
     
    -
    +
     
     
     
    @@ -26,40 +26,40 @@
     
     

    - transform_view presents - a transformed view of its underlying sequence given a unary transform_view presents + a transformed view of its underlying sequence given a unary Polymorphic - Function Object. The transform_view + Function Object. The transform_view inherits the traversal characteristics (see Sequence Traversal Concept) of its underlying sequence.

    - + Header
     #include <boost/fusion/sequence/view/transform_view.hpp>
     
    - + Synopsis

    - Unary Version + Unary Version

     template <typename Sequence, typename F>
     struct transform_view;
     

    - Binary Version + Binary Version

     template <typename Sequence1, typename Sequence2, typename F>
     struct transform_view;
     
    - + Template parameters
    @@ -76,7 +76,7 @@ -Sequence +Sequence A Forward @@ -85,7 +85,7 @@   -Sequence1 +Sequence1 A Forward @@ -94,7 +94,7 @@   -Sequence2 +Sequence2 A Forward @@ -103,9 +103,9 @@   -F +F A - Polymorphic Function Object @@ -114,7 +114,7 @@
    - + Model of
    • @@ -131,45 +131,45 @@

      Notation

      -
      TV
      +
      TV
      - A transform_view type + A transform_view type
      -
      BTV
      +
      BTV
      - A binary transform_view + A binary transform_view type
      -
      UTV
      +
      UTV
      - A unary transform_view + A unary transform_view type
      -
      f
      +
      f
      - An instance of F + An instance of F
      -
      s
      +
      s
      - An instance of Sequence + An instance of Sequence
      -
      s1
      +
      s1
      - An instance of Sequence1 + An instance of Sequence1
      -
      s2
      +
      s2
      - An instance of Sequence2 + An instance of Sequence2
      -
      tv, - tv2
      +
      tv, + tv2
      - Instances of transform_view + Instances of transform_view
      - + Expression Semantics
      @@ -196,44 +196,44 @@ -UTV(s, f) +UTV(s, f) Creates - a unary transform_view - given sequence, s - and unary transform_view + given sequence, s + and unary Polymorphic - Function Object, f. + Function Object, f. -BTV(s1, s2, f) +BTV(s1, s2, f) Creates - a binary transform_view - given sequences, s1 - and s2 and unary - transform_view + given sequences, s1 + and s2 and unary + Polymorphic Function - Object, f. + Object, f. -TV(tv) +TV(tv) Copy - constructs a transform_view - from another transform_view, - tv. + constructs a transform_view + from another transform_view, + tv. -tv = - tv2 +tv = + tv2 Assigns - to a transform_view, - tv, from another - transform_view, - tv2. + to a transform_view, + tv, from another + transform_view, + tv2.
    - + Example
    @@ -252,7 +252,7 @@
         }
     };
     
    -typedef vector<int, short, double> vector_type;
    +typedef vector<int, short, double> vector_type;
     vector_type vec(2, 5, 3.3);
     
     transform_view<vector_type, square> transform(vec, square());
    diff --git a/doc/html/fusion/sequences/views/zip_view.html b/doc/html/fusion/sequences/views/zip_view.html
    index 8a53868b..28e1538c 100644
    --- a/doc/html/fusion/sequences/views/zip_view.html
    +++ b/doc/html/fusion/sequences/views/zip_view.html
    @@ -3,7 +3,7 @@
     
     zip_view
     
    -
    +
     
     
     
    @@ -26,25 +26,25 @@
     
     
    - + Description

    - zip_view presents a view + zip_view presents a view which iterates over a collection of _sequence_s - in parallel. A zip_view + in parallel. A zip_view is constructed from a Sequence of references to the component _sequence_s.

    - + Header
     #include <boost/fusion/sequence/view/zip_view.hpp>
     
    - + Synopsis
    @@ -52,7 +52,7 @@
     struct zip_view;
     
    - + Template parameters
    @@ -68,7 +68,7 @@ Default -Sequences +Sequences A Forward @@ -77,7 +77,7 @@
    - + Model of
    - + Expression Semantics
    @@ -122,36 +122,36 @@ -ZV(s) +ZV(s) Creates - a zip_view given + a zip_view given a sequence of references to the component _sequence_s. -ZV(zv1) +ZV(zv1) Copy - constructs a zip_view - from another zip_view, - zv. + constructs a zip_view + from another zip_view, + zv. -zv1 = - zv2 +zv1 = + zv2 Assigns - to a zip_view, zv, from another zip_view, zv2. + to a zip_view, zv, from another zip_view, zv2.
    - + Example
    -typedef vector<int,int> vec1;
    -typedef vector<char,char> vec2;
    +typedef vector<int,int> vec1;
    +typedef vector<char,char> vec2;
     vec1 v1(1,2);
     vec2 v2('a','b');
    -typedef vector<vec1&, vec2&> sequences;
    +typedef vector<vec1&, vec2&> sequences;
     std::cout << zip_view<sequences>(sequences(v1, v2)) << std::endl; // ((1 a) (2 b))
     
    diff --git a/doc/html/fusion/support.html b/doc/html/fusion/support.html index c9eb40db..dfaeb458 100644 --- a/doc/html/fusion/support.html +++ b/doc/html/fusion/support.html @@ -3,7 +3,7 @@ Support - + diff --git a/doc/html/fusion/support/category_of.html b/doc/html/fusion/support/category_of.html index d4a63a87..4046368a 100644 --- a/doc/html/fusion/support/category_of.html +++ b/doc/html/fusion/support/category_of.html @@ -3,7 +3,7 @@ category_of - + @@ -26,7 +26,7 @@

    - + Description

    @@ -36,7 +36,7 @@ Sequence Concepts).

    - + Synopsis

    @@ -50,7 +50,7 @@
     }
     

    - + Parameters

    @@ -65,14 +65,14 @@ - +
    Description
    TT Any type The type to query.

    - + Expression Semantics

    @@ -80,7 +80,7 @@ typedef traits::category_of<T>::type category;

    - Return type: + Return type:

    For Iterators, the return type is derived from one of: @@ -134,24 +134,24 @@ }}

    - Semantics: Establishes the conceptual classification + Semantics: Establishes the conceptual classification of a particular Sequence or Iterator.

    - + Header

     #include <boost/fusion/support/category_of.hpp>
     

    - + Example

     using boost::is_base_of;
    -typedef traits::category_of<list<> >::type list_category;
    -typedef traits::category_of<vector<> >::type vector_category;
    +typedef traits::category_of<list<> >::type list_category;
    +typedef traits::category_of<vector<> >::type vector_category;
     BOOST_MPL_ASSERT(( is_base_of<forward_traversal_tag, list_category> ));
     BOOST_MPL_ASSERT(( is_base_of<random_access_traversal_tag, vector_category> ));
     
    diff --git a/doc/html/fusion/support/deduce.html b/doc/html/fusion/support/deduce.html index 962fdf50..a5b28c6a 100644 --- a/doc/html/fusion/support/deduce.html +++ b/doc/html/fusion/support/deduce.html @@ -3,7 +3,7 @@ deduce - + @@ -26,7 +26,7 @@

    - + Description

    @@ -34,19 +34,19 @@ conversion to the full argument type.

    - It removes references to const, - references to array types are kept, even if the array is const. - Reference wrappers are removed (see boost::ref). + It removes references to const, + references to array types are kept, even if the array is const. + Reference wrappers are removed (see boost::ref).

    - + Header

     #include <boost/fusion/support/deduce.hpp>
     

    - + Synopsis

    @@ -60,7 +60,7 @@
     }
     

    - + Example

    @@ -81,10 +81,10 @@
     }
     

    - + See also

    - + diff --git a/doc/html/fusion/support/deduce_sequence.html b/doc/html/fusion/support/deduce_sequence.html index 153ad329..14960de0 100644 --- a/doc/html/fusion/support/deduce_sequence.html +++ b/doc/html/fusion/support/deduce_sequence.html @@ -3,7 +3,7 @@ deduce_sequence - + @@ -26,7 +26,7 @@

    - + Description

    @@ -39,14 +39,14 @@ original type as its argument.

    - + Header

     #include <boost/fusion/support/deduce_sequence.hpp>
     

    - + Synopsis

    @@ -60,7 +60,7 @@
     }
     

    - + Example

    @@ -75,18 +75,18 @@
     };
     
     template <typename T0, typename T1>
    -holder< vector<T0 const &, T1 const &> > 
    +holder< vector<T0 const &, T1 const &> > 
     make_holder(T0 const & a0, T1 const & a1)
     {
    -    typedef vector<T0 const &, T1 const &> arg_vec_t;
    +    typedef vector<T0 const &, T1 const &> arg_vec_t;
         return holder<arg_vec_t>( arg_vec_t(a0,a1) ); 
     }
     

    - + See also

    - +
    diff --git a/doc/html/fusion/support/is_sequence.html b/doc/html/fusion/support/is_sequence.html index 26d561ba..c650ee29 100644 --- a/doc/html/fusion/support/is_sequence.html +++ b/doc/html/fusion/support/is_sequence.html @@ -3,7 +3,7 @@ is_sequence - + @@ -26,18 +26,18 @@

    - + Description

    - Metafunction that evaluates to mpl::true_ - if a certain type T is a - conforming Fusion Sequence, mpl::false_ + Metafunction that evaluates to mpl::true_ + if a certain type T is a + conforming Fusion Sequence, mpl::false_ otherwise. This may be specialized to accomodate clients which provide Fusion conforming sequences.

    - + Synopsis

    @@ -51,7 +51,7 @@
     }
     

    - + Parameters

    @@ -66,14 +66,14 @@ - +
    Description
    TT Any type The type to query.

    - + Expression Semantics

    @@ -81,32 +81,33 @@ typedef traits::is_sequence<T>::type c;

    - Return type: An MPL Boolean Constant. + Return type: An MPL + Boolean Constant.

    - Semantics: Metafunction that evaluates to - mpl::true_ if a certain type T - is a conforming Fusion sequence, mpl::false_ + Semantics: Metafunction that evaluates to + mpl::true_ if a certain type T + is a conforming Fusion sequence, mpl::false_ otherwise.

    - + Header

     #include <boost/fusion/support/is_sequence.hpp>
     

    - + Example

     BOOST_MPL_ASSERT_NOT(( traits::is_sequence< std::vector<int> > ));
     BOOST_MPL_ASSERT_NOT(( is_sequence< int > ));
    -BOOST_MPL_ASSERT(( traits::is_sequence<list<> > ));
    -BOOST_MPL_ASSERT(( traits::is_sequence<list<int> > ));
    -BOOST_MPL_ASSERT(( traits::is_sequence<vector<> > ));
    -BOOST_MPL_ASSERT(( traits::is_sequence<vector<int> > ));
    +BOOST_MPL_ASSERT(( traits::is_sequence<list<> > ));
    +BOOST_MPL_ASSERT(( traits::is_sequence<list<int> > ));
    +BOOST_MPL_ASSERT(( traits::is_sequence<vector<> > ));
    +BOOST_MPL_ASSERT(( traits::is_sequence<vector<int> > ));
     
    diff --git a/doc/html/fusion/support/is_view.html b/doc/html/fusion/support/is_view.html index 33e07948..08bfb18c 100644 --- a/doc/html/fusion/support/is_view.html +++ b/doc/html/fusion/support/is_view.html @@ -3,7 +3,7 @@ is_view - + @@ -26,21 +26,21 @@

    - + Description

    - Metafunction that evaluates to mpl::true_ - if a certain type T is a - conforming Fusion View, mpl::false_ + Metafunction that evaluates to mpl::true_ + if a certain type T is a + conforming Fusion View, mpl::false_ otherwise. A view is a specialized sequence that does not actually contain data. Views hold sequences which may be other views. In general, views are held by other views by value, while non-views are held by other views by - reference. is_view may be + reference. is_view may be specialized to accomodate clients providing Fusion conforming views.

    - + Synopsis

    @@ -54,7 +54,7 @@
     }
     

    - + Parameters

    @@ -69,37 +69,38 @@ - +
    Description
    TT Any type The type to query.

    - + Expression Semantics

     typedef traits::is_view<T>::type c;
     

    - Return type: An MPL Boolean Constant. + Return type: An MPL + Boolean Constant.

    - Semantics: Metafunction that evaluates to - mpl::true_ if a certain type T - is a conforming Fusion view, mpl::false_ + Semantics: Metafunction that evaluates to + mpl::true_ if a certain type T + is a conforming Fusion view, mpl::false_ otherwise.

    - + Header

     #include <boost/fusion/support/is_view.hpp>
     

    - + Example

    @@ -108,8 +109,8 @@
     
     using boost::mpl::_
     using boost::is_pointer;
    -typedef vector<int*, char, long*, bool, double> vector_type;
    -typedef filter_view<vector_type, is_pointer<_> > filter_view_type;
    +typedef vector<int*, char, long*, bool, double> vector_type;
    +typedef filter_view<vector_type, is_pointer<_> > filter_view_type;
     BOOST_MPL_ASSERT(( traits::is_view<filter_view_type> ));
     
    diff --git a/doc/html/fusion/support/pair.html b/doc/html/fusion/support/pair.html index b13de593..0cd9bfc8 100644 --- a/doc/html/fusion/support/pair.html +++ b/doc/html/fusion/support/pair.html @@ -3,7 +3,7 @@ pair - + @@ -26,18 +26,18 @@

    - + Description

    - Fusion pair type is a half - runtime pair. A half runtime pair is similar to a std::pair, - but, unlike std::pair, + Fusion pair type is a half + runtime pair. A half runtime pair is similar to a std::pair, + but, unlike std::pair, the first type does not have data. It is used as elements in _map_s, for example.

    - + Synopsis

    @@ -61,7 +61,7 @@
     make_pair(Second const &);
     

    - + Template parameters

    @@ -88,36 +88,36 @@

    Notation

    -
    P
    +
    P
    Fusion pair type
    -
    p, - p2
    +
    p, + p2
    Fusion pairs
    -
    F, - S
    +
    F, + S
    Arbitrary types
    -
    s
    +
    s
    - Value of type S + Value of type S
    -
    o
    +
    o
    Output stream
    -
    i
    +
    i
    Input stream

    - + Expression Semantics

    @@ -131,81 +131,81 @@ - + - + - + - + + a pair given value for the second type, s. - + + constructs a pair from another pair, p2. - + + a pair, p1, from another pair, p2. - - + + - - + + - + - +
    P::first_typeP::first_type The type - of the first template parameter, F, - equivalent to result_of::first<P>::type. + of the first template parameter, F, + equivalent to result_of::first<P>::type.
    P::second_typeP::second_type The type - of the second template parameter, S, - equivalent to result_of::second<P>::type. + of the second template parameter, S, + equivalent to result_of::second<P>::type.
    P()P() Default construction.
    P(s)P(s) Construct - a pair given value for the second type, s.
    P(p2)P(p2) Copy - constructs a pair from another pair, p2.
    p = - p2p = + p2 Assigns - a pair, p1, from another pair, p2.
    make_pair<F>(s) Make a pair given the first - type, F, and a value - for the second type, s. - The second type assumes the type of s + type, F, and a value + for the second type, s. + The second type assumes the type of s
    o << - pOutput p to output stream, o.o << + pOutput p to output stream, o.
    i >> - pInput p from input stream, i.i >> + pInput p from input stream, i.
    p == - p2p == + p2 Tests two pairs for equality.
    p != - p2p != + p2 Tests two pairs for inequality.

    - + Header

     #include <boost/fusion/support/pair.hpp>
     

    - + Example

    diff --git a/doc/html/fusion/support/tag_of.html b/doc/html/fusion/support/tag_of.html
    index c9eda41b..80dd82cb 100644
    --- a/doc/html/fusion/support/tag_of.html
    +++ b/doc/html/fusion/support/tag_of.html
    @@ -3,7 +3,7 @@
     
     tag_of
     
    -
    +
     
     
     
    @@ -26,7 +26,7 @@
     
     

    - + Description

    @@ -40,7 +40,7 @@ conforming sequences.

    - + Synopsis

    @@ -54,7 +54,7 @@
     }
     

    - + Parameters

    @@ -69,42 +69,42 @@ - +
    Description
    TT Any type The type to query.

    - + Expression Semantics

     typedef traits::tag_of<T>::type tag;
     

    - Return type: Any type. + Return type: Any type.

    - Semantics: Returns the tag type associated - with T. + Semantics: Returns the tag type associated + with T.

    - + Header

     #include <boost/fusion/support/tag_of.hpp>
     

    - + Example

    -typedef traits::tag_of<list<> >::type tag1;
    -typedef traits::tag_of<list<int> >::type tag2;
    -typedef traits::tag_of<vector<> >::type tag3;
    -typedef traits::tag_of<vector<int> >::type tag4;
    +typedef traits::tag_of<list<> >::type tag1;
    +typedef traits::tag_of<list<int> >::type tag2;
    +typedef traits::tag_of<vector<> >::type tag3;
    +typedef traits::tag_of<vector<int> >::type tag4;
     
     BOOST_MPL_ASSERT((boost::is_same<tag1, tag2>));
     BOOST_MPL_ASSERT((boost::is_same<tag3, tag4>));
    diff --git a/doc/html/fusion/tuples.html b/doc/html/fusion/tuples.html
    index ce036073..524c8fe7 100644
    --- a/doc/html/fusion/tuples.html
    +++ b/doc/html/fusion/tuples.html
    @@ -3,7 +3,7 @@
     
     Tuples
     
    -
    +
     
     
     
    @@ -43,12 +43,12 @@
     

    The TR1 technical report describes extensions to the C++ standard library. Many of these extensions will be considered for the next iteration of the C++ - standard. TR1 describes a tuple type, and support for treating std::pair + standard. TR1 describes a tuple type, and support for treating std::pair as a type of tuple.

    Fusion provides full support for the TR1 - Tuple interface, and the extended uses of std::pair described + Tuple interface, and the extended uses of std::pair described in the TR1 document.

    diff --git a/doc/html/fusion/tuples/class_template_tuple.html b/doc/html/fusion/tuples/class_template_tuple.html index 5d7b7d5a..e62eebda 100644 --- a/doc/html/fusion/tuples/class_template_tuple.html +++ b/doc/html/fusion/tuples/class_template_tuple.html @@ -3,7 +3,7 @@ Class template tuple - + @@ -44,11 +44,11 @@ beyond that required by TR1.

    - Currently tuple is basically a synonym for vector, although this may be changed + Currently tuple is basically a synonym for vector, although this may be changed in future releases of fusion.

    - + Synopsis

    @@ -60,7 +60,7 @@
     class tuple;
     

    - + Header

    diff --git a/doc/html/fusion/tuples/class_template_tuple/construction.html b/doc/html/fusion/tuples/class_template_tuple/construction.html
    index e0195acd..73e48b73 100644
    --- a/doc/html/fusion/tuples/class_template_tuple/construction.html
    +++ b/doc/html/fusion/tuples/class_template_tuple/construction.html
    @@ -3,7 +3,7 @@
     
     Construction
     
    -
    +
     
     
     
    @@ -27,7 +27,7 @@
     
     
    - + Description

    @@ -38,33 +38,33 @@ in this section.

    - + Specification

    Notation

    -
    T1 - ... TN, - U1 ... - UN
    +
    T1 + ... TN, + U1 ... + UN
    Tuple element types
    -
    P1 - ... PN
    +
    P1 + ... PN
    Parameter types
    -
    Ti, - Ui
    +
    Ti, + Ui
    - The type of the ith element + The type of the ith element of a tuple
    -
    Pi
    +
    Pi
    - The type of the ith parameter + The type of the ith parameter
    @@ -72,48 +72,48 @@ tuple();

    - Requirements: Each Ti + Requirements: Each Ti is default constructable.

    - Semantics: Default initializes each element + Semantics: Default initializes each element of the tuple.

     tuple(P1,P2,...,PN);
     

    - Requirements: Each Pi - is Ti if Ti is a reference type, const Ti& otherwise. + Requirements: Each Pi + is Ti if Ti is a reference type, const Ti& otherwise.

    - Semantics: Copy initializes each element + Semantics: Copy initializes each element with the corresponding parameter.

     tuple(const tuple& t);
     

    - Requirements: Each Ti + Requirements: Each Ti should be copy constructable.

    - Semantics: Copy constructs each element - of *this - with the corresponding element of t. + Semantics: Copy constructs each element + of *this + with the corresponding element of t.

     template<typename U1, typename U2, ..., typename UN>
     tuple(const tuple<U1, U2, ..., UN>& t);
     

    - Requirements: Each Ti - shall be constructible from the corresponding Ui. + Requirements: Each Ti + shall be constructible from the corresponding Ui.

    - Semantics: Constructs each element of - *this - with the corresponding element of t. + Semantics: Constructs each element of + *this + with the corresponding element of t.

    diff --git a/doc/html/fusion/tuples/class_template_tuple/element_access.html b/doc/html/fusion/tuples/class_template_tuple/element_access.html index 9226232f..0de1e5fb 100644 --- a/doc/html/fusion/tuples/class_template_tuple/element_access.html +++ b/doc/html/fusion/tuples/class_template_tuple/element_access.html @@ -4,7 +4,7 @@ Element access - +Element access
    - + Description

    The TR1 - Tuple provides the get + Tuple provides the get function to provide access to it's elements by zero based numeric index.

    - + Specification
    @@ -48,38 +48,38 @@
     RJ get(T& t);
     

    - Requires: 0 + Requires: 0 < I - <= N. - The program is ill formed if I - is out of bounds. T is - any fusion sequence type, including tuple. + <= N. + The program is ill formed if I + is out of bounds. T is + any fusion sequence type, including tuple.

    - Return type: RJ - is equivalent to result_of::at_c<I,T>::type. + Return type: RJ + is equivalent to result_of::at_c<I,T>::type.

    - Returns: A reference to the Ith element of T. + Returns: A reference to the Ith element of T.

     template<int I, typename T>
     PJ get(T const& t);
     

    - Requires: 0 + Requires: 0 < I - <= N. - The program is ill formed if I - is out of bounds. T is - any fusion sequence type, including tuple. + <= N. + The program is ill formed if I + is out of bounds. T is + any fusion sequence type, including tuple.

    - Return type: PJ - is equivalent to result_of::at_c<I,T>::type. + Return type: PJ + is equivalent to result_of::at_c<I,T>::type.

    - Returns: A const reference to the Ith element of T. + Returns: A const reference to the Ith element of T.

    diff --git a/doc/html/fusion/tuples/class_template_tuple/relational_operators.html b/doc/html/fusion/tuples/class_template_tuple/relational_operators.html index 37cdfae1..d5f31ca3 100644 --- a/doc/html/fusion/tuples/class_template_tuple/relational_operators.html +++ b/doc/html/fusion/tuples/class_template_tuple/relational_operators.html @@ -4,7 +4,7 @@ Relational operators - +Relational operators
    - + Description

    @@ -38,33 +38,33 @@ Tuple provides the standard boolean relational operators.

    - + Specification

    Notation

    -
    T1 - ... TN, - U1 ... - UN
    +
    T1 + ... TN, + U1 ... + UN
    Tuple element types
    -
    P1 - ... PN
    +
    P1 + ... PN
    Parameter types
    -
    Ti, - Ui
    +
    Ti, + Ui
    - The type of the ith element + The type of the ith element of a tuple
    -
    Pi
    +
    Pi
    - The type of the ith parameter + The type of the ith parameter
    @@ -76,23 +76,23 @@ consttuple<U1,U2,...,UN>&rhs);

    - Requirements: For all i, - 1 <= + Requirements: For all i, + 1 <= i < - N, get<i>(lhs) == get<i>(rhs) - is a valid expression returning a type that is convertible to bool. + N, get<i>(lhs) == get<i>(rhs) + is a valid expression returning a type that is convertible to bool.

    - Semantics: Returns true - if and only if get<i>(lhs) == get<i>(rhs) - for all i. For any 2 zero - length tuples e and f, e - == f - returns true. + Semantics: Returns true + if and only if get<i>(lhs) == get<i>(rhs) + for all i. For any 2 zero + length tuples e and f, e + == f + returns true.

     template<typename T1, typename T2, ..., typename TN,
    @@ -102,18 +102,18 @@
         const tuple<U1, U2, ..., UN>& rhs);
     

    - Requirements: For all i, - 1 <= + Requirements: For all i, + 1 <= i < - N, get<i>(lhs) < get<i>(rhs) - is a valid expression returning a type that is convertible to bool. + N, get<i>(lhs) < get<i>(rhs) + is a valid expression returning a type that is convertible to bool.

    - Semantics: Returns the lexicographical - comparison of between lhs - and rhs. + Semantics: Returns the lexicographical + comparison of between lhs + and rhs.

     template<typename T1, typename T2, ..., typename TN,
    @@ -123,16 +123,16 @@
         const tuple<U1, U2, ..., UN>& rhs);
     

    - Requirements: For all i, - 1 <= + Requirements: For all i, + 1 <= i < - N, get<i>(lhs) == get<i>(rhs) - is a valid expression returning a type that is convertible to bool. + N, get<i>(lhs) == get<i>(rhs) + is a valid expression returning a type that is convertible to bool.

    - Semantics: Returns !(lhs == rhs). + Semantics: Returns !(lhs == rhs).

     template<typename T1, typename T2, ..., typename TN,
    @@ -142,16 +142,16 @@
         const tuple<U1, U2, ..., UN>& rhs);
     

    - Requirements: For all i, - 1 <= + Requirements: For all i, + 1 <= i < - N, get<i>(rhs) < get<i>(lhs) - is a valid expression returning a type that is convertible to bool. + N, get<i>(rhs) < get<i>(lhs) + is a valid expression returning a type that is convertible to bool.

    - Semantics: Returns !(rhs < lhs) + Semantics: Returns !(rhs < lhs)

     template<typename T1, typename T2, ..., typename TN,
    @@ -161,17 +161,17 @@
         const tuple<U1, U2, ..., UN>& rhs);
     

    - Requirements: For all i, - 1 <= + Requirements: For all i, + 1 <= i < - N, get<i>(rhs) < get<i>(lhs) - is a valid expression returning a type that is convertible to bool. + N, get<i>(rhs) < get<i>(lhs) + is a valid expression returning a type that is convertible to bool.

    - Semantics: Returns rhs - < lhs. + Semantics: Returns rhs + < lhs.

     template<typename T1, typename T2, ..., typename TN,
    @@ -181,16 +181,16 @@
         const tuple<U1, U2, ..., UN>& rhs);
     

    - Requirements: For all i, - 1 <= + Requirements: For all i, + 1 <= i < - N, get<i>(lhs) < get<i>(rhs) - is a valid expression returning a type that is convertible to bool. + N, get<i>(lhs) < get<i>(rhs) + is a valid expression returning a type that is convertible to bool.

    - Semantics: Returns !(lhs < rhs). + Semantics: Returns !(lhs < rhs).

    diff --git a/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html b/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html index 9a036f7a..d771af6f 100644 --- a/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html +++ b/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html @@ -4,7 +4,7 @@ Tuple creation functions - + @@ -30,17 +30,17 @@ creation functions">Tuple creation functions
    - + Description

    - TR1 describes 2 utility functions for creating _tr1tuple_s. make_tuple - builds a tuple out of it's argument list, and tie + TR1 describes 2 utility functions for creating _tr1tuple_s. make_tuple + builds a tuple out of it's argument list, and tie builds a tuple of references to it's arguments. The details of these creation functions are described in this section.

    - + Specification
    @@ -48,22 +48,22 @@
     tuple<V1, V2, ..., VN> make_tuple(const T1& t1, const T2& t2, ..., const TN& tn);
     

    - Where Vi is X& - if the cv-unqualified type Ti - is reference_wrapper<X>, - otherwise Vi is Ti. + Where Vi is X& + if the cv-unqualified type Ti + is reference_wrapper<X>, + otherwise Vi is Ti.

    - Returns: tuple<V1, V2, ..., VN>(t1, t2, ..., tN) + Returns: tuple<V1, V2, ..., VN>(t1, t2, ..., tN)

     template<typename T1, typename T2, ..., typename TN>
     tuple<T1&, T2&, ..., TN&> tie(T1& t1, T2& t2, ..., TN& tn);
     

    - Returns: tuple<T1&, T2&, ..., - TN&>(t1, t2, ..., tN). When argument ti - is ignore, assigning any + Returns: tuple<T1&, T2&, ..., + TN&>(t1, t2, ..., tN). When argument ti + is ignore, assigning any value to the corresponding tuple element has has no effect.

    diff --git a/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html b/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html index fbd6ab43..889d1d44 100644 --- a/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html +++ b/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html @@ -4,7 +4,7 @@ Tuple helper classes - +Tuple helper classes
    - + Description

    @@ -40,37 +40,38 @@ tuple size, and the element types.

    - + Specification
     tuple_size<T>::value
     

    - Requires: T - is any fusion sequence type, including tuple. + Requires: T + is any fusion sequence type, including tuple.

    - Type: MPL Integral Constant + Type: MPL + Integral Constant

    - Value: The number of elements in the sequence. - Equivalent to result_of::size<T>::type. + Value: The number of elements in the sequence. + Equivalent to result_of::size<T>::type.

     tuple_element<I, T>::type
     

    - Requires: T - is any fusion sequence type, including tuple. - 0 <= + Requires: T + is any fusion sequence type, including tuple. + 0 <= I < - N or the program is ill formed. + N or the program is ill formed.

    - Value: The type of the Ith - element of T. Equivalent - to result_of::value_at<I,T>::type. + Value: The type of the Ith + element of T. Equivalent + to result_of::value_at<I,T>::type.

    diff --git a/doc/html/fusion/tuples/pairs.html b/doc/html/fusion/tuples/pairs.html index ad6503e6..62c8e6f3 100644 --- a/doc/html/fusion/tuples/pairs.html +++ b/doc/html/fusion/tuples/pairs.html @@ -3,7 +3,7 @@ Pairs - +

    - + Description

    The TR1 - Tuple interface is specified to provide uniform access to std::pair + Tuple interface is specified to provide uniform access to std::pair as if it were a 2 element tuple.

    - + Specification

     tuple_size<std::pair<T1, T2> >::value
     

    - Type: An MPL Integral Constant + Type: An MPL + Integral Constant

    - Value: Returns 2, the number of elements + Value: Returns 2, the number of elements in a pair.

     tuple_element<0, std::pair<T1, T2> >::type
     

    - Type: T1 + Type: T1

    - Value: Returns the type of the first element + Value: Returns the type of the first element of the pair

     tuple_element<1, std::pair<T1, T2> >::type
     

    - Type: T2 + Type: T2

    - Value: Returns thetype of the second element + Value: Returns thetype of the second element of the pair

    @@ -77,21 +78,21 @@
     const P& get(const std::pair<T1, T2>& pr);
     

    - Type: If I - == 0 - P is T1, - else if I == - 1 P - is T2 else the program is + Type: If I + == 0 + P is T1, + else if I == + 1 P + is T2 else the program is ill-formed.

    - Returns: pr.first - if I == - 0 else pr.second.[*Returns: - pr.first if I - == 0 - else pr.second. + Returns: pr.first + if I == + 0 else pr.second.[*Returns: + pr.first if I + == 0 + else pr.second.

    diff --git a/doc/html/index.html b/doc/html/index.html index 3c3cad25..705d86ed 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -3,7 +3,7 @@ Chapter 1. Fusion 2.0 - + @@ -30,7 +30,7 @@
    -

    +

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    @@ -136,43 +136,185 @@
    Intrinsics
    Functions
    +
    +
    begin
    +
    end
    +
    empty
    +
    front
    +
    back
    +
    size
    +
    at
    +
    at_c
    +
    has_key
    +
    at_key
    +
    Metafunctions
    +
    +
    begin
    +
    end
    +
    empty
    +
    front
    +
    back
    +
    size
    +
    at
    +
    at_c
    +
    value_at
    +
    value_at_c
    +
    has_key
    +
    at_key
    +
    value_at_key
    +
    Generation
    Functions
    +
    +
    make_list
    +
    make_cons
    +
    make_vector
    +
    make_set
    +
    make_map
    +
    Tiers
    +
    list_tie
    +
    vector_tie
    +
    MetaFunctions
    +
    +
    make_list
    +
    make_cons
    +
    make_vector
    +
    make_set
    +
    make_map
    +
    list_tie
    +
    vector_tie
    +
    Conversion
    Functions
    +
    +
    as_list
    +
    as_vector
    +
    as_set
    +
    as_map
    +
    Metafunctions
    +
    +
    as_list
    +
    as_vector
    +
    as_set
    +
    as_map
    +
    Operators
    I/O
    +
    +
    in
    +
    out
    +
    Comparison
    +
    +
    equal
    +
    not + equal
    +
    less + than
    +
    less + than equal
    +
    greater + than
    +
    greater + than equal
    +
    Algorithms
    -
    Concepts
    -
    Polymorphic Function - Object
    Iteration
    Functions
    +
    +
    fold
    +
    accumulate
    +
    for_each
    +
    Metafunctions
    +
    +
    fold
    +
    accumulate
    +
    for_each
    +
    Query
    Functions
    +
    +
    any
    +
    all
    +
    none
    +
    find
    +
    find_if
    +
    count
    +
    count_if
    +
    Metafunctions
    +
    +
    any
    +
    all
    +
    none
    +
    find
    +
    find_if
    +
    count
    +
    count_if
    +
    Transformation
    Functions
    +
    +
    filter
    +
    filter_if
    +
    transform
    +
    replace
    +
    replace_if
    +
    remove
    +
    remove_if
    +
    reverse
    +
    clear
    +
    erase
    +
    erase_key
    +
    insert
    +
    insert_range
    +
    join
    +
    zip
    +
    pop_back
    +
    pop_front
    +
    push_back
    +
    push_front
    +
    Metafunctions
    +
    +
    filter
    +
    filter_if
    +
    transform
    +
    replace
    +
    replace_if
    +
    remove
    +
    remove_if
    +
    reverse
    +
    clear
    +
    erase
    +
    erase_key
    +
    insert
    +
    insert_range
    +
    join
    +
    zip
    +
    pop_back
    +
    pop_front
    +
    push_back
    +
    push_front
    +
    Tuples
    @@ -192,6 +334,63 @@
    Pairs
    Extension
    +
    Functional
    +
    +
    Concepts
    +
    +
    Callable Object
    +
    Polymorphic Function + Object
    +
    Deferred + Callable Object
    +
    +
    Invocation
    +
    +
    Functions
    +
    +
    invoke
    +
    invoke_procedure
    +
    invoke_function_object
    +
    +
    Metafunctions
    +
    +
    invoke
    +
    invoke_procedure
    +
    invoke_function_object
    +
    +
    +
    Adapters
    +
    +
    fused
    +
    fused_procedure
    +
    fused_function_object
    +
    unfused_generic
    +
    unfused_lvalue_args
    +
    unfused_rvalue_args
    +
    unfused_typed
    +
    +
    Generation
    +
    +
    Functions
    +
    +
    make_fused
    +
    make_fused_procedure
    +
    make_fused_function_object
    +
    make_unfused_generic
    +
    make_unfused_lvalue_args
    +
    make_unfused_rvalue_args
    +
    +
    Metafunctions
    +
    +
    make_fused
    +
    make_fused_procedure
    +
    make_fused_function_object
    +
    make_unfused_generic
    +
    make_unfused_lvalue_args
    +
    make_unfused_rvalue_args
    +
    +
    +
    Notes
    Change log
    Acknowledgements
    @@ -200,7 +399,7 @@
    - +

    Last revised: February 07, 2007 at 22:55:21 GMT

    Last revised: February 15, 2007 at 23:05:16 GMT


    From 70a39b554f717d7d18e5c0c3bd3ba199e0094f4e Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Thu, 15 Feb 2007 23:14:42 +0000 Subject: [PATCH 087/234] adds test suite for functional module [SVN r36960] --- test/Jamfile | 17 + test/functional/fused.cpp | 78 ++++ test/functional/fused_function_object.cpp | 80 ++++ test/functional/fused_procedure.cpp | 82 ++++ test/functional/invoke.cpp | 359 ++++++++++++++++++ test/functional/invoke_function_object.cpp | 199 ++++++++++ test/functional/invoke_procedure.cpp | 313 +++++++++++++++ test/functional/make_fused.cpp | 85 +++++ .../functional/make_fused_function_object.cpp | 89 +++++ test/functional/make_fused_procedure.cpp | 91 +++++ test/functional/make_unfused_generic.cpp | 123 ++++++ test/functional/make_unfused_lvalue_args.cpp | 124 ++++++ test/functional/make_unfused_rvalue_args.cpp | 108 ++++++ test/functional/unfused_generic.cpp | 127 +++++++ test/functional/unfused_lvalue_args.cpp | 128 +++++++ test/functional/unfused_rvalue_args.cpp | 111 ++++++ test/functional/unfused_typed.cpp | 145 +++++++ 17 files changed, 2259 insertions(+) create mode 100644 test/functional/fused.cpp create mode 100644 test/functional/fused_function_object.cpp create mode 100644 test/functional/fused_procedure.cpp create mode 100644 test/functional/invoke.cpp create mode 100644 test/functional/invoke_function_object.cpp create mode 100644 test/functional/invoke_procedure.cpp create mode 100644 test/functional/make_fused.cpp create mode 100644 test/functional/make_fused_function_object.cpp create mode 100644 test/functional/make_fused_procedure.cpp create mode 100644 test/functional/make_unfused_generic.cpp create mode 100644 test/functional/make_unfused_lvalue_args.cpp create mode 100644 test/functional/make_unfused_rvalue_args.cpp create mode 100644 test/functional/unfused_generic.cpp create mode 100644 test/functional/unfused_lvalue_args.cpp create mode 100644 test/functional/unfused_rvalue_args.cpp create mode 100644 test/functional/unfused_typed.cpp diff --git a/test/Jamfile b/test/Jamfile index f63ec6c8..e7411a8b 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -104,6 +104,23 @@ import testing ; [ run sequence/zip_view.cpp : : : : ] [ run sequence/zip_view2.cpp : : : : ] [ run sequence/deduce_sequence.cpp : : : : ] + [ run functional/fused.cpp : : : : ] + [ run functional/fused_function_object.cpp : : : : ] + [ run functional/fused_procedure.cpp : : : : ] + [ run functional/unfused_generic.cpp : : : : ] + [ run functional/unfused_lvalue_args.cpp : : : : ] + [ run functional/unfused_rvalue_args.cpp : : : : ] + [ run functional/unfused_typed.cpp : : : : ] + [ run functional/make_fused.cpp : : : : ] + [ run functional/make_fused_function_object.cpp : : : : ] + [ run functional/make_fused_procedure.cpp : : : : ] + [ run functional/make_unfused_generic.cpp : : : : ] + [ run functional/make_unfused_lvalue_args.cpp : : : : ] + [ run functional/make_unfused_rvalue_args.cpp : : : : ] + [ run functional/invoke.cpp : : : : ] + [ run functional/invoke_function_object.cpp : : : : ] + [ run functional/invoke_procedure.cpp : : : : ] + # [ compile-fail xxx.cpp : : : : ] ; diff --git a/test/functional/fused.cpp b/test/functional/fused.cpp new file mode 100644 index 00000000..befe8c73 --- /dev/null +++ b/test/functional/fused.cpp @@ -0,0 +1,78 @@ +/*============================================================================= + 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 + +namespace fusion = boost::fusion; +using boost::noncopyable; + +template +struct test_func + : Base +{ + typedef int result_type; + + template + int operator()(T0 const & x, T1 const & y) const + { + return 1+x-y; + } + + template + int operator()(T0 const & x, T1 const & y) + { + return 2+x-y; + } + + template + int operator()(T0 & x, T1 & y) const + { + return 3+x-y; + } + + template + int operator()(T0 & x, T1 & y) + { + return 4+x-y; + } +}; + +int main() +{ + test_func f; + fusion::fused< test_func<> > fused_func; + fusion::fused< test_func & > fused_func_ref(f); + fusion::fused< test_func<> const > fused_func_c; + fusion::fused< test_func<> > const fused_func_c2; + fusion::fused< test_func const & > fused_func_c_ref(f); + + fusion::vector lv_vec(1,'\004'); + BOOST_TEST(fused_func(lv_vec) == 1); + BOOST_TEST(fused_func_c(lv_vec) == 0); + BOOST_TEST(fused_func_c2(lv_vec) == 0); + BOOST_TEST(fused_func_ref(lv_vec) == 1); + BOOST_TEST(fused_func_c_ref(lv_vec) == 0); + + BOOST_TEST(fused_func(fusion::make_vector(2,'\003')) == 1); + BOOST_TEST(fused_func_c(fusion::make_vector(2,'\003')) == 0); + BOOST_TEST(fused_func_c2(fusion::make_vector(2,'\003')) == 0); + BOOST_TEST(fused_func_ref(fusion::make_vector(2,'\003')) == 1); + BOOST_TEST(fused_func_c_ref(fusion::make_vector(2,'\003')) == 0); + + return boost::report_errors(); +} + + + diff --git a/test/functional/fused_function_object.cpp b/test/functional/fused_function_object.cpp new file mode 100644 index 00000000..dd16aeef --- /dev/null +++ b/test/functional/fused_function_object.cpp @@ -0,0 +1,80 @@ +/*============================================================================= + 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 + +namespace fusion = boost::fusion; +using boost::noncopyable; + +template +struct test_func + : Base +{ + template + struct result + { + typedef int type; + }; + + template + int operator()(T0 const & x, T1 const & y) const + { + return 1+x-y; + } + + template + int operator()(T0 const & x, T1 const & y) + { + return 2+x-y; + } + + template + int operator()(T0 & x, T1 & y) const + { + return 3+x-y; + } + + template + int operator()(T0 & x, T1 & y) + { + return 4+x-y; + } +}; + +int main() +{ + test_func f; + fusion::fused_function_object< test_func<> > fused_func; + fusion::fused_function_object< test_func & > fused_func_ref(f); + fusion::fused_function_object< test_func<> const > fused_func_c; + fusion::fused_function_object< test_func<> > const fused_func_c2; + fusion::fused_function_object< test_func const & > fused_func_c_ref(f); + + fusion::vector lv_vec(1,'\004'); + BOOST_TEST(fused_func(lv_vec) == 1); + BOOST_TEST(fused_func_c(lv_vec) == 0); + BOOST_TEST(fused_func_c2(lv_vec) == 0); + BOOST_TEST(fused_func_ref(lv_vec) == 1); + BOOST_TEST(fused_func_c_ref(lv_vec) == 0); + + BOOST_TEST(fused_func(fusion::make_vector(2,'\003')) == 1); + BOOST_TEST(fused_func_c(fusion::make_vector(2,'\003')) == 0); + BOOST_TEST(fused_func_c2(fusion::make_vector(2,'\003')) == 0); + BOOST_TEST(fused_func_ref(fusion::make_vector(2,'\003')) == 1); + BOOST_TEST(fused_func_c_ref(fusion::make_vector(2,'\003')) == 0); + + return boost::report_errors(); +} + diff --git a/test/functional/fused_procedure.cpp b/test/functional/fused_procedure.cpp new file mode 100644 index 00000000..d4fd0d9f --- /dev/null +++ b/test/functional/fused_procedure.cpp @@ -0,0 +1,82 @@ +/*============================================================================= + 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 + +namespace fusion = boost::fusion; +using boost::noncopyable; + +int effect; + +#define CHECK_EFFECT(t,e) \ + { \ + effect = 1234567; t; \ + BOOST_TEST(effect == e); \ + } + +template +struct test_func + : Base +{ + template + int operator()(T0 const & x, T1 const & y) const + { + return effect = 1+x-y; + } + + template + int operator()(T0 const & x, T1 const & y) + { + return effect = 2+x-y; + } + + template + int operator()(T0 & x, T1 & y) const + { + return effect = 3+x-y; + } + + template + int operator()(T0 & x, T1 & y) + { + return effect = 4+x-y; + } +}; + +int main() +{ + test_func f; + fusion::fused_procedure< test_func<> > fused_proc; + fusion::fused_procedure< test_func & > fused_proc_ref(f); + fusion::fused_procedure< test_func<> const > fused_proc_c; + fusion::fused_procedure< test_func<> > const fused_proc_c2; + fusion::fused_procedure< test_func const & > fused_proc_c_ref(f); + + fusion::vector lv_vec(1,'\004'); + CHECK_EFFECT(fused_proc(lv_vec), 1); + CHECK_EFFECT(fused_proc_c(lv_vec), 0); + CHECK_EFFECT(fused_proc_c2(lv_vec), 0); + CHECK_EFFECT(fused_proc_ref(lv_vec), 1); + CHECK_EFFECT(fused_proc_c_ref(lv_vec), 0); + + CHECK_EFFECT(fused_proc(fusion::make_vector(2,'\003')), 1); + CHECK_EFFECT(fused_proc_c(fusion::make_vector(2,'\003')), 0); + CHECK_EFFECT(fused_proc_c2(fusion::make_vector(2,'\003')), 0); + CHECK_EFFECT(fused_proc_ref(fusion::make_vector(2,'\003')), 1); + CHECK_EFFECT(fused_proc_c_ref(fusion::make_vector(2,'\003')), 0); + + return boost::report_errors(); +} + diff --git a/test/functional/invoke.cpp b/test/functional/invoke.cpp new file mode 100644 index 00000000..8b29a070 --- /dev/null +++ b/test/functional/invoke.cpp @@ -0,0 +1,359 @@ +/*============================================================================= + Copyright (c) 2005-2006 João Abecasis + 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 +#include +#include + +namespace mpl = boost::mpl; +namespace fusion = boost::fusion; + +template +inline T const & const_(T const & t) +{ + return t; +} + +struct object {}; +struct object_nc : boost::noncopyable {}; + +struct fobj +{ + typedef int result_type; + + int operator()() { return 0; } + int operator()() const { return 1; } + + int operator()(int i) { return 2 + i; } + int operator()(int i) const { return 3 + i; } + + int operator()(int i, object &) { return 4 + i; } + int operator()(int i, object &) const { return 5 + i; } + int operator()(int i, object const &) { return 6 + i; } + int operator()(int i, object const &) const { return 7 + i; } + + int operator()(int i, object &, object_nc &) { return 10 + i; } + int operator()(int i, object &, object_nc &) const { return 11 + i; } +}; + +struct fobj_nc + : boost::noncopyable +{ + typedef int result_type; + + int operator()() { return 12; } + int operator()() const { return 13; } + + int operator()(int i) { return 14 + i; } + int operator()(int i) const { return 15 + i; } +}; + +int nullary() { return 16; } +int unary(int i) { return 17 + i; } +int binary1(int i, object &) { return 18 + i; } +int binary2(int i, object const &) { return 19 + i; } + +typedef int (* func_ptr)(int); +typedef int (* const c_func_ptr)(int); +typedef int (* volatile v_func_ptr)(int); +typedef int (* const volatile cv_func_ptr)(int); + + func_ptr func_ptr1 = &unary; + c_func_ptr func_ptr2 = &unary; + v_func_ptr func_ptr3 = &unary; +cv_func_ptr func_ptr4 = &unary; + +class members +{ + public: + int data; + + members() + : data(20) + { } + + int nullary() { return data + 1; } + int nullary_c() const { return data + 2; } + int unary(int i) { return data + 3 + i; } + int unary_c(int i) const { return data + 4 + i; } + int binary(int i, object) { return data + 5 + i; } + int binary_c(int i, object) const { return data + 6 + i; } +}; + +struct derived + : members +{ +}; + +typedef int element1_type; +typedef object element2_type; +typedef object_nc & element3_type; + +int element1 = 100; +object element2 = object(); +object_nc element3; + +members that; + +std::auto_ptr spt_that(new members); +std::auto_ptr spt_that_c(new members); + +fusion::single_view sv_obj_ctx( that); +fusion::single_view sv_ref_ctx( that); +fusion::single_view sv_ptr_ctx(& that); +fusion::single_view sv_obj_c_ctx( that); +fusion::single_view sv_ref_c_ctx( that); +fusion::single_view sv_ptr_c_ctx(& that); +fusion::single_view const &> sv_spt_ctx(spt_that); +fusion::single_view< std::auto_ptr const &> sv_spt_c_ctx(spt_that_c); + +derived derived_that; + +std::auto_ptr spt_derived_that(new derived); +std::auto_ptr spt_derived_that_c(new derived); + +fusion::single_view sv_obj_d_ctx( derived_that); +fusion::single_view sv_ref_d_ctx( derived_that); +fusion::single_view sv_ptr_d_ctx(& derived_that); +fusion::single_view sv_obj_c_d_ctx( derived_that); +fusion::single_view sv_ref_c_d_ctx( derived_that); +fusion::single_view sv_ptr_c_d_ctx(& derived_that); +fusion::single_view const &> sv_spt_d_ctx(spt_derived_that); +fusion::single_view< std::auto_ptr const &> sv_spt_c_d_ctx(spt_derived_that_c); + +template +void test_sequence_n(Sequence & seq, mpl::int_<0>) +{ + // Function Objects + + fobj f; + + BOOST_TEST(f () == fusion::invoke(f , seq )); + BOOST_TEST(f () == fusion::invoke(f , const_(seq))); + + // Note: The function object is taken by value, so we request the copy + // to be const with an explicit template argument. We can also request + // the function object to be pased by reference... + BOOST_TEST(const_(f)() == fusion::invoke(const_(f), seq )); + BOOST_TEST(const_(f)() == fusion::invoke(const_(f), const_(seq))); + + fobj_nc nc_f; + // ...and we further ensure there is no copying in this case, using a + // noncopyable function object. + BOOST_TEST(nc_f () == fusion::invoke(nc_f , seq )); + BOOST_TEST(nc_f () == fusion::invoke(nc_f , const_(seq))); + BOOST_TEST(const_(nc_f)() == fusion::invoke(const_(nc_f), seq )); + BOOST_TEST(const_(nc_f)() == fusion::invoke(const_(nc_f), const_(seq))); + + // Builtin Functions + + // Call through ref/ptr to function + BOOST_TEST(nullary() == fusion::invoke(nullary, seq)); + BOOST_TEST(nullary() == fusion::invoke(& nullary, seq)); + + // Call through ptr to member function + // Note: The non-const function members::nullary can't be invoked with + // fusion::join(sv_obj_ctx,seq)), which is const and so is its first element + BOOST_TEST(that.nullary() == fusion::invoke(& members::nullary, fusion::join(sv_ref_ctx,seq))); + BOOST_TEST(that.nullary() == fusion::invoke(& members::nullary, fusion::join(sv_ptr_ctx,seq))); + BOOST_TEST(that.nullary() == fusion::invoke(& members::nullary, fusion::join(sv_spt_ctx,seq))); + BOOST_TEST(that.nullary_c() == fusion::invoke(& members::nullary_c, fusion::join(sv_obj_ctx,seq))); + BOOST_TEST(that.nullary_c() == fusion::invoke(& members::nullary_c, fusion::join(sv_ref_ctx,seq))); + BOOST_TEST(that.nullary_c() == fusion::invoke(& members::nullary_c, fusion::join(sv_ptr_ctx,seq))); + BOOST_TEST(that.nullary_c() == fusion::invoke(& members::nullary_c, fusion::join(sv_spt_ctx,seq))); + BOOST_TEST(that.nullary_c() == fusion::invoke(& members::nullary_c, fusion::join(sv_obj_c_ctx,seq))); + BOOST_TEST(that.nullary_c() == fusion::invoke(& members::nullary_c, fusion::join(sv_ref_c_ctx,seq))); + BOOST_TEST(that.nullary_c() == fusion::invoke(& members::nullary_c, fusion::join(sv_ptr_c_ctx,seq))); + BOOST_TEST(that.nullary_c() == fusion::invoke(& members::nullary_c, fusion::join(sv_spt_c_ctx,seq))); + + // Pointer to data member + + BOOST_TEST(that.data == (fusion::invoke(& members::data, fusion::join(sv_obj_ctx,seq)) = that.data)); + BOOST_TEST(that.data == (fusion::invoke(& members::data, fusion::join(sv_ref_ctx,seq)) = that.data)); + BOOST_TEST(that.data == (fusion::invoke(& members::data, fusion::join(sv_ptr_ctx,seq)) = that.data)); + BOOST_TEST(that.data == (fusion::invoke(& members::data, fusion::join(sv_spt_ctx,seq)) = that.data)); + BOOST_TEST(that.data == fusion::invoke(& members::data, fusion::join(sv_obj_c_ctx,seq))); + BOOST_TEST(that.data == fusion::invoke(& members::data, fusion::join(sv_ref_c_ctx,seq))); + BOOST_TEST(that.data == fusion::invoke(& members::data, fusion::join(sv_ptr_c_ctx,seq))); + BOOST_TEST(that.data == fusion::invoke(& members::data, fusion::join(sv_spt_c_ctx,seq))); + + BOOST_TEST(that.data == (fusion::invoke(& members::data, fusion::join(sv_obj_d_ctx,seq)) = that.data)); + BOOST_TEST(that.data == (fusion::invoke(& members::data, fusion::join(sv_ref_d_ctx,seq)) = that.data)); + BOOST_TEST(that.data == (fusion::invoke(& members::data, fusion::join(sv_ptr_d_ctx,seq)) = that.data)); + BOOST_TEST(that.data == (fusion::invoke(& members::data, fusion::join(sv_spt_d_ctx,seq)) = that.data)); + BOOST_TEST(that.data == fusion::invoke(& members::data, fusion::join(sv_obj_c_d_ctx,seq))); + BOOST_TEST(that.data == fusion::invoke(& members::data, fusion::join(sv_ref_c_d_ctx,seq))); + BOOST_TEST(that.data == fusion::invoke(& members::data, fusion::join(sv_ptr_c_d_ctx,seq))); + BOOST_TEST(that.data == fusion::invoke(& members::data, fusion::join(sv_spt_c_d_ctx,seq))); +} + +template +void test_sequence_n(Sequence & seq, mpl::int_<1>) +{ + fobj f; + BOOST_TEST(f(element1) == fusion::invoke(f , seq )); + BOOST_TEST(f(element1) == fusion::invoke(f , const_(seq))); + BOOST_TEST(const_(f)(element1) == fusion::invoke(const_(f), seq )); + BOOST_TEST(const_(f)(element1) == fusion::invoke(const_(f), const_(seq))); + + fobj_nc nc_f; + BOOST_TEST(nc_f(element1) == fusion::invoke(nc_f, seq )); + BOOST_TEST(nc_f(element1) == fusion::invoke(nc_f, const_(seq))); + BOOST_TEST(const_(nc_f)(element1) == fusion::invoke(const_(nc_f), seq )); + BOOST_TEST(const_(nc_f)(element1) == fusion::invoke(const_(nc_f), const_(seq))); + + BOOST_TEST(unary(element1) == fusion::invoke(unary, seq)); + BOOST_TEST(func_ptr1(element1) == fusion::invoke(func_ptr1, seq)); + BOOST_TEST(func_ptr2(element1) == fusion::invoke(func_ptr2, seq)); + BOOST_TEST(func_ptr3(element1) == fusion::invoke(func_ptr3, seq)); + BOOST_TEST(func_ptr4(element1) == fusion::invoke(func_ptr4, seq)); + + BOOST_TEST(that.unary(element1) == fusion::invoke(& members::unary, fusion::join(sv_ref_ctx,seq))); + BOOST_TEST(that.unary(element1) == fusion::invoke(& members::unary, fusion::join(sv_ptr_ctx,seq))); + BOOST_TEST(that.unary(element1) == fusion::invoke(& members::unary, fusion::join(sv_spt_ctx,seq))); + BOOST_TEST(that.unary_c(element1) == fusion::invoke(& members::unary_c, fusion::join(sv_obj_ctx,seq))); + BOOST_TEST(that.unary_c(element1) == fusion::invoke(& members::unary_c, fusion::join(sv_ref_ctx,seq))); + BOOST_TEST(that.unary_c(element1) == fusion::invoke(& members::unary_c, fusion::join(sv_ptr_ctx,seq))); + BOOST_TEST(that.unary_c(element1) == fusion::invoke(& members::unary_c, fusion::join(sv_spt_ctx,seq))); + BOOST_TEST(that.unary_c(element1) == fusion::invoke(& members::unary_c, fusion::join(sv_obj_c_ctx,seq))); + BOOST_TEST(that.unary_c(element1) == fusion::invoke(& members::unary_c, fusion::join(sv_ref_c_ctx,seq))); + BOOST_TEST(that.unary_c(element1) == fusion::invoke(& members::unary_c, fusion::join(sv_ptr_c_ctx,seq))); + BOOST_TEST(that.unary_c(element1) == fusion::invoke(& members::unary_c, fusion::join(sv_spt_c_ctx,seq))); + + BOOST_TEST(that.unary(element1) == fusion::invoke(& members::unary, fusion::join(sv_ref_d_ctx,seq))); + BOOST_TEST(that.unary(element1) == fusion::invoke(& members::unary, fusion::join(sv_ptr_d_ctx,seq))); + BOOST_TEST(that.unary(element1) == fusion::invoke(& members::unary, fusion::join(sv_spt_d_ctx,seq))); + BOOST_TEST(that.unary_c(element1) == fusion::invoke(& members::unary_c, fusion::join(sv_obj_d_ctx,seq))); + BOOST_TEST(that.unary_c(element1) == fusion::invoke(& members::unary_c, fusion::join(sv_ref_d_ctx,seq))); + BOOST_TEST(that.unary_c(element1) == fusion::invoke(& members::unary_c, fusion::join(sv_ptr_d_ctx,seq))); + BOOST_TEST(that.unary_c(element1) == fusion::invoke(& members::unary_c, fusion::join(sv_spt_d_ctx,seq))); + BOOST_TEST(that.unary_c(element1) == fusion::invoke(& members::unary_c, fusion::join(sv_obj_c_d_ctx,seq))); + BOOST_TEST(that.unary_c(element1) == fusion::invoke(& members::unary_c, fusion::join(sv_ref_c_d_ctx,seq))); + BOOST_TEST(that.unary_c(element1) == fusion::invoke(& members::unary_c, fusion::join(sv_ptr_c_d_ctx,seq))); + BOOST_TEST(that.unary_c(element1) == fusion::invoke(& members::unary_c, fusion::join(sv_spt_c_d_ctx,seq))); + +} + +template +void test_sequence_n(Sequence & seq, mpl::int_<2>) +{ + fobj f; + BOOST_TEST(f (element1, element2) == fusion::invoke(f , seq)); + BOOST_TEST(f (element1, const_(element2)) == fusion::invoke(f , const_(seq))); + BOOST_TEST(const_(f)(element1, element2) == fusion::invoke(const_(f), seq)); + BOOST_TEST(const_(f)(element1, const_(element2)) == fusion::invoke(const_(f), const_(seq))); + + BOOST_TEST(binary1(element1, element2) == fusion::invoke(binary1, seq)); + BOOST_TEST(binary2(element1, element2) == fusion::invoke(binary2, seq)); + + BOOST_TEST(that.binary(element1,element2) == fusion::invoke(& members::binary, fusion::join(sv_ref_ctx,seq))); + BOOST_TEST(that.binary(element1,element2) == fusion::invoke(& members::binary, fusion::join(sv_ptr_ctx,seq))); + BOOST_TEST(that.binary(element1,element2) == fusion::invoke(& members::binary, fusion::join(sv_spt_ctx,seq))); + BOOST_TEST(that.binary_c(element1,element2) == fusion::invoke(& members::binary_c, fusion::join(sv_obj_ctx,seq))); + BOOST_TEST(that.binary_c(element1,element2) == fusion::invoke(& members::binary_c, fusion::join(sv_ref_ctx,seq))); + BOOST_TEST(that.binary_c(element1,element2) == fusion::invoke(& members::binary_c, fusion::join(sv_ptr_ctx,seq))); + BOOST_TEST(that.binary_c(element1,element2) == fusion::invoke(& members::binary_c, fusion::join(sv_spt_ctx,seq))); + BOOST_TEST(that.binary_c(element1,element2) == fusion::invoke(& members::binary_c, fusion::join(sv_obj_c_ctx,seq))); + BOOST_TEST(that.binary_c(element1,element2) == fusion::invoke(& members::binary_c, fusion::join(sv_ref_c_ctx,seq))); + BOOST_TEST(that.binary_c(element1,element2) == fusion::invoke(& members::binary_c, fusion::join(sv_ptr_c_ctx,seq))); + BOOST_TEST(that.binary_c(element1,element2) == fusion::invoke(& members::binary_c, fusion::join(sv_spt_c_ctx,seq))); +} + +template +void test_sequence_n(Sequence & seq, mpl::int_<3>) +{ + fobj f; + + BOOST_TEST(f(element1, element2, element3) == fusion::invoke(f, seq)); + BOOST_TEST(const_(f)(element1, element2, element3) == fusion::invoke(const_(f), seq)); +} + +template +void test_sequence(Sequence & seq) +{ + test_sequence_n(seq, mpl::int_::value>()); +} + + +void result_type_tests() +{ + using boost::fusion::detail::has_type; + + BOOST_TEST(( has_type< + fusion::result_of::invoke + >::value )); + BOOST_TEST(( has_type< + fusion::result_of::invoke > + >::value )); + BOOST_TEST(( ! has_type< + fusion::result_of::invoke > + >::value )); + BOOST_TEST(( has_type< + fusion::result_of::invoke > + >::value )); + BOOST_TEST(( has_type< + fusion::result_of::invoke > + >::value )); + BOOST_TEST(( ! has_type< + fusion::result_of::invoke > + >::value )); +} + +int main() +{ + result_type_tests(); + + typedef fusion::vector<> vector0; + typedef fusion::vector vector1; + typedef fusion::vector vector2; + typedef fusion::vector vector3; + + vector0 v0; + vector1 v1(element1); + vector2 v2(element1, element2); + vector3 v3(element1, element2, element3); + + test_sequence(v0); + test_sequence(v1); + test_sequence(v2); + test_sequence(v3); + + typedef fusion::list<> list0; + typedef fusion::list list1; + typedef fusion::list list2; + typedef fusion::list list3; + + list0 l0; + list1 l1(element1); + list2 l2(element1, element2); + list3 l3(element1, element2, element3); + + test_sequence(l0); + test_sequence(l1); + test_sequence(l2); + test_sequence(l3); + + return boost::report_errors(); +} + diff --git a/test/functional/invoke_function_object.cpp b/test/functional/invoke_function_object.cpp new file mode 100644 index 00000000..ead49b44 --- /dev/null +++ b/test/functional/invoke_function_object.cpp @@ -0,0 +1,199 @@ +/*============================================================================= + Copyright (c) 2005-2006 João Abecasis + 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 +#include +#include + +namespace mpl = boost::mpl; +namespace fusion = boost::fusion; + +template +inline T const & const_(T const & t) +{ + return t; +} + +struct object {}; +struct object_nc : boost::noncopyable {}; + +struct fobj +{ + template + struct result + { + typedef int type; + }; + + int operator()() { return 0; } + int operator()() const { return 1; } + + int operator()(int i) { return 2 + i; } + int operator()(int i) const { return 3 + i; } + + int operator()(int i, object &) { return 4 + i; } + int operator()(int i, object &) const { return 5 + i; } + int operator()(int i, object const &) { return 6 + i; } + int operator()(int i, object const &) const { return 7 + i; } + + int operator()(int i, object &, object_nc &) { return 10 + i; } + int operator()(int i, object &, object_nc &) const { return 11 + i; } +}; + +struct fobj_nc + : boost::noncopyable +{ + template + struct result + { + typedef int type; + }; + + int operator()() { return 12; } + int operator()() const { return 13; } + + int operator()(int i) { return 14 + i; } + int operator()(int i) const { return 15 + i; } +}; + +typedef int element1_type; +typedef object element2_type; +typedef object_nc & element3_type; + +int element1 = 100; +object element2 = object(); +object_nc element3; + +template +void test_sequence_n(Sequence & seq, mpl::int_<0>) +{ + // Function Objects + + fobj f; + BOOST_TEST(f () == fusion::invoke_function_object(f , seq )); + BOOST_TEST(f () == fusion::invoke_function_object(f , const_(seq))); + + // Note: The function object is taken by value, so we request the copy + // to be const with an explicit template argument. We can also request + // the function object to be pased by reference... + BOOST_TEST(const_(f)() == fusion::invoke_function_object(const_(f), seq )); + BOOST_TEST(const_(f)() == fusion::invoke_function_object(const_(f), const_(seq))); + + fobj_nc nc_f; + // ...and we further ensure there is no copying in this case, using a + // noncopyable function object. + BOOST_TEST(nc_f () == fusion::invoke_function_object(nc_f , seq )); + BOOST_TEST(nc_f () == fusion::invoke_function_object(nc_f , const_(seq))); + BOOST_TEST(const_(nc_f)() == fusion::invoke_function_object(const_(nc_f), seq )); + BOOST_TEST(const_(nc_f)() == fusion::invoke_function_object(const_(nc_f), const_(seq))); +} + +template +void test_sequence_n(Sequence & seq, mpl::int_<1>) +{ + fobj f; + BOOST_TEST(f(element1) == fusion::invoke_function_object(f , seq )); + BOOST_TEST(f(element1) == fusion::invoke_function_object(f , const_(seq))); + BOOST_TEST(const_(f)(element1) == fusion::invoke_function_object(const_(f), seq )); + BOOST_TEST(const_(f)(element1) == fusion::invoke_function_object(const_(f), const_(seq))); + + fobj_nc nc_f; + BOOST_TEST(nc_f(element1) == fusion::invoke_function_object(nc_f, seq )); + BOOST_TEST(nc_f(element1) == fusion::invoke_function_object(nc_f, const_(seq))); + BOOST_TEST(const_(nc_f)(element1) == fusion::invoke_function_object(const_(nc_f), seq )); + BOOST_TEST(const_(nc_f)(element1) == fusion::invoke_function_object(const_(nc_f), const_(seq))); +} + +template +void test_sequence_n(Sequence & seq, mpl::int_<2>) +{ + fobj f; + BOOST_TEST(f (element1, element2) == fusion::invoke_function_object(f , seq)); + BOOST_TEST(f (element1, const_(element2)) == fusion::invoke_function_object(f , const_(seq))); + BOOST_TEST(const_(f)(element1, element2) == fusion::invoke_function_object(const_(f), seq)); + BOOST_TEST(const_(f)(element1, const_(element2)) == fusion::invoke_function_object(const_(f), const_(seq))); +} + +template +void test_sequence_n(Sequence & seq, mpl::int_<3>) +{ + fobj f; + + BOOST_TEST(f(element1, element2, element3) == fusion::invoke_function_object(f, seq)); + BOOST_TEST(const_(f)(element1, element2, element3) == fusion::invoke_function_object(const_(f), seq)); +} + +template +void test_sequence(Sequence & seq) +{ + test_sequence_n(seq, mpl::int_::value>()); +} + +void result_type_tests() +{ + using boost::is_same; + + BOOST_TEST(( is_same< fusion::result_of::invoke_function_object< fobj, fusion::vector<> >::type, int >::value )); + BOOST_TEST(( is_same< fusion::result_of::invoke_function_object< fobj, fusion::vector >::type, int >::value )); + BOOST_TEST(( is_same< fusion::result_of::invoke_function_object< fobj, fusion::vector >::type, int >::value )); +} + + +int main() +{ + result_type_tests(); + + typedef fusion::vector<> vector0; + typedef fusion::vector vector1; + typedef fusion::vector vector2; + typedef fusion::vector vector3; + + vector0 v0; + vector1 v1(element1); + vector2 v2(element1, element2); + vector3 v3(element1, element2, element3); + + test_sequence(v0); + test_sequence(v1); + test_sequence(v2); + test_sequence(v3); + + typedef fusion::list<> list0; + typedef fusion::list list1; + typedef fusion::list list2; + typedef fusion::list list3; + + list0 l0; + list1 l1(element1); + list2 l2(element1, element2); + list3 l3(element1, element2, element3); + + test_sequence(l0); + test_sequence(l1); + test_sequence(l2); + test_sequence(l3); + + return boost::report_errors(); +} + diff --git a/test/functional/invoke_procedure.cpp b/test/functional/invoke_procedure.cpp new file mode 100644 index 00000000..96e1468d --- /dev/null +++ b/test/functional/invoke_procedure.cpp @@ -0,0 +1,313 @@ +/*============================================================================= + Copyright (c) 2005-2006 João Abecasis + 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 +#include +#include + +namespace mpl = boost::mpl; +namespace fusion = boost::fusion; + +template +inline T const & const_(T const & t) +{ + return t; +} + +struct object {}; +struct object_nc : boost::noncopyable {}; + +typedef int element1_type; +typedef object element2_type; +typedef object_nc & element3_type; + +int element1 = 100; +object element2 = object(); +object_nc element3; + +class members +{ + public: + int data; + + members() + : data(20) + { } + + int nullary() { return element1 = data + 1; } + int nullary_c() const { return element1 = data + 2; } + int unary(int & i) { return i = data + 3; } + int unary_c(int & i) const { return i = data + 4; } + int binary(int & i, object) { return i = data + 5; } + int binary_c(int & i, object) const { return i = data + 6; } +}; + +members that; +std::auto_ptr spt_that(new members); +std::auto_ptr spt_that_c(new members); + +fusion::single_view sv_obj_ctx( that); +fusion::single_view sv_ref_ctx( that); +fusion::single_view sv_ptr_ctx(& that); +fusion::single_view sv_obj_c_ctx( that); +fusion::single_view sv_ref_c_ctx( that); +fusion::single_view sv_ptr_c_ctx(& that); +fusion::single_view const &> sv_spt_ctx(spt_that); +fusion::single_view< std::auto_ptr const &> sv_spt_c_ctx(spt_that_c); + +struct fobj +{ + int operator()() { return element1 = 0; } + int operator()() const { return element1 = 1; } + + int operator()(int & i) { return i = 2 ; } + int operator()(int & i) const { return i = 3; } + + int operator()(int & i, object &) { return i = 4; } + int operator()(int & i, object &) const { return i = 5; } + int operator()(int & i, object const &) { return i = 6; } + int operator()(int & i, object const &) const { return i = 7; } + + int operator()(int & i, object &, object_nc &) { return i = 10; } + int operator()(int & i, object &, object_nc &) const { return i = 11; } +}; + +struct fobj_nc + : boost::noncopyable +{ + int operator()() { return element1 = 12; } + int operator()() const { return element1 = 13; } + + int operator()(int & i) { return i = 14; } + int operator()(int & i) const { return i = 15; } +}; + +int nullary() { return element1 = 16; } +int unary(int & i) { return i = 17; } +int binary1(int & i, object &) { return i = 18; } +int binary2(int & i, object const &) { return i = 19; } + +typedef int (* func_ptr)(int &); +typedef int (* const c_func_ptr)(int &); +typedef int (* volatile v_func_ptr)(int &); +typedef int (* const volatile cv_func_ptr)(int &); + + func_ptr func_ptr1 = &unary; + c_func_ptr func_ptr2 = &unary; + v_func_ptr func_ptr3 = &unary; +cv_func_ptr func_ptr4 = &unary; + + + +#define COMPARE_EFFECT(e,t) \ + { \ + element1 = 1234567; e; \ + int expected = element1; \ + element1 = 1234567; t; \ + BOOST_TEST(expected == element1 ); \ + } + + +template +void test_sequence_n(Sequence & seq, mpl::int_<0>) +{ + // Function Objects + + fobj f; + + COMPARE_EFFECT(f (), fusion::invoke_procedure(f , seq )); + COMPARE_EFFECT(f (), fusion::invoke_procedure(f , const_(seq))); + + // Note: The function object is taken by value, so we request the copy + // to be const with an explicit template argument. We can also request + // the function object to be pased by reference... + COMPARE_EFFECT(const_(f)(), fusion::invoke_procedure(const_(f), seq )); + COMPARE_EFFECT(const_(f)(), fusion::invoke_procedure(const_(f), const_(seq))); + + fobj_nc nc_f; + // ...and we further ensure there is no copying in this case, using a + // noncopyable function object. + COMPARE_EFFECT(nc_f (), fusion::invoke_procedure(nc_f , seq )); + COMPARE_EFFECT(nc_f (), fusion::invoke_procedure(nc_f , const_(seq))); + COMPARE_EFFECT(const_(nc_f)(), fusion::invoke_procedure(const_(nc_f), seq )); + COMPARE_EFFECT(const_(nc_f)(), fusion::invoke_procedure(const_(nc_f), const_(seq))); + + // Builtin Functions + + // Call through ref/ptr to function + COMPARE_EFFECT(nullary(), fusion::invoke_procedure(nullary, seq)); + COMPARE_EFFECT(nullary(), fusion::invoke_procedure(& nullary, seq)); + + // Call through ptr to member function + // Note: The non-const function members::nullary can't be invoked with + // fusion::join(sv_obj_ctx,seq)), which is const and so is its first element + COMPARE_EFFECT(that.nullary(), fusion::invoke_procedure(& members::nullary, fusion::join(sv_ref_ctx,seq))); + COMPARE_EFFECT(that.nullary(), fusion::invoke_procedure(& members::nullary, fusion::join(sv_ptr_ctx,seq))); + COMPARE_EFFECT(that.nullary(), fusion::invoke_procedure(& members::nullary, fusion::join(sv_spt_ctx,seq))); + COMPARE_EFFECT(that.nullary_c(), fusion::invoke_procedure(& members::nullary_c, fusion::join(sv_obj_ctx,seq))); + COMPARE_EFFECT(that.nullary_c(), fusion::invoke_procedure(& members::nullary_c, fusion::join(sv_ref_ctx,seq))); + COMPARE_EFFECT(that.nullary_c(), fusion::invoke_procedure(& members::nullary_c, fusion::join(sv_ptr_ctx,seq))); + COMPARE_EFFECT(that.nullary_c(), fusion::invoke_procedure(& members::nullary_c, fusion::join(sv_spt_ctx,seq))); + COMPARE_EFFECT(that.nullary_c(), fusion::invoke_procedure(& members::nullary_c, fusion::join(sv_obj_c_ctx,seq))); + COMPARE_EFFECT(that.nullary_c(), fusion::invoke_procedure(& members::nullary_c, fusion::join(sv_ref_c_ctx,seq))); + COMPARE_EFFECT(that.nullary_c(), fusion::invoke_procedure(& members::nullary_c, fusion::join(sv_ptr_c_ctx,seq))); + COMPARE_EFFECT(that.nullary_c(), fusion::invoke_procedure(& members::nullary_c, fusion::join(sv_spt_c_ctx,seq))); +} + +template +void test_sequence_n(Sequence & seq, mpl::int_<1>) +{ + fobj f; + COMPARE_EFFECT(f(element1), fusion::invoke_procedure(f , seq )); + COMPARE_EFFECT(f(element1), fusion::invoke_procedure(f , const_(seq))); + COMPARE_EFFECT(const_(f)(element1), fusion::invoke_procedure(const_(f), seq )); + COMPARE_EFFECT(const_(f)(element1), fusion::invoke_procedure(const_(f), const_(seq))); + + fobj_nc nc_f; + COMPARE_EFFECT(nc_f(element1), fusion::invoke_procedure(nc_f, seq )); + COMPARE_EFFECT(nc_f(element1), fusion::invoke_procedure(nc_f, const_(seq))); + COMPARE_EFFECT(const_(nc_f)(element1), fusion::invoke_procedure(const_(nc_f), seq )); + COMPARE_EFFECT(const_(nc_f)(element1), fusion::invoke_procedure(const_(nc_f), const_(seq))); + + COMPARE_EFFECT(unary(element1), fusion::invoke_procedure(unary, seq)); + COMPARE_EFFECT(func_ptr1(element1), fusion::invoke_procedure(func_ptr1, seq)); + COMPARE_EFFECT(func_ptr2(element1), fusion::invoke_procedure(func_ptr2, seq)); + COMPARE_EFFECT(func_ptr3(element1), fusion::invoke_procedure(func_ptr3, seq)); + COMPARE_EFFECT(func_ptr4(element1), fusion::invoke_procedure(func_ptr4, seq)); + + COMPARE_EFFECT(that.unary(element1), fusion::invoke_procedure(& members::unary, fusion::join(sv_ref_ctx,seq))); + COMPARE_EFFECT(that.unary(element1), fusion::invoke_procedure(& members::unary, fusion::join(sv_ptr_ctx,seq))); + COMPARE_EFFECT(that.unary(element1), fusion::invoke_procedure(& members::unary, fusion::join(sv_spt_ctx,seq))); + COMPARE_EFFECT(that.unary_c(element1), fusion::invoke_procedure(& members::unary_c, fusion::join(sv_obj_ctx,seq))); + COMPARE_EFFECT(that.unary_c(element1), fusion::invoke_procedure(& members::unary_c, fusion::join(sv_ref_ctx,seq))); + COMPARE_EFFECT(that.unary_c(element1), fusion::invoke_procedure(& members::unary_c, fusion::join(sv_ptr_ctx,seq))); + COMPARE_EFFECT(that.unary_c(element1), fusion::invoke_procedure(& members::unary_c, fusion::join(sv_spt_ctx,seq))); + COMPARE_EFFECT(that.unary_c(element1), fusion::invoke_procedure(& members::unary_c, fusion::join(sv_obj_c_ctx,seq))); + COMPARE_EFFECT(that.unary_c(element1), fusion::invoke_procedure(& members::unary_c, fusion::join(sv_ref_c_ctx,seq))); + COMPARE_EFFECT(that.unary_c(element1), fusion::invoke_procedure(& members::unary_c, fusion::join(sv_ptr_c_ctx,seq))); + COMPARE_EFFECT(that.unary_c(element1), fusion::invoke_procedure(& members::unary_c, fusion::join(sv_spt_c_ctx,seq))); +} + +template +void test_sequence_n(Sequence & seq, mpl::int_<2>) +{ + fobj f; + COMPARE_EFFECT(f (element1, element2), fusion::invoke_procedure(f , seq)); + COMPARE_EFFECT(f (element1, const_(element2)), fusion::invoke_procedure(f , const_(seq))); + COMPARE_EFFECT(const_(f)(element1, element2), fusion::invoke_procedure(const_(f), seq)); + COMPARE_EFFECT(const_(f)(element1, const_(element2)), fusion::invoke_procedure(const_(f), const_(seq))); + + COMPARE_EFFECT(binary1(element1, element2), fusion::invoke_procedure(binary1, seq)); + COMPARE_EFFECT(binary2(element1, element2), fusion::invoke_procedure(binary2, seq)); + + COMPARE_EFFECT(that.binary(element1,element2), fusion::invoke_procedure(& members::binary, fusion::join(sv_ref_ctx,seq))); + COMPARE_EFFECT(that.binary(element1,element2), fusion::invoke_procedure(& members::binary, fusion::join(sv_ptr_ctx,seq))); + COMPARE_EFFECT(that.binary(element1,element2), fusion::invoke_procedure(& members::binary, fusion::join(sv_spt_ctx,seq))); + COMPARE_EFFECT(that.binary_c(element1,element2), fusion::invoke_procedure(& members::binary_c, fusion::join(sv_obj_ctx,seq))); + COMPARE_EFFECT(that.binary_c(element1,element2), fusion::invoke_procedure(& members::binary_c, fusion::join(sv_ref_ctx,seq))); + COMPARE_EFFECT(that.binary_c(element1,element2), fusion::invoke_procedure(& members::binary_c, fusion::join(sv_ptr_ctx,seq))); + COMPARE_EFFECT(that.binary_c(element1,element2), fusion::invoke_procedure(& members::binary_c, fusion::join(sv_spt_ctx,seq))); + COMPARE_EFFECT(that.binary_c(element1,element2), fusion::invoke_procedure(& members::binary_c, fusion::join(sv_obj_c_ctx,seq))); + COMPARE_EFFECT(that.binary_c(element1,element2), fusion::invoke_procedure(& members::binary_c, fusion::join(sv_ref_c_ctx,seq))); + COMPARE_EFFECT(that.binary_c(element1,element2), fusion::invoke_procedure(& members::binary_c, fusion::join(sv_ptr_c_ctx,seq))); + COMPARE_EFFECT(that.binary_c(element1,element2), fusion::invoke_procedure(& members::binary_c, fusion::join(sv_spt_c_ctx,seq))); +} + +template +void test_sequence_n(Sequence & seq, mpl::int_<3>) +{ + fobj f; + + COMPARE_EFFECT(f(element1, element2, element3), fusion::invoke_procedure(f, seq)); + COMPARE_EFFECT(const_(f)(element1, element2, element3), fusion::invoke_procedure(const_(f), seq)); +} + +template +void test_sequence(Sequence & seq) +{ + test_sequence_n(seq, mpl::int_::value>()); +} + + +void result_type_tests() +{ + using boost::fusion::detail::has_type; + + BOOST_TEST(( has_type< + fusion::result_of::invoke_procedure + >::value )); + BOOST_TEST(( has_type< + fusion::result_of::invoke_procedure > + >::value )); + BOOST_TEST(( ! has_type< + fusion::result_of::invoke_procedure > + >::value )); + BOOST_TEST(( has_type< + fusion::result_of::invoke_procedure > + >::value )); + BOOST_TEST(( has_type< + fusion::result_of::invoke_procedure > + >::value )); + BOOST_TEST(( ! has_type< + fusion::result_of::invoke_procedure > + >::value )); +} + +int main() +{ + result_type_tests(); + + typedef fusion::vector<> vector0; + typedef fusion::vector vector1; + typedef fusion::vector vector2; + typedef fusion::vector vector3; + + vector0 v0; + vector1 v1(element1); + vector2 v2(element1, element2); + vector3 v3(element1, element2, element3); + + test_sequence(v0); + test_sequence(v1); + test_sequence(v2); + test_sequence(v3); + + typedef fusion::list<> list0; + typedef fusion::list list1; + typedef fusion::list list2; + typedef fusion::list list3; + + list0 l0; + list1 l1(element1); + list2 l2(element1, element2); + list3 l3(element1, element2, element3); + + test_sequence(l0); + test_sequence(l1); + test_sequence(l2); + test_sequence(l3); + + return boost::report_errors(); +} + diff --git a/test/functional/make_fused.cpp b/test/functional/make_fused.cpp new file mode 100644 index 00000000..a1cd77f7 --- /dev/null +++ b/test/functional/make_fused.cpp @@ -0,0 +1,85 @@ +/*============================================================================= + 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 + +namespace fusion = boost::fusion; +using boost::noncopyable; +using boost::cref; +using boost::ref; + +template +struct test_func + : Base +{ + typedef int result_type; + + template + int operator()(T0 const & x, T1 const & y) const + { + return 1+x-y; + } + + template + int operator()(T0 const & x, T1 const & y) + { + return 2+x-y; + } + + template + int operator()(T0 & x, T1 & y) const + { + return 3+x-y; + } + + template + int operator()(T0 & x, T1 & y) + { + return 4+x-y; + } +}; + +template +inline T const & const_(T const & t) +{ + return t; +} + +int main() +{ + fusion::vector lv_vec(1,'\004'); + test_func<> f; + test_func f_nc; + + fusion::result_of::make_fused< test_func<> >::type fused_func + = fusion::make_fused(f); + + BOOST_TEST(fused_func(lv_vec) == 1); + BOOST_TEST(const_(fused_func)(lv_vec) == 0); + BOOST_TEST(fusion::make_fused(const_(f))(lv_vec) == 1); + BOOST_TEST(fusion::make_fused(ref(f_nc))(lv_vec) == 1); + BOOST_TEST(fusion::make_fused(cref(f_nc))(lv_vec) == 0); + + BOOST_TEST(fused_func(fusion::make_vector(2,'\003')) == 1); + BOOST_TEST(const_(fused_func)(fusion::make_vector(2,'\003')) == 0); + BOOST_TEST(fusion::make_fused(const_(f))(fusion::make_vector(2,'\003')) == 1); + BOOST_TEST(fusion::make_fused(ref(f_nc))(fusion::make_vector(2,'\003')) == 1); + BOOST_TEST(fusion::make_fused(cref(f_nc))(fusion::make_vector(2,'\003')) == 0); + + return boost::report_errors(); +} + + + diff --git a/test/functional/make_fused_function_object.cpp b/test/functional/make_fused_function_object.cpp new file mode 100644 index 00000000..7b895f56 --- /dev/null +++ b/test/functional/make_fused_function_object.cpp @@ -0,0 +1,89 @@ +/*============================================================================= + 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 + +namespace fusion = boost::fusion; +using boost::noncopyable; +using boost::cref; +using boost::ref; + +template +struct test_func + : Base +{ + template + struct result + { + typedef int type; + }; + + template + int operator()(T0 const & x, T1 const & y) const + { + return 1+x-y; + } + + template + int operator()(T0 const & x, T1 const & y) + { + return 2+x-y; + } + + template + int operator()(T0 & x, T1 & y) const + { + return 3+x-y; + } + + template + int operator()(T0 & x, T1 & y) + { + return 4+x-y; + } +}; + +template +inline T const & const_(T const & t) +{ + return t; +} + +int main() +{ + fusion::vector lv_vec(1,'\004'); + test_func<> f; + test_func f_nc; + + fusion::result_of::make_fused_function_object< test_func<> >::type fused_func + = fusion::make_fused_function_object(f); + + BOOST_TEST(fused_func(lv_vec) == 1); + BOOST_TEST(const_(fused_func)(lv_vec) == 0); + BOOST_TEST(fusion::make_fused_function_object(const_(f))(lv_vec) == 1); + BOOST_TEST(fusion::make_fused_function_object(ref(f_nc))(lv_vec) == 1); + BOOST_TEST(fusion::make_fused_function_object(cref(f_nc))(lv_vec) == 0); + + BOOST_TEST(fused_func(fusion::make_vector(2,'\003')) == 1); + BOOST_TEST(const_(fused_func)(fusion::make_vector(2,'\003')) == 0); + BOOST_TEST(fusion::make_fused_function_object(const_(f))(fusion::make_vector(2,'\003')) == 1); + BOOST_TEST(fusion::make_fused_function_object(ref(f_nc))(fusion::make_vector(2,'\003')) == 1); + BOOST_TEST(fusion::make_fused_function_object(cref(f_nc))(fusion::make_vector(2,'\003')) == 0); + + return boost::report_errors(); +} + + + diff --git a/test/functional/make_fused_procedure.cpp b/test/functional/make_fused_procedure.cpp new file mode 100644 index 00000000..ebe5b555 --- /dev/null +++ b/test/functional/make_fused_procedure.cpp @@ -0,0 +1,91 @@ +/*============================================================================= + 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 + +namespace fusion = boost::fusion; +using boost::noncopyable; +using boost::cref; +using boost::ref; + +int effect; + +#define CHECK_EFFECT(t,e) \ + { \ + effect = 1234567; t; \ + BOOST_TEST(effect == e); \ + } + +template +struct test_func + : Base +{ + template + int operator()(T0 const & x, T1 const & y) const + { + return effect = 1+x-y; + } + + template + int operator()(T0 const & x, T1 const & y) + { + return effect = 2+x-y; + } + + template + int operator()(T0 & x, T1 & y) const + { + return effect = 3+x-y; + } + + template + int operator()(T0 & x, T1 & y) + { + return effect = 4+x-y; + } +}; + +template +inline T const & const_(T const & t) +{ + return t; +} + +int main() +{ + fusion::vector lv_vec(1,'\004'); + test_func<> f; + test_func f_nc; + + fusion::result_of::make_fused_procedure< test_func<> >::type fused_func + = fusion::make_fused_procedure(f); + + CHECK_EFFECT(fused_func(lv_vec), 1); + CHECK_EFFECT(const_(fused_func)(lv_vec), 0); + CHECK_EFFECT(fusion::make_fused_procedure(const_(f))(lv_vec), 1); + CHECK_EFFECT(fusion::make_fused_procedure(ref(f_nc))(lv_vec), 1); + CHECK_EFFECT(fusion::make_fused_procedure(cref(f_nc))(lv_vec), 0); + + CHECK_EFFECT(fused_func(fusion::make_vector(2,'\003')), 1); + CHECK_EFFECT(const_(fused_func)(fusion::make_vector(2,'\003')), 0); + CHECK_EFFECT(fusion::make_fused_procedure(const_(f))(fusion::make_vector(2,'\003')), 1); + CHECK_EFFECT(fusion::make_fused_procedure(ref(f_nc))(fusion::make_vector(2,'\003')), 1); + CHECK_EFFECT(fusion::make_fused_procedure(cref(f_nc))(fusion::make_vector(2,'\003')), 0); + + return boost::report_errors(); +} + + + diff --git a/test/functional/make_unfused_generic.cpp b/test/functional/make_unfused_generic.cpp new file mode 100644 index 00000000..d0d793fb --- /dev/null +++ b/test/functional/make_unfused_generic.cpp @@ -0,0 +1,123 @@ +/*============================================================================= + 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 + +#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 + : 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 + { + 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 + : mpl::identity + { }; + }; +}; + +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 new file mode 100644 index 00000000..31288c7e --- /dev/null +++ b/test/functional/make_unfused_lvalue_args.cpp @@ -0,0 +1,124 @@ +/*============================================================================= + 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 + : 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 + { + template + long operator()(T & elem, long value) const + { + elem += sizeof(T); + return value + elem; + } + + template struct result + : mpl::identity + { }; + }; +}; + +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 new file mode 100644 index 00000000..1e65d6d5 --- /dev/null +++ b/test/functional/make_unfused_rvalue_args.cpp @@ -0,0 +1,108 @@ +/*============================================================================= + 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 + : 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 + { + template + long operator()(T const & elem, long value) const + { + return value + sizeof(T) * elem; + } + + template struct result + : mpl::identity + { }; + }; +}; + +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 new file mode 100644 index 00000000..cccf8f80 --- /dev/null +++ b/test/functional/unfused_generic.cpp @@ -0,0 +1,127 @@ +/*============================================================================= + 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 +#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 + : 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 + { + 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 + : mpl::identity + { }; + }; +}; + +void result_type_tests() +{ + using boost::is_same; + using boost::fusion::detail::has_type; + + typedef fusion::unfused_generic< test_func > test_func_1; + typedef fusion::unfused_generic< test_func > test_func_0; + + BOOST_TEST(( has_type< test_func_0::result<> >::value )); + BOOST_TEST(( has_type< test_func_1::result >::value )); + BOOST_TEST(( ! has_type< test_func_1::result<> >::value )); + BOOST_TEST(( is_same< boost::result_of< test_func_0() >::type, long >::value )); + BOOST_TEST(( is_same< boost::result_of< test_func_1(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; + 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(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 new file mode 100644 index 00000000..9bb8660a --- /dev/null +++ b/test/functional/unfused_lvalue_args.cpp @@ -0,0 +1,128 @@ +/*============================================================================= + 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; + +template +struct test_func + : Base +{ + template struct result + : 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 + { + template + long operator()(T & elem, long value) const + { + elem += sizeof(T); + return value + elem; + } + + template struct result + : mpl::identity + { }; + }; +}; + +void result_type_tests() +{ + using boost::is_same; + using boost::fusion::detail::has_type; + + typedef fusion::unfused_lvalue_args< test_func > test_func_1; + typedef fusion::unfused_lvalue_args< test_func > test_func_0; + + BOOST_TEST(( has_type< test_func_0::result<> >::value )); + BOOST_TEST(( has_type< test_func_1::result >::value )); + BOOST_TEST(( ! has_type< test_func_1::result<> >::value )); + BOOST_TEST(( is_same< boost::result_of< test_func_0() >::type, long >::value )); + BOOST_TEST(( is_same< boost::result_of< test_func_1(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 new file mode 100644 index 00000000..4a05b0f4 --- /dev/null +++ b/test/functional/unfused_rvalue_args.cpp @@ -0,0 +1,111 @@ +/*============================================================================= + 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; + +template +struct test_func + : Base +{ + template struct result + : 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 + { + template + long operator()(T const & elem, long value) const + { + return value + sizeof(T) * elem; + } + + template struct result + : mpl::identity + { }; + }; +}; + +void result_type_tests() +{ + using boost::is_same; + using boost::fusion::detail::has_type; + + typedef fusion::unfused_rvalue_args< test_func > test_func_1; + typedef fusion::unfused_rvalue_args< test_func > test_func_0; + + BOOST_TEST(( has_type< test_func_0::result<> >::value )); + BOOST_TEST(( has_type< test_func_1::result >::value )); + BOOST_TEST(( ! has_type< test_func_1::result<> >::value )); + BOOST_TEST(( is_same< boost::result_of< test_func_0() >::type, long >::value )); + BOOST_TEST(( is_same< boost::result_of< test_func_1(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 new file mode 100644 index 00000000..10d3561a --- /dev/null +++ b/test/functional/unfused_typed.cpp @@ -0,0 +1,145 @@ +/*============================================================================= + 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 +#include + +namespace fusion = boost::fusion; +namespace mpl = boost::mpl; +using mpl::placeholders::_; + +using boost::noncopyable; + +typedef fusion::vector types; + +typedef mpl::always< mpl::true_ > unconstrained; + +typedef mpl::equal_to< fusion::result_of::size<_>, + fusion::result_of::size > non_variadic; + +template +struct test_func + : Base +{ + template struct result + : mpl::if_< typename mpl::apply::type, + mpl::identity, boost::blank >::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 + { + 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 + : mpl::identity + { }; + }; +}; + +void result_type_tests() +{ + using boost::is_same; + using boost::fusion::detail::has_type; + + typedef fusion::unfused_typed< test_func, types > test_func_3; + typedef fusion::unfused_typed< test_func, types > test_func_0; + + BOOST_TEST(( has_type< test_func_0::result<> >::value )); + BOOST_TEST(( has_type< test_func_3::result >::value )); + BOOST_TEST(( ! has_type< test_func_3::result<> >::value )); + BOOST_TEST(( is_same< boost::result_of< test_func_0() >::type, long >::value )); + BOOST_TEST(( is_same< boost::result_of< test_func_3(long &, int, char) >::type, long >::value )); +} + +int main() +{ + result_type_tests(); + + test_func f; + fusion::unfused_typed< test_func<>, types > unfused_func; + fusion::unfused_typed< test_func &, types > unfused_func_ref(f); + fusion::unfused_typed< test_func<> const, types > unfused_func_c; + fusion::unfused_typed< test_func<>, types > const unfused_func_c2; + fusion::unfused_typed< test_func const &, types > 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 = 1; + BOOST_TEST(unfused_func(lvalue) == 100); + BOOST_TEST(lvalue == 1 + 1*sizeof(lvalue)); + BOOST_TEST(unfused_func_ref(lvalue) == 100); + BOOST_TEST(lvalue == 1 + 2*sizeof(lvalue)); + BOOST_TEST(unfused_func_c(lvalue) == 0); + BOOST_TEST(lvalue == 1 + 3*sizeof(lvalue)); + BOOST_TEST(unfused_func_c2(lvalue) == 0); + BOOST_TEST(lvalue == 1 + 4*sizeof(lvalue)); + BOOST_TEST(unfused_func_c_ref(lvalue) == 0); + BOOST_TEST(lvalue == 1 + 5*sizeof(lvalue)); + + static const long expected = 2*sizeof(int) + 7*sizeof(char); + BOOST_TEST(unfused_func(lvalue,2,'\007') == 100 + expected); + BOOST_TEST(lvalue == 1 + 6*sizeof(lvalue)); + BOOST_TEST(unfused_func_ref(lvalue,2,'\007') == 100 + expected); + BOOST_TEST(lvalue == 1 + 7*sizeof(lvalue)); + BOOST_TEST(unfused_func_c(lvalue,2,'\007') == 0 + expected); + BOOST_TEST(lvalue == 1 + 8*sizeof(lvalue)); + BOOST_TEST(unfused_func_c2(lvalue,2,'\007') == 0 + expected); + BOOST_TEST(lvalue == 1 + 9*sizeof(lvalue)); + BOOST_TEST(unfused_func_c_ref(lvalue,2,'\007') == 0 + expected); + BOOST_TEST(lvalue == 1 + 10*sizeof(lvalue)); + + return boost::report_errors(); +} + From e71060922723a4fd3affdf3852b5af74681ff907 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Thu, 15 Feb 2007 23:19:09 +0000 Subject: [PATCH 088/234] adds example implementation of bind [SVN r36961] --- example/cookbook/do_the_bind.cpp | 224 +++++++++++++++++++++++++++++++ 1 file changed, 224 insertions(+) create mode 100644 example/cookbook/do_the_bind.cpp diff --git a/example/cookbook/do_the_bind.cpp b/example/cookbook/do_the_bind.cpp new file mode 100644 index 00000000..a391fa62 --- /dev/null +++ b/example/cookbook/do_the_bind.cpp @@ -0,0 +1,224 @@ +/*============================================================================= + 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). + + Problem: + + How to "do the Bind?" + + This recipe shows how to implement a function binder, similar to + Boost.Bind based on the Functional module of Fusion. + + It works as follows: + + 'bind' is a global, stateless function object. It is implemented in + fused form (fused_binder) and transformed into a variadic function + object. When called, 'bind' returns another function object, which + holds the arguments of the call to 'bind'. It is, again, implemented + in fused form (fused_bound_function) and transformed into unfused + form. +==============================================================================*/ + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + +namespace impl +{ + namespace fusion = boost::fusion; + namespace result_of = boost::fusion::result_of; + namespace mpl = boost::mpl; + using mpl::placeholders::_; + + // Placeholders (we inherit from mpl::int_, so we can use placeholders + // as indices for fusion::at, later) + template struct placeholder : mpl::int_ { }; + + // A traits class to find out whether T is a placeholeder + template struct is_placeholder : mpl::false_ { }; + template struct is_placeholder< placeholder > : mpl::true_ { }; + template struct is_placeholder< placeholder & > : mpl::true_ { }; + template struct is_placeholder< placeholder const > : mpl::true_ { }; + template struct is_placeholder< placeholder const & > : mpl::true_ { }; + + // This class template provides a Polymorphic Function Object to be used + // with fusion::transform. It is applied to the sequence of arguments that + // describes the binding and holds a reference to the sequence of arguments + // from the final call. + template struct argument_transform + { + FinalArgs const & ref_final_args; + public: + + explicit argument_transform(FinalArgs const & final_args) + : ref_final_args(final_args) + { } + + // A placeholder? Replace it with an argument from the final call... + template + inline typename result_of::at_c::type + operator()(placeholder const &) const + { + return fusion::at_c(this->ref_final_args); + } + // ...just return the bound argument, otherwise. + template inline T & operator()(T & bound) const + { + return bound; + } + + template + struct result + : mpl::eval_if< is_placeholder, + result_of::at::type>, + mpl::identity + > + { }; + }; + + // Fused implementation of the bound function, the function object + // returned by bind + template class fused_bound_function + { + BindArgs fsq_bind_args; + public: + + fused_bound_function(BindArgs const & bind_args) + : fsq_bind_args(bind_args) + { } + + template ::value && + !! mpl::count_if >::value) > + struct result + { }; + + template + struct result + : result_of::invoke< typename result_of::front::type, + typename result_of::transform< + typename result_of::pop_front::type, + argument_transform const + >::type + > + { }; + + template + inline typename result::type + operator()(FinalArgs const & final_args) const + { + return fusion::invoke( fusion::front(this->fsq_bind_args), + fusion::transform( fusion::pop_front(this->fsq_bind_args), + argument_transform(final_args) ) ); + } + // Could add a non-const variant - omitted for readability + + }; + + // Fused implementation of the 'bind' function + struct fused_binder + { + template + struct result + { + // We have to transform the arguments so they are held by-value + // in the returned function. + typedef fusion::unfused_generic< fused_bound_function< + typename fusion::storable_arguments::type > > type; + }; + + template + inline typename result::type + operator()(BindArgs & bind_args) const + { + return typename result::type(bind_args); + } + }; + + // The binder's unfused type. We use unfused_rvalue_args to make that + // thing more similar to Boost.Bind. Because of that we have to use + // Boost.Ref (below in the sample code) + typedef fusion::unfused_rvalue_args binder; +} + +// Placeholder globals +impl::placeholder<0> const _1_ = impl::placeholder<0>(); +impl::placeholder<1> const _2_ = impl::placeholder<1>(); +impl::placeholder<2> const _3_ = impl::placeholder<2>(); +impl::placeholder<3> const _4_ = impl::placeholder<3>(); + +// The bind function is a global, too +impl::binder const bind = impl::binder(); + + +// OK, let's try it out: + +struct func +{ + typedef int result_type; + + inline int operator()() const + { + std::cout << "operator()" << std::endl; + return 0; + } + + template + inline int operator()(A const & a) const + { + std::cout << "operator()(A const & a)" << std::endl; + std::cout << " a = " << a << " A = " << typeid(A).name() << std::endl; + return 1; + } + + template + inline int operator()(A const & a, B & b) const + { + std::cout << "operator()(A const & a, B & b)" << std::endl; + std::cout << " a = " << a << " A = " << typeid(A).name() << std::endl; + std::cout << " b = " << b << " B = " << typeid(B).name() << std::endl; + return 2; + } +}; + +int main() +{ + func f; + int value = 42; + using boost::ref; + + int errors = 0; + errors += !( bind(f)() == 0); + errors += !( bind(f,"Hi")() == 1); + errors += !( bind(f,_1_)("there.") == 1); + errors += !( bind(f,"The answer is",_1_)(value) == 2); + errors += !( bind(f,_1_,ref(value))("Really?") == 2); + errors += !( bind(f,_1_,_2_)("Dunno. If there is an answer, it's",value) == 2); + + return !! errors; +} + From 50e7b2c933140ea3d60c2d4e5c63ffcf6c4acdea Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Thu, 15 Feb 2007 23:20:27 +0000 Subject: [PATCH 089/234] adds benchmark for functional components - draft version [SVN r36962] --- example/performance/Jamfile | 2 + example/performance/functional.cpp | 328 +++++++++++++++++++++++++++++ 2 files changed, 330 insertions(+) create mode 100644 example/performance/functional.cpp diff --git a/example/performance/Jamfile b/example/performance/Jamfile index 53d5ec5f..3b8c8ffc 100644 --- a/example/performance/Jamfile +++ b/example/performance/Jamfile @@ -16,3 +16,5 @@ exe inner_product2 : inner_product2.cpp ; exe sequence_efficiency : sequence_efficiency.cpp ; +exe functional : functional.cpp ; + diff --git a/example/performance/functional.cpp b/example/performance/functional.cpp new file mode 100644 index 00000000..a4d5056b --- /dev/null +++ b/example/performance/functional.cpp @@ -0,0 +1,328 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + 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 + +#ifdef _MSC_VER +// inline aggressively +# pragma inline_recursion(on) // turn on inline recursion +# pragma inline_depth(255) // max inline depth +#endif + +int const REPEAT_COUNT = 3; + +double const duration = 0.125; + + +namespace +{ + struct fused_sum + { + template + int operator()(Seq const & seq) const + { + int state = 0; + return boost::fusion::fold(seq, state, sum_op()); + } + + template struct result + { + typedef int type; + }; + + private: + + struct sum_op + { + template + int operator()(T const & elem, int value) const + { + return value + sizeof(T) * elem; + } + + template + int operator()(T & elem, int value) const + { + elem += sizeof(T); + return value; + } + + template struct result + { + typedef int type; + }; + }; + }; + + struct unfused_sum + { + inline int operator()() const + { + return 0; + } + template + inline int operator()(T0 const & a0) const + { + return a0; + } + template + inline int operator()(T0 const & a0, T1 const & a1) const + { + return a0 + a1; + } + template + inline int operator()(T0 const & a0, T1 const & a1, T2 a2) const + { + return a0 + a1 + a2; + } + template + inline int operator()(T0 const & a0, T1 const & a1, T2 const & a2, T3 const & a3) const + { + return a0 + a1 + a2 + a3; + } + + template + struct result + { + typedef int type; + }; + }; + + template + double call_unfused(F const & func, int & j) + { + boost::timer tim; + int i = 0; + long long iter = 65536; + long long counter, repeats; + double result = (std::numeric_limits::max)(); + double runtime = 0; + double run; + do + { + tim.restart(); + for(counter = 0; counter < iter; ++counter) + { + i += func(); + i += func(0); + i += func(0,1); + i += func(0,1,2); + i += func(0,1,2,3); + } + runtime = tim.elapsed(); + iter *= 2; + } while(runtime < duration); + iter /= 2; + + for(repeats = 0; repeats < REPEAT_COUNT; ++repeats) + { + tim.restart(); + for(counter = 0; counter < iter; ++counter) + { + i = func(); j += i; + i = func(0); j += i; + i = func(0,1); j += i; + i = func(0,1,2); j += i; + i = func(0,1,2,3); j += i; + } + run = tim.elapsed(); + result = (std::min)(run, result); + } + return result / iter; + } + + template + double call_fused_ra(F const & func, int & j) + { + boost::timer tim; + int i = 0; + long long iter = 65536; + long long counter, repeats; + double result = (std::numeric_limits::max)(); + double runtime = 0; + double run; + do + { + boost::fusion::vector<> v0; + boost::fusion::vector v1(0); + boost::fusion::vector v2(0,1); + boost::fusion::vector v3(0,1,2); + boost::fusion::vector v4(0,1,2,3); + tim.restart(); + for(counter = 0; counter < iter; ++counter) + { + i += func(v0); + i += func(v1); + i += func(v2); + i += func(v3); + i += func(v4); + } + runtime = tim.elapsed(); + iter *= 2; + } while(runtime < duration); + iter /= 2; + + for(repeats = 0; repeats < REPEAT_COUNT; ++repeats) + { + boost::fusion::vector<> v0; + boost::fusion::vector v1(0); + boost::fusion::vector v2(0,1); + boost::fusion::vector v3(0,1,2); + boost::fusion::vector v4(0,1,2,3); + tim.restart(); + for(counter = 0; counter < iter; ++counter) + { + i = func(v0); j += i; + i = func(v1); j += i; + i = func(v2); j += i; + i = func(v3); j += i; + i = func(v4); j += i; + } + run = tim.elapsed(); + result = (std::min)(run, result); + } + return result / iter; + } + + template + double call_fused(F const & func, int & j) + { + boost::timer tim; + int i = 0; + long long iter = 65536; + long long counter, repeats; + double result = (std::numeric_limits::max)(); + double runtime = 0; + double run; + do + { + boost::fusion::list<> l0; + boost::fusion::list l1(0); + boost::fusion::list l2(0,1); + boost::fusion::list l3(0,1,2); + boost::fusion::list l4(0,1,2,3); + tim.restart(); + for(counter = 0; counter < iter; ++counter) + { + i += func(l0); + i += func(l1); + i += func(l2); + i += func(l3); + i += func(l4); + } + runtime = tim.elapsed(); + iter *= 2; + } while(runtime < duration); + iter /= 2; + + for(repeats = 0; repeats < REPEAT_COUNT; ++repeats) + { + boost::fusion::list<> l0; + boost::fusion::list l1(0); + boost::fusion::list l2(0,1); + boost::fusion::list l3(0,1,2); + boost::fusion::list l4(0,1,2,3); + tim.restart(); + for(counter = 0; counter < iter; ++counter) + { + i = func(l0); j += i; + i = func(l1); j += i; + i = func(l2); j += i; + i = func(l3); j += i; + i = func(l4); j += i; + } + run = tim.elapsed(); + result = (std::min)(run, result); + } + return result / iter; + } +} + +int main() +{ + int total = 0; + int res; + typedef fused_sum F; + typedef unfused_sum U; + + std::cout << "Compiler: " << BOOST_COMPILER << std::endl; + std::cout << std::endl << "Unfused adapters:" << std::endl; + { + F f; + std::cout << "F /* a fused function object */ " << call_fused_ra(f,res) << std::endl; + total += res; + } + { + F f; + std::cout << "without random access " << call_fused(f,res) << std::endl; + total += res; + } + { + typedef boost::fusion::vector s; + boost::fusion::unfused_typed f; + std::cout << "unfused_typed " << call_unfused(f,res) << std::endl; + total += res; + } + { + boost::fusion::unfused_rvalue_args f; + std::cout << "unfused_rvalue_args " << call_unfused(f,res) << std::endl; + total += res; + } + { + boost::fusion::unfused_generic f; + std::cout << "unfused_generic " << call_unfused(f,res) << std::endl; + total += res; + } + std::cout << std::endl << "Fused adapters:" << std::endl; + { + unfused_sum f; + std::cout << "U /* an unfused function object */ " << call_unfused(f,res) << std::endl; + total += res; + } + { + boost::fusion::fused_function_object f; + std::cout << "fused_function_object " << call_fused_ra(f,res) << std::endl; + total += res; + } + { + boost::fusion::fused_function_object f; + std::cout << "without random access " << call_fused(f,res) << std::endl; + total += res; + } + std::cout << std::endl << "Loopback:" << std::endl; + { + typedef boost::fusion::vector s; + boost::fusion::unfused_typed< boost::fusion::fused_function_object, s > f; + std::cout << "unfused_typed,s > " << call_unfused(f,res) << std::endl; + total += res; + } + { + boost::fusion::unfused_rvalue_args< boost::fusion::fused_function_object > f; + std::cout << "unfused_rvalue_args > " << call_unfused(f,res) << std::endl; + total += res; + } + { + boost::fusion::unfused_generic< boost::fusion::fused_function_object > f; + std::cout << "unfused_generic > " << call_unfused(f,res) << std::endl; + total += res; + } + return total; +} From a56348497fefaf0b64b0fec36902f8d29b1d2d46 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Thu, 15 Feb 2007 23:28:40 +0000 Subject: [PATCH 090/234] adds O(1) empty implementation [SVN r36963] --- .../fusion/sequence/container/list/cons.hpp | 1 + .../container/list/detail/empty_impl.hpp | 38 +++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 include/boost/fusion/sequence/container/list/detail/empty_impl.hpp diff --git a/include/boost/fusion/sequence/container/list/cons.hpp b/include/boost/fusion/sequence/container/list/cons.hpp index 075bee7d..a44e0e23 100644 --- a/include/boost/fusion/sequence/container/list/cons.hpp +++ b/include/boost/fusion/sequence/container/list/cons.hpp @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include diff --git a/include/boost/fusion/sequence/container/list/detail/empty_impl.hpp b/include/boost/fusion/sequence/container/list/detail/empty_impl.hpp new file mode 100644 index 00000000..4615fd40 --- /dev/null +++ b/include/boost/fusion/sequence/container/list/detail/empty_impl.hpp @@ -0,0 +1,38 @@ +/*============================================================================= + Copyright (c) 2007 Tobias Schwinger + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_SEQUENCE_EMPTY_IMPL_HPP_INCLUDED) +#define BOOST_FUSION_SEQUENCE_EMPTY_IMPL_HPP_INCLUDED + +#include + +namespace boost { namespace fusion +{ + struct cons_tag; + + struct nil; + + template + struct cons; + + namespace extension + { + template + struct empty_impl; + + template <> + struct empty_impl + { + template + struct apply + : boost::is_convertible + {}; + }; + } +}} + +#endif From 74d062d2da7bb1a4e6e1a6f2577209b4d17d0b51 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Thu, 15 Feb 2007 23:31:33 +0000 Subject: [PATCH 091/234] adds deduce metafunctions [SVN r36964] --- include/boost/fusion/support.hpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/boost/fusion/support.hpp b/include/boost/fusion/support.hpp index 764fe795..c95540a5 100644 --- a/include/boost/fusion/support.hpp +++ b/include/boost/fusion/support.hpp @@ -16,5 +16,7 @@ #include #include #include +#include +#include #endif From a9a9bd94757a8e93bf175eb4b8e0bbf369f9c56f Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Sun, 18 Feb 2007 00:42:14 +0000 Subject: [PATCH 092/234] adds MSVC workaround [SVN r36988] --- include/boost/fusion/functional/adapter/unfused_typed.hpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/include/boost/fusion/functional/adapter/unfused_typed.hpp b/include/boost/fusion/functional/adapter/unfused_typed.hpp index 7eae5d53..28a1e7fc 100644 --- a/include/boost/fusion/functional/adapter/unfused_typed.hpp +++ b/include/boost/fusion/functional/adapter/unfused_typed.hpp @@ -16,6 +16,9 @@ #include #include +#include +#include + #include #include @@ -29,6 +32,7 @@ #include #include + namespace boost { namespace fusion { @@ -170,12 +174,15 @@ namespace boost { namespace fusion return static_cast(this)->fnc_transformed(arg); } +#if !BOOST_WORKAROUND(BOOST_MSVC, < 1400) \ + || BOOST_FUSION_UNFUSED_TYPED_MAX_ARITY <= 4 inline typename Function::template result::type operator()(BOOST_PP_ENUM(N,M,arg_vector_t)) { arg_vector_t arg(BOOST_PP_ENUM_PARAMS(N,a)); return static_cast(this)->fnc_transformed(arg); } +#endif #undef M }; From 9d5a463806be6893405d8d0869026998278c6585 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Sun, 18 Feb 2007 16:07:55 +0000 Subject: [PATCH 093/234] added flat include directory [SVN r36993] --- include/boost/fusion/include/as_vector.hpp | 13 +++++++++++++ include/boost/fusion/include/at.hpp | 13 +++++++++++++ include/boost/fusion/include/is_sequence.hpp | 13 +++++++++++++ include/boost/fusion/include/join.hpp | 13 +++++++++++++ include/boost/fusion/include/joint_view.hpp | 13 +++++++++++++ include/boost/fusion/include/mpl.hpp | 13 +++++++++++++ include/boost/fusion/include/push_front.hpp | 13 +++++++++++++ include/boost/fusion/include/single_view.hpp | 13 +++++++++++++ include/boost/fusion/include/transform.hpp | 13 +++++++++++++ include/boost/fusion/include/transform_view.hpp | 13 +++++++++++++ include/boost/fusion/include/vector.hpp | 13 +++++++++++++ 11 files changed, 143 insertions(+) create mode 100644 include/boost/fusion/include/as_vector.hpp create mode 100644 include/boost/fusion/include/at.hpp create mode 100644 include/boost/fusion/include/is_sequence.hpp create mode 100644 include/boost/fusion/include/join.hpp create mode 100644 include/boost/fusion/include/joint_view.hpp create mode 100644 include/boost/fusion/include/mpl.hpp create mode 100644 include/boost/fusion/include/push_front.hpp create mode 100644 include/boost/fusion/include/single_view.hpp create mode 100644 include/boost/fusion/include/transform.hpp create mode 100644 include/boost/fusion/include/transform_view.hpp create mode 100644 include/boost/fusion/include/vector.hpp diff --git a/include/boost/fusion/include/as_vector.hpp b/include/boost/fusion/include/as_vector.hpp new file mode 100644 index 00000000..802c66db --- /dev/null +++ b/include/boost/fusion/include/as_vector.hpp @@ -0,0 +1,13 @@ +/*============================================================================= + Copyright (c) 2001-2007 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_INCLUDE_AS_VECTOR) +#define FUSION_INCLUDE_AS_VECTOR + +#include + +#endif diff --git a/include/boost/fusion/include/at.hpp b/include/boost/fusion/include/at.hpp new file mode 100644 index 00000000..66e62360 --- /dev/null +++ b/include/boost/fusion/include/at.hpp @@ -0,0 +1,13 @@ +/*============================================================================= + Copyright (c) 2001-2007 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_INCLUDE_AT) +#define FUSION_INCLUDE_AT + +#include + +#endif diff --git a/include/boost/fusion/include/is_sequence.hpp b/include/boost/fusion/include/is_sequence.hpp new file mode 100644 index 00000000..058066c2 --- /dev/null +++ b/include/boost/fusion/include/is_sequence.hpp @@ -0,0 +1,13 @@ +/*============================================================================= + Copyright (c) 2001-2007 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_INCLUDE_IS_SEQUENCE) +#define FUSION_INCLUDE_IS_SEQUENCE + +#include + +#endif diff --git a/include/boost/fusion/include/join.hpp b/include/boost/fusion/include/join.hpp new file mode 100644 index 00000000..6b2772f2 --- /dev/null +++ b/include/boost/fusion/include/join.hpp @@ -0,0 +1,13 @@ +/*============================================================================= + Copyright (c) 2001-2007 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_INCLUDE_JOIN) +#define FUSION_INCLUDE_JOIN + +#include + +#endif diff --git a/include/boost/fusion/include/joint_view.hpp b/include/boost/fusion/include/joint_view.hpp new file mode 100644 index 00000000..d7a6aa80 --- /dev/null +++ b/include/boost/fusion/include/joint_view.hpp @@ -0,0 +1,13 @@ +/*============================================================================= + Copyright (c) 2001-2007 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_INCLUDE_JOINT_VIEW) +#define FUSION_INCLUDE_JOINT_VIEW + +#include + +#endif diff --git a/include/boost/fusion/include/mpl.hpp b/include/boost/fusion/include/mpl.hpp new file mode 100644 index 00000000..1d1bbe41 --- /dev/null +++ b/include/boost/fusion/include/mpl.hpp @@ -0,0 +1,13 @@ +/*============================================================================= + Copyright (c) 2001-2007 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_INCLUDE_MPL) +#define FUSION_INCLUDE_MPL + +#include + +#endif diff --git a/include/boost/fusion/include/push_front.hpp b/include/boost/fusion/include/push_front.hpp new file mode 100644 index 00000000..3e3fa672 --- /dev/null +++ b/include/boost/fusion/include/push_front.hpp @@ -0,0 +1,13 @@ +/*============================================================================= + Copyright (c) 2001-2007 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_INCLUDE_PUSH_FRONT) +#define FUSION_INCLUDE_PUSH_FRONT + +#include + +#endif diff --git a/include/boost/fusion/include/single_view.hpp b/include/boost/fusion/include/single_view.hpp new file mode 100644 index 00000000..9676e874 --- /dev/null +++ b/include/boost/fusion/include/single_view.hpp @@ -0,0 +1,13 @@ +/*============================================================================= + Copyright (c) 2001-2007 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_INCLUDE_SINGLE_VIEW) +#define FUSION_INCLUDE_SINGLE_VIEW + +#include + +#endif diff --git a/include/boost/fusion/include/transform.hpp b/include/boost/fusion/include/transform.hpp new file mode 100644 index 00000000..d2c4d2c8 --- /dev/null +++ b/include/boost/fusion/include/transform.hpp @@ -0,0 +1,13 @@ +/*============================================================================= + Copyright (c) 2001-2007 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_INCLUDE_TRANSFORM) +#define FUSION_INCLUDE_TRANSFORM + +#include + +#endif diff --git a/include/boost/fusion/include/transform_view.hpp b/include/boost/fusion/include/transform_view.hpp new file mode 100644 index 00000000..c7442645 --- /dev/null +++ b/include/boost/fusion/include/transform_view.hpp @@ -0,0 +1,13 @@ +/*============================================================================= + Copyright (c) 2001-2007 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_INCLUDE_TRANSFORM_VIEW) +#define FUSION_INCLUDE_TRANSFORM_VIEW + +#include + +#endif diff --git a/include/boost/fusion/include/vector.hpp b/include/boost/fusion/include/vector.hpp new file mode 100644 index 00000000..ee7aac0c --- /dev/null +++ b/include/boost/fusion/include/vector.hpp @@ -0,0 +1,13 @@ +/*============================================================================= + Copyright (c) 2001-2007 Joel de Guzman + + Use, modification and distribution is 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) +==============================================================================*/ +#if !defined(FUSION_INCLUDE_VECTOR) +#define FUSION_INCLUDE_VECTOR + +#include + +#endif From f0abc88775b2bbc4da0d114411f75d18400d076e Mon Sep 17 00:00:00 2001 From: Dave Abrahams Date: Sat, 24 Feb 2007 22:40:59 +0000 Subject: [PATCH 094/234] Correct testing bugs: either changing assert(...) or BOOST_ASSERT(...) to BOOST_TEST (in my code only) or adding "return boost::report_errors();" where it was clearly missing (and a pure bug, in anyone's code). [SVN r37057] --- test/sequence/unpack_args.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/test/sequence/unpack_args.cpp b/test/sequence/unpack_args.cpp index c46ea722..099b411f 100644 --- a/test/sequence/unpack_args.cpp +++ b/test/sequence/unpack_args.cpp @@ -225,4 +225,5 @@ int main() test_sequence(l1); test_sequence(l2); test_sequence(l3); + return boost::report_errors(); } From 49a118d2b4473c91135eb31320513d385f44e925 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Sun, 25 Feb 2007 20:56:47 +0000 Subject: [PATCH 095/234] reduces accidentally high TOC level [SVN r37067] --- .../generation/functions/make_fused.html | 129 ------------- .../functions/make_fused_function_object.html | 143 --------------- .../functions/make_fused_procedure.html | 124 ------------- .../functions/make_unfused_generic.html | 155 ---------------- .../functions/make_unfused_lvalue_args.html | 142 -------------- .../functions/make_unfused_rvalue_args.html | 141 -------------- .../generation/metafunctions/make_fused.html | 72 -------- .../make_fused_function_object.html | 72 -------- .../metafunctions/make_fused_procedure.html | 72 -------- .../metafunctions/make_unfused_generic.html | 72 -------- .../make_unfused_lvalue_args.html | 72 -------- .../make_unfused_rvalue_args.html | 72 -------- .../invocation/functions/invoke.html | 160 ---------------- .../functions/invoke_function_object.html | 173 ------------------ .../functions/invoke_procedure.html | 166 ----------------- .../invocation/metafunctions/invoke.html | 75 -------- .../metafunctions/invoke_function_object.html | 75 -------- .../metafunctions/invoke_procedure.html | 75 -------- 18 files changed, 1990 deletions(-) delete mode 100644 doc/html/fusion/functional/generation/functions/make_fused.html delete mode 100644 doc/html/fusion/functional/generation/functions/make_fused_function_object.html delete mode 100644 doc/html/fusion/functional/generation/functions/make_fused_procedure.html delete mode 100644 doc/html/fusion/functional/generation/functions/make_unfused_generic.html delete mode 100644 doc/html/fusion/functional/generation/functions/make_unfused_lvalue_args.html delete mode 100644 doc/html/fusion/functional/generation/functions/make_unfused_rvalue_args.html delete mode 100644 doc/html/fusion/functional/generation/metafunctions/make_fused.html delete mode 100644 doc/html/fusion/functional/generation/metafunctions/make_fused_function_object.html delete mode 100644 doc/html/fusion/functional/generation/metafunctions/make_fused_procedure.html delete mode 100644 doc/html/fusion/functional/generation/metafunctions/make_unfused_generic.html delete mode 100644 doc/html/fusion/functional/generation/metafunctions/make_unfused_lvalue_args.html delete mode 100644 doc/html/fusion/functional/generation/metafunctions/make_unfused_rvalue_args.html delete mode 100644 doc/html/fusion/functional/invocation/functions/invoke.html delete mode 100644 doc/html/fusion/functional/invocation/functions/invoke_function_object.html delete mode 100644 doc/html/fusion/functional/invocation/functions/invoke_procedure.html delete mode 100644 doc/html/fusion/functional/invocation/metafunctions/invoke.html delete mode 100644 doc/html/fusion/functional/invocation/metafunctions/invoke_function_object.html delete mode 100644 doc/html/fusion/functional/invocation/metafunctions/invoke_procedure.html diff --git a/doc/html/fusion/functional/generation/functions/make_fused.html b/doc/html/fusion/functional/generation/functions/make_fused.html deleted file mode 100644 index fa9a972a..00000000 --- a/doc/html/fusion/functional/generation/functions/make_fused.html +++ /dev/null @@ -1,129 +0,0 @@ - - - -make_fused - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -
    -
    -PrevUpHomeNext -
    -
    - -
    - - Description -
    -

    - Creates a fused adapter for a given Deferred Callable Object. - The usual element - conversion is applied to the target function. -

    -
    - - Synopsis -
    -
    -template <typename F>
    -inline typename make_fused<F>::type
    -make_fused(F const & f);
    -
    -
    - - Parameters -
    -
    ----- - - - - - - - - - - -
    ParameterRequirementDescription
    fModel - of Deferred - Callable Object -The function to transform.
    -
    - - Expression - Semantics -
    -
    -make_fused(f);
    -
    -

    - Return type: A specialization of fused. -

    -

    - Semantics: Returns a fused adapter for f. -

    -
    - - Header -
    -
    -#include <boost/fusion/functional/generation/make_fused.hpp>
    -
    -
    - - Example -
    -
    -float sub(float a, float b) { return a - b; }
    -
    -void try_it()
    -{
    -    vector<int,float> a(2,2.0f);
    -    vector<int,float> b(1,1.5f);
    -    vector<float,float> c(1.0f,0.5f);
    -    assert(c == transform(zip(a,b), make_fused(& sub)));
    -    assert(c == transform(zip(a,b), make_fused(std::minus<float>())));
    -}
    -
    -
    - - See - also -
    - -
    - - - -
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/fusion/functional/generation/functions/make_fused_function_object.html b/doc/html/fusion/functional/generation/functions/make_fused_function_object.html deleted file mode 100644 index 69f5af66..00000000 --- a/doc/html/fusion/functional/generation/functions/make_fused_function_object.html +++ /dev/null @@ -1,143 +0,0 @@ - - - -make_fused_function_object - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -
    -
    -PrevUpHomeNext -
    -
    - -
    - - Description -
    -

    - Creates a fused_function_object adapter - for a given Deferred - Callable Object. The usual element - conversion is applied to the target function. -

    -
    - - Synopsis -
    -
    -template <typename F>
    -inline typename make_fused_function_object<F>::type
    -make_fused_function_object(F const & f);
    -
    -
    - - Parameters -
    -
    ----- - - - - - - - - - - -
    ParameterRequirementDescription
    fModel - of Polymorphic - Function Object -The function to transform.
    -
    - - Expression - Semantics -
    -
    -make_fused_function_object(f);
    -
    -

    - Return type: A specialization of fused_function_object. -

    -

    - Semantics: Returns a fused_function_object adapter - for f. -

    -
    - - Header -
    -
    -#include <boost/fusion/functional/generation/make_fused_function_object.hpp>
    -
    -
    - - Example -
    -
    -struct sub
    -{
    -    template<typename T, typename _>
    -    struct result
    -    {
    -        typedef T type;
    -    };
    -
    -    template<typename T>
    -    T operator()(T lhs, T rhs) const
    -    {
    -        return lhs - rhs;
    -    }
    -};
    -
    -void try_it()
    -{
    -    vector<int,float> a(2,2.0f);
    -    vector<int,float> b(1,1.5f);
    -    vector<int,float> c(1,0.5f);
    -    assert(c == transform(zip(a,b), make_fused_function_object(sub())));
    -}
    -
    -
    - - See - also -
    - -
    - - - -
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/fusion/functional/generation/functions/make_fused_procedure.html b/doc/html/fusion/functional/generation/functions/make_fused_procedure.html deleted file mode 100644 index daf5d285..00000000 --- a/doc/html/fusion/functional/generation/functions/make_fused_procedure.html +++ /dev/null @@ -1,124 +0,0 @@ - - - -make_fused_procedure - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -
    -
    -PrevUpHomeNext -
    -
    - -
    - - Description -
    -

    - Creates a fused_procedure adapter for - a given Deferred - Callable Object. The usual element - conversion applied to the target function. -

    -
    - - Synopsis -
    -
    -template <typename F>
    -inline typename make_fused_procedure<F>::type
    -make_fused_procedure(F const & f);
    -
    -
    - - Parameters -
    -
    ----- - - - - - - - - - - -
    ParameterRequirementDescription
    fModel - of Callable - Object -The function to transform.
    -
    - - Expression - Semantics -
    -
    -make_fused_procedure(f);
    -
    -

    - Return type: A specialization of fused_procedure. -

    -

    - Semantics: Returns a fused_procedure adapter for - f. -

    -
    - - Header -
    -
    -#include <boost/fusion/functional/generation/make_fused_procedure.hpp>
    -
    -
    - - Example -
    -
    -vector<int,int,int> v(1,2,3);
    -using namespace boost::lambda;
    -make_fused_procedure(_1 += _2 - _3)(v);
    -assert(front(v) == 0);
    -
    -
    - - See - also -
    - -
    - - - -
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/fusion/functional/generation/functions/make_unfused_generic.html b/doc/html/fusion/functional/generation/functions/make_unfused_generic.html deleted file mode 100644 index cec1f676..00000000 --- a/doc/html/fusion/functional/generation/functions/make_unfused_generic.html +++ /dev/null @@ -1,155 +0,0 @@ - - - -make_unfused_generic - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -
    -
    -PrevUpHomeNext -
    -
    - -
    - - Description -
    -

    - Creates a unfused_generic adapter for - a given, unary Polymorphic - Function Object. The usual element - conversion is applied to the target function. -

    -
    - - Synopsis -
    -
    -template <typename F>
    -inline typename make_unfused_generic<F>::type
    -make_unfused_generic(F const & f);
    -
    -
    - - Parameters -
    -
    ----- - - - - - - - - - - -
    ParameterRequirementDescription
    fModel - of Polymorphic - Function Object -The function to transform.
    -
    - - Expression - Semantics -
    -
    -make_unfused_generic(f);
    -
    -

    - Return type: A specialization of unfused_generic. -

    -

    - Semantics: Returns a unfused_generic adapter for - f. -

    -
    - - Header -
    -
    -#include <boost/fusion/functional/generation/make_unfused_generic.hpp>
    -
    -
    - - Example -
    -
    -struct bottles_song
    -{
    -    template<class Seq>
    -    struct result
    -        : mpl::if_< mpl::less< result_of::size<Seq>, mpl::int_<2> >,
    -            boost::blank, mpl::identity<void> >::type
    -    { };
    -
    -    template<class Seq> 
    -    void operator()(Seq & s) const
    -    {
    -        typename result_of::at_c<Seq,0>::type n = at_c<0>(s);
    -        typename result_of::at_c<Seq,1>::type what = at_c<1>(s);
    -
    -        std::cout 
    -            << n << " bottles of " << what << " on the wall.\n" 
    -            << n << " bottles of " << what << "!\n"
    -            << "Take one down - pass it around.\n";
    -
    -        n -= 1; // glug glug...
    -
    -        std::cout
    -            << n << " bottles of " << what << " on the wall.\n" 
    -            << std::endl;
    -    }
    -};
    -
    -void try_it()
    -{
    -    unsigned n_milk = 99;
    -    for(int i = 0; i < 3; ++i)
    -        make_unfused_generic(bottles_song())(n_milk,"milk");
    -    // 96 bottles left for me
    -}
    -
    -
    - - See - also -
    - -
    - - - -
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/fusion/functional/generation/functions/make_unfused_lvalue_args.html b/doc/html/fusion/functional/generation/functions/make_unfused_lvalue_args.html deleted file mode 100644 index d4dccf57..00000000 --- a/doc/html/fusion/functional/generation/functions/make_unfused_lvalue_args.html +++ /dev/null @@ -1,142 +0,0 @@ - - - -make_unfused_lvalue_args - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -
    -
    -PrevUpHomeNext -
    -
    - -
    - - Description -
    -

    - Creates a unfused_lvalue_args adapter - for a given, unary Polymorphic - Function Object. The usual element - conversion is applied to the target function. -

    -
    - - Synopsis -
    -
    -template <typename F>
    -inline typename make_unfused_lvalue_args<F>::type
    -make_unfused_lvalue_args(F const & f);
    -
    -
    - - Parameters -
    -
    ----- - - - - - - - - - - -
    ParameterRequirementDescription
    fModel - of Polymorphic - Function Object -The function to transform.
    -
    - - Expression - Semantics -
    -
    -make_unfused_lvalue_args(f);
    -
    -

    - Return type: A specialization of unfused_lvalue_args. -

    -

    - Semantics: Returns a unfused_lvalue_args adapter - for f. -

    -
    - - Header -
    -
    -#include <boost/fusion/functional/generation/make_unfused_lvalue_args.hpp>
    -
    -
    - - Example -
    -
    -struct fused_incrementer
    -{
    -    template <class Seq> 
    -    struct result 
    -    { 
    -        typedef void type;
    -    };
    -
    -    template <class Seq>
    -    void operator()(Seq const & s) const
    -    {
    -        for_each(s,++boost::lambda::_1);
    -    }
    -};
    -
    -void try_it()
    -{
    -    int a = 2; char b = 'X';
    -    make_unfused_lvalue_args(fused_incrementer())(a,b);
    -    assert(a == 3 && b == 'Y');
    -}
    -
    -
    - - See - also -
    - -
    - - - -
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/fusion/functional/generation/functions/make_unfused_rvalue_args.html b/doc/html/fusion/functional/generation/functions/make_unfused_rvalue_args.html deleted file mode 100644 index 1a674940..00000000 --- a/doc/html/fusion/functional/generation/functions/make_unfused_rvalue_args.html +++ /dev/null @@ -1,141 +0,0 @@ - - - -make_unfused_rvalue_args - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -
    -
    -PrevUpHomeNext -
    -
    - -
    - - Description -
    -

    - Creates a unfused_rvalue_args adapter - for a given, unary Polymorphic - Function Object. The usual element - conversion is applied to the target function. -

    -
    - - Synopsis -
    -
    -template <typename F>
    -inline typename make_unfused_rvalue_args<F>::type
    -make_unfused_rvalue_args(F const & f);
    -
    -
    - - Parameters -
    -
    ----- - - - - - - - - - - -
    ParameterRequirementDescription
    fModel - of Polymorphic - Function Object -The function to transform.
    -
    - - Expression - Semantics -
    -
    -make_unfused_rvalue_args(f);
    -
    -

    - Return type: A specialization of unfused_rvalue_args. -

    -

    - Semantics: Returns a unfused_rvalue_args adapter - for f. -

    -
    - - Header -
    -
    -#include <boost/fusion/functional/generation/make_unfused_rvalue_args.hpp>
    -
    -
    - - Example -
    -
    -struct sequence_printer
    -{
    -    template <class Seq> 
    -    struct result 
    -    { 
    -        typedef void type;
    -    };
    -
    -    template <class Seq>
    -    void operator()(Seq const & s) const
    -    {
    -        std::cout << s << std::endl;
    -    }
    -};
    -
    -void try_it()
    -{
    -    make_unfused_rvalue_args(sequence_printer())
    -        (24,"bottles of beer in",'a',"box.");
    -}
    -
    -
    - - See - also -
    - -
    - - - -
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/fusion/functional/generation/metafunctions/make_fused.html b/doc/html/fusion/functional/generation/metafunctions/make_fused.html deleted file mode 100644 index 9d7aa0a2..00000000 --- a/doc/html/fusion/functional/generation/metafunctions/make_fused.html +++ /dev/null @@ -1,72 +0,0 @@ - - - -make_fused - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -
    -
    -PrevUpHomeNext -
    -
    - -
    - - Description -
    -

    - Returns the result type of make_fused. -

    -
    - - Header -
    -
    -#include <boost/fusion/functional/generation/make_fused.hpp>
    -
    -
    - - Synopsis -
    -
    -namespace result_of
    -{
    -    template<typename Function>
    -    struct make_fused
    -    {
    -        typedef unspecified type;
    -    };
    -}
    -
    -
    - - See - also -
    - -
    - - - -
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/fusion/functional/generation/metafunctions/make_fused_function_object.html b/doc/html/fusion/functional/generation/metafunctions/make_fused_function_object.html deleted file mode 100644 index 938658f1..00000000 --- a/doc/html/fusion/functional/generation/metafunctions/make_fused_function_object.html +++ /dev/null @@ -1,72 +0,0 @@ - - - -make_fused_function_object - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -
    -
    -PrevUpHomeNext -
    -
    - -
    - - Description -
    -

    - Returns the result type of make_fused_function_object. -

    -
    - - Header -
    -
    -#include <boost/fusion/functional/generation/make_fused_function_object.hpp>
    -
    -
    - - Synopsis -
    -
    -namespace result_of
    -{
    -    template<typename Function>
    -    struct make_fused_function_object
    -    {
    -        typedef unspecified type;
    -    };
    -}
    -
    -
    - - See - also -
    - -
    - - - -
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/fusion/functional/generation/metafunctions/make_fused_procedure.html b/doc/html/fusion/functional/generation/metafunctions/make_fused_procedure.html deleted file mode 100644 index 7134f8df..00000000 --- a/doc/html/fusion/functional/generation/metafunctions/make_fused_procedure.html +++ /dev/null @@ -1,72 +0,0 @@ - - - -make_fused_procedure - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -
    -
    -PrevUpHomeNext -
    -
    - -
    - - Description -
    -

    - Returns the result type of make_fused_procedure. -

    -
    - - Header -
    -
    -#include <boost/fusion/functional/generation/make_fused_procedure.hpp>
    -
    -
    - - Synopsis -
    -
    -namespace result_of
    -{
    -    template<typename Function>
    -    struct make_fused_procedure
    -    {
    -        typedef unspecified type;
    -    };
    -}
    -
    -
    - - See - also -
    - -
    - - - -
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/fusion/functional/generation/metafunctions/make_unfused_generic.html b/doc/html/fusion/functional/generation/metafunctions/make_unfused_generic.html deleted file mode 100644 index b75228e5..00000000 --- a/doc/html/fusion/functional/generation/metafunctions/make_unfused_generic.html +++ /dev/null @@ -1,72 +0,0 @@ - - - -make_unfused_generic - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -
    -
    -PrevUpHomeNext -
    -
    - -
    - - Description -
    -

    - Returns the result type of make_unfused_generic. -

    -
    - - Header -
    -
    -#include <boost/fusion/functional/generation/make_unfused_generic.hpp>
    -
    -
    - - Synopsis -
    -
    -namespace result_of
    -{
    -    template<typename Function>
    -    struct make_unfused_generic
    -    {
    -        typedef unspecified type;
    -    };
    -}
    -
    -
    - - See - also -
    - -
    - - - -
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/fusion/functional/generation/metafunctions/make_unfused_lvalue_args.html b/doc/html/fusion/functional/generation/metafunctions/make_unfused_lvalue_args.html deleted file mode 100644 index e0eddb50..00000000 --- a/doc/html/fusion/functional/generation/metafunctions/make_unfused_lvalue_args.html +++ /dev/null @@ -1,72 +0,0 @@ - - - -make_unfused_lvalue_args - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -
    -
    -PrevUpHomeNext -
    -
    - -
    - - Description -
    -

    - Returns the result type of make_unfused_lvalue_args. -

    -
    - - Header -
    -
    -#include <boost/fusion/functional/generation/make_unfused_lvalue_args.hpp>
    -
    -
    - - Synopsis -
    -
    -namespace result_of
    -{
    -    template<typename Function>
    -    struct make_unfused_lvalue_args
    -    {
    -        typedef unspecified type;
    -    };
    -}
    -
    -
    - - See - also -
    - -
    - - - -
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/fusion/functional/generation/metafunctions/make_unfused_rvalue_args.html b/doc/html/fusion/functional/generation/metafunctions/make_unfused_rvalue_args.html deleted file mode 100644 index 86f0b445..00000000 --- a/doc/html/fusion/functional/generation/metafunctions/make_unfused_rvalue_args.html +++ /dev/null @@ -1,72 +0,0 @@ - - - -make_unfused_rvalue_args - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -
    -
    -PrevUpHomeNext -
    -
    - -
    - - Description -
    -

    - Returns the result type of make_unfused_rvalue_args. -

    -
    - - Header -
    -
    -#include <boost/fusion/functional/generation/make_unfused_rvalue_args.hpp>
    -
    -
    - - Synopsis -
    -
    -namespace result_of
    -{
    -    template<typename Function>
    -    struct make_unfused_rvalue_args
    -    {
    -        typedef unspecified type;
    -    };
    -}
    -
    -
    - - See - also -
    - -
    - - - -
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/fusion/functional/invocation/functions/invoke.html b/doc/html/fusion/functional/invocation/functions/invoke.html deleted file mode 100644 index b6dac72e..00000000 --- a/doc/html/fusion/functional/invocation/functions/invoke.html +++ /dev/null @@ -1,160 +0,0 @@ - - - -invoke - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -
    -
    -PrevUpHomeNext -
    -
    - -
    - - Description -
    -

    - Calls a Deferred - Callable Object with the arguments from a Sequence. -

    -

    - The corresponding metafunction, result_of::invoke does not define a type member for target functions of - non-class type whose arity is not satisfied by the size of the sequence. -

    -

    - The first template parameter can be specialized explicitly to avoid copying - and/or to control the const qualification of a function object. -

    -

    - If the target function is a pointer to a class members, the corresponding - object can be specified as a reference, pointer, or smart pointer. In - case of the latter, a freestanding get_pointer function - must be defined (Boost provides this function for std::auto_ptr - and boost::shared_ptr). -

    -
    - - Synopsis -
    -
    -template<
    -    typename Function, 
    -    class Sequence
    -    >
    -typename result_of::invoke<Function, Sequence>::type
    -invoke(Function f, Sequence & s);
    -
    -template<
    -    typename Function, 
    -    class Sequence
    -    >
    -typename result_of::invoke<Function, Sequence const>::type 
    -invoke(Function f, Sequence const & s);
    -
    -
    - - Parameters -
    -
    ----- - - - - - - - - - - - - - - - - - -
    ParameterRequirementDescription
    fA - Deferred - Callable Object -The function to call.
    sA - Forward - Sequence -The arguments.
    -
    - - Expression - Semantics -
    -
    -invoke(f,s);
    -
    -

    - Return type: Return type of f when invoked with the elements in - s as its arguments. -

    -

    - Semantics: Invokes f - with the elements in s - 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 -
    - -
    - - - -
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/fusion/functional/invocation/functions/invoke_function_object.html b/doc/html/fusion/functional/invocation/functions/invoke_function_object.html deleted file mode 100644 index 2ebd1693..00000000 --- a/doc/html/fusion/functional/invocation/functions/invoke_function_object.html +++ /dev/null @@ -1,173 +0,0 @@ - - - -invoke_function_object - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -
    -
    -PrevUpHomeNext -
    -
    - -
    - - Description -
    -

    - Calls a Polymorphic Function - Object with the arguments from a Sequence. -

    -

    - The corresponding metafunction, result_of::invoke_function_object, does - not define a type member, - if the nested result - class template of the target function object is empty. -

    -

    - The first template parameter can be specialized explicitly to avoid copying - and/or to control the const qualification of a function object. -

    -
    - - Synopsis -
    -
    -template<
    -    typename Function, 
    -    class Sequence
    -    >
    -typename result_of::invoke_function_object<Function, Sequence>::type
    -invoke_function_object(Function f, Sequence & s);
    -
    -template<
    -    typename Function, 
    -    class Sequence
    -    >
    -typename result_of::invoke_function_object<Function, Sequence const>::type
    -invoke_function_object(Function f, Sequence const & s);
    -
    -
    - - Parameters -
    -
    ----- - - - - - - - - - - - - - - - - - -
    ParameterRequirementDescription
    fModel - of Polymorphic - Function Object -The function object to call.
    sModel - of Forward - Sequence -The arguments.
    -
    - - Expression - Semantics -
    -
    -invoke_procedure(f,s);
    -
    -

    - Return type: Return type of f when invoked with the elements in - s as its arguments. -

    -

    - Semantics: Invokes f - with the elements in s - as arguments and returns the result of the call expression. -

    -
    - - Header -
    -
    -#include <boost/fusion/functional/invocation/invoke_function_object.hpp>
    -
    -
    - - Example -
    -
    -struct sub
    -{
    -    template<typename T, typename _>
    -    struct result
    -    {
    -        typedef T type;
    -    };
    -
    -    template<typename T>
    -    T operator()(T lhs, T rhs) const
    -    {
    -        return lhs - rhs;
    -    }
    -};
    -
    -void try_it()
    -{
    -    sub f;
    -    assert(f(2,1) == invoke_function_object(f,make_vector(2,1)));
    -}
    -
    -
    - - See - also -
    - -
    - - - -
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/fusion/functional/invocation/functions/invoke_procedure.html b/doc/html/fusion/functional/invocation/functions/invoke_procedure.html deleted file mode 100644 index fc6eefd4..00000000 --- a/doc/html/fusion/functional/invocation/functions/invoke_procedure.html +++ /dev/null @@ -1,166 +0,0 @@ - - - -invoke_procedure - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -
    -
    -PrevUpHomeNext -
    -
    - -
    - - Description -
    -

    - Calls a Callable - Object with the arguments from a Sequence. - The result of the call is ignored. -

    -

    - The corresponding metafunction, __result_of_invoke_procedure, does not - define a type member - for target functions of non-class type whose arity is not satisfied by - the size of the sequence. -

    -

    - The first template parameter can be specialized explicitly to avoid copying - and/or to control the const qualification of a function object. -

    -

    - For pointers to class members corresponding object can be specified as - a reference, pointer, or smart pointer. In case of the latter, a freestanding - get_pointer function must be defined (Boost provides - this function for std::auto_ptr and boost::shared_ptr). -

    -

    - The target function must not be a pointer to a member object (dereferencing - such a pointer without returning anything does not make sense, so it - isn't implemented). -

    -
    - - Synopsis -
    -
    -template<
    -    typename Function, 
    -    class Sequence
    -    >
    -typename result_of::invoke_procedure<Function, Sequence>::type
    -invoke_procedure(Function f, Sequence & s);
    -
    -template<
    -    typename Function, 
    -    class Sequence
    -    >
    -typename result_of::invoke_procedure<Function, Sequence const>::type
    -invoke_procedure(Function f, Sequence const & s);
    -
    -
    - - Parameters -
    -
    ----- - - - - - - - - - - - - - - - - - -
    ParameterRequirementDescription
    fModel - of Callable - Object -The function to call.
    sModel - of Forward - Sequence -The arguments.
    -
    - - Expression - Semantics -
    -
    -invoke_procedure(f,s);
    -
    -

    - Return type: void -

    -

    - Semantics: Invokes f - with the elements in s - as arguments. -

    -
    - - Header -
    -
    -#include <boost/fusion/functional/invocation/invoke_procedure.hpp>
    -
    -
    - - Example -
    -
    -vector<int,int> v(1,2);
    -using namespace boost::lambda;
    -invoke_procedure(_1 += _2, v);
    -assert(front(v) == 3);
    -
    -
    - - See - also -
    - -
    - - - -
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/fusion/functional/invocation/metafunctions/invoke.html b/doc/html/fusion/functional/invocation/metafunctions/invoke.html deleted file mode 100644 index 78c4606c..00000000 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke.html +++ /dev/null @@ -1,75 +0,0 @@ - - - -invoke - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -
    -
    -PrevUpHomeNext -
    -
    - -
    - - Description -
    -

    - Returns the result type of invoke. -

    -

    - Empty for non-class target function types whose arity is not satisfied - by the size of the sequence. -

    -
    - - Synopsis -
    -
    -namespace result_of
    -{
    -    template<
    -        typename Function, 
    -        class Sequence
    -        > 
    -    struct invoke
    -    {
    -        typedef unspecified type;
    -    };
    -}
    -
    -
    - - See - also -
    - -
    - - - -
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/fusion/functional/invocation/metafunctions/invoke_function_object.html b/doc/html/fusion/functional/invocation/metafunctions/invoke_function_object.html deleted file mode 100644 index 66c4954a..00000000 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke_function_object.html +++ /dev/null @@ -1,75 +0,0 @@ - - - -invoke_function_object - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -
    -
    -PrevUpHomeNext -
    -
    - -
    - - Description -
    -

    - Returns the result type of invoke_function_object. -

    -

    - Empty if the target function's nested result - class template is empty. -

    -
    - - Synopsis -
    -
    -namespace result_of
    -{
    -    template<
    -        class Function, 
    -        class Sequence
    -        > 
    -    struct invoke_function_object
    -    {
    -        typedef unspecified type;
    -    };
    -}
    -
    -
    - - See - also -
    - -
    - - - -
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    -
    -
    -PrevUpHomeNext -
    - - diff --git a/doc/html/fusion/functional/invocation/metafunctions/invoke_procedure.html b/doc/html/fusion/functional/invocation/metafunctions/invoke_procedure.html deleted file mode 100644 index c7fee8c1..00000000 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke_procedure.html +++ /dev/null @@ -1,75 +0,0 @@ - - - -invoke_procedure - - - - - - - - - - - - - - - -
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    -
    -
    -PrevUpHomeNext -
    -
    - -
    - - Description -
    -

    - Returns the result type of invoke_procedure. -

    -

    - Empty for non-class target function types whose arity is not satisfied - by the size of the sequence. -

    -
    - - Synopsis -
    -
    -namespace result_of
    -{
    -    template<
    -        typename Function, 
    -        class Sequence
    -        > 
    -    struct invoke_procedure
    -    {
    -        typedef unspecified type;
    -    };
    -}
    -
    -
    - - See - also -
    - -
    - - - -
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    -
    -
    -PrevUpHomeNext -
    - - From 2522e62409e2f0c62cd471115b5ca1bc5adc8c39 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Sun, 25 Feb 2007 21:12:10 +0000 Subject: [PATCH 096/234] reduces chunk depth (Boost inspection complaints about path length) [SVN r37068] --- doc/html/fusion/functional/adapters.html | 6 +- .../fusion/functional/adapters/fused.html | 4 +- .../adapters/fused_function_object.html | 8 +- .../functional/adapters/fused_procedure.html | 8 +- .../functional/adapters/unfused_generic.html | 6 +- .../adapters/unfused_lvalue_args.html | 2 +- .../functional/adapters/unfused_typed.html | 2 +- doc/html/fusion/functional/generation.html | 16 - .../functional/generation/functions.html | 648 +++++++++++++++++- .../functional/generation/metafunctions.html | 248 ++++++- doc/html/fusion/functional/invocation.html | 10 - .../functional/invocation/functions.html | 409 ++++++++++- .../functional/invocation/metafunctions.html | 137 +++- 13 files changed, 1428 insertions(+), 76 deletions(-) diff --git a/doc/html/fusion/functional/adapters.html b/doc/html/fusion/functional/adapters.html index 9a1cd030..d7c1557e 100644 --- a/doc/html/fusion/functional/adapters.html +++ b/doc/html/fusion/functional/adapters.html @@ -6,7 +6,7 @@ - + @@ -20,7 +20,7 @@
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -44,7 +44,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/adapters/fused.html b/doc/html/fusion/functional/adapters/fused.html index 3da74549..49de6643 100644 --- a/doc/html/fusion/functional/adapters/fused.html +++ b/doc/html/fusion/functional/adapters/fused.html @@ -178,7 +178,7 @@

     fused< std::plus<long> > f;
    -assert(f(make_vector(1,2l)) == 3l);
    +assert(f(make_vector(1,2l)) == 3l);
     
    @@ -187,7 +187,7 @@
    diff --git a/doc/html/fusion/functional/adapters/fused_function_object.html b/doc/html/fusion/functional/adapters/fused_function_object.html index 695bfc7b..7cfafe98 100644 --- a/doc/html/fusion/functional/adapters/fused_function_object.html +++ b/doc/html/fusion/functional/adapters/fused_function_object.html @@ -166,11 +166,11 @@
     template<class SeqOfSeqs, class Func>
    -typename result_of::transform< zip_view<SeqOfSeqs> const,
    +typename result_of::transform< zip_view<SeqOfSeqs> const,
         fused_function_object<Func const &> >::type
     n_ary_transform(SeqOfSeqs const & s, Func const & f)
     {
    -    return transform(zip_view<SeqOfSeqs>(s), 
    +    return transform(zip_view<SeqOfSeqs>(s), 
             fused_function_object<Func const &>(f));
     } 
     
    @@ -194,7 +194,7 @@
         vector<int,float> a(2,2.0f);
         vector<int,float> b(1,1.5f);
         vector<int,float> c(1,0.5f);
    -    assert(c == n_ary_transform(vector_tie(a,b), sub()));
    +    assert(c == n_ary_transform(vector_tie(a,b), sub()));
     }
     
    @@ -205,7 +205,7 @@
    diff --git a/doc/html/fusion/functional/adapters/fused_procedure.html b/doc/html/fusion/functional/adapters/fused_procedure.html index 409fdb56..1f705a56 100644 --- a/doc/html/fusion/functional/adapters/fused_procedure.html +++ b/doc/html/fusion/functional/adapters/fused_procedure.html @@ -183,7 +183,7 @@ template<class SequenceOfSequences, class Func> void n_ary_for_each(SequenceOfSequences const & s, Func const & f) { - for_each(zip_view<SequenceOfSequences>(s), + for_each(zip_view<SequenceOfSequences>(s), fused_procedure<Func const &>(f)); } @@ -192,8 +192,8 @@ vector<int,float> a(2,2.0f); vector<int,float> b(1,1.5f); using namespace boost::lambda; - n_ary_for_each(vector_tie(a,b), _1 -= _2); - assert(a == make_vector(1,0.5f)); + n_ary_for_each(vector_tie(a,b), _1 -= _2); + assert(a == make_vector(1,0.5f)); }
    @@ -204,7 +204,7 @@ diff --git a/doc/html/fusion/functional/adapters/unfused_generic.html b/doc/html/fusion/functional/adapters/unfused_generic.html index ac13cfa1..9b6a5590 100644 --- a/doc/html/fusion/functional/adapters/unfused_generic.html +++ b/doc/html/fusion/functional/adapters/unfused_generic.html @@ -215,14 +215,14 @@ template<classSeq>structresult - :result_of::invoke<Function, - typenameresult_of::push_front<Seq,T>::type> + :result_of::invoke<Function, + typenameresult_of::push_front<Seq,T>::type>{};template<classSeq>typenameresult<Seq>::typeoperator()(Seqconst&s)const{ - returninvoke(fnc_deferred,push_front(s,xxx_bound)); + returninvoke(fnc_deferred,push_front(s,xxx_bound));}}; diff --git a/doc/html/fusion/functional/adapters/unfused_lvalue_args.html b/doc/html/fusion/functional/adapters/unfused_lvalue_args.html index ccdf4f9c..430d96f9 100644 --- a/doc/html/fusion/functional/adapters/unfused_lvalue_args.html +++ b/doc/html/fusion/functional/adapters/unfused_lvalue_args.html @@ -200,7 +200,7 @@ template<classSeq>voidoperator()(Seqconst&s)const{ - for_each(s,++boost::lambda::_1); + for_each(s,++boost::lambda::_1);}}; diff --git a/doc/html/fusion/functional/adapters/unfused_typed.html b/doc/html/fusion/functional/adapters/unfused_typed.html index 77ae9db0..531dbfc1 100644 --- a/doc/html/fusion/functional/adapters/unfused_typed.html +++ b/doc/html/fusion/functional/adapters/unfused_typed.html @@ -250,7 +250,7 @@ template<classSeq>voidoperator()(Seqconst&s)const{ - for_each(zip(tie_dest,s),fused<add_assign>()); + for_each(zip(tie_dest,s),fused<add_assign>());}}; diff --git a/doc/html/fusion/functional/generation.html b/doc/html/fusion/functional/generation.html index 22a71e35..2786aada 100644 --- a/doc/html/fusion/functional/generation.html +++ b/doc/html/fusion/functional/generation.html @@ -27,23 +27,7 @@ Generation
    diff --git a/doc/html/fusion/functional/generation/functions.html b/doc/html/fusion/functional/generation/functions.html index 5cd88059..623c9bf1 100644 --- a/doc/html/fusion/functional/generation/functions.html +++ b/doc/html/fusion/functional/generation/functions.html @@ -7,7 +7,7 @@ - +
    @@ -20,19 +20,649 @@

    -PrevUpHomeNext +PrevUpHomeNext
    +
    + +
    + + Description +
    +

    + Creates a fused adapter for a given Deferred Callable Object. + The usual element + conversion is applied to the target function. +

    +
    + + Synopsis +
    +
    +template <typename F>
    +inline typename make_fused<F>::type
    +make_fused(F const & f);
    +
    +
    + + Parameters +
    +
    +++++ + + + + + + + + + + +
    ParameterRequirementDescription
    fModel + of Deferred + Callable Object +The function to transform.
    +
    + + Expression + Semantics +
    +
    +make_fused(f);
    +
    +

    + Return type: A specialization of fused. +

    +

    + Semantics: Returns a fused adapter for f. +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/generation/make_fused.hpp>
    +
    +
    + + Example +
    +
    +float sub(float a, float b) { return a - b; }
    +
    +void try_it()
    +{
    +    vector<int,float> a(2,2.0f);
    +    vector<int,float> b(1,1.5f);
    +    vector<float,float> c(1.0f,0.5f);
    +    assert(c == transform(zip(a,b), make_fused(& sub)));
    +    assert(c == transform(zip(a,b), make_fused(std::minus<float>())));
    +}
    +
    +
    + + See + also +
    + +
    +
    + +
    + + Description +
    +

    + Creates a fused_procedure adapter for + a given Deferred + Callable Object. The usual element + conversion applied to the target function. +

    +
    + + Synopsis +
    +
    +template <typename F>
    +inline typename make_fused_procedure<F>::type
    +make_fused_procedure(F const & f);
    +
    +
    + + Parameters +
    +
    +++++ + + + + + + + + + + +
    ParameterRequirementDescription
    fModel + of Callable + Object +The function to transform.
    +
    + + Expression + Semantics +
    +
    +make_fused_procedure(f);
    +
    +

    + Return type: A specialization of fused_procedure. +

    +

    + Semantics: Returns a fused_procedure adapter for + f. +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/generation/make_fused_procedure.hpp>
    +
    +
    + + Example +
    +
    +vector<int,int,int> v(1,2,3);
    +using namespace boost::lambda;
    +make_fused_procedure(_1 += _2 - _3)(v);
    +assert(front(v) == 0);
    +
    +
    + + See + also +
    + +
    +
    + +
    + + Description +
    +

    + Creates a fused_function_object adapter + for a given Deferred + Callable Object. The usual element + conversion is applied to the target function. +

    +
    + + Synopsis +
    +
    +template <typename F>
    +inline typename make_fused_function_object<F>::type
    +make_fused_function_object(F const & f);
    +
    +
    + + Parameters +
    +
    +++++ + + + + + + + + + + +
    ParameterRequirementDescription
    fModel + of Polymorphic + Function Object +The function to transform.
    +
    + + Expression + Semantics +
    +
    +make_fused_function_object(f);
    +
    +

    + Return type: A specialization of fused_function_object. +

    +

    + Semantics: Returns a fused_function_object adapter + for f. +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/generation/make_fused_function_object.hpp>
    +
    +
    + + Example +
    +
    +struct sub
    +{
    +    template<typename T, typename _>
    +    struct result
    +    {
    +        typedef T type;
    +    };
    +
    +    template<typename T>
    +    T operator()(T lhs, T rhs) const
    +    {
    +        return lhs - rhs;
    +    }
    +};
    +
    +void try_it()
    +{
    +    vector<int,float> a(2,2.0f);
    +    vector<int,float> b(1,1.5f);
    +    vector<int,float> c(1,0.5f);
    +    assert(c == transform(zip(a,b), make_fused_function_object(sub())));
    +}
    +
    +
    + + See + also +
    + +
    +
    + +
    + + Description +
    +

    + Creates a unfused_generic adapter for + a given, unary Polymorphic + Function Object. The usual element + conversion is applied to the target function. +

    +
    + + Synopsis +
    +
    +template <typename F>
    +inline typename make_unfused_generic<F>::type
    +make_unfused_generic(F const & f);
    +
    +
    + + Parameters +
    +
    +++++ + + + + + + + + + + +
    ParameterRequirementDescription
    fModel + of Polymorphic + Function Object +The function to transform.
    +
    + + Expression + Semantics +
    +
    +make_unfused_generic(f);
    +
    +

    + Return type: A specialization of unfused_generic. +

    +

    + Semantics: Returns a unfused_generic adapter for + f. +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/generation/make_unfused_generic.hpp>
    +
    +
    + + Example +
    +
    +struct bottles_song
    +{
    +    template<class Seq>
    +    struct result
    +        : mpl::if_< mpl::less< result_of::size<Seq>, mpl::int_<2> >,
    +            boost::blank, mpl::identity<void> >::type
    +    { };
    +
    +    template<class Seq> 
    +    void operator()(Seq & s) const
    +    {
    +        typename result_of::at_c<Seq,0>::type n = at_c<0>(s);
    +        typename result_of::at_c<Seq,1>::type what = at_c<1>(s);
    +
    +        std::cout 
    +            << n << " bottles of " << what << " on the wall.\n" 
    +            << n << " bottles of " << what << "!\n"
    +            << "Take one down - pass it around.\n";
    +
    +        n -= 1; // glug glug...
    +
    +        std::cout
    +            << n << " bottles of " << what << " on the wall.\n" 
    +            << std::endl;
    +    }
    +};
    +
    +void try_it()
    +{
    +    unsigned n_milk = 99;
    +    for(int i = 0; i < 3; ++i)
    +        make_unfused_generic(bottles_song())(n_milk,"milk");
    +    // 96 bottles left for me
    +}
    +
    +
    + + See + also +
    + +
    +
    + +
    + + Description +
    +

    + Creates a unfused_lvalue_args adapter + for a given, unary Polymorphic + Function Object. The usual element + conversion is applied to the target function. +

    +
    + + Synopsis +
    +
    +template <typename F>
    +inline typename make_unfused_lvalue_args<F>::type
    +make_unfused_lvalue_args(F const & f);
    +
    +
    + + Parameters +
    +
    +++++ + + + + + + + + + + +
    ParameterRequirementDescription
    fModel + of Polymorphic + Function Object +The function to transform.
    +
    + + Expression + Semantics +
    +
    +make_unfused_lvalue_args(f);
    +
    +

    + Return type: A specialization of unfused_lvalue_args. +

    +

    + Semantics: Returns a unfused_lvalue_args adapter + for f. +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/generation/make_unfused_lvalue_args.hpp>
    +
    +
    + + Example +
    +
    +struct fused_incrementer
    +{
    +    template <class Seq> 
    +    struct result 
    +    { 
    +        typedef void type;
    +    };
    +
    +    template <class Seq>
    +    void operator()(Seq const & s) const
    +    {
    +        for_each(s,++boost::lambda::_1);
    +    }
    +};
    +
    +void try_it()
    +{
    +    int a = 2; char b = 'X';
    +    make_unfused_lvalue_args(fused_incrementer())(a,b);
    +    assert(a == 3 && b == 'Y');
    +}
    +
    +
    + + See + also +
    + +
    +
    + +
    + + Description +
    +

    + Creates a unfused_rvalue_args adapter + for a given, unary Polymorphic + Function Object. The usual element + conversion is applied to the target function. +

    +
    + + Synopsis +
    +
    +template <typename F>
    +inline typename make_unfused_rvalue_args<F>::type
    +make_unfused_rvalue_args(F const & f);
    +
    +
    + + Parameters +
    +
    +++++ + + + + + + + + + + +
    ParameterRequirementDescription
    fModel + of Polymorphic + Function Object +The function to transform.
    +
    + + Expression + Semantics +
    +
    +make_unfused_rvalue_args(f);
    +
    +

    + Return type: A specialization of unfused_rvalue_args. +

    +

    + Semantics: Returns a unfused_rvalue_args adapter + for f. +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/generation/make_unfused_rvalue_args.hpp>
    +
    +
    + + Example +
    +
    +struct sequence_printer
    +{
    +    template <class Seq> 
    +    struct result 
    +    { 
    +        typedef void type;
    +    };
    +
    +    template <class Seq>
    +    void operator()(Seq const & s) const
    +    {
    +        std::cout << s << std::endl;
    +    }
    +};
    +
    +void try_it()
    +{
    +    make_unfused_rvalue_args(sequence_printer())
    +        (24,"bottles of beer in",'a',"box.");
    +}
    +
    +
    + + See + also +
    + +
    @@ -40,7 +670,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/generation/metafunctions.html b/doc/html/fusion/functional/generation/metafunctions.html index 3c233649..ae28a48d 100644 --- a/doc/html/fusion/functional/generation/metafunctions.html +++ b/doc/html/fusion/functional/generation/metafunctions.html @@ -6,8 +6,8 @@ - - + + @@ -20,19 +20,247 @@

    -PrevUpHomeNext +PrevUpHomeNext
    +
    + +
    + + Description +
    +

    + Returns the result type of make_fused. +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/generation/make_fused.hpp>
    +
    +
    + + Synopsis +
    +
    +namespace result_of
    +{
    +    template<typename Function>
    +    struct make_fused
    +    {
    +        typedef unspecified type;
    +    };
    +}
    +
    +
    + + See + also +
    + +
    +
    + +
    + + Description +
    +

    + Returns the result type of make_fused_procedure. +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/generation/make_fused_procedure.hpp>
    +
    +
    + + Synopsis +
    +
    +namespace result_of
    +{
    +    template<typename Function>
    +    struct make_fused_procedure
    +    {
    +        typedef unspecified type;
    +    };
    +}
    +
    +
    + + See + also +
    + +
    +
    + +
    + + Description +
    +

    + Returns the result type of make_fused_function_object. +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/generation/make_fused_function_object.hpp>
    +
    +
    + + Synopsis +
    +
    +namespace result_of
    +{
    +    template<typename Function>
    +    struct make_fused_function_object
    +    {
    +        typedef unspecified type;
    +    };
    +}
    +
    +
    + + See + also +
    + +
    +
    + +
    + + Description +
    +

    + Returns the result type of make_unfused_generic. +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/generation/make_unfused_generic.hpp>
    +
    +
    + + Synopsis +
    +
    +namespace result_of
    +{
    +    template<typename Function>
    +    struct make_unfused_generic
    +    {
    +        typedef unspecified type;
    +    };
    +}
    +
    +
    + + See + also +
    + +
    +
    + +
    + + Description +
    +

    + Returns the result type of make_unfused_lvalue_args. +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/generation/make_unfused_lvalue_args.hpp>
    +
    +
    + + Synopsis +
    +
    +namespace result_of
    +{
    +    template<typename Function>
    +    struct make_unfused_lvalue_args
    +    {
    +        typedef unspecified type;
    +    };
    +}
    +
    +
    + + See + also +
    + +
    +
    + +
    + + Description +
    +

    + Returns the result type of make_unfused_rvalue_args. +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/generation/make_unfused_rvalue_args.hpp>
    +
    +
    + + Synopsis +
    +
    +namespace result_of
    +{
    +    template<typename Function>
    +    struct make_unfused_rvalue_args
    +    {
    +        typedef unspecified type;
    +    };
    +}
    +
    +
    + + See + also +
    + +
    @@ -40,7 +268,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/invocation.html b/doc/html/fusion/functional/invocation.html index 3b88b6cc..8c06c330 100644 --- a/doc/html/fusion/functional/invocation.html +++ b/doc/html/fusion/functional/invocation.html @@ -28,17 +28,7 @@ Invocation
    diff --git a/doc/html/fusion/functional/invocation/functions.html b/doc/html/fusion/functional/invocation/functions.html index e868aad6..8d53bb6a 100644 --- a/doc/html/fusion/functional/invocation/functions.html +++ b/doc/html/fusion/functional/invocation/functions.html @@ -7,7 +7,7 @@ - +
    @@ -20,16 +20,413 @@

    -PrevUpHomeNext +PrevUpHomeNext
    +
    + +
    + + Description +
    +

    + Calls a Deferred + Callable Object with the arguments from a Sequence. +

    +

    + The corresponding metafunction, result_of::invoke does not define a type member for target functions of + non-class type whose arity is not satisfied by the size of the sequence. +

    +

    + The first template parameter can be specialized explicitly to avoid copying + and/or to control the const qualification of a function object. +

    +

    + If the target function is a pointer to a class members, the corresponding + object can be specified as a reference, pointer, or smart pointer. In + case of the latter, a freestanding get_pointer function + must be defined (Boost provides this function for std::auto_ptr + and boost::shared_ptr). +

    +
    + + Synopsis +
    +
    +template<
    +    typename Function, 
    +    class Sequence
    +    >
    +typename result_of::invoke<Function, Sequence>::type
    +invoke(Function f, Sequence & s);
    +
    +template<
    +    typename Function, 
    +    class Sequence
    +    >
    +typename result_of::invoke<Function, Sequence const>::type 
    +invoke(Function f, Sequence const & s);
    +
    +
    + + Parameters +
    +
    +++++ + + + + + + + + + + + + + + + + + +
    ParameterRequirementDescription
    fA + Deferred + Callable Object +The function to call.
    sA + Forward + Sequence +The arguments.
    +
    + + Expression + Semantics +
    +
    +invoke(f,s);
    +
    +

    + Return type: Return type of f when invoked with the elements in + s as its arguments. +

    +

    + Semantics: Invokes f + with the elements in s + 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 +
    + +
    +
    + +
    + + Description +
    +

    + Calls a Callable + Object with the arguments from a Sequence. + The result of the call is ignored. +

    +

    + The corresponding metafunction, __result_of_invoke_procedure, does not + define a type member + for target functions of non-class type whose arity is not satisfied by + the size of the sequence. +

    +

    + The first template parameter can be specialized explicitly to avoid copying + and/or to control the const qualification of a function object. +

    +

    + For pointers to class members corresponding object can be specified as + a reference, pointer, or smart pointer. In case of the latter, a freestanding + get_pointer function must be defined (Boost provides + this function for std::auto_ptr and boost::shared_ptr). +

    +

    + The target function must not be a pointer to a member object (dereferencing + such a pointer without returning anything does not make sense, so it + isn't implemented). +

    +
    + + Synopsis +
    +
    +template<
    +    typename Function, 
    +    class Sequence
    +    >
    +typename result_of::invoke_procedure<Function, Sequence>::type
    +invoke_procedure(Function f, Sequence & s);
    +
    +template<
    +    typename Function, 
    +    class Sequence
    +    >
    +typename result_of::invoke_procedure<Function, Sequence const>::type
    +invoke_procedure(Function f, Sequence const & s);
    +
    +
    + + Parameters +
    +
    +++++ + + + + + + + + + + + + + + + + + +
    ParameterRequirementDescription
    fModel + of Callable + Object +The function to call.
    sModel + of Forward + Sequence +The arguments.
    +
    + + Expression + Semantics +
    +
    +invoke_procedure(f,s);
    +
    +

    + Return type: void +

    +

    + Semantics: Invokes f + with the elements in s + as arguments. +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/invocation/invoke_procedure.hpp>
    +
    +
    + + Example +
    +
    +vector<int,int> v(1,2);
    +using namespace boost::lambda;
    +invoke_procedure(_1 += _2, v);
    +assert(front(v) == 3);
    +
    +
    + + See + also +
    + +
    +
    + +
    + + Description +
    +

    + Calls a Polymorphic Function + Object with the arguments from a Sequence. +

    +

    + The corresponding metafunction, result_of::invoke_function_object, does + not define a type member, + if the nested result + class template of the target function object is empty. +

    +

    + The first template parameter can be specialized explicitly to avoid copying + and/or to control the const qualification of a function object. +

    +
    + + Synopsis +
    +
    +template<
    +    typename Function, 
    +    class Sequence
    +    >
    +typename result_of::invoke_function_object<Function, Sequence>::type
    +invoke_function_object(Function f, Sequence & s);
    +
    +template<
    +    typename Function, 
    +    class Sequence
    +    >
    +typename result_of::invoke_function_object<Function, Sequence const>::type
    +invoke_function_object(Function f, Sequence const & s);
    +
    +
    + + Parameters +
    +
    +++++ + + + + + + + + + + + + + + + + + +
    ParameterRequirementDescription
    fModel + of Polymorphic + Function Object +The function object to call.
    sModel + of Forward + Sequence +The arguments.
    +
    + + Expression + Semantics +
    +
    +invoke_procedure(f,s);
    +
    +

    + Return type: Return type of f when invoked with the elements in + s as its arguments. +

    +

    + Semantics: Invokes f + with the elements in s + as arguments and returns the result of the call expression. +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/invocation/invoke_function_object.hpp>
    +
    +
    + + Example +
    +
    +struct sub
    +{
    +    template<typename T, typename _>
    +    struct result
    +    {
    +        typedef T type;
    +    };
    +
    +    template<typename T>
    +    T operator()(T lhs, T rhs) const
    +    {
    +        return lhs - rhs;
    +    }
    +};
    +
    +void try_it()
    +{
    +    sub f;
    +    assert(f(2,1) == invoke_function_object(f,make_vector(2,1)));
    +}
    +
    +
    + + See + also +
    + +
    @@ -37,7 +434,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/invocation/metafunctions.html b/doc/html/fusion/functional/invocation/metafunctions.html index d483f03c..4f46ffd2 100644 --- a/doc/html/fusion/functional/invocation/metafunctions.html +++ b/doc/html/fusion/functional/invocation/metafunctions.html @@ -6,8 +6,8 @@ - - + + @@ -20,16 +20,139 @@

    -PrevUpHomeNext +PrevUpHomeNext
    +
    + +
    + + Description +
    +

    + Returns the result type of invoke. +

    +

    + Empty for non-class target function types whose arity is not satisfied + by the size of the sequence. +

    +
    + + Synopsis +
    +
    +namespace result_of
    +{
    +    template<
    +        typename Function, 
    +        class Sequence
    +        > 
    +    struct invoke
    +    {
    +        typedef unspecified type;
    +    };
    +}
    +
    +
    + + See + also +
    + +
    +
    + +
    + + Description +
    +

    + Returns the result type of invoke_procedure. +

    +

    + Empty for non-class target function types whose arity is not satisfied + by the size of the sequence. +

    +
    + + Synopsis +
    +
    +namespace result_of
    +{
    +    template<
    +        typename Function, 
    +        class Sequence
    +        > 
    +    struct invoke_procedure
    +    {
    +        typedef unspecified type;
    +    };
    +}
    +
    +
    + + See + also +
    + +
    +
    + +
    + + Description +
    +

    + Returns the result type of invoke_function_object. +

    +

    + Empty if the target function's nested result + class template is empty. +

    +
    + + Synopsis +
    +
    +namespace result_of
    +{
    +    template<
    +        class Function, 
    +        class Sequence
    +        > 
    +    struct invoke_function_object
    +    {
    +        typedef unspecified type;
    +    };
    +}
    +
    +
    + + See + also +
    + +
    @@ -37,7 +160,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    From e9a597a1eb77871ed628dd06966d93ac74b6ffea Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Sun, 25 Feb 2007 21:13:57 +0000 Subject: [PATCH 097/234] adds functional section TOC [SVN r37069] --- doc/html/fusion/functional.html | 162 ++++++++++++++++++++++++++++++++ 1 file changed, 162 insertions(+) create mode 100644 doc/html/fusion/functional.html diff --git a/doc/html/fusion/functional.html b/doc/html/fusion/functional.html new file mode 100644 index 00000000..53449074 --- /dev/null +++ b/doc/html/fusion/functional.html @@ -0,0 +1,162 @@ + + + +Functional + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + + +

    + Components to call functions and function objects and to make Fusion code callable + through a function object interface. +

    +

    + + Header +

    +
    +#include <boost/fusion/functional.hpp>
    +
    +

    + + Fused and unfused + forms +

    +

    + What is a function call? +

    +
    +f (a,b,c)
    +
    +

    + It is a name and a tuple written next to each other, left-to-right. +

    +

    + Although the C++ syntax does not allow to replace (a,b,c) + with some Fusion Sequence, introducing + yet another function provides a solution: +

    +
    +invoke(f,my_sequence)
    +
    +

    + Alternatively it's possible to apply a simple transformation to f + in order to achieve the same effect: +

    +
    +f tuple <=> f' (tuple)
    +
    +

    + Now, f' is an unary function that takes the arguments to + f as a tuple; f' + is the fused form of f. + Reading the above equivalence right-to-left to get the inverse transformation, + f is the unfused + form of f'. +

    +

    + + Calling + functions and function objects +

    +

    + Having generic C++ code call back arbitrary functions provided by the client + used to be a heavily repetitive task, as different functions can differ in + arity, invocation syntax and other properties that might be part of the type. + Transporting arguments as Fusion sequences and factoring out the invocation + makes Fusion algorithms applicable to function arguments and also reduces the + problem to one invocation syntax and a fixed arity (instead of an arbitrary + number of arbitrary arguments times several syntactic variants times additional + properties). +

    +

    + Transforming an unfused function into its fused counterpart allows n-ary calls + from an algorithm that invokes an unary Polymorphic + Function Object with Sequence + arguments. +

    +

    + The library provides several function templates to invoke different kinds of + functions and adapters to transform them into fused form, respectively. Every + variant has a corresponding generator function template that returns an adapter + instance for the given argument. +

    +

    + + Making + Fusion code callable through a function object interface +

    +

    + Transforming a fused function into its unfused counterpart allows to create + function objects to accept arbitrary calls. In other words, an unary function + object can be implemented instead of (maybe heavily overloaded) function templates + or function call operators. +

    +

    + The library provides several adapter variants that implement this transformation, + ranging from strictly typed to fully generic. The latter provides a reusable + solution to The + Forwarding Problem. Every generic variant has a corresponding generator + function template that returns an adapter instance for the given argument. +

    +
    + + + +
    Copyright © 2001-2005 Joel de Guzman, Dan Marsden
    +
    +
    +PrevUpHomeNext +
    + + From e9c82ee03afa0749a2939f3637599d1f01fdb0bb Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Sun, 25 Feb 2007 21:55:40 +0000 Subject: [PATCH 098/234] abbreviated section names [SVN r37070] --- doc/functional.qbk | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/doc/functional.qbk b/doc/functional.qbk index a56c9725..ad715a9b 100644 --- a/doc/functional.qbk +++ b/doc/functional.qbk @@ -209,7 +209,7 @@ the result of the call expression. [endsect] -[section invoke_procedure] +[section:invoke_proc invoke_procedure] [heading Description] @@ -279,7 +279,7 @@ implemented). [endsect] -[section invoke_function_object] +[section:invoke_fobj invoke_function_object] [heading Description] @@ -388,7 +388,7 @@ the size of the sequence. [endsect] -[section invoke_procedure] +[section:invoke_proc invoke_procedure] [heading Description] Returns the result type of __invoke_procedure__. @@ -415,7 +415,7 @@ the size of the sequence. [endsect] -[section invoke_function_object] +[section:invoke_fobj invoke_function_object] [heading Description] Returns the result type of __invoke_function_object__. @@ -1171,7 +1171,7 @@ is optimized automatically to avoid by-value parameters.] [section Functions] -[section make_fused] +[section:mk_fused make_fused] [heading Description] Creates a __fused__ adapter for a given __def_callable_obj__. The usual @@ -1219,7 +1219,7 @@ __element_conversion__ is applied to the target function. [endsect] -[section make_fused_procedure] +[section:mk_fused_proc make_fused_procedure] [heading Description] Creates a __fused_procedure__ adapter for a given __def_callable_obj__. @@ -1261,7 +1261,7 @@ The usual __element_conversion__ applied to the target function. [endsect] -[section make_fused_function_object] +[section:mk_fused_fobj make_fused_function_object] [heading Description] Creates a __fused_function_object__ adapter for a given __def_callable_obj__. @@ -1321,7 +1321,7 @@ The usual __element_conversion__ is applied to the target function. [endsect] -[section make_unfused_generic] +[section:mk_unfused_genrc make_unfused_generic] [heading Description] Creates a __unfused_generic__ adapter for a given, unary __poly_func_obj__. @@ -1393,7 +1393,7 @@ The usual __element_conversion__ is applied to the target function. [endsect] -[section make_unfused_lvalue_args] +[section:mk_unfused_lvargs make_unfused_lvalue_args] [heading Description] Creates a __unfused_lvalue_args__ adapter for a given, unary __poly_func_obj__. @@ -1452,7 +1452,7 @@ The usual __element_conversion__ is applied to the target function. [endsect] -[section make_unfused_rvalue_args] +[section:mk_unfused_rvargs make_unfused_rvalue_args] [heading Description] Creates a __unfused_rvalue_args__ adapter for a given, unary __poly_func_obj__. @@ -1514,7 +1514,7 @@ The usual __element_conversion__ is applied to the target function. [section Metafunctions] -[section make_fused] +[section:mk_fused make_fused] [heading Description] Returns the result type of __make_fused__. @@ -1538,7 +1538,7 @@ Returns the result type of __make_fused__. [endsect] -[section make_fused_procedure] +[section:mk_fused_proc make_fused_procedure] [heading Description] Returns the result type of __make_fused_procedure__. @@ -1562,7 +1562,7 @@ Returns the result type of __make_fused_procedure__. [endsect] -[section make_fused_function_object] +[section:mk_fused_fobj make_fused_function_object] [heading Description] Returns the result type of __make_fused_function_object__. @@ -1586,7 +1586,7 @@ Returns the result type of __make_fused_function_object__. [endsect] -[section make_unfused_generic] +[section:mk_unfused_genrc make_unfused_generic] [heading Description] Returns the result type of __make_unfused_generic__. @@ -1610,7 +1610,7 @@ Returns the result type of __make_unfused_generic__. [endsect] -[section make_unfused_lvalue_args] +[section:mk_unfused_lvargs make_unfused_lvalue_args] [heading Description] Returns the result type of __make_unfused_lvalue_args__. @@ -1634,7 +1634,7 @@ Returns the result type of __make_unfused_lvalue_args__. [endsect] -[section make_unfused_rvalue_args] +[section:mk_unfused_rvargs make_unfused_rvalue_args] [heading Description] Returns the result type of __make_unfused_rvalue_args__. From 1a3b7b5d8cb7a1bca87fb9fd07b8e23b474953a9 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Sun, 25 Feb 2007 21:56:30 +0000 Subject: [PATCH 099/234] abbreviates section names in functional module, adds missing copyright [SVN r37071] --- doc/fusion.qbk | 36 +++++++++++++++++------------------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/doc/fusion.qbk b/doc/fusion.qbk index 0f1d006f..c8d97fcf 100644 --- a/doc/fusion.qbk +++ b/doc/fusion.qbk @@ -2,7 +2,7 @@ [quickbook 1.3] [version 2.0] [authors [de Guzman, Joel], [Marsden, Dan]] - [copyright 2001 2002 2003 2004 2005 Joel de Guzman, Dan Marsden] + [copyright 2001 2002 2003 2004 2005 2006 2007 Joel de Guzman, Dan Marsden, Tobias Schwinger] [purpose Statically Typed Heterogeneous Data Structures and Algorithms] [license Distributed under the Boost Software License, Version 1.0. @@ -260,25 +260,23 @@ [def __unfused_rvalue_args__ [link fusion.functional.adapters.unfused_rvalue_args `unfused_rvalue_args`]] [def __unfused_typed__ [link fusion.functional.adapters.unfused_typed `unfused_typed`]] [def __invoke__ [link fusion.functional.invocation.functions.invoke `invoke`]] -[def __invoke_procedure__ [link fusion.functional.invocation.functions.invoke_procedure `invoke_procedure`]] -[def __invoke_function_object__ [link fusion.functional.invocation.functions.invoke_function_object `invoke_function_object`]] -[def __make_fused__ [link fusion.functional.generation.functions.make_fused `make_fused`]] -[def __make_fused_procedure__ [link fusion.functional.generation.functions.make_fused_procedure `make_fused_procedure`]] -[def __make_fused_function_object__ [link fusion.functional.generation.functions.make_fused_function_object `make_fused_function_object`]] -[def __make_unfused_generic__ [link fusion.functional.generation.functions.make_unfused_generic `make_unfused_generic`]] -[def __make_unfused_rvalue_args__ [link fusion.functional.generation.functions.make_unfused_rvalue_args `make_unfused_rvalue_args`]] -[def __make_unfused_lvalue_args__ [link fusion.functional.generation.functions.make_unfused_lvalue_args `make_unfused_lvalue_args`]] -[def __make_unfused_typed__ [link fusion.functional.generation.functions.make_unfused_typed `make_unfused_typed`]] +[def __invoke_procedure__ [link fusion.functional.invocation.functions.invoke_proc `invoke_procedure`]] +[def __invoke_function_object__ [link fusion.functional.invocation.functions.invoke_fobj `invoke_function_object`]] +[def __make_fused__ [link fusion.functional.generation.functions.mk_fused `make_fused`]] +[def __make_fused_procedure__ [link fusion.functional.generation.functions.mk_fused_proc `make_fused_procedure`]] +[def __make_fused_function_object__ [link fusion.functional.generation.functions.mk_fused_fobj `make_fused_function_object`]] +[def __make_unfused_generic__ [link fusion.functional.generation.functions.mk_unfused_genrc `make_unfused_generic`]] +[def __make_unfused_rvalue_args__ [link fusion.functional.generation.functions.mk_unfused_rvargs `make_unfused_rvalue_args`]] +[def __make_unfused_lvalue_args__ [link fusion.functional.generation.functions.mk_unfused_lvargs `make_unfused_lvalue_args`]] [def __result_of_invoke__ [link fusion.functional.invocation.metafunctions.invoke `result_of::invoke`]] -[def __result_of_invoke_procedure__ [link fusion.functional.invocation.metafunctions.invoke_procedure `result_of::invoke_procedure`]] -[def __result_of_invoke_function_object__ [link fusion.functional.invocation.metafunctions.invoke_function_object `result_of::invoke_function_object`]] -[def __result_of_make_fused__ [link fusion.functional.generation.metafunctions.make_fused `make_fused`]] -[def __result_of_make_fused_procedure__ [link fusion.functional.generation.metafunctions.make_fused_procedure `make_fused_procedure`]] -[def __result_of_make_fused_function_object__ [link fusion.functional.generation.metafunctions.make_fused_function_object `make_fused_function_object`]] -[def __result_of_make_unfused_generic__ [link fusion.functional.generation.metafunctions.make_unfused_generic `make_unfused_generic`]] -[def __result_of_make_unfused_rvalue_args__ [link fusion.functional.generation.metafunctions.make_unfused_rvalue_args `make_unfused_rvalue_args`]] -[def __result_of_make_unfused_lvalue_args__ [link fusion.functional.generation.metafunctions.make_unfused_lvalue_args `make_unfused_lvalue_args`]] -[def __result_of_make_unfused_typed__ [link fusion.functional.generation.metafunctions.make_unfused_typed `make_unfused_typed`]] +[def __result_of_invoke_procedure__ [link fusion.functional.invocation.metafunctions.invoke_proc `result_of::invoke_procedure`]] +[def __result_of_invoke_function_object__ [link fusion.functional.invocation.metafunctions.invoke_fobj `result_of::invoke_function_object`]] +[def __result_of_make_fused__ [link fusion.functional.generation.metafunctions.mk_fused `make_fused`]] +[def __result_of_make_fused_procedure__ [link fusion.functional.generation.metafunctions.mk_fused_proc `make_fused_procedure`]] +[def __result_of_make_fused_function_object__ [link fusion.functional.generation.metafunctions.mk_fused_fobj `make_fused_function_object`]] +[def __result_of_make_unfused_generic__ [link fusion.functional.generation.metafunctions.mk_unfused_genrc `make_unfused_generic`]] +[def __result_of_make_unfused_rvalue_args__ [link fusion.functional.generation.metafunctions.mk_unfused_rvargs `make_unfused_rvalue_args`]] +[def __result_of_make_unfused_lvalue_args__ [link fusion.functional.generation.metafunctions.mk_unfused_lvargs `make_unfused_lvalue_args`]] [def __recursive_inline__ [link fusion.notes.recursive_inlined_functions Recursive Inlined Functions]] [def __overloaded_functions__ [link fusion.notes.overloaded_functions Overloaded Functions]] From 5c77671af1434e8fa0f8caac11cd28a539c22d09 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Sun, 25 Feb 2007 22:02:27 +0000 Subject: [PATCH 100/234] updates html files [SVN r37072] --- doc/html/fusion/acknowledgements.html | 3 +- doc/html/fusion/algorithms.html | 79 +-- doc/html/fusion/algorithms/iteration.html | 15 +- .../algorithms/iteration/functions.html | 3 +- .../iteration/functions/accumulate.html | 17 +- .../algorithms/iteration/functions/fold.html | 17 +- .../iteration/functions/for_each.html | 17 +- .../algorithms/iteration/metafunctions.html | 3 +- .../iteration/metafunctions/accumulate.html | 15 +- .../iteration/metafunctions/fold.html | 15 +- .../iteration/metafunctions/for_each.html | 15 +- doc/html/fusion/algorithms/query.html | 23 +- .../fusion/algorithms/query/functions.html | 3 +- .../algorithms/query/functions/all.html | 17 +- .../algorithms/query/functions/any.html | 17 +- .../algorithms/query/functions/count.html | 17 +- .../algorithms/query/functions/count_if.html | 17 +- .../algorithms/query/functions/find.html | 17 +- .../algorithms/query/functions/find_if.html | 17 +- .../algorithms/query/functions/none.html | 17 +- .../algorithms/query/metafunctions.html | 3 +- .../algorithms/query/metafunctions/all.html | 15 +- .../algorithms/query/metafunctions/any.html | 15 +- .../algorithms/query/metafunctions/count.html | 15 +- .../query/metafunctions/count_if.html | 15 +- .../algorithms/query/metafunctions/find.html | 15 +- .../query/metafunctions/find_if.html | 15 +- .../algorithms/query/metafunctions/none.html | 15 +- .../fusion/algorithms/transformation.html | 47 +- .../algorithms/transformation/functions.html | 3 +- .../transformation/functions/clear.html | 17 +- .../transformation/functions/erase.html | 17 +- .../transformation/functions/erase_key.html | 17 +- .../transformation/functions/filter.html | 17 +- .../transformation/functions/filter_if.html | 17 +- .../transformation/functions/insert.html | 17 +- .../functions/insert_range.html | 17 +- .../transformation/functions/join.html | 17 +- .../transformation/functions/pop_back.html | 17 +- .../transformation/functions/pop_front.html | 17 +- .../transformation/functions/push_back.html | 17 +- .../transformation/functions/push_front.html | 17 +- .../transformation/functions/remove.html | 17 +- .../transformation/functions/remove_if.html | 17 +- .../transformation/functions/replace.html | 17 +- .../transformation/functions/replace_if.html | 17 +- .../transformation/functions/reverse.html | 17 +- .../transformation/functions/transform.html | 21 +- .../transformation/functions/zip.html | 17 +- .../transformation/metafunctions.html | 3 +- .../transformation/metafunctions/clear.html | 15 +- .../transformation/metafunctions/erase.html | 15 +- .../metafunctions/erase_key.html | 15 +- .../transformation/metafunctions/filter.html | 15 +- .../metafunctions/filter_if.html | 15 +- .../transformation/metafunctions/insert.html | 15 +- .../metafunctions/insert_range.html | 15 +- .../transformation/metafunctions/join.html | 13 +- .../metafunctions/pop_back.html | 15 +- .../metafunctions/pop_front.html | 15 +- .../metafunctions/push_back.html | 15 +- .../metafunctions/push_front.html | 15 +- .../transformation/metafunctions/remove.html | 15 +- .../metafunctions/remove_if.html | 15 +- .../transformation/metafunctions/replace.html | 15 +- .../metafunctions/replace_if.html | 15 +- .../transformation/metafunctions/reverse.html | 15 +- .../metafunctions/transform.html | 15 +- .../transformation/metafunctions/zip.html | 13 +- doc/html/fusion/change_log.html | 3 +- doc/html/fusion/extension.html | 19 +- doc/html/fusion/functional.html | 11 +- doc/html/fusion/functional/adapters.html | 10 +- .../fusion/functional/adapters/fused.html | 23 +- .../adapters/fused_function_object.html | 28 +- .../functional/adapters/fused_procedure.html | 28 +- .../functional/adapters/unfused_generic.html | 25 +- .../adapters/unfused_lvalue_args.html | 21 +- .../adapters/unfused_rvalue_args.html | 19 +- .../functional/adapters/unfused_typed.html | 21 +- doc/html/fusion/functional/concepts.html | 3 +- .../fusion/functional/concepts/callable.html | 3 +- .../functional/concepts/def_callable.html | 11 +- doc/html/fusion/functional/concepts/poly.html | 11 +- doc/html/fusion/functional/generation.html | 3 +- .../functional/generation/functions.html | 658 +----------------- .../generation/functions/mk_fused.html | 136 ++++ .../generation/functions/mk_fused_fobj.html | 151 ++++ .../generation/functions/mk_fused_proc.html | 132 ++++ .../functions/mk_unfused_genrc.html | 163 +++++ .../functions/mk_unfused_lvargs.html | 150 ++++ .../functions/mk_unfused_rvargs.html | 148 ++++ .../functional/generation/metafunctions.html | 259 +------ .../generation/metafunctions/mk_fused.html | 79 +++ .../metafunctions/mk_fused_fobj.html | 80 +++ .../metafunctions/mk_fused_proc.html | 80 +++ .../metafunctions/mk_unfused_genrc.html | 80 +++ .../metafunctions/mk_unfused_lvargs.html | 80 +++ .../metafunctions/mk_unfused_rvargs.html | 79 +++ doc/html/fusion/functional/invocation.html | 3 +- .../functional/invocation/functions.html | 414 +---------- .../invocation/functions/invoke.html | 164 +++++ .../invocation/functions/invoke_fobj.html | 183 +++++ .../invocation/functions/invoke_proc.html | 175 +++++ .../functional/invocation/metafunctions.html | 143 +--- .../invocation/metafunctions/invoke.html | 77 ++ .../invocation/metafunctions/invoke_fobj.html | 82 +++ .../invocation/metafunctions/invoke_proc.html | 82 +++ doc/html/fusion/introduction.html | 3 +- doc/html/fusion/iterators.html | 5 +- doc/html/fusion/iterators/concepts.html | 3 +- .../concepts/bidirectional_iterator.html | 17 +- .../iterators/concepts/forward_iterator.html | 15 +- .../concepts/random_access_iterator.html | 13 +- doc/html/fusion/iterators/functions.html | 3 +- .../fusion/iterators/functions/advance.html | 15 +- .../fusion/iterators/functions/advance_c.html | 15 +- .../fusion/iterators/functions/deref.html | 15 +- .../fusion/iterators/functions/distance.html | 15 +- doc/html/fusion/iterators/functions/next.html | 15 +- .../fusion/iterators/functions/prior.html | 15 +- doc/html/fusion/iterators/metafunctions.html | 3 +- .../iterators/metafunctions/advance.html | 15 +- .../iterators/metafunctions/advance_c.html | 15 +- .../fusion/iterators/metafunctions/deref.html | 15 +- .../iterators/metafunctions/distance.html | 15 +- .../iterators/metafunctions/equal_to.html | 15 +- .../fusion/iterators/metafunctions/next.html | 15 +- .../fusion/iterators/metafunctions/prior.html | 15 +- .../iterators/metafunctions/value_of.html | 15 +- doc/html/fusion/iterators/operators.html | 3 +- .../operators/operator_equality.html | 13 +- .../operators/operator_inequality.html | 13 +- .../operators/operator_unary_star.html | 15 +- doc/html/fusion/notes.html | 26 +- doc/html/fusion/organization.html | 13 +- doc/html/fusion/preface.html | 13 +- doc/html/fusion/quick_start.html | 19 +- doc/html/fusion/references.html | 3 +- doc/html/fusion/sequences.html | 80 +-- doc/html/fusion/sequences/adapted.html | 9 +- .../sequences/adapted/boost__array.html | 11 +- .../sequences/adapted/boost__tuple.html | 11 +- .../sequences/adapted/boost__variant.html | 11 +- .../sequences/adapted/mpl_sequence.html | 11 +- .../fusion/sequences/adapted/std__pair.html | 11 +- doc/html/fusion/sequences/concepts.html | 7 +- .../concepts/associative_sequence.html | 13 +- .../concepts/bidirectional_sequence.html | 15 +- .../sequences/concepts/forward_sequence.html | 15 +- .../concepts/random_access_sequence.html | 15 +- doc/html/fusion/sequences/containers.html | 5 +- .../fusion/sequences/containers/cons.html | 17 +- .../fusion/sequences/containers/list.html | 17 +- doc/html/fusion/sequences/containers/map.html | 17 +- doc/html/fusion/sequences/containers/set.html | 17 +- .../fusion/sequences/containers/vector.html | 17 +- doc/html/fusion/sequences/conversion.html | 17 +- .../sequences/conversion/functions.html | 3 +- .../conversion/functions/as_list.html | 15 +- .../conversion/functions/as_map.html | 15 +- .../conversion/functions/as_set.html | 15 +- .../conversion/functions/as_vector.html | 15 +- .../sequences/conversion/metafunctions.html | 3 +- .../conversion/metafunctions/as_list.html | 15 +- .../conversion/metafunctions/as_map.html | 15 +- .../conversion/metafunctions/as_set.html | 15 +- .../conversion/metafunctions/as_vector.html | 15 +- doc/html/fusion/sequences/generation.html | 24 +- .../sequences/generation/functions.html | 3 +- .../generation/functions/list_tie.html | 15 +- .../generation/functions/make_cons.html | 17 +- .../generation/functions/make_list.html | 17 +- .../generation/functions/make_map.html | 21 +- .../generation/functions/make_set.html | 21 +- .../generation/functions/make_vector.html | 17 +- .../sequences/generation/functions/tiers.html | 9 +- .../generation/functions/vector_tie.html | 15 +- .../sequences/generation/metafunctions.html | 3 +- .../generation/metafunctions/list_tie.html | 15 +- .../generation/metafunctions/make_cons.html | 15 +- .../generation/metafunctions/make_list.html | 15 +- .../generation/metafunctions/make_map.html | 21 +- .../generation/metafunctions/make_set.html | 19 +- .../generation/metafunctions/make_vector.html | 15 +- .../generation/metafunctions/vector_tie.html | 15 +- doc/html/fusion/sequences/intrinsics.html | 36 +- .../sequences/intrinsics/functions.html | 3 +- .../sequences/intrinsics/functions/at.html | 15 +- .../sequences/intrinsics/functions/at_c.html | 15 +- .../intrinsics/functions/at_key.html | 15 +- .../sequences/intrinsics/functions/back.html | 15 +- .../sequences/intrinsics/functions/begin.html | 15 +- .../sequences/intrinsics/functions/empty.html | 15 +- .../sequences/intrinsics/functions/end.html | 15 +- .../sequences/intrinsics/functions/front.html | 15 +- .../intrinsics/functions/has_key.html | 15 +- .../sequences/intrinsics/functions/size.html | 15 +- .../sequences/intrinsics/metafunctions.html | 3 +- .../intrinsics/metafunctions/at.html | 19 +- .../intrinsics/metafunctions/at_c.html | 19 +- .../intrinsics/metafunctions/at_key.html | 19 +- .../intrinsics/metafunctions/back.html | 15 +- .../intrinsics/metafunctions/begin.html | 15 +- .../intrinsics/metafunctions/empty.html | 15 +- .../intrinsics/metafunctions/end.html | 15 +- .../intrinsics/metafunctions/front.html | 15 +- .../intrinsics/metafunctions/has_key.html | 15 +- .../intrinsics/metafunctions/size.html | 15 +- .../intrinsics/metafunctions/value_at.html | 15 +- .../intrinsics/metafunctions/value_at_c.html | 15 +- .../metafunctions/value_at_key.html | 15 +- doc/html/fusion/sequences/operators.html | 20 +- .../sequences/operators/comparison.html | 5 +- .../sequences/operators/comparison/equal.html | 15 +- .../operators/comparison/greater_than.html | 13 +- .../comparison/greater_than_equal.html | 13 +- .../operators/comparison/less_than.html | 13 +- .../operators/comparison/less_than_equal.html | 13 +- .../operators/comparison/not_equal.html | 13 +- doc/html/fusion/sequences/operators/i_o.html | 5 +- .../fusion/sequences/operators/i_o/in.html | 15 +- .../fusion/sequences/operators/i_o/out.html | 15 +- doc/html/fusion/sequences/views.html | 5 +- .../fusion/sequences/views/filter_view.html | 17 +- .../sequences/views/iterator_range.html | 17 +- .../fusion/sequences/views/joint_view.html | 17 +- .../fusion/sequences/views/reverse_view.html | 15 +- .../fusion/sequences/views/single_view.html | 15 +- .../sequences/views/transform_view.html | 15 +- doc/html/fusion/sequences/views/zip_view.html | 17 +- doc/html/fusion/support.html | 3 +- doc/html/fusion/support/category_of.html | 15 +- doc/html/fusion/support/deduce.html | 13 +- doc/html/fusion/support/deduce_sequence.html | 13 +- doc/html/fusion/support/is_sequence.html | 15 +- doc/html/fusion/support/is_view.html | 15 +- doc/html/fusion/support/pair.html | 15 +- doc/html/fusion/support/tag_of.html | 15 +- doc/html/fusion/tuples.html | 3 +- .../fusion/tuples/class_template_tuple.html | 7 +- .../class_template_tuple/construction.html | 7 +- .../class_template_tuple/element_access.html | 7 +- .../relational_operators.html | 7 +- .../tuple_creation_functions.html | 7 +- .../tuple_helper_classes.html | 7 +- doc/html/fusion/tuples/pairs.html | 7 +- doc/html/index.html | 178 +---- 248 files changed, 3793 insertions(+), 3257 deletions(-) create mode 100644 doc/html/fusion/functional/generation/functions/mk_fused.html create mode 100644 doc/html/fusion/functional/generation/functions/mk_fused_fobj.html create mode 100644 doc/html/fusion/functional/generation/functions/mk_fused_proc.html create mode 100644 doc/html/fusion/functional/generation/functions/mk_unfused_genrc.html create mode 100644 doc/html/fusion/functional/generation/functions/mk_unfused_lvargs.html create mode 100644 doc/html/fusion/functional/generation/functions/mk_unfused_rvargs.html create mode 100644 doc/html/fusion/functional/generation/metafunctions/mk_fused.html create mode 100644 doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html create mode 100644 doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html create mode 100644 doc/html/fusion/functional/generation/metafunctions/mk_unfused_genrc.html create mode 100644 doc/html/fusion/functional/generation/metafunctions/mk_unfused_lvargs.html create mode 100644 doc/html/fusion/functional/generation/metafunctions/mk_unfused_rvargs.html create mode 100644 doc/html/fusion/functional/invocation/functions/invoke.html create mode 100644 doc/html/fusion/functional/invocation/functions/invoke_fobj.html create mode 100644 doc/html/fusion/functional/invocation/functions/invoke_proc.html create mode 100644 doc/html/fusion/functional/invocation/metafunctions/invoke.html create mode 100644 doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html create mode 100644 doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html diff --git a/doc/html/fusion/acknowledgements.html b/doc/html/fusion/acknowledgements.html index 16c64ee6..f18b0fdb 100644 --- a/doc/html/fusion/acknowledgements.html +++ b/doc/html/fusion/acknowledgements.html @@ -42,7 +42,8 @@ - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms.html b/doc/html/fusion/algorithms.html index ac0bf9c1..89f94e6c 100644 --- a/doc/html/fusion/algorithms.html +++ b/doc/html/fusion/algorithms.html @@ -30,91 +30,21 @@
    Iteration
    Functions
    -
    -
    fold
    -
    accumulate
    -
    for_each
    -
    Metafunctions
    -
    -
    fold
    -
    accumulate
    -
    for_each
    -
    Query
    Functions
    -
    -
    any
    -
    all
    -
    none
    -
    find
    -
    find_if
    -
    count
    -
    count_if
    -
    Metafunctions
    -
    -
    any
    -
    all
    -
    none
    -
    find
    -
    find_if
    -
    count
    -
    count_if
    -
    Transformation
    Functions
    -
    -
    filter
    -
    filter_if
    -
    transform
    -
    replace
    -
    replace_if
    -
    remove
    -
    remove_if
    -
    reverse
    -
    clear
    -
    erase
    -
    erase_key
    -
    insert
    -
    insert_range
    -
    join
    -
    zip
    -
    pop_back
    -
    pop_front
    -
    push_back
    -
    push_front
    -
    Metafunctions
    -
    -
    filter
    -
    filter_if
    -
    transform
    -
    replace
    -
    replace_if
    -
    remove
    -
    remove_if
    -
    reverse
    -
    clear
    -
    erase
    -
    erase_key
    -
    insert
    -
    insert_range
    -
    join
    -
    zip
    -
    pop_back
    -
    pop_front
    -
    push_back
    -
    push_front
    -

    - + Lazy Evaluation

    @@ -137,7 +67,7 @@ as we want without incurring a high runtime penalty.

    - + Sequence Extension

    @@ -160,7 +90,7 @@ functions to convert back to the original sequence type.

    - + Header

    @@ -169,7 +99,8 @@
     
     
    -
    +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/iteration.html b/doc/html/fusion/algorithms/iteration.html index b24155cb..31990fd7 100644 --- a/doc/html/fusion/algorithms/iteration.html +++ b/doc/html/fusion/algorithms/iteration.html @@ -27,24 +27,14 @@ Iteration

    The iteration algorithms provide the fundamental algorithms for traversing a sequence repeatedly applying an operation to its elements.

    - + Header

    @@ -53,7 +43,8 @@
     
     
    -
    +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/iteration/functions.html b/doc/html/fusion/algorithms/iteration/functions.html index 2bd75e70..e5767835 100644 --- a/doc/html/fusion/algorithms/iteration/functions.html +++ b/doc/html/fusion/algorithms/iteration/functions.html @@ -33,7 +33,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/iteration/functions/accumulate.html b/doc/html/fusion/algorithms/iteration/functions/accumulate.html index 5e75eec2..7ed3e1ed 100644 --- a/doc/html/fusion/algorithms/iteration/functions/accumulate.html +++ b/doc/html/fusion/algorithms/iteration/functions/accumulate.html @@ -26,7 +26,7 @@
    - + Description

    @@ -37,7 +37,7 @@ fold.

    - + Synopsis
    @@ -50,7 +50,7 @@
         Sequence& seq, State const& initial_state, F const& f);
     
    -

    Table 1.33. Parameters

    +

    Table 1.33. Parameters

    @@ -93,7 +93,7 @@
    - + Expression Semantics
    @@ -108,21 +108,21 @@ where e1 ...eN are the elements of seq.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of f.

    - + Header
     #include <boost/fusion/algorithm/iteration/accumulate.hpp>
     
    - + Example
    @@ -147,7 +147,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/iteration/functions/fold.html b/doc/html/fusion/algorithms/iteration/functions/fold.html index 435e08ae..800e4803 100644 --- a/doc/html/fusion/algorithms/iteration/functions/fold.html +++ b/doc/html/fusion/algorithms/iteration/functions/fold.html @@ -26,7 +26,7 @@
    - + Description

    @@ -36,7 +36,7 @@ to each element of a sequence and the previous state.

    - + Synopsis
    @@ -49,7 +49,7 @@
         Sequence& seq, State const& initial_state, F const& f);
     
    -

    Table 1.32. Parameters

    +

    Table 1.32. Parameters

    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -106,21 +106,21 @@ where e1 ...eN are the elements of seq.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of f.

    - + Header
     #include <boost/fusion/algorithm/iteration/fold.hpp>
     
    - + Example
    @@ -145,7 +145,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/iteration/functions/for_each.html b/doc/html/fusion/algorithms/iteration/functions/for_each.html index 74271b03..863f7897 100644 --- a/doc/html/fusion/algorithms/iteration/functions/for_each.html +++ b/doc/html/fusion/algorithms/iteration/functions/for_each.html @@ -26,14 +26,14 @@
    - + Description

    Applies a unary function object to each element of a sequence.

    - + Synopsis
    @@ -45,7 +45,7 @@
         Sequence& seq, F const& f);
     
    -

    Table 1.34. Parameters

    +

    Table 1.34. Parameters

    @@ -78,7 +78,7 @@
    - + Expression Semantics
    @@ -93,21 +93,21 @@ in seq.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of f.

    - + Header
     #include <boost/fusion/algorithm/iteration/for_each.hpp>
     
    - + Example
    @@ -127,7 +127,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/iteration/metafunctions.html b/doc/html/fusion/algorithms/iteration/metafunctions.html index 6330fe0d..47683514 100644 --- a/doc/html/fusion/algorithms/iteration/metafunctions.html +++ b/doc/html/fusion/algorithms/iteration/metafunctions.html @@ -33,7 +33,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html b/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html index 467fe2f6..49b016a9 100644 --- a/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html +++ b/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html @@ -26,14 +26,14 @@
    - + Description

    Returns the result type of accumulate.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.36. Parameters

    +

    Table 1.36. Parameters

    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -111,14 +111,14 @@ Function Object of type F.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of F.

    - + Header
    @@ -127,7 +127,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/fold.html b/doc/html/fusion/algorithms/iteration/metafunctions/fold.html index a0f1e15f..c935dc93 100644 --- a/doc/html/fusion/algorithms/iteration/metafunctions/fold.html +++ b/doc/html/fusion/algorithms/iteration/metafunctions/fold.html @@ -26,14 +26,14 @@
    - + Description

    Returns the result type of fold.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.35. Parameters

    +

    Table 1.35. Parameters

    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -111,14 +111,14 @@ Function Object of type F.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of F.

    - + Header
    @@ -127,7 +127,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html b/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html index 0aa28932..8a0a3ba5 100644 --- a/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html +++ b/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html @@ -30,11 +30,11 @@ return type of for_each is always void.

    - + Description
    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.37. Parameters

    +

    Table 1.37. Parameters

    @@ -80,7 +80,7 @@
    - + Expression Semantics
    @@ -98,14 +98,14 @@ return type is always void.

    - + Complexity

    Constant.

    - + Header
    @@ -114,7 +114,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/query.html b/doc/html/fusion/algorithms/query.html index 2df7f938..2d35022d 100644 --- a/doc/html/fusion/algorithms/query.html +++ b/doc/html/fusion/algorithms/query.html @@ -27,31 +27,13 @@ Query

    The query algorithms provide support for searching and analyzing sequences.

    - + Header

    @@ -60,7 +42,8 @@
     
     
    -
    +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/query/functions.html b/doc/html/fusion/algorithms/query/functions.html index 51a98f99..b47227f9 100644 --- a/doc/html/fusion/algorithms/query/functions.html +++ b/doc/html/fusion/algorithms/query/functions.html @@ -37,7 +37,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/query/functions/all.html b/doc/html/fusion/algorithms/query/functions/all.html index fea60b5f..b060a62b 100644 --- a/doc/html/fusion/algorithms/query/functions/all.html +++ b/doc/html/fusion/algorithms/query/functions/all.html @@ -26,7 +26,7 @@
    - + Description

    @@ -37,7 +37,7 @@ element of seq.

    - + Synopsis
    @@ -49,7 +49,7 @@
         Sequence const& seq, F f);
     
    -

    Table 1.39. Parameters

    +

    Table 1.39. Parameters

    @@ -84,7 +84,7 @@
    - + Expression Semantics
    @@ -101,21 +101,21 @@ element e in seq.

    - + Complexity

    Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
     #include <boost/fusion/algorithm/query/all.hpp>
     
    - + Example
    @@ -134,7 +134,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/query/functions/any.html b/doc/html/fusion/algorithms/query/functions/any.html index 936bbfe4..b8f49487 100644 --- a/doc/html/fusion/algorithms/query/functions/any.html +++ b/doc/html/fusion/algorithms/query/functions/any.html @@ -26,7 +26,7 @@
    - + Description

    @@ -37,7 +37,7 @@ least one element of seq.

    - + Synopsis
    @@ -49,7 +49,7 @@
         Sequence const& seq, F f);
     
    -

    Table 1.38. Parameters

    +

    Table 1.38. Parameters

    @@ -84,7 +84,7 @@
    - + Expression semantics
    @@ -101,21 +101,21 @@ element e in seq.

    - + Complexity

    Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
     #include <boost/fusion/algorithm/query/any.hpp>
     
    - + Example
    @@ -134,7 +134,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/query/functions/count.html b/doc/html/fusion/algorithms/query/functions/count.html index 8ffca992..2e508ff2 100644 --- a/doc/html/fusion/algorithms/query/functions/count.html +++ b/doc/html/fusion/algorithms/query/functions/count.html @@ -26,14 +26,14 @@
    - + Description

    Returns the number of elements of a given type within a sequence.

    - + Synopsis
    @@ -45,7 +45,7 @@
         Sequence const& seq, T const& t);
     
    -

    Table 1.43. Parameters

    +

    Table 1.43. Parameters

    @@ -81,7 +81,7 @@
    - + Expression Semantics
    @@ -97,21 +97,21 @@ t in seq.

    - + Complexity

    Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
     #include <boost/fusion/algorithm/query/count.hpp>
     
    - + Example
    @@ -121,7 +121,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/query/functions/count_if.html b/doc/html/fusion/algorithms/query/functions/count_if.html index cd36bc88..51f92335 100644 --- a/doc/html/fusion/algorithms/query/functions/count_if.html +++ b/doc/html/fusion/algorithms/query/functions/count_if.html @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ a given unary function object evaluates to true.

    - + Synopsis
    @@ -46,7 +46,7 @@
         Sequence const& seq, F f);
     
    -

    Table 1.44. Parameters

    +

    Table 1.44. Parameters

    @@ -81,7 +81,7 @@
    - + Expression Semantics
    @@ -96,21 +96,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>
     
    - + Example
    @@ -120,7 +120,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/query/functions/find.html b/doc/html/fusion/algorithms/query/functions/find.html index 41946f47..b3a6b50e 100644 --- a/doc/html/fusion/algorithms/query/functions/find.html +++ b/doc/html/fusion/algorithms/query/functions/find.html @@ -26,14 +26,14 @@
    - + Description

    Finds the first element of a given type within a sequence.

    - + Synopsis
    @@ -50,7 +50,7 @@
     unspecified find(Sequence& seq);
     
    -

    Table 1.41. Parameters

    +

    Table 1.41. Parameters

    @@ -82,7 +82,7 @@
    - + Expression Semantics
    @@ -100,21 +100,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>
     
    - + Example
    @@ -125,7 +125,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/query/functions/find_if.html b/doc/html/fusion/algorithms/query/functions/find_if.html index 21fbb442..61f159a5 100644 --- a/doc/html/fusion/algorithms/query/functions/find_if.html +++ b/doc/html/fusion/algorithms/query/functions/find_if.html @@ -31,11 +31,11 @@ Lambda Expression evaluates to boost::mpl::true_.

    - + Description
    - + Synopsis
    @@ -52,7 +52,7 @@
     unspecified find_if(Sequence& seq);
     
    -

    Table 1.42. Parameters

    +

    Table 1.42. Parameters

    @@ -86,7 +86,7 @@
    - + Expression Semantics
    @@ -105,21 +105,21 @@ 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>
     
    - + Example
    @@ -130,7 +130,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/query/functions/none.html b/doc/html/fusion/algorithms/query/functions/none.html index ef8532a6..fe64b207 100644 --- a/doc/html/fusion/algorithms/query/functions/none.html +++ b/doc/html/fusion/algorithms/query/functions/none.html @@ -26,7 +26,7 @@
    - + Description

    @@ -37,7 +37,7 @@ element of seq.

    - + Synopsis
    @@ -49,7 +49,7 @@
         Sequence const& seq, F f);
     
    -

    Table 1.40. Parameters

    +

    Table 1.40. Parameters

    @@ -84,7 +84,7 @@
    - + Expression Semantics
    @@ -101,21 +101,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>
     
    - + Example
    @@ -134,7 +134,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/query/metafunctions.html b/doc/html/fusion/algorithms/query/metafunctions.html index 7f643624..1d5e7e0e 100644 --- a/doc/html/fusion/algorithms/query/metafunctions.html +++ b/doc/html/fusion/algorithms/query/metafunctions.html @@ -37,7 +37,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/query/metafunctions/all.html b/doc/html/fusion/algorithms/query/metafunctions/all.html index 9bc0533a..e474eb54 100644 --- a/doc/html/fusion/algorithms/query/metafunctions/all.html +++ b/doc/html/fusion/algorithms/query/metafunctions/all.html @@ -26,14 +26,14 @@
    - + Description

    A metafunction returning the result type of all.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.46. Parameters

    +

    Table 1.46. Parameters

    @@ -82,7 +82,7 @@
    - + Expression Semantics
    @@ -102,14 +102,14 @@ The return type is always bool.

    - + Complexity

    Constant.

    - + Header
    @@ -118,7 +118,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/query/metafunctions/any.html b/doc/html/fusion/algorithms/query/metafunctions/any.html index 6951335f..1ec76401 100644 --- a/doc/html/fusion/algorithms/query/metafunctions/any.html +++ b/doc/html/fusion/algorithms/query/metafunctions/any.html @@ -26,14 +26,14 @@
    - + Description

    A metafunction returning the result type of any.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.45. Parameters

    +

    Table 1.45. Parameters

    @@ -82,7 +82,7 @@
    - + Expression Semantics
    @@ -102,14 +102,14 @@ The return type is always bool.

    - + Complexity

    Constant.

    - + Header
    @@ -118,7 +118,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/query/metafunctions/count.html b/doc/html/fusion/algorithms/query/metafunctions/count.html index f70a7a02..fdc787b6 100644 --- a/doc/html/fusion/algorithms/query/metafunctions/count.html +++ b/doc/html/fusion/algorithms/query/metafunctions/count.html @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ given the sequence and search types.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.50. Parameters

    +

    Table 1.50. Parameters

    @@ -81,7 +81,7 @@
    - + Expression Semantics
    @@ -97,14 +97,14 @@ int.

    - + Complexity

    Constant.

    - + Header
    @@ -113,7 +113,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/query/metafunctions/count_if.html b/doc/html/fusion/algorithms/query/metafunctions/count_if.html index 5b722547..0c1e311b 100644 --- a/doc/html/fusion/algorithms/query/metafunctions/count_if.html +++ b/doc/html/fusion/algorithms/query/metafunctions/count_if.html @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ given the sequence and predicate types.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.51. Parameters

    +

    Table 1.51. Parameters

    @@ -80,7 +80,7 @@
    - + Expression Semantics
    @@ -96,14 +96,14 @@ always int.

    - + Complexity

    Constant.

    - + Header
    @@ -112,7 +112,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/query/metafunctions/find.html b/doc/html/fusion/algorithms/query/metafunctions/find.html index 49131bdc..67d38802 100644 --- a/doc/html/fusion/algorithms/query/metafunctions/find.html +++ b/doc/html/fusion/algorithms/query/metafunctions/find.html @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ given the sequence and search types.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.48. Parameters

    +

    Table 1.48. Parameters

    @@ -80,7 +80,7 @@
    - + Expression Semantics
    @@ -97,14 +97,14 @@ in Sequence, or result_of::end<Sequence>::type if there is no such element.

    - + Complexity

    Linear, at most result_of::size<Sequence>::value comparisons.

    - + Header
    @@ -113,7 +113,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/query/metafunctions/find_if.html b/doc/html/fusion/algorithms/query/metafunctions/find_if.html index f2020c20..8bc4c672 100644 --- a/doc/html/fusion/algorithms/query/metafunctions/find_if.html +++ b/doc/html/fusion/algorithms/query/metafunctions/find_if.html @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ given the sequence and predicate types.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.49. Parameters

    +

    Table 1.49. Parameters

    @@ -82,7 +82,7 @@
    - + Expression Semantics
    @@ -100,14 +100,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
    @@ -116,7 +116,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/query/metafunctions/none.html b/doc/html/fusion/algorithms/query/metafunctions/none.html index d2cfecc8..abc2e587 100644 --- a/doc/html/fusion/algorithms/query/metafunctions/none.html +++ b/doc/html/fusion/algorithms/query/metafunctions/none.html @@ -26,14 +26,14 @@
    - + Description

    A metafunction returning the result type of none.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.47. Parameters

    +

    Table 1.47. Parameters

    @@ -82,7 +82,7 @@
    - + Expression Semantics
    @@ -102,14 +102,14 @@ The return type is always bool.

    - + Complexity

    Constant.

    - + Header
    @@ -118,7 +118,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/transformation.html b/doc/html/fusion/algorithms/transformation.html index eb90fe6f..0a4d7fb9 100644 --- a/doc/html/fusion/algorithms/transformation.html +++ b/doc/html/fusion/algorithms/transformation.html @@ -27,49 +27,7 @@ Transformation

    The transformation algorithms create new sequences out of existing sequences @@ -88,7 +46,7 @@

    - + Header

    @@ -97,7 +55,8 @@
     
     
    -
    +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/transformation/functions.html b/doc/html/fusion/algorithms/transformation/functions.html index 3143ea86..3ff862fb 100644 --- a/doc/html/fusion/algorithms/transformation/functions.html +++ b/doc/html/fusion/algorithms/transformation/functions.html @@ -49,7 +49,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/transformation/functions/clear.html b/doc/html/fusion/algorithms/transformation/functions/clear.html index 369a6060..13ae29d8 100644 --- a/doc/html/fusion/algorithms/transformation/functions/clear.html +++ b/doc/html/fusion/algorithms/transformation/functions/clear.html @@ -26,14 +26,14 @@
    - + Description

    clear returns an empty sequence.

    - + Synposis
    @@ -43,7 +43,7 @@
     typename result_of::clear<Sequence const>::type clear(Sequence const& seq);
     
    -

    Table 1.61. Parameters

    +

    Table 1.61. Parameters

    @@ -67,7 +67,7 @@
    - + Expression Semantics
    @@ -84,21 +84,21 @@ with no elements.

    - + Complexity

    Constant.

    - + Header
     #include <boost/fusion/algorithm/transformation/clear.hpp>
     
    - + Example
    @@ -107,7 +107,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/transformation/functions/erase.html b/doc/html/fusion/algorithms/transformation/functions/erase.html index e083ed1a..ed861b89 100644 --- a/doc/html/fusion/algorithms/transformation/functions/erase.html +++ b/doc/html/fusion/algorithms/transformation/functions/erase.html @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ those at a specified iterator, or between two iterators.

    - + Synposis
    @@ -54,7 +54,7 @@
         Sequence const& seq, First const& it1, Last const& it2);
     
    -

    Table 1.62. Parameters

    +

    Table 1.62. Parameters

    @@ -101,7 +101,7 @@
    - + Expression Semantics
    @@ -132,21 +132,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>
     
    - + Example
    @@ -157,7 +157,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/transformation/functions/erase_key.html b/doc/html/fusion/algorithms/transformation/functions/erase_key.html index 234c96ce..a340a57a 100644 --- a/doc/html/fusion/algorithms/transformation/functions/erase_key.html +++ b/doc/html/fusion/algorithms/transformation/functions/erase_key.html @@ -26,7 +26,7 @@
    - + Description

    @@ -39,7 +39,7 @@ with a given key.

    - + Synposis
    @@ -50,7 +50,7 @@
     typename result_of::erase_key<Sequence const, Key>::type erase_key(Sequence const& seq);
     
    -

    Table 1.63. Parameters

    +

    Table 1.63. Parameters

    @@ -82,7 +82,7 @@
    - + Expression Semantics
    @@ -100,21 +100,21 @@ except those with key Key.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
     #include <boost/fusion/algorithm/transformation/erase_key.hpp>
     
    - + Example
    @@ -123,7 +123,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/transformation/functions/filter.html b/doc/html/fusion/algorithms/transformation/functions/filter.html index c1d7b498..533fc8ee 100644 --- a/doc/html/fusion/algorithms/transformation/functions/filter.html +++ b/doc/html/fusion/algorithms/transformation/functions/filter.html @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ the elements of a specified type.

    - + Synopsis
    @@ -45,7 +45,7 @@
     typename result_of::filter<Sequence const, T>::type filter(Sequence const& seq);
     
    -

    Table 1.52. Parameters

    +

    Table 1.52. Parameters

    @@ -77,7 +77,7 @@
    - + Expression Semantics
    @@ -96,21 +96,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>
     
    - + Example
    @@ -120,7 +120,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/transformation/functions/filter_if.html b/doc/html/fusion/algorithms/transformation/functions/filter_if.html index 6c1844b6..ef3c3471 100644 --- a/doc/html/fusion/algorithms/transformation/functions/filter_if.html +++ b/doc/html/fusion/algorithms/transformation/functions/filter_if.html @@ -26,7 +26,7 @@
    - + Description

    @@ -35,7 +35,7 @@ Lambda Expression evaluates to boost::mpl::true_.

    - + Synopsis
    @@ -46,7 +46,7 @@
     typename result_of::filter_if<Sequence const, Pred>::type filter_if(Sequence const& seq);
     
    -

    Table 1.53. Parameters

    +

    Table 1.53. Parameters

    @@ -80,7 +80,7 @@
    - + Expression Semantics
    @@ -100,21 +100,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>
     
    - + Example
    @@ -124,7 +124,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/transformation/functions/insert.html b/doc/html/fusion/algorithms/transformation/functions/insert.html index d03f78e5..51c96f3a 100644 --- a/doc/html/fusion/algorithms/transformation/functions/insert.html +++ b/doc/html/fusion/algorithms/transformation/functions/insert.html @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ element inserted the position described by a given iterator.

    - + Synposis
    @@ -46,7 +46,7 @@
     unspecified insert(Sequence const& seq, Pos const& pos, T const& t);
     
    -

    Table 1.64. Parameters

    +

    Table 1.64. Parameters

    @@ -87,7 +87,7 @@
    - + Expression Semantics
    @@ -107,21 +107,21 @@ pos.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
     #include <boost/fusion/algorithm/transformation/insert.hpp>
     
    - + Example
    @@ -131,7 +131,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/transformation/functions/insert_range.html b/doc/html/fusion/algorithms/transformation/functions/insert_range.html index 818d035b..116b91fd 100644 --- a/doc/html/fusion/algorithms/transformation/functions/insert_range.html +++ b/doc/html/fusion/algorithms/transformation/functions/insert_range.html @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ iterator.

    - + Synposis
    @@ -47,7 +47,7 @@
         Sequence const& seq, Pos const& pos, Range const& range);
     
    -

    Table 1.65. Parameters

    +

    Table 1.65. Parameters

    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -111,21 +111,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>
     
    - + Example
    @@ -135,7 +135,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/transformation/functions/join.html b/doc/html/fusion/algorithms/transformation/functions/join.html index b4aa0a12..40f6810f 100644 --- a/doc/html/fusion/algorithms/transformation/functions/join.html +++ b/doc/html/fusion/algorithms/transformation/functions/join.html @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ first followed by the elements of the second.

    - + Synopsis
    @@ -44,7 +44,7 @@
     typename result_of::join<LhSequence, RhSequence>::type join(LhSequence const& lhs, RhSequence const& rhs);
     
    -

    Table 1.66. Parameters

    +

    Table 1.66. Parameters

    @@ -79,7 +79,7 @@
    - + Expression Semantics
    @@ -98,21 +98,21 @@ The order of th elements is preserved.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
     #include <boost/fusion/algorithm/transformation/join.hpp>
     
    - + Example
    @@ -123,7 +123,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/transformation/functions/pop_back.html b/doc/html/fusion/algorithms/transformation/functions/pop_back.html index 1968618e..beddbc62 100644 --- a/doc/html/fusion/algorithms/transformation/functions/pop_back.html +++ b/doc/html/fusion/algorithms/transformation/functions/pop_back.html @@ -26,14 +26,14 @@
    - + Description

    Returns a new sequence, with the last element of the original removed.

    - + Synopsis
    @@ -43,7 +43,7 @@
     typename result_of::pop_back<Sequence const>::type pop_back(Sequence const& seq);
     
    -

    Table 1.68. Parameters

    +

    Table 1.68. Parameters

    @@ -67,7 +67,7 @@
    - + Expression Semantics
    @@ -86,21 +86,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>
     
    - + Example
    @@ -109,7 +109,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/transformation/functions/pop_front.html b/doc/html/fusion/algorithms/transformation/functions/pop_front.html index e87c0e38..4c0c76f1 100644 --- a/doc/html/fusion/algorithms/transformation/functions/pop_front.html +++ b/doc/html/fusion/algorithms/transformation/functions/pop_front.html @@ -26,14 +26,14 @@
    - + Description

    Returns a new sequence, with the first element of the original removed.

    - + Synopsis
    @@ -43,7 +43,7 @@
     typename result_of::pop_front<Sequence const>::type pop_front(Sequence const& seq);
     
    -

    Table 1.69. Parameters

    +

    Table 1.69. Parameters

    @@ -67,7 +67,7 @@
    - + Expression Semantics
    @@ -86,21 +86,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>
     
    - + Example
    @@ -109,7 +109,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/transformation/functions/push_back.html b/doc/html/fusion/algorithms/transformation/functions/push_back.html index 3d4b08fe..f4259325 100644 --- a/doc/html/fusion/algorithms/transformation/functions/push_back.html +++ b/doc/html/fusion/algorithms/transformation/functions/push_back.html @@ -26,14 +26,14 @@
    - + Description

    Returns a new sequence with an element added at the end.

    - + Synopsis
    @@ -45,7 +45,7 @@
         Sequence const& seq, T const& t);
     
    -

    Table 1.70. Parameters

    +

    Table 1.70. Parameters

    @@ -77,7 +77,7 @@
    - + Expression Semantics
    @@ -96,21 +96,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>
     
    - + Example
    @@ -119,7 +119,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/transformation/functions/push_front.html b/doc/html/fusion/algorithms/transformation/functions/push_front.html index a85bd7d3..651f1172 100644 --- a/doc/html/fusion/algorithms/transformation/functions/push_front.html +++ b/doc/html/fusion/algorithms/transformation/functions/push_front.html @@ -26,14 +26,14 @@
    - + Description

    Returns a new sequence with an element added at the beginning.

    - + Synopsis
    @@ -45,7 +45,7 @@
         Sequence const& seq, T const& t);
     
    -

    Table 1.71. Parameters

    +

    Table 1.71. Parameters

    @@ -77,7 +77,7 @@
    - + Expression Semantics
    @@ -97,21 +97,21 @@ seq.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
     #include <boost/fusion/algorithm/transformation/push_front.hpp>
     
    - + Example
    @@ -120,7 +120,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/transformation/functions/remove.html b/doc/html/fusion/algorithms/transformation/functions/remove.html index c6db3fd3..6a5c1acb 100644 --- a/doc/html/fusion/algorithms/transformation/functions/remove.html +++ b/doc/html/fusion/algorithms/transformation/functions/remove.html @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ except those of a given type.

    - + Synopsis
    @@ -45,7 +45,7 @@
     typename result_of::remove<Sequence const, T>::type replace(Sequence const& seq);
     
    -

    Table 1.58. Parameters

    +

    Table 1.58. Parameters

    @@ -77,7 +77,7 @@
    - + Expression Semantics
    @@ -96,21 +96,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>
     
    - + Example
    @@ -120,7 +120,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/transformation/functions/remove_if.html b/doc/html/fusion/algorithms/transformation/functions/remove_if.html index 5b215f20..a1c1ac0d 100644 --- a/doc/html/fusion/algorithms/transformation/functions/remove_if.html +++ b/doc/html/fusion/algorithms/transformation/functions/remove_if.html @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ those where a given unary function object evaluates to true.

    - + Synopsis
    @@ -45,7 +45,7 @@
     typename result_of::remove_if<Sequence const, Pred>::type remove_if(Sequence const& seq);
     
    -

    Table 1.59. Parameters

    +

    Table 1.59. Parameters

    @@ -79,7 +79,7 @@
    - + Expression Semantics
    @@ -99,21 +99,21 @@ >(seq).

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
     #include <boost/fusion/algorithm/transformation/remove_if.hpp>
     
    - + Example
    @@ -123,7 +123,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/transformation/functions/replace.html b/doc/html/fusion/algorithms/transformation/functions/replace.html index d9c93a0d..9a7db88d 100644 --- a/doc/html/fusion/algorithms/transformation/functions/replace.html +++ b/doc/html/fusion/algorithms/transformation/functions/replace.html @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ a new value.

    - + Synopsis
    @@ -46,7 +46,7 @@
         Sequence const& seq, T const& old_value, T const& new_value);
     
    -

    Table 1.56. Parameters

    +

    Table 1.56. Parameters

    @@ -89,7 +89,7 @@
    - + Expression Semantics
    @@ -108,21 +108,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>
     
    - + Example
    @@ -131,7 +131,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/transformation/functions/replace_if.html b/doc/html/fusion/algorithms/transformation/functions/replace_if.html index 2ecf8ca4..9cd48436 100644 --- a/doc/html/fusion/algorithms/transformation/functions/replace_if.html +++ b/doc/html/fusion/algorithms/transformation/functions/replace_if.html @@ -26,7 +26,7 @@
    - + Description

    @@ -35,7 +35,7 @@ replaced with a new value.

    - + Synopsis
    @@ -47,7 +47,7 @@
         Sequence const& seq, F f, T const& new_value);
     
    -

    Table 1.57. Parameters

    +

    Table 1.57. Parameters

    @@ -88,7 +88,7 @@
    - + Expression Semantics
    @@ -108,21 +108,21 @@ evaluates to true.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
     #include <boost/fusion/algorithm/transformation/replace_if.hpp>
     
    - + Example
    @@ -140,7 +140,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/transformation/functions/reverse.html b/doc/html/fusion/algorithms/transformation/functions/reverse.html index 83023aae..4aa8b7fd 100644 --- a/doc/html/fusion/algorithms/transformation/functions/reverse.html +++ b/doc/html/fusion/algorithms/transformation/functions/reverse.html @@ -26,14 +26,14 @@
    - + Description

    Returns a new sequence with the elements of the original in reverse order.

    - + Synposis
    @@ -43,7 +43,7 @@
     typename result_of::reverse<Sequence const>::type reverse(Sequence const& seq);
     
    -

    Table 1.60. Parameters

    +

    Table 1.60. Parameters

    @@ -67,7 +67,7 @@
    - + Expression Semantics
    @@ -85,21 +85,21 @@ in reverse order.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
     #include <boost/fusion/algorithm/transformation/reverse.hpp>
     
    - + Example
    @@ -108,7 +108,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/transformation/functions/transform.html b/doc/html/fusion/algorithms/transformation/functions/transform.html index f98f369b..b12116b2 100644 --- a/doc/html/fusion/algorithms/transformation/functions/transform.html +++ b/doc/html/fusion/algorithms/transformation/functions/transform.html @@ -26,7 +26,7 @@
    - + Description

    @@ -38,7 +38,7 @@ to each element of seq.

    - + Unary version synopsis
    @@ -51,7 +51,7 @@ Sequence const& seq, F f);
    -

    Table 1.54. Parameters

    +

    Table 1.54. Parameters

    @@ -88,7 +88,7 @@
    - + Expression Semantics
    @@ -106,7 +106,7 @@ within seq.

    - + Binary version synopsis
    @@ -120,7 +120,7 @@ Sequence1 const& seq1, Sequence2 const& seq2, F f);
    -

    Table 1.55. Parameters

    +

    Table 1.55. Parameters

    @@ -176,21 +176,21 @@ within seq1 and seq2 respectively.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
     #include <boost/fusion/algorithm/transformation/transform.hpp>
     
    - + Example
    @@ -214,7 +214,8 @@
     
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/transformation/functions/zip.html b/doc/html/fusion/algorithms/transformation/functions/zip.html index 1a46ccb2..a6a6737d 100644 --- a/doc/html/fusion/algorithms/transformation/functions/zip.html +++ b/doc/html/fusion/algorithms/transformation/functions/zip.html @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ of the members of the component sequences.

    - + Synopsis
    @@ -48,7 +48,7 @@
     zip(Sequence1 const& seq1, Sequence2 const& seq2, ... SequenceN const& seqN);
     
    -

    Table 1.67. Parameters

    +

    Table 1.67. Parameters

    @@ -73,7 +73,7 @@
    - + Expression Semantics
    @@ -96,21 +96,21 @@ 'c'))

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
     #include <boost/fusion/algorithm/transformation/zip.hpp>
     
    - + Example
    @@ -121,7 +121,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions.html b/doc/html/fusion/algorithms/transformation/metafunctions.html index adc5b67d..c4de0434 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions.html @@ -49,7 +49,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/clear.html b/doc/html/fusion/algorithms/transformation/metafunctions/clear.html index 3f89f8f8..5c979962 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions/clear.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions/clear.html @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ type.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.80. Parameters

    +

    Table 1.80. Parameters

    @@ -68,7 +68,7 @@
    - + Expression Semantics
    @@ -84,14 +84,14 @@ Semantics: Returns an empty sequence.

    - + Complexity

    Constant.

    - + Header
    @@ -100,7 +100,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/erase.html b/doc/html/fusion/algorithms/transformation/metafunctions/erase.html index 1e498c8c..2b107e83 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions/erase.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions/erase.html @@ -30,11 +30,11 @@ and range delimiting iterator types.

    - + Description
    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.81. Parameters

    +

    Table 1.81. Parameters

    @@ -92,7 +92,7 @@
    - + Expression Semantics
    @@ -122,14 +122,14 @@ and It2 removed.

    - + Complexity

    Constant.

    - + Header
    @@ -138,7 +138,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html b/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html index 2b02d7bf..dd4bae14 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ and key types.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.82. Parameters

    +

    Table 1.82. Parameters

    @@ -80,7 +80,7 @@
    - + Expression Semantics
    @@ -98,14 +98,14 @@ except those with key Key.

    - + Complexity

    Constant.

    - + Header
    @@ -114,7 +114,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/filter.html b/doc/html/fusion/algorithms/transformation/metafunctions/filter.html index 2b4b2df4..95fc51b5 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions/filter.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions/filter.html @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ and type to retain.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.72. Parameter

    +

    Table 1.72. Parameter

    @@ -80,7 +80,7 @@
    - + Expression Semantics
    @@ -100,14 +100,14 @@ boost::is_same<mpl::_, T> >::type.

    - + Complexity

    Constant.

    - + Header
    @@ -116,7 +116,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html index 45bb3be3..f9668ecf 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html @@ -26,7 +26,7 @@
    - + Description

    @@ -35,7 +35,7 @@ Lambda Expression predicate type.

    - + Synopsis
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.73. Parameter

    +

    Table 1.73. Parameter

    @@ -83,7 +83,7 @@
    - + Expression Semantics
    @@ -102,14 +102,14 @@ to boost::mpl::true_.

    - + Complexity

    Constant.

    - + Header
    @@ -118,7 +118,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/insert.html b/doc/html/fusion/algorithms/transformation/metafunctions/insert.html index 2d57d8b4..d6a8cb65 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions/insert.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions/insert.html @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ position iterator and insertion types.

    - + Synopsis
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.83. Parameters

    +

    Table 1.83. Parameters

    @@ -90,7 +90,7 @@
    - + Expression Semantics
    @@ -109,14 +109,14 @@ in Sequence.

    - + Complexity

    Constant.

    - + Header
    @@ -125,7 +125,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html b/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html index 3f3ca8c7..55e5f007 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ sequence, position iterator and insertion range types.

    - + Synopsis
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.84. Parameters

    +

    Table 1.84. Parameters

    @@ -93,7 +93,7 @@
    - + Expression Semantics
    @@ -112,14 +112,14 @@ into Sequence.

    - + Complexity

    Constant.

    - + Header
    @@ -128,7 +128,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/join.html b/doc/html/fusion/algorithms/transformation/metafunctions/join.html index a03f6d07..655a4037 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions/join.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions/join.html @@ -26,14 +26,14 @@
    - + Description

    Returns the result of joining 2 sequences, given the sequence types.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    - + Expression Semantics
    @@ -66,14 +66,14 @@ The order of the elements in the 2 sequences is preserved.

    - + Complexity

    Constant.

    - + Header
    @@ -82,7 +82,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html b/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html index 37e39e0d..2ef4380d 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ type.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.85. Parameters

    +

    Table 1.85. Parameters

    @@ -71,7 +71,7 @@
    - + Expression Semantics
    @@ -89,14 +89,14 @@ except the last element.

    - + Complexity

    Constant.

    - + Header
    @@ -105,7 +105,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html b/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html index b1285bd9..81153330 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ type.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.86. Parameters

    +

    Table 1.86. Parameters

    @@ -71,7 +71,7 @@
    - + Expression Semantics
    @@ -89,14 +89,14 @@ except the first element.

    - + Complexity

    Constant.

    - + Header
    @@ -105,7 +105,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html b/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html index 2fedcafd..353e79e4 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ the input sequence and element to push.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.87. Parameters

    +

    Table 1.87. Parameters

    @@ -80,7 +80,7 @@
    - + Expression Semantics
    @@ -99,14 +99,14 @@ added to the end.

    - + Complexity

    Constant.

    - + Header
    @@ -115,7 +115,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html b/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html index 562e7479..ec64efd3 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ of the input sequence and element to push.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.88. Parameters

    +

    Table 1.88. Parameters

    @@ -80,7 +80,7 @@
    - + Expression Semantics
    @@ -99,14 +99,14 @@ added to the beginning.

    - + Complexity

    Constant.

    - + Header
    @@ -115,7 +115,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/remove.html b/doc/html/fusion/algorithms/transformation/metafunctions/remove.html index 809ea73f..aebc4373 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions/remove.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions/remove.html @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ removal types.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.77. Parameters

    +

    Table 1.77. Parameters

    @@ -80,7 +80,7 @@
    - + Expression Semantics
    @@ -100,14 +100,14 @@ boost::is_same<mpl::_, T> >::type.

    - + Complexity

    Constant.

    - + Header
    @@ -116,7 +116,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html index aa1aeb7b..72b3f0e5 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html @@ -26,7 +26,7 @@
    - + Description

    @@ -35,7 +35,7 @@ Lambda Expression predicate types.

    - + Synopsis
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.78. Parameters

    +

    Table 1.78. Parameters

    @@ -85,7 +85,7 @@
    - + Expression Semantics
    @@ -104,14 +104,14 @@ to boost::mpl::false_.

    - + Complexity

    Constant.

    - + Header
    @@ -120,7 +120,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/replace.html b/doc/html/fusion/algorithms/transformation/metafunctions/replace.html index f74b9ff9..8efd0542 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions/replace.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions/replace.html @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ the input sequence and element to replace.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.75. Parameters

    +

    Table 1.75. Parameters

    @@ -80,7 +80,7 @@
    - + Expression Semantics
    @@ -97,14 +97,14 @@ replace.

    - + Complexity

    Constant.

    - + Header
    @@ -113,7 +113,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html index e160bd4f..05090b56 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html @@ -26,7 +26,7 @@
    - + Description

    @@ -36,7 +36,7 @@ Function Object predicate and replacement object.

    - + Synopsis
    @@ -50,7 +50,7 @@
     };
     
    -

    Table 1.76. Parameters

    +

    Table 1.76. Parameters

    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -108,14 +108,14 @@ replace_if.

    - + Complexity

    Constant.

    - + Header
    @@ -124,7 +124,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html b/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html index 6861a736..d612bd22 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ type.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.79. Parameters

    +

    Table 1.79. Parameters

    @@ -71,7 +71,7 @@
    - + Expression Semantics
    @@ -88,14 +88,14 @@ elements in the reverse order to Sequence.

    - + Complexity

    Constant.

    - + Header
    @@ -104,7 +104,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/transform.html b/doc/html/fusion/algorithms/transformation/metafunctions/transform.html index cb5ce13e..35ff7a35 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions/transform.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions/transform.html @@ -26,7 +26,7 @@
    - + Description

    @@ -36,7 +36,7 @@ Object types.

    - + Synopsis
    @@ -50,7 +50,7 @@
     };
     
    -

    Table 1.74. Parameters

    +

    Table 1.74. Parameters

    @@ -84,7 +84,7 @@
    - + Expression Semantics
    @@ -101,14 +101,14 @@ F::result<E>::type for each element type E in Sequence.

    - + Complexity

    Constant.

    - + Header
    @@ -117,7 +117,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/zip.html b/doc/html/fusion/algorithms/transformation/metafunctions/zip.html index 3a3124b4..da7866ad 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions/zip.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions/zip.html @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ of the members of the component sequences.

    - + Synopsis
    @@ -50,7 +50,7 @@
     };
     
    - + Expression Semantics
    @@ -73,14 +73,14 @@ 'c'))

    - + Complexity

    Constant.

    - + Header
    @@ -89,7 +89,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/change_log.html b/doc/html/fusion/change_log.html index d3079150..ca9b53e5 100644 --- a/doc/html/fusion/change_log.html +++ b/doc/html/fusion/change_log.html @@ -41,7 +41,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/extension.html b/doc/html/fusion/extension.html index 5e5861f8..a35632dd 100644 --- a/doc/html/fusion/extension.html +++ b/doc/html/fusion/extension.html @@ -48,7 +48,7 @@

    - + Our example

    @@ -80,7 +80,7 @@ Start guide.

    - + Enabling Tag Dispatching

    @@ -121,7 +121,7 @@ #include <boost/fusion/sequence/adapted/mpl/tag_of.hpp>

    - + Designing a suitable iterator

    @@ -184,7 +184,7 @@ clearer as we add features to our implementation.

    - + A first couple of instructive features

    @@ -328,7 +328,7 @@

    - + Implementing the remaining iterator functionality

    @@ -383,7 +383,7 @@ are provided in the example code.

    - + Implementing the intrinsic functions of the sequence

    @@ -442,7 +442,7 @@ value_at_impl and at_impl.

    - + Enabling our type as an associative container

    @@ -508,7 +508,7 @@ of is_associative_impl.

    - + Summary

    @@ -525,7 +525,8 @@ - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger


    diff --git a/doc/html/fusion/functional.html b/doc/html/fusion/functional.html index 53449074..c0393988 100644 --- a/doc/html/fusion/functional.html +++ b/doc/html/fusion/functional.html @@ -60,14 +60,14 @@ through a function object interface.

    - + Header

     #include <boost/fusion/functional.hpp>
     

    - + Fused and unfused forms

    @@ -104,7 +104,7 @@ form of f'.

    - + Calling functions and function objects

    @@ -132,7 +132,7 @@ instance for the given argument.

    - + Making Fusion code callable through a function object interface

    @@ -152,7 +152,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/functional/adapters.html b/doc/html/fusion/functional/adapters.html index d7c1557e..b435b48c 100644 --- a/doc/html/fusion/functional/adapters.html +++ b/doc/html/fusion/functional/adapters.html @@ -6,7 +6,8 @@ - + @@ -20,7 +21,7 @@
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -40,11 +41,12 @@

    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/adapters/fused.html b/doc/html/fusion/functional/adapters/fused.html index 49de6643..c5ddb931 100644 --- a/doc/html/fusion/functional/adapters/fused.html +++ b/doc/html/fusion/functional/adapters/fused.html @@ -26,7 +26,7 @@
    - + Description

    @@ -62,14 +62,14 @@ and boost::shared_ptr).

    - + Header
     #include <boost/fusion/functional/adapter/fused.hpp>
     
    - + Synopsis
    @@ -77,7 +77,7 @@
     class fused;
     
    - + Template parameters
    @@ -103,7 +103,7 @@
    - + Model of
      @@ -139,7 +139,7 @@
    - + Expression Semantics
    @@ -173,27 +173,28 @@
    - + Example
     fused< std::plus<long> > f;
    -assert(f(make_vector(1,2l)) == 3l);
    +assert(f(make_vector(1,2l)) == 3l);
     
    - + See also
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/functional/adapters/fused_function_object.html b/doc/html/fusion/functional/adapters/fused_function_object.html index 7cfafe98..d64140a8 100644 --- a/doc/html/fusion/functional/adapters/fused_function_object.html +++ b/doc/html/fusion/functional/adapters/fused_function_object.html @@ -26,7 +26,7 @@
    - + Description

    @@ -50,14 +50,14 @@ object is held by value, the adapter is const).

    - + Header
     #include <boost/fusion/functional/adapter/fused_function_object.hpp>
     
    - + Synopsis
    @@ -65,7 +65,7 @@
     class fused_function_object;
     
    - + Template parameters
    @@ -90,7 +90,7 @@
    - + Model of
    @@ -127,7 +127,7 @@
    - + Expression Semantics
    @@ -161,16 +161,16 @@
    - + Example
     template<class SeqOfSeqs, class Func>
    -typename result_of::transform< zip_view<SeqOfSeqs> const,
    +typename result_of::transform< zip_view<SeqOfSeqs> const,
         fused_function_object<Func const &> >::type
     n_ary_transform(SeqOfSeqs const & s, Func const & f)
     {
    -    return transform(zip_view<SeqOfSeqs>(s), 
    +    return transform(zip_view<SeqOfSeqs>(s), 
             fused_function_object<Func const &>(f));
     } 
     
    @@ -194,24 +194,26 @@
         vector<int,float> a(2,2.0f);
         vector<int,float> b(1,1.5f);
         vector<int,float> c(1,0.5f);
    -    assert(c == n_ary_transform(vector_tie(a,b), sub()));
    +    assert(c == n_ary_transform(vector_tie(a,b), sub()));
     }
     
    - + See also
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/functional/adapters/fused_procedure.html b/doc/html/fusion/functional/adapters/fused_procedure.html index 1f705a56..7ae75031 100644 --- a/doc/html/fusion/functional/adapters/fused_procedure.html +++ b/doc/html/fusion/functional/adapters/fused_procedure.html @@ -26,7 +26,7 @@
    - + Description

    @@ -67,14 +67,14 @@ implemented).

    - + Header
     #include <boost/fusion/functional/adapter/fused_procedure.hpp>
     
    - + Synopsis
    @@ -82,7 +82,7 @@
     class fused_procedure;
     
    - + Template parameters
    @@ -106,7 +106,7 @@
    - + Model of
    @@ -142,7 +142,7 @@
    - + Expression Semantics
    @@ -176,14 +176,14 @@
    - + Example
     template<class SequenceOfSequences, class Func>
     void n_ary_for_each(SequenceOfSequences const & s, Func const & f)
     {
    -    for_each(zip_view<SequenceOfSequences>(s), 
    +    for_each(zip_view<SequenceOfSequences>(s), 
             fused_procedure<Func const &>(f));
     } 
     
    @@ -192,24 +192,26 @@
         vector<int,float> a(2,2.0f);
         vector<int,float> b(1,1.5f);
         using namespace boost::lambda;
    -    n_ary_for_each(vector_tie(a,b), _1 -= _2);
    -    assert(a == make_vector(1,0.5f));
    +    n_ary_for_each(vector_tie(a,b), _1 -= _2);
    +    assert(a == make_vector(1,0.5f));
     }
     
    - + See also
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/functional/adapters/unfused_generic.html b/doc/html/fusion/functional/adapters/unfused_generic.html index 9b6a5590..228308c9 100644 --- a/doc/html/fusion/functional/adapters/unfused_generic.html +++ b/doc/html/fusion/functional/adapters/unfused_generic.html @@ -26,7 +26,7 @@
    - + Description

    @@ -81,14 +81,14 @@ object is held by value, the adapter is const).

    - + Header
     #include <boost/fusion/functional/adapter/unfused_generic.hpp>
     
    - + Synopsis
    @@ -96,7 +96,7 @@
     class unfused_generic;
     
    - + Template parameters
    @@ -122,7 +122,7 @@
    - + Model of
    @@ -163,7 +163,7 @@
    - + Expression Semantics
    @@ -198,7 +198,7 @@
    - + Example
    @@ -215,14 +215,14 @@
     
         template <class Seq>
         struct result
    -        : result_of::invoke< Function,
    -            typename result_of::push_front<Seq, T>::type >
    +        : result_of::invoke< Function,
    +            typename result_of::push_front<Seq, T>::type >
         { };
     
         template <class Seq>
         typename result<Seq>::type operator()(Seq const & s) const
         {
    -        return invoke(fnc_deferred, push_front(s,xxx_bound));
    +        return invoke(fnc_deferred, push_front(s,xxx_bound));
         }
     };
     
    @@ -246,7 +246,7 @@
     }
     
    - + See also
    @@ -260,7 +260,8 @@ - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/functional/adapters/unfused_lvalue_args.html b/doc/html/fusion/functional/adapters/unfused_lvalue_args.html index 430d96f9..014dca6a 100644 --- a/doc/html/fusion/functional/adapters/unfused_lvalue_args.html +++ b/doc/html/fusion/functional/adapters/unfused_lvalue_args.html @@ -26,7 +26,7 @@
    - + Description

    @@ -68,14 +68,14 @@ object is held by value, the adapter is const).

    - + Header
     #include <boost/fusion/functional/adapter/unfused_lvalue_args.hpp>
     
    - + Synopsis
    @@ -83,7 +83,7 @@
     class unfused_lvalue_args;
     
    - + Template parameters
    @@ -109,7 +109,7 @@
    - + Model of
    @@ -150,7 +150,7 @@
    - + Expression Semantics
    @@ -185,7 +185,7 @@
    - + Example
    @@ -200,7 +200,7 @@
         template <class Seq>
         void operator()(Seq const & s) const
         {
    -        for_each(s,++boost::lambda::_1);
    +        for_each(s,++boost::lambda::_1);
         }
     };
     
    @@ -213,7 +213,7 @@
     }
     
    - + See also
    @@ -225,7 +225,8 @@ - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/functional/adapters/unfused_rvalue_args.html b/doc/html/fusion/functional/adapters/unfused_rvalue_args.html index 3033d70b..d8f83f5a 100644 --- a/doc/html/fusion/functional/adapters/unfused_rvalue_args.html +++ b/doc/html/fusion/functional/adapters/unfused_rvalue_args.html @@ -26,7 +26,7 @@
    - + Description

    @@ -68,14 +68,14 @@ object is held by value, the adapter is const).

    - + Header
     #include <boost/fusion/functional/adapter/unfused_rvalue_args.hpp>
     
    - + Synopsis
    @@ -83,7 +83,7 @@
     class unfused_rvalue_args;
     
    - + Template parameters
    @@ -109,7 +109,7 @@
    - + Model of
    @@ -150,7 +150,7 @@
    - + Expression Semantics
    @@ -185,7 +185,7 @@
    - + Example
    @@ -211,7 +211,7 @@
     }
     
    - + See also
    @@ -225,7 +225,8 @@ - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/functional/adapters/unfused_typed.html b/doc/html/fusion/functional/adapters/unfused_typed.html index 531dbfc1..316c25eb 100644 --- a/doc/html/fusion/functional/adapters/unfused_typed.html +++ b/doc/html/fusion/functional/adapters/unfused_typed.html @@ -26,7 +26,7 @@
    - + Description

    @@ -85,14 +85,14 @@

    - + Header
     #include <boost/fusion/functional/adapter/unfused_typed.hpp>
     
    - + Synopsis
    @@ -100,7 +100,7 @@
     class unfused_typed;
     
    - + Template parameters
    @@ -135,7 +135,7 @@
    - + Model of
    @@ -181,7 +181,7 @@
    - + Expression Semantics
    @@ -217,7 +217,7 @@
    - + Example
    @@ -250,7 +250,7 @@
         template <class Seq>
         void operator()(Seq const & s) const
         {
    -        for_each(zip(tie_dest,s), fused<add_assign>() );
    +        for_each(zip(tie_dest,s), fused<add_assign>() );
         }
     };
     
    @@ -286,7 +286,7 @@
     }
     
    - + See also
      @@ -299,7 +299,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/functional/concepts.html b/doc/html/fusion/functional/concepts.html index 5cff48ee..edd9ef11 100644 --- a/doc/html/fusion/functional/concepts.html +++ b/doc/html/fusion/functional/concepts.html @@ -35,7 +35,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/functional/concepts/callable.html b/doc/html/fusion/functional/concepts/callable.html index cd5cfdf3..f110fd56 100644 --- a/doc/html/fusion/functional/concepts/callable.html +++ b/doc/html/fusion/functional/concepts/callable.html @@ -35,7 +35,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/functional/concepts/def_callable.html b/doc/html/fusion/functional/concepts/def_callable.html index c549764c..dcc1b3c0 100644 --- a/doc/html/fusion/functional/concepts/def_callable.html +++ b/doc/html/fusion/functional/concepts/def_callable.html @@ -30,7 +30,7 @@ Callable Object"> Deferred Callable Object
    - + Description

    @@ -40,7 +40,7 @@ by the standard library).

    - + Refinement of
    @@ -60,7 +60,7 @@
    - + Expression requirements
    @@ -81,7 +81,7 @@
    - + Models
    • @@ -90,7 +90,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/functional/concepts/poly.html b/doc/html/fusion/functional/concepts/poly.html index 1ea02616..d99e05c6 100644 --- a/doc/html/fusion/functional/concepts/poly.html +++ b/doc/html/fusion/functional/concepts/poly.html @@ -30,7 +30,7 @@ Object"> Polymorphic Function Object
    - + Description

    @@ -39,7 +39,7 @@ type of calling the function object, given the argument types.

    - + Refinement of
    @@ -68,7 +68,7 @@
    - + Expression requirements
    @@ -91,7 +91,7 @@
    - + Models
    • @@ -100,7 +100,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/functional/generation.html b/doc/html/fusion/functional/generation.html index 2786aada..42593339 100644 --- a/doc/html/fusion/functional/generation.html +++ b/doc/html/fusion/functional/generation.html @@ -32,7 +32,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/functional/generation/functions.html b/doc/html/fusion/functional/generation/functions.html index 623c9bf1..116327be 100644 --- a/doc/html/fusion/functional/generation/functions.html +++ b/doc/html/fusion/functional/generation/functions.html @@ -7,7 +7,8 @@ - + @@ -20,657 +21,34 @@

    -PrevUpHomeNext +PrevUpHomeNext
    -
    - -
    - - Description -
    -

    - Creates a fused adapter for a given Deferred Callable Object. - The usual element - conversion is applied to the target function. -

    -
    - - Synopsis -
    -
    -template <typename F>
    -inline typename make_fused<F>::type
    -make_fused(F const & f);
    -
    -
    - - Parameters -
    -
    ----- - - - - - - - - - - -
    ParameterRequirementDescription
    fModel - of Deferred - Callable Object -The function to transform.
    -
    - - Expression - Semantics -
    -
    -make_fused(f);
    -
    -

    - Return type: A specialization of fused. -

    -

    - Semantics: Returns a fused adapter for f. -

    -
    - - Header -
    -
    -#include <boost/fusion/functional/generation/make_fused.hpp>
    -
    -
    - - Example -
    -
    -float sub(float a, float b) { return a - b; }
    -
    -void try_it()
    -{
    -    vector<int,float> a(2,2.0f);
    -    vector<int,float> b(1,1.5f);
    -    vector<float,float> c(1.0f,0.5f);
    -    assert(c == transform(zip(a,b), make_fused(& sub)));
    -    assert(c == transform(zip(a,b), make_fused(std::minus<float>())));
    -}
    -
    -
    - - See - also -
    - -
    -
    - -
    - - Description -
    -

    - Creates a fused_procedure adapter for - a given Deferred - Callable Object. The usual element - conversion applied to the target function. -

    -
    - - Synopsis -
    -
    -template <typename F>
    -inline typename make_fused_procedure<F>::type
    -make_fused_procedure(F const & f);
    -
    -
    - - Parameters -
    -
    ----- - - - - - - - - - - -
    ParameterRequirementDescription
    fModel - of Callable - Object -The function to transform.
    -
    - - Expression - Semantics -
    -
    -make_fused_procedure(f);
    -
    -

    - Return type: A specialization of fused_procedure. -

    -

    - Semantics: Returns a fused_procedure adapter for - f. -

    -
    - - Header -
    -
    -#include <boost/fusion/functional/generation/make_fused_procedure.hpp>
    -
    -
    - - Example -
    -
    -vector<int,int,int> v(1,2,3);
    -using namespace boost::lambda;
    -make_fused_procedure(_1 += _2 - _3)(v);
    -assert(front(v) == 0);
    -
    -
    - - See - also -
    - -
    -
    - -
    - - Description -
    -

    - Creates a fused_function_object adapter - for a given Deferred - Callable Object. The usual element - conversion is applied to the target function. -

    -
    - - Synopsis -
    -
    -template <typename F>
    -inline typename make_fused_function_object<F>::type
    -make_fused_function_object(F const & f);
    -
    -
    - - Parameters -
    -
    ----- - - - - - - - - - - -
    ParameterRequirementDescription
    fModel - of Polymorphic - Function Object -The function to transform.
    -
    - - Expression - Semantics -
    -
    -make_fused_function_object(f);
    -
    -

    - Return type: A specialization of fused_function_object. -

    -

    - Semantics: Returns a fused_function_object adapter - for f. -

    -
    - - Header -
    -
    -#include <boost/fusion/functional/generation/make_fused_function_object.hpp>
    -
    -
    - - Example -
    -
    -struct sub
    -{
    -    template<typename T, typename _>
    -    struct result
    -    {
    -        typedef T type;
    -    };
    -
    -    template<typename T>
    -    T operator()(T lhs, T rhs) const
    -    {
    -        return lhs - rhs;
    -    }
    -};
    -
    -void try_it()
    -{
    -    vector<int,float> a(2,2.0f);
    -    vector<int,float> b(1,1.5f);
    -    vector<int,float> c(1,0.5f);
    -    assert(c == transform(zip(a,b), make_fused_function_object(sub())));
    -}
    -
    -
    - - See - also -
    - -
    -
    - -
    - - Description -
    -

    - Creates a unfused_generic adapter for - a given, unary Polymorphic - Function Object. The usual element - conversion is applied to the target function. -

    -
    - - Synopsis -
    -
    -template <typename F>
    -inline typename make_unfused_generic<F>::type
    -make_unfused_generic(F const & f);
    -
    -
    - - Parameters -
    -
    ----- - - - - - - - - - - -
    ParameterRequirementDescription
    fModel - of Polymorphic - Function Object -The function to transform.
    -
    - - Expression - Semantics -
    -
    -make_unfused_generic(f);
    -
    -

    - Return type: A specialization of unfused_generic. -

    -

    - Semantics: Returns a unfused_generic adapter for - f. -

    -
    - - Header -
    -
    -#include <boost/fusion/functional/generation/make_unfused_generic.hpp>
    -
    -
    - - Example -
    -
    -struct bottles_song
    -{
    -    template<class Seq>
    -    struct result
    -        : mpl::if_< mpl::less< result_of::size<Seq>, mpl::int_<2> >,
    -            boost::blank, mpl::identity<void> >::type
    -    { };
    -
    -    template<class Seq> 
    -    void operator()(Seq & s) const
    -    {
    -        typename result_of::at_c<Seq,0>::type n = at_c<0>(s);
    -        typename result_of::at_c<Seq,1>::type what = at_c<1>(s);
    -
    -        std::cout 
    -            << n << " bottles of " << what << " on the wall.\n" 
    -            << n << " bottles of " << what << "!\n"
    -            << "Take one down - pass it around.\n";
    -
    -        n -= 1; // glug glug...
    -
    -        std::cout
    -            << n << " bottles of " << what << " on the wall.\n" 
    -            << std::endl;
    -    }
    -};
    -
    -void try_it()
    -{
    -    unsigned n_milk = 99;
    -    for(int i = 0; i < 3; ++i)
    -        make_unfused_generic(bottles_song())(n_milk,"milk");
    -    // 96 bottles left for me
    -}
    -
    -
    - - See - also -
    - -
    -
    - -
    - - Description -
    -

    - Creates a unfused_lvalue_args adapter - for a given, unary Polymorphic - Function Object. The usual element - conversion is applied to the target function. -

    -
    - - Synopsis -
    -
    -template <typename F>
    -inline typename make_unfused_lvalue_args<F>::type
    -make_unfused_lvalue_args(F const & f);
    -
    -
    - - Parameters -
    -
    ----- - - - - - - - - - - -
    ParameterRequirementDescription
    fModel - of Polymorphic - Function Object -The function to transform.
    -
    - - Expression - Semantics -
    -
    -make_unfused_lvalue_args(f);
    -
    -

    - Return type: A specialization of unfused_lvalue_args. -

    -

    - Semantics: Returns a unfused_lvalue_args adapter - for f. -

    -
    - - Header -
    -
    -#include <boost/fusion/functional/generation/make_unfused_lvalue_args.hpp>
    -
    -
    - - Example -
    -
    -struct fused_incrementer
    -{
    -    template <class Seq> 
    -    struct result 
    -    { 
    -        typedef void type;
    -    };
    -
    -    template <class Seq>
    -    void operator()(Seq const & s) const
    -    {
    -        for_each(s,++boost::lambda::_1);
    -    }
    -};
    -
    -void try_it()
    -{
    -    int a = 2; char b = 'X';
    -    make_unfused_lvalue_args(fused_incrementer())(a,b);
    -    assert(a == 3 && b == 'Y');
    -}
    -
    -
    - - See - also -
    - -
    -
    - -
    - - Description -
    -

    - Creates a unfused_rvalue_args adapter - for a given, unary Polymorphic - Function Object. The usual element - conversion is applied to the target function. -

    -
    - - Synopsis -
    -
    -template <typename F>
    -inline typename make_unfused_rvalue_args<F>::type
    -make_unfused_rvalue_args(F const & f);
    -
    -
    - - Parameters -
    -
    ----- - - - - - - - - - - -
    ParameterRequirementDescription
    fModel - of Polymorphic - Function Object -The function to transform.
    -
    - - Expression - Semantics -
    -
    -make_unfused_rvalue_args(f);
    -
    -

    - Return type: A specialization of unfused_rvalue_args. -

    -

    - Semantics: Returns a unfused_rvalue_args adapter - for f. -

    -
    - - Header -
    -
    -#include <boost/fusion/functional/generation/make_unfused_rvalue_args.hpp>
    -
    -
    - - Example -
    -
    -struct sequence_printer
    -{
    -    template <class Seq> 
    -    struct result 
    -    { 
    -        typedef void type;
    -    };
    -
    -    template <class Seq>
    -    void operator()(Seq const & s) const
    -    {
    -        std::cout << s << std::endl;
    -    }
    -};
    -
    -void try_it()
    -{
    -    make_unfused_rvalue_args(sequence_printer())
    -        (24,"bottles of beer in",'a',"box.");
    -}
    -
    -
    - - See - also -
    - -
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/generation/functions/mk_fused.html b/doc/html/fusion/functional/generation/functions/mk_fused.html new file mode 100644 index 00000000..b8578c1d --- /dev/null +++ b/doc/html/fusion/functional/generation/functions/mk_fused.html @@ -0,0 +1,136 @@ + + + + + make_fused + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + Creates a fused adapter for a given Deferred Callable Object. + The usual element + conversion is applied to the target function. +

    +
    + + Synopsis +
    +
    +template <typename F>
    +inline typename make_fused<F>::type
    +make_fused(F const & f);
    +
    +
    + + Parameters +
    +
    +++++ + + + + + + + + + + +
    ParameterRequirementDescription
    fModel + of Deferred + Callable Object +The function to transform.
    +
    + + Expression + Semantics +
    +
    +make_fused(f);
    +
    +

    + Return type: A specialization of fused. +

    +

    + Semantics: Returns a fused adapter for f. +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/generation/make_fused.hpp>
    +
    +
    + + Example +
    +
    +float sub(float a, float b) { return a - b; }
    +
    +void try_it()
    +{
    +    vector<int,float> a(2,2.0f);
    +    vector<int,float> b(1,1.5f);
    +    vector<float,float> c(1.0f,0.5f);
    +    assert(c == transform(zip(a,b), make_fused(& sub)));
    +    assert(c == transform(zip(a,b), make_fused(std::minus<float>())));
    +}
    +
    +
    + + See + also +
    + +
    + + + +
    Copyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html b/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html new file mode 100644 index 00000000..aced6fdd --- /dev/null +++ b/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html @@ -0,0 +1,151 @@ + + + + + make_fused_function_object + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + Creates a fused_function_object adapter + for a given Deferred + Callable Object. The usual element + conversion is applied to the target function. +

    +
    + + Synopsis +
    +
    +template <typename F>
    +inline typename make_fused_function_object<F>::type
    +make_fused_function_object(F const & f);
    +
    +
    + + Parameters +
    +
    +++++ + + + + + + + + + + +
    ParameterRequirementDescription
    fModel + of Polymorphic + Function Object +The function to transform.
    +
    + + Expression + Semantics +
    +
    +make_fused_function_object(f);
    +
    +

    + Return type: A specialization of fused_function_object. +

    +

    + Semantics: Returns a fused_function_object adapter + for f. +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/generation/make_fused_function_object.hpp>
    +
    +
    + + Example +
    +
    +struct sub
    +{
    +    template<typename T, typename _>
    +    struct result
    +    {
    +        typedef T type;
    +    };
    +
    +    template<typename T>
    +    T operator()(T lhs, T rhs) const
    +    {
    +        return lhs - rhs;
    +    }
    +};
    +
    +void try_it()
    +{
    +    vector<int,float> a(2,2.0f);
    +    vector<int,float> b(1,1.5f);
    +    vector<int,float> c(1,0.5f);
    +    assert(c == transform(zip(a,b), make_fused_function_object(sub())));
    +}
    +
    +
    + + See + also +
    + +
    + + + +
    Copyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/generation/functions/mk_fused_proc.html b/doc/html/fusion/functional/generation/functions/mk_fused_proc.html new file mode 100644 index 00000000..79ee2ae8 --- /dev/null +++ b/doc/html/fusion/functional/generation/functions/mk_fused_proc.html @@ -0,0 +1,132 @@ + + + + + make_fused_procedure + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + Creates a fused_procedure adapter for + a given Deferred + Callable Object. The usual element + conversion applied to the target function. +

    +
    + + Synopsis +
    +
    +template <typename F>
    +inline typename make_fused_procedure<F>::type
    +make_fused_procedure(F const & f);
    +
    +
    + + Parameters +
    +
    +++++ + + + + + + + + + + +
    ParameterRequirementDescription
    fModel + of Callable + Object +The function to transform.
    +
    + + Expression + Semantics +
    +
    +make_fused_procedure(f);
    +
    +

    + Return type: A specialization of fused_procedure. +

    +

    + Semantics: Returns a fused_procedure adapter for + f. +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/generation/make_fused_procedure.hpp>
    +
    +
    + + Example +
    +
    +vector<int,int,int> v(1,2,3);
    +using namespace boost::lambda;
    +make_fused_procedure(_1 += _2 - _3)(v);
    +assert(front(v) == 0);
    +
    +
    + + See + also +
    + +
    + + + +
    Copyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/generation/functions/mk_unfused_genrc.html b/doc/html/fusion/functional/generation/functions/mk_unfused_genrc.html new file mode 100644 index 00000000..e2410ec0 --- /dev/null +++ b/doc/html/fusion/functional/generation/functions/mk_unfused_genrc.html @@ -0,0 +1,163 @@ + + + + + make_unfused_generic + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + Creates a unfused_generic adapter for + a given, unary Polymorphic + Function Object. The usual element + conversion is applied to the target function. +

    +
    + + Synopsis +
    +
    +template <typename F>
    +inline typename make_unfused_generic<F>::type
    +make_unfused_generic(F const & f);
    +
    +
    + + Parameters +
    +
    +++++ + + + + + + + + + + +
    ParameterRequirementDescription
    fModel + of Polymorphic + Function Object +The function to transform.
    +
    + + Expression + Semantics +
    +
    +make_unfused_generic(f);
    +
    +

    + Return type: A specialization of unfused_generic. +

    +

    + Semantics: Returns a unfused_generic adapter for + f. +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/generation/make_unfused_generic.hpp>
    +
    +
    + + Example +
    +
    +struct bottles_song
    +{
    +    template<class Seq>
    +    struct result
    +        : mpl::if_< mpl::less< result_of::size<Seq>, mpl::int_<2> >,
    +            boost::blank, mpl::identity<void> >::type
    +    { };
    +
    +    template<class Seq> 
    +    void operator()(Seq & s) const
    +    {
    +        typename result_of::at_c<Seq,0>::type n = at_c<0>(s);
    +        typename result_of::at_c<Seq,1>::type what = at_c<1>(s);
    +
    +        std::cout 
    +            << n << " bottles of " << what << " on the wall.\n" 
    +            << n << " bottles of " << what << "!\n"
    +            << "Take one down - pass it around.\n";
    +
    +        n -= 1; // glug glug...
    +
    +        std::cout
    +            << n << " bottles of " << what << " on the wall.\n" 
    +            << std::endl;
    +    }
    +};
    +
    +void try_it()
    +{
    +    unsigned n_milk = 99;
    +    for(int i = 0; i < 3; ++i)
    +        make_unfused_generic(bottles_song())(n_milk,"milk");
    +    // 96 bottles left for me
    +}
    +
    +
    + + See + also +
    + +
    + + + +
    Copyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/generation/functions/mk_unfused_lvargs.html b/doc/html/fusion/functional/generation/functions/mk_unfused_lvargs.html new file mode 100644 index 00000000..c72ce4b8 --- /dev/null +++ b/doc/html/fusion/functional/generation/functions/mk_unfused_lvargs.html @@ -0,0 +1,150 @@ + + + + + make_unfused_lvalue_args + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + Creates a unfused_lvalue_args adapter + for a given, unary Polymorphic + Function Object. The usual element + conversion is applied to the target function. +

    +
    + + Synopsis +
    +
    +template <typename F>
    +inline typename make_unfused_lvalue_args<F>::type
    +make_unfused_lvalue_args(F const & f);
    +
    +
    + + Parameters +
    +
    +++++ + + + + + + + + + + +
    ParameterRequirementDescription
    fModel + of Polymorphic + Function Object +The function to transform.
    +
    + + Expression + Semantics +
    +
    +make_unfused_lvalue_args(f);
    +
    +

    + Return type: A specialization of unfused_lvalue_args. +

    +

    + Semantics: Returns a unfused_lvalue_args adapter + for f. +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/generation/make_unfused_lvalue_args.hpp>
    +
    +
    + + Example +
    +
    +struct fused_incrementer
    +{
    +    template <class Seq> 
    +    struct result 
    +    { 
    +        typedef void type;
    +    };
    +
    +    template <class Seq>
    +    void operator()(Seq const & s) const
    +    {
    +        for_each(s,++boost::lambda::_1);
    +    }
    +};
    +
    +void try_it()
    +{
    +    int a = 2; char b = 'X';
    +    make_unfused_lvalue_args(fused_incrementer())(a,b);
    +    assert(a == 3 && b == 'Y');
    +}
    +
    +
    + + See + also +
    + +
    + + + +
    Copyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/generation/functions/mk_unfused_rvargs.html b/doc/html/fusion/functional/generation/functions/mk_unfused_rvargs.html new file mode 100644 index 00000000..cd23fc5e --- /dev/null +++ b/doc/html/fusion/functional/generation/functions/mk_unfused_rvargs.html @@ -0,0 +1,148 @@ + + + + + make_unfused_rvalue_args + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + Creates a unfused_rvalue_args adapter + for a given, unary Polymorphic + Function Object. The usual element + conversion is applied to the target function. +

    +
    + + Synopsis +
    +
    +template <typename F>
    +inline typename make_unfused_rvalue_args<F>::type
    +make_unfused_rvalue_args(F const & f);
    +
    +
    + + Parameters +
    +
    +++++ + + + + + + + + + + +
    ParameterRequirementDescription
    fModel + of Polymorphic + Function Object +The function to transform.
    +
    + + Expression + Semantics +
    +
    +make_unfused_rvalue_args(f);
    +
    +

    + Return type: A specialization of unfused_rvalue_args. +

    +

    + Semantics: Returns a unfused_rvalue_args adapter + for f. +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/generation/make_unfused_rvalue_args.hpp>
    +
    +
    + + Example +
    +
    +struct sequence_printer
    +{
    +    template <class Seq> 
    +    struct result 
    +    { 
    +        typedef void type;
    +    };
    +
    +    template <class Seq>
    +    void operator()(Seq const & s) const
    +    {
    +        std::cout << s << std::endl;
    +    }
    +};
    +
    +void try_it()
    +{
    +    make_unfused_rvalue_args(sequence_printer())
    +        (24,"bottles of beer in",'a',"box.");
    +}
    +
    +
    + + See + also +
    + +
    + + + +
    Copyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/generation/metafunctions.html b/doc/html/fusion/functional/generation/metafunctions.html index ae28a48d..a7afa343 100644 --- a/doc/html/fusion/functional/generation/metafunctions.html +++ b/doc/html/fusion/functional/generation/metafunctions.html @@ -6,8 +6,10 @@ - - + + @@ -20,255 +22,34 @@

    -PrevUpHomeNext +PrevUpHomeNext
    -
    - -
    - - Description -
    -

    - Returns the result type of make_fused. -

    -
    - - Header -
    -
    -#include <boost/fusion/functional/generation/make_fused.hpp>
    -
    -
    - - Synopsis -
    -
    -namespace result_of
    -{
    -    template<typename Function>
    -    struct make_fused
    -    {
    -        typedef unspecified type;
    -    };
    -}
    -
    -
    - - See - also -
    - -
    -
    - -
    - - Description -
    -

    - Returns the result type of make_fused_procedure. -

    -
    - - Header -
    -
    -#include <boost/fusion/functional/generation/make_fused_procedure.hpp>
    -
    -
    - - Synopsis -
    -
    -namespace result_of
    -{
    -    template<typename Function>
    -    struct make_fused_procedure
    -    {
    -        typedef unspecified type;
    -    };
    -}
    -
    -
    - - See - also -
    - -
    -
    - -
    - - Description -
    -

    - Returns the result type of make_fused_function_object. -

    -
    - - Header -
    -
    -#include <boost/fusion/functional/generation/make_fused_function_object.hpp>
    -
    -
    - - Synopsis -
    -
    -namespace result_of
    -{
    -    template<typename Function>
    -    struct make_fused_function_object
    -    {
    -        typedef unspecified type;
    -    };
    -}
    -
    -
    - - See - also -
    - -
    -
    - -
    - - Description -
    -

    - Returns the result type of make_unfused_generic. -

    -
    - - Header -
    -
    -#include <boost/fusion/functional/generation/make_unfused_generic.hpp>
    -
    -
    - - Synopsis -
    -
    -namespace result_of
    -{
    -    template<typename Function>
    -    struct make_unfused_generic
    -    {
    -        typedef unspecified type;
    -    };
    -}
    -
    -
    - - See - also -
    - -
    -
    - -
    - - Description -
    -

    - Returns the result type of make_unfused_lvalue_args. -

    -
    - - Header -
    -
    -#include <boost/fusion/functional/generation/make_unfused_lvalue_args.hpp>
    -
    -
    - - Synopsis -
    -
    -namespace result_of
    -{
    -    template<typename Function>
    -    struct make_unfused_lvalue_args
    -    {
    -        typedef unspecified type;
    -    };
    -}
    -
    -
    - - See - also -
    - -
    -
    - -
    - - Description -
    -

    - Returns the result type of make_unfused_rvalue_args. -

    -
    - - Header -
    -
    -#include <boost/fusion/functional/generation/make_unfused_rvalue_args.hpp>
    -
    -
    - - Synopsis -
    -
    -namespace result_of
    -{
    -    template<typename Function>
    -    struct make_unfused_rvalue_args
    -    {
    -        typedef unspecified type;
    -    };
    -}
    -
    -
    - - See - also -
    - -
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/generation/metafunctions/mk_fused.html b/doc/html/fusion/functional/generation/metafunctions/mk_fused.html new file mode 100644 index 00000000..24dabafd --- /dev/null +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused.html @@ -0,0 +1,79 @@ + + + + + make_fused + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + Returns the result type of make_fused. +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/generation/make_fused.hpp>
    +
    +
    + + Synopsis +
    +
    +namespace result_of
    +{
    +    template<typename Function>
    +    struct make_fused
    +    {
    +        typedef unspecified type;
    +    };
    +}
    +
    +
    + + See + also +
    + +
    + + + +
    Copyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html b/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html new file mode 100644 index 00000000..5be6a5cf --- /dev/null +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html @@ -0,0 +1,80 @@ + + + + + make_fused_function_object + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + Returns the result type of make_fused_function_object. +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/generation/make_fused_function_object.hpp>
    +
    +
    + + Synopsis +
    +
    +namespace result_of
    +{
    +    template<typename Function>
    +    struct make_fused_function_object
    +    {
    +        typedef unspecified type;
    +    };
    +}
    +
    +
    + + See + also +
    + +
    + + + +
    Copyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html b/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html new file mode 100644 index 00000000..40dbe2a7 --- /dev/null +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html @@ -0,0 +1,80 @@ + + + + + make_fused_procedure + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + Returns the result type of make_fused_procedure. +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/generation/make_fused_procedure.hpp>
    +
    +
    + + Synopsis +
    +
    +namespace result_of
    +{
    +    template<typename Function>
    +    struct make_fused_procedure
    +    {
    +        typedef unspecified type;
    +    };
    +}
    +
    +
    + + See + also +
    + +
    + + + +
    Copyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/generation/metafunctions/mk_unfused_genrc.html b/doc/html/fusion/functional/generation/metafunctions/mk_unfused_genrc.html new file mode 100644 index 00000000..5f7bea12 --- /dev/null +++ b/doc/html/fusion/functional/generation/metafunctions/mk_unfused_genrc.html @@ -0,0 +1,80 @@ + + + + + make_unfused_generic + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + Returns the result type of make_unfused_generic. +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/generation/make_unfused_generic.hpp>
    +
    +
    + + Synopsis +
    +
    +namespace result_of
    +{
    +    template<typename Function>
    +    struct make_unfused_generic
    +    {
    +        typedef unspecified type;
    +    };
    +}
    +
    +
    + + See + also +
    + +
    + + + +
    Copyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/generation/metafunctions/mk_unfused_lvargs.html b/doc/html/fusion/functional/generation/metafunctions/mk_unfused_lvargs.html new file mode 100644 index 00000000..20a8a3d9 --- /dev/null +++ b/doc/html/fusion/functional/generation/metafunctions/mk_unfused_lvargs.html @@ -0,0 +1,80 @@ + + + + + make_unfused_lvalue_args + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + Returns the result type of make_unfused_lvalue_args. +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/generation/make_unfused_lvalue_args.hpp>
    +
    +
    + + Synopsis +
    +
    +namespace result_of
    +{
    +    template<typename Function>
    +    struct make_unfused_lvalue_args
    +    {
    +        typedef unspecified type;
    +    };
    +}
    +
    +
    + + See + also +
    + +
    + + + +
    Copyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/generation/metafunctions/mk_unfused_rvargs.html b/doc/html/fusion/functional/generation/metafunctions/mk_unfused_rvargs.html new file mode 100644 index 00000000..c3bfcf93 --- /dev/null +++ b/doc/html/fusion/functional/generation/metafunctions/mk_unfused_rvargs.html @@ -0,0 +1,79 @@ + + + + + make_unfused_rvalue_args + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + Returns the result type of make_unfused_rvalue_args. +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/generation/make_unfused_rvalue_args.hpp>
    +
    +
    + + Synopsis +
    +
    +namespace result_of
    +{
    +    template<typename Function>
    +    struct make_unfused_rvalue_args
    +    {
    +        typedef unspecified type;
    +    };
    +}
    +
    +
    + + See + also +
    + +
    + + + +
    Copyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/invocation.html b/doc/html/fusion/functional/invocation.html index 8c06c330..194c009e 100644 --- a/doc/html/fusion/functional/invocation.html +++ b/doc/html/fusion/functional/invocation.html @@ -33,7 +33,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/functional/invocation/functions.html b/doc/html/fusion/functional/invocation/functions.html index 8d53bb6a..1a440dc9 100644 --- a/doc/html/fusion/functional/invocation/functions.html +++ b/doc/html/fusion/functional/invocation/functions.html @@ -7,7 +7,7 @@ - + @@ -20,421 +20,27 @@

    -PrevUpHomeNext +PrevUpHomeNext
    -
    - -
    - - Description -
    -

    - Calls a Deferred - Callable Object with the arguments from a Sequence. -

    -

    - The corresponding metafunction, result_of::invoke does not define a type member for target functions of - non-class type whose arity is not satisfied by the size of the sequence. -

    -

    - The first template parameter can be specialized explicitly to avoid copying - and/or to control the const qualification of a function object. -

    -

    - If the target function is a pointer to a class members, the corresponding - object can be specified as a reference, pointer, or smart pointer. In - case of the latter, a freestanding get_pointer function - must be defined (Boost provides this function for std::auto_ptr - and boost::shared_ptr). -

    -
    - - Synopsis -
    -
    -template<
    -    typename Function, 
    -    class Sequence
    -    >
    -typename result_of::invoke<Function, Sequence>::type
    -invoke(Function f, Sequence & s);
    -
    -template<
    -    typename Function, 
    -    class Sequence
    -    >
    -typename result_of::invoke<Function, Sequence const>::type 
    -invoke(Function f, Sequence const & s);
    -
    -
    - - Parameters -
    -
    ----- - - - - - - - - - - - - - - - - - -
    ParameterRequirementDescription
    fA - Deferred - Callable Object -The function to call.
    sA - Forward - Sequence -The arguments.
    -
    - - Expression - Semantics -
    -
    -invoke(f,s);
    -
    -

    - Return type: Return type of f when invoked with the elements in - s as its arguments. -

    -

    - Semantics: Invokes f - with the elements in s - 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 -
    - -
    -
    - -
    - - Description -
    -

    - Calls a Callable - Object with the arguments from a Sequence. - The result of the call is ignored. -

    -

    - The corresponding metafunction, __result_of_invoke_procedure, does not - define a type member - for target functions of non-class type whose arity is not satisfied by - the size of the sequence. -

    -

    - The first template parameter can be specialized explicitly to avoid copying - and/or to control the const qualification of a function object. -

    -

    - For pointers to class members corresponding object can be specified as - a reference, pointer, or smart pointer. In case of the latter, a freestanding - get_pointer function must be defined (Boost provides - this function for std::auto_ptr and boost::shared_ptr). -

    -

    - The target function must not be a pointer to a member object (dereferencing - such a pointer without returning anything does not make sense, so it - isn't implemented). -

    -
    - - Synopsis -
    -
    -template<
    -    typename Function, 
    -    class Sequence
    -    >
    -typename result_of::invoke_procedure<Function, Sequence>::type
    -invoke_procedure(Function f, Sequence & s);
    -
    -template<
    -    typename Function, 
    -    class Sequence
    -    >
    -typename result_of::invoke_procedure<Function, Sequence const>::type
    -invoke_procedure(Function f, Sequence const & s);
    -
    -
    - - Parameters -
    -
    ----- - - - - - - - - - - - - - - - - - -
    ParameterRequirementDescription
    fModel - of Callable - Object -The function to call.
    sModel - of Forward - Sequence -The arguments.
    -
    - - Expression - Semantics -
    -
    -invoke_procedure(f,s);
    -
    -

    - Return type: void -

    -

    - Semantics: Invokes f - with the elements in s - as arguments. -

    -
    - - Header -
    -
    -#include <boost/fusion/functional/invocation/invoke_procedure.hpp>
    -
    -
    - - Example -
    -
    -vector<int,int> v(1,2);
    -using namespace boost::lambda;
    -invoke_procedure(_1 += _2, v);
    -assert(front(v) == 3);
    -
    -
    - - See - also -
    - -
    -
    - -
    - - Description -
    -

    - Calls a Polymorphic Function - Object with the arguments from a Sequence. -

    -

    - The corresponding metafunction, result_of::invoke_function_object, does - not define a type member, - if the nested result - class template of the target function object is empty. -

    -

    - The first template parameter can be specialized explicitly to avoid copying - and/or to control the const qualification of a function object. -

    -
    - - Synopsis -
    -
    -template<
    -    typename Function, 
    -    class Sequence
    -    >
    -typename result_of::invoke_function_object<Function, Sequence>::type
    -invoke_function_object(Function f, Sequence & s);
    -
    -template<
    -    typename Function, 
    -    class Sequence
    -    >
    -typename result_of::invoke_function_object<Function, Sequence const>::type
    -invoke_function_object(Function f, Sequence const & s);
    -
    -
    - - Parameters -
    -
    ----- - - - - - - - - - - - - - - - - - -
    ParameterRequirementDescription
    fModel - of Polymorphic - Function Object -The function object to call.
    sModel - of Forward - Sequence -The arguments.
    -
    - - Expression - Semantics -
    -
    -invoke_procedure(f,s);
    -
    -

    - Return type: Return type of f when invoked with the elements in - s as its arguments. -

    -

    - Semantics: Invokes f - with the elements in s - as arguments and returns the result of the call expression. -

    -
    - - Header -
    -
    -#include <boost/fusion/functional/invocation/invoke_function_object.hpp>
    -
    -
    - - Example -
    -
    -struct sub
    -{
    -    template<typename T, typename _>
    -    struct result
    -    {
    -        typedef T type;
    -    };
    -
    -    template<typename T>
    -    T operator()(T lhs, T rhs) const
    -    {
    -        return lhs - rhs;
    -    }
    -};
    -
    -void try_it()
    -{
    -    sub f;
    -    assert(f(2,1) == invoke_function_object(f,make_vector(2,1)));
    -}
    -
    -
    - - See - also -
    - -
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/invocation/functions/invoke.html b/doc/html/fusion/functional/invocation/functions/invoke.html new file mode 100644 index 00000000..3e492ecb --- /dev/null +++ b/doc/html/fusion/functional/invocation/functions/invoke.html @@ -0,0 +1,164 @@ + + + +invoke + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + Calls a Deferred + Callable Object with the arguments from a Sequence. +

    +

    + The corresponding metafunction, result_of::invoke does not define a type member for target functions of + non-class type whose arity is not satisfied by the size of the sequence. +

    +

    + The first template parameter can be specialized explicitly to avoid copying + and/or to control the const qualification of a function object. +

    +

    + If the target function is a pointer to a class members, the corresponding + object can be specified as a reference, pointer, or smart pointer. In + case of the latter, a freestanding get_pointer function + must be defined (Boost provides this function for std::auto_ptr + and boost::shared_ptr). +

    +
    + + Synopsis +
    +
    +template<
    +    typename Function, 
    +    class Sequence
    +    >
    +typename result_of::invoke<Function, Sequence>::type
    +invoke(Function f, Sequence & s);
    +
    +template<
    +    typename Function, 
    +    class Sequence
    +    >
    +typename result_of::invoke<Function, Sequence const>::type 
    +invoke(Function f, Sequence const & s);
    +
    +
    + + Parameters +
    +
    +++++ + + + + + + + + + + + + + + + + + +
    ParameterRequirementDescription
    fA + Deferred + Callable Object +The function to call.
    sA + Forward + Sequence +The arguments.
    +
    + + Expression + Semantics +
    +
    +invoke(f,s);
    +
    +

    + Return type: Return type of f when invoked with the elements in + s as its arguments. +

    +

    + Semantics: Invokes f + with the elements in s + 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 +
    + +
    + + + +
    Copyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/invocation/functions/invoke_fobj.html b/doc/html/fusion/functional/invocation/functions/invoke_fobj.html new file mode 100644 index 00000000..dba5f6b3 --- /dev/null +++ b/doc/html/fusion/functional/invocation/functions/invoke_fobj.html @@ -0,0 +1,183 @@ + + + + + invoke_function_object + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + Calls a Polymorphic Function + Object with the arguments from a Sequence. +

    +

    + The corresponding metafunction, result_of::invoke_function_object, does + not define a type member, + if the nested result + class template of the target function object is empty. +

    +

    + The first template parameter can be specialized explicitly to avoid copying + and/or to control the const qualification of a function object. +

    +
    + + Synopsis +
    +
    +template<
    +    typename Function, 
    +    class Sequence
    +    >
    +typename result_of::invoke_function_object<Function, Sequence>::type
    +invoke_function_object(Function f, Sequence & s);
    +
    +template<
    +    typename Function, 
    +    class Sequence
    +    >
    +typename result_of::invoke_function_object<Function, Sequence const>::type
    +invoke_function_object(Function f, Sequence const & s);
    +
    +
    + + Parameters +
    +
    +++++ + + + + + + + + + + + + + + + + + +
    ParameterRequirementDescription
    fModel + of Polymorphic + Function Object +The function object to call.
    sModel + of Forward + Sequence +The arguments.
    +
    + + Expression + Semantics +
    +
    +invoke_procedure(f,s);
    +
    +

    + Return type: Return type of f when invoked with the elements in + s as its arguments. +

    +

    + Semantics: Invokes f + with the elements in s + as arguments and returns the result of the call expression. +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/invocation/invoke_function_object.hpp>
    +
    +
    + + Example +
    +
    +struct sub
    +{
    +    template<typename T, typename _>
    +    struct result
    +    {
    +        typedef T type;
    +    };
    +
    +    template<typename T>
    +    T operator()(T lhs, T rhs) const
    +    {
    +        return lhs - rhs;
    +    }
    +};
    +
    +void try_it()
    +{
    +    sub f;
    +    assert(f(2,1) == invoke_function_object(f,make_vector(2,1)));
    +}
    +
    +
    + + See + also +
    + +
    + + + +
    Copyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/invocation/functions/invoke_proc.html b/doc/html/fusion/functional/invocation/functions/invoke_proc.html new file mode 100644 index 00000000..322e6399 --- /dev/null +++ b/doc/html/fusion/functional/invocation/functions/invoke_proc.html @@ -0,0 +1,175 @@ + + + + + invoke_procedure + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + Calls a Callable + Object with the arguments from a Sequence. + The result of the call is ignored. +

    +

    + The corresponding metafunction, __result_of_invoke_procedure, does not + define a type member + for target functions of non-class type whose arity is not satisfied by + the size of the sequence. +

    +

    + The first template parameter can be specialized explicitly to avoid copying + and/or to control the const qualification of a function object. +

    +

    + For pointers to class members corresponding object can be specified as + a reference, pointer, or smart pointer. In case of the latter, a freestanding + get_pointer function must be defined (Boost provides + this function for std::auto_ptr and boost::shared_ptr). +

    +

    + The target function must not be a pointer to a member object (dereferencing + such a pointer without returning anything does not make sense, so it + isn't implemented). +

    +
    + + Synopsis +
    +
    +template<
    +    typename Function, 
    +    class Sequence
    +    >
    +typename result_of::invoke_procedure<Function, Sequence>::type
    +invoke_procedure(Function f, Sequence & s);
    +
    +template<
    +    typename Function, 
    +    class Sequence
    +    >
    +typename result_of::invoke_procedure<Function, Sequence const>::type
    +invoke_procedure(Function f, Sequence const & s);
    +
    +
    + + Parameters +
    +
    +++++ + + + + + + + + + + + + + + + + + +
    ParameterRequirementDescription
    fModel + of Callable + Object +The function to call.
    sModel + of Forward + Sequence +The arguments.
    +
    + + Expression + Semantics +
    +
    +invoke_procedure(f,s);
    +
    +

    + Return type: void +

    +

    + Semantics: Invokes f + with the elements in s + as arguments. +

    +
    + + Header +
    +
    +#include <boost/fusion/functional/invocation/invoke_procedure.hpp>
    +
    +
    + + Example +
    +
    +vector<int,int> v(1,2);
    +using namespace boost::lambda;
    +invoke_procedure(_1 += _2, v);
    +assert(front(v) == 3);
    +
    +
    + + See + also +
    + +
    + + + +
    Copyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/invocation/metafunctions.html b/doc/html/fusion/functional/invocation/metafunctions.html index 4f46ffd2..44c33781 100644 --- a/doc/html/fusion/functional/invocation/metafunctions.html +++ b/doc/html/fusion/functional/invocation/metafunctions.html @@ -6,8 +6,9 @@ - - + + @@ -20,147 +21,27 @@

    -PrevUpHomeNext +PrevUpHomeNext
    -
    - -
    - - Description -
    -

    - Returns the result type of invoke. -

    -

    - Empty for non-class target function types whose arity is not satisfied - by the size of the sequence. -

    -
    - - Synopsis -
    -
    -namespace result_of
    -{
    -    template<
    -        typename Function, 
    -        class Sequence
    -        > 
    -    struct invoke
    -    {
    -        typedef unspecified type;
    -    };
    -}
    -
    -
    - - See - also -
    - -
    -
    - -
    - - Description -
    -

    - Returns the result type of invoke_procedure. -

    -

    - Empty for non-class target function types whose arity is not satisfied - by the size of the sequence. -

    -
    - - Synopsis -
    -
    -namespace result_of
    -{
    -    template<
    -        typename Function, 
    -        class Sequence
    -        > 
    -    struct invoke_procedure
    -    {
    -        typedef unspecified type;
    -    };
    -}
    -
    -
    - - See - also -
    - -
    -
    - -
    - - Description -
    -

    - Returns the result type of invoke_function_object. -

    -

    - Empty if the target function's nested result - class template is empty. -

    -
    - - Synopsis -
    -
    -namespace result_of
    -{
    -    template<
    -        class Function, 
    -        class Sequence
    -        > 
    -    struct invoke_function_object
    -    {
    -        typedef unspecified type;
    -    };
    -}
    -
    -
    - - See - also -
    - -
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/invocation/metafunctions/invoke.html b/doc/html/fusion/functional/invocation/metafunctions/invoke.html new file mode 100644 index 00000000..af0c75ac --- /dev/null +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke.html @@ -0,0 +1,77 @@ + + + +invoke + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + Returns the result type of invoke. +

    +

    + Empty for non-class target function types whose arity is not satisfied + by the size of the sequence. +

    +
    + + Synopsis +
    +
    +namespace result_of
    +{
    +    template<
    +        typename Function, 
    +        class Sequence
    +        > 
    +    struct invoke
    +    {
    +        typedef unspecified type;
    +    };
    +}
    +
    +
    + + See + also +
    + +
    + + + +
    Copyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html b/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html new file mode 100644 index 00000000..6aef16fd --- /dev/null +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html @@ -0,0 +1,82 @@ + + + + + invoke_function_object + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + Returns the result type of invoke_function_object. +

    +

    + Empty if the target function's nested result + class template is empty. +

    +
    + + Synopsis +
    +
    +namespace result_of
    +{
    +    template<
    +        class Function, 
    +        class Sequence
    +        > 
    +    struct invoke_function_object
    +    {
    +        typedef unspecified type;
    +    };
    +}
    +
    +
    + + See + also +
    + +
    + + + +
    Copyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html b/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html new file mode 100644 index 00000000..3d458857 --- /dev/null +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html @@ -0,0 +1,82 @@ + + + + + invoke_procedure + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + Returns the result type of invoke_procedure. +

    +

    + Empty for non-class target function types whose arity is not satisfied + by the size of the sequence. +

    +
    + + Synopsis +
    +
    +namespace result_of
    +{
    +    template<
    +        typename Function, 
    +        class Sequence
    +        > 
    +    struct invoke_procedure
    +    {
    +        typedef unspecified type;
    +    };
    +}
    +
    +
    + + See + also +
    + +
    + + + +
    Copyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/introduction.html b/doc/html/fusion/introduction.html index 52f9b4fd..40b58039 100644 --- a/doc/html/fusion/introduction.html +++ b/doc/html/fusion/introduction.html @@ -130,7 +130,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/iterators.html b/doc/html/fusion/iterators.html index dc2a683e..e34f9742 100644 --- a/doc/html/fusion/iterators.html +++ b/doc/html/fusion/iterators.html @@ -74,7 +74,7 @@ Sequence.

    - + Header

    @@ -83,7 +83,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/iterators/concepts.html b/doc/html/fusion/iterators/concepts.html index ccc0b159..71fa0586 100644 --- a/doc/html/fusion/iterators/concepts.html +++ b/doc/html/fusion/iterators/concepts.html @@ -50,7 +50,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/iterators/concepts/bidirectional_iterator.html b/doc/html/fusion/iterators/concepts/bidirectional_iterator.html index a91dfacc..e8ff46a5 100644 --- a/doc/html/fusion/iterators/concepts/bidirectional_iterator.html +++ b/doc/html/fusion/iterators/concepts/bidirectional_iterator.html @@ -31,7 +31,7 @@ Iterator">Bidirectional Iterator
    - + Description

    @@ -61,7 +61,7 @@

    - + Refinement of
    @@ -70,7 +70,7 @@ Iterator">Forward Iterator

    - + Expression requirements
    @@ -123,7 +123,7 @@
    - + Meta Expressions
    @@ -143,7 +143,7 @@
    - + Expression Semantics
    @@ -170,7 +170,7 @@
    - + Invariants

    @@ -188,7 +188,7 @@

    - + Models
      @@ -221,7 +221,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/iterators/concepts/forward_iterator.html b/doc/html/fusion/iterators/concepts/forward_iterator.html index 428787e2..474e4ed1 100644 --- a/doc/html/fusion/iterators/concepts/forward_iterator.html +++ b/doc/html/fusion/iterators/concepts/forward_iterator.html @@ -30,7 +30,7 @@ Iterator">Forward Iterator
    - + Description

    @@ -63,7 +63,7 @@

    - + Expression requirements
    @@ -134,7 +134,7 @@
    - + Meta Expressions
    @@ -183,7 +183,7 @@
    - + Expression Semantics
    @@ -249,7 +249,7 @@
    - + Invariants

    @@ -274,7 +274,7 @@

    - + Models
      @@ -334,7 +334,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/iterators/concepts/random_access_iterator.html b/doc/html/fusion/iterators/concepts/random_access_iterator.html index 647d48ee..c529727d 100644 --- a/doc/html/fusion/iterators/concepts/random_access_iterator.html +++ b/doc/html/fusion/iterators/concepts/random_access_iterator.html @@ -30,7 +30,7 @@ Access Iterator">Random Access Iterator
    - + Description

    @@ -63,7 +63,7 @@

    - + Refinement of
    @@ -73,7 +73,7 @@ Iterator

    - + Expression requirements
    @@ -126,7 +126,7 @@
    - + Meta Expressions
    @@ -158,7 +158,7 @@
    - + Models
      @@ -196,7 +196,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/iterators/functions.html b/doc/html/fusion/iterators/functions.html index 1a4582f6..2456ca31 100644 --- a/doc/html/fusion/iterators/functions.html +++ b/doc/html/fusion/iterators/functions.html @@ -42,7 +42,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/iterators/functions/advance.html b/doc/html/fusion/iterators/functions/advance.html index 0cb51414..bd93fe87 100644 --- a/doc/html/fusion/iterators/functions/advance.html +++ b/doc/html/fusion/iterators/functions/advance.html @@ -26,14 +26,14 @@
    - + Description

    Moves an iterator by a specified distance.

    - + Synopsis
    @@ -44,7 +44,7 @@
     typename result_of::advance<I, M>::type advance(I const& i); 
     
    -

    Table 1.6. Parameters

    +

    Table 1.6. Parameters

    @@ -78,7 +78,7 @@
    - + Expression Semantics
    @@ -99,14 +99,14 @@ may be negative.

    - + Header
     #include <boost/fusion/iterator/advance.hpp>
     
    - + Example
    @@ -118,7 +118,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/iterators/functions/advance_c.html b/doc/html/fusion/iterators/functions/advance_c.html index 3f0ae941..faf542c7 100644 --- a/doc/html/fusion/iterators/functions/advance_c.html +++ b/doc/html/fusion/iterators/functions/advance_c.html @@ -26,14 +26,14 @@
    - + Description

    Moves an iterator by a specified distance.

    - + Synopsis
    @@ -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

    @@ -76,7 +76,7 @@
    - + Expression Semantics
    @@ -97,14 +97,14 @@ may be negative.

    - + Header
     #include <boost/fusion/iterator/advance.hpp>
     
    - + Example
    @@ -116,7 +116,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/iterators/functions/deref.html b/doc/html/fusion/iterators/functions/deref.html index c70c0550..ea264e51 100644 --- a/doc/html/fusion/iterators/functions/deref.html +++ b/doc/html/fusion/iterators/functions/deref.html @@ -26,14 +26,14 @@
    - + Description

    Deferences an iterator.

    - + Synopsis
    @@ -43,7 +43,7 @@
     typename result_of::deref<I>::type deref(I const& i);
     
    -

    Table 1.2. Parameters

    +

    Table 1.2. Parameters

    @@ -67,7 +67,7 @@
    - + Expression Semantics
    @@ -82,14 +82,14 @@ i.

    - + Header
     #include <boost/fusion/iterator/deref.hpp>
     
    - + Example
    @@ -104,7 +104,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/iterators/functions/distance.html b/doc/html/fusion/iterators/functions/distance.html index a46543b5..3a21b7cb 100644 --- a/doc/html/fusion/iterators/functions/distance.html +++ b/doc/html/fusion/iterators/functions/distance.html @@ -26,14 +26,14 @@
    - + Description

    Returns the distance between 2 iterators.

    - + Synopsis
    @@ -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

    @@ -69,7 +69,7 @@
    - + Expression Semantics
    @@ -84,14 +84,14 @@ iterators i and j.

    - + Header
     #include <boost/fusion/iterator/distance.hpp>
     
    - + Example
    @@ -103,7 +103,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/iterators/functions/next.html b/doc/html/fusion/iterators/functions/next.html index cf0a56b2..b15f8e71 100644 --- a/doc/html/fusion/iterators/functions/next.html +++ b/doc/html/fusion/iterators/functions/next.html @@ -26,14 +26,14 @@
    - + Description

    Moves an iterator 1 position forwards.

    - + Synopsis
    @@ -43,7 +43,7 @@
     typename result_of::next<I>::type next(I const& i);
     
    -

    Table 1.3. Parameters

    +

    Table 1.3. Parameters

    @@ -67,7 +67,7 @@
    - + Expression Semantics
    @@ -83,14 +83,14 @@ next element after i.

    - + Header
     #include <boost/fusion/iterator/next.hpp>
     
    - + Example
    @@ -104,7 +104,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/iterators/functions/prior.html b/doc/html/fusion/iterators/functions/prior.html index 12de68c5..79aa299e 100644 --- a/doc/html/fusion/iterators/functions/prior.html +++ b/doc/html/fusion/iterators/functions/prior.html @@ -26,14 +26,14 @@
    - + Description

    Moves an iterator 1 position backwards.

    - + Synopsis
    @@ -43,7 +43,7 @@
     typename result_of::prior<I>::type prior(I const& i);
     
    -

    Table 1.4. Parameters

    +

    Table 1.4. Parameters

    @@ -67,7 +67,7 @@
    - + Expression Semantics
    @@ -83,14 +83,14 @@ element prior to i.

    - + Header
     #include <boost/fusion/iterator/prior.hpp>
     
    - + Example
    @@ -103,7 +103,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/iterators/metafunctions.html b/doc/html/fusion/iterators/metafunctions.html index 2c324a67..246bd1ae 100644 --- a/doc/html/fusion/iterators/metafunctions.html +++ b/doc/html/fusion/iterators/metafunctions.html @@ -39,7 +39,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/iterators/metafunctions/advance.html b/doc/html/fusion/iterators/metafunctions/advance.html index eff9321d..30820344 100644 --- a/doc/html/fusion/iterators/metafunctions/advance.html +++ b/doc/html/fusion/iterators/metafunctions/advance.html @@ -26,14 +26,14 @@
    - + Description

    Moves an iterator a specified distance.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.17. Parameters

    +

    Table 1.17. Parameters

    @@ -81,7 +81,7 @@
    - + Expression Semantics
    @@ -101,14 +101,14 @@ may be negative.

    - + Header
     #include <boost/fusion/iterator/advance.hpp>
     
    - + Example
    @@ -122,7 +122,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/iterators/metafunctions/advance_c.html b/doc/html/fusion/iterators/metafunctions/advance_c.html index 07bd853f..34c46b8b 100644 --- a/doc/html/fusion/iterators/metafunctions/advance_c.html +++ b/doc/html/fusion/iterators/metafunctions/advance_c.html @@ -26,14 +26,14 @@
    - + Description

    Moves an iterator by a specified distance.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.18. Parameters

    +

    Table 1.18. Parameters

    @@ -79,7 +79,7 @@
    - + Expression Semantics
    @@ -99,14 +99,14 @@ may be negative. Equivalent to result_of::advance<I, boost::mpl::int_<N> >::type.

    - + Header
     #include <boost/fusion/iterator/advance.hpp>
     
    - + Example
    @@ -120,7 +120,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/iterators/metafunctions/deref.html b/doc/html/fusion/iterators/metafunctions/deref.html index c396139f..b50b5fbc 100644 --- a/doc/html/fusion/iterators/metafunctions/deref.html +++ b/doc/html/fusion/iterators/metafunctions/deref.html @@ -26,14 +26,14 @@
    - + Description

    Returns the type that will be returned by dereferencing an iterator.

    - + Synposis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.12. Parameters

    +

    Table 1.12. Parameters

    @@ -70,7 +70,7 @@
    - + Expression Semantics
    @@ -85,14 +85,14 @@ an iterator of type I.

    - + Header
     #include <boost/fusion/iterator/deref.hpp>
     
    - + Example
    @@ -110,7 +110,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/iterators/metafunctions/distance.html b/doc/html/fusion/iterators/metafunctions/distance.html index 89344d1f..fdcd83ff 100644 --- a/doc/html/fusion/iterators/metafunctions/distance.html +++ b/doc/html/fusion/iterators/metafunctions/distance.html @@ -26,14 +26,14 @@
    - + Description

    Returns the distance between two iterators.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.16. Parameters

    +

    Table 1.16. Parameters

    @@ -72,7 +72,7 @@
    - + Expression Semantics
    @@ -89,14 +89,14 @@ J.

    - + Header
     #include <boost/fusion/iterator/distance.hpp>
     
    - + Example
    @@ -111,7 +111,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/iterators/metafunctions/equal_to.html b/doc/html/fusion/iterators/metafunctions/equal_to.html index d47b6190..dd58a123 100644 --- a/doc/html/fusion/iterators/metafunctions/equal_to.html +++ b/doc/html/fusion/iterators/metafunctions/equal_to.html @@ -26,7 +26,7 @@
    - + Description

    @@ -35,7 +35,7 @@ and J are equal.

    - + Synopsis
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.15. Parameters

    +

    Table 1.15. Parameters

    @@ -72,7 +72,7 @@
    - + Expression Semantics
    @@ -89,14 +89,14 @@ Returns boost::mpl::false_ otherwise.

    - + Header
     #include <boost/fusion/iterator/equal_to.hpp>
     
    - + Example
    @@ -109,7 +109,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/iterators/metafunctions/next.html b/doc/html/fusion/iterators/metafunctions/next.html index b67e0ce0..dd758a85 100644 --- a/doc/html/fusion/iterators/metafunctions/next.html +++ b/doc/html/fusion/iterators/metafunctions/next.html @@ -26,14 +26,14 @@
    - + Description

    Returns the type of the next iterator in a sequence.

    - + Synposis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.13. Parameters

    +

    Table 1.13. Parameters

    @@ -70,7 +70,7 @@
    - + Expression Semantics
    @@ -86,14 +86,14 @@ next element in the sequence after I.

    - + Header
     #include <boost/fusion/iterator/next.hpp>
     
    - + Example
    @@ -105,7 +105,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/iterators/metafunctions/prior.html b/doc/html/fusion/iterators/metafunctions/prior.html index 5d3e98bd..b7f2e20e 100644 --- a/doc/html/fusion/iterators/metafunctions/prior.html +++ b/doc/html/fusion/iterators/metafunctions/prior.html @@ -26,14 +26,14 @@
    - + Description

    Returns the type of the previous iterator in a sequence.

    - + Synopsis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.14. Parameters

    +

    Table 1.14. Parameters

    @@ -70,7 +70,7 @@
    - + Expression Semantics
    @@ -86,14 +86,14 @@ previous element in the sequence before I.

    - + Header
     #include <boost/fusion/iterator/prior.hpp>
     
    - + Example
    @@ -108,7 +108,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/iterators/metafunctions/value_of.html b/doc/html/fusion/iterators/metafunctions/value_of.html index 1422687a..f1d20079 100644 --- a/doc/html/fusion/iterators/metafunctions/value_of.html +++ b/doc/html/fusion/iterators/metafunctions/value_of.html @@ -26,14 +26,14 @@
    - + Description

    Returns the type stored at the position of an iterator.

    - + Synopsis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.11. Parameters

    +

    Table 1.11. Parameters

    @@ -70,7 +70,7 @@
    - + Expression Semantics
    @@ -85,14 +85,14 @@ a sequence at iterator position I.

    - + Header
     #include <boost/fusion/iterator/value_of.hpp>
     
    - + Example
    @@ -108,7 +108,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/iterators/operators.html b/doc/html/fusion/iterators/operators.html index 6e6bc780..8abfbd6c 100644 --- a/doc/html/fusion/iterators/operators.html +++ b/doc/html/fusion/iterators/operators.html @@ -41,7 +41,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/iterators/operators/operator_equality.html b/doc/html/fusion/iterators/operators/operator_equality.html index e4be64ee..488f4c4f 100644 --- a/doc/html/fusion/iterators/operators/operator_equality.html +++ b/doc/html/fusion/iterators/operators/operator_equality.html @@ -31,14 +31,14 @@ =="> Operator ==
    - + Description

    Compares 2 iterators for equality.

    - + Synopsis
    @@ -49,7 +49,7 @@
     unspecified operator==(I const& i, J const& i);
     
    -

    Table 1.9. Parameters

    +

    Table 1.9. Parameters

    @@ -72,7 +72,7 @@
    - + Expression Semantics
    @@ -88,7 +88,7 @@ and j respectively.

    - + Header
    @@ -97,7 +97,8 @@
     
     
    -
    +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/iterators/operators/operator_inequality.html b/doc/html/fusion/iterators/operators/operator_inequality.html index 8ccd1d1e..81f3900f 100644 --- a/doc/html/fusion/iterators/operators/operator_inequality.html +++ b/doc/html/fusion/iterators/operators/operator_inequality.html @@ -30,14 +30,14 @@ !="> Operator !=
    - + Description

    Compares 2 iterators for inequality.

    - + Synopsis
    @@ -48,7 +48,7 @@
     unspecified operator==(I const& i, J const& i);
     
    -

    Table 1.10. Parameters

    +

    Table 1.10. Parameters

    @@ -71,7 +71,7 @@
    - + Expression Semantics
    @@ -84,7 +84,7 @@ and j respectively.

    - + Header
    @@ -93,7 +93,8 @@
     
     
    -
    +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/iterators/operators/operator_unary_star.html b/doc/html/fusion/iterators/operators/operator_unary_star.html index c80293a3..ebb5e82a 100644 --- a/doc/html/fusion/iterators/operators/operator_unary_star.html +++ b/doc/html/fusion/iterators/operators/operator_unary_star.html @@ -30,14 +30,14 @@ *"> Operator *
    - + Description

    Dereferences an iterator.

    - + Synopsis
    @@ -47,7 +47,7 @@
     typename result_of::deref<I>::type operator*(unspecified<I> const& i);
     
    -

    Table 1.8. Parameters

    +

    Table 1.8. Parameters

    @@ -71,7 +71,7 @@
    - + Expression Semantics
    @@ -86,14 +86,14 @@ Semantics: Equivalent to deref(i).

    - + Header
     #include <boost/fusion/iterator/deref.hpp>
     
    - + Example
    @@ -108,7 +108,8 @@
     
     
    -
    +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/notes.html b/doc/html/fusion/notes.html index 0118fc89..ca6f805a 100644 --- a/doc/html/fusion/notes.html +++ b/doc/html/fusion/notes.html @@ -6,7 +6,8 @@ - + @@ -20,13 +21,13 @@
    -PrevUpHomeNext +PrevUpHomeNext

    - + Recursive Inlined Functions

    @@ -39,7 +40,7 @@ compiler limit of course). Compile time complexity remains linear.

    - + Overloaded Functions

    @@ -49,7 +50,7 @@ given a key, k.

    - + Tag Dispatching

    @@ -101,7 +102,7 @@

    - + Extensibility

    @@ -136,7 +137,7 @@ it very cheap to pass around.

    - + Element Conversion

    @@ -159,7 +160,7 @@

    Array arguments are deduced to reference to const types. For example - [14] + [14] :

    @@ -192,7 +193,7 @@
     list<void (*)(int)>
     

    - + boost::ref

    @@ -235,7 +236,7 @@



    -

    [14] +

    [14] 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 @@ -245,11 +246,12 @@

    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/organization.html b/doc/html/fusion/organization.html index dd298da5..0eb24051 100644 --- a/doc/html/fusion/organization.html +++ b/doc/html/fusion/organization.html @@ -34,7 +34,7 @@ The library is organized in three layers:

    - + Layers

    @@ -50,7 +50,7 @@ against.

    - + Directory

      @@ -159,7 +159,7 @@

    - + Example

    @@ -175,12 +175,12 @@

    The first includes all sequences. The second includes all of sequence containers. The third includes only list - [3] + [3] .



    -

    [3] +

    [3] Modules may contain smaller components. Header file information for each component will be provided as part of the component's documentation.

    @@ -188,7 +188,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/preface.html b/doc/html/fusion/preface.html index edafa8cd..d8732b9a 100644 --- a/doc/html/fusion/preface.html +++ b/doc/html/fusion/preface.html @@ -32,7 +32,7 @@ --Niklaus Wirth

    - + Description

    @@ -50,7 +50,7 @@ of compile time metaprogramming with runtime programming.

    - + Motivation

    @@ -76,7 +76,7 @@ an instant AHA! moment.

    - + How to use this manual

    @@ -84,7 +84,7 @@ icons precede some text to indicate:

    -

    Table 1.1. Icons

    +

    Table 1.1. Icons

    @@ -130,7 +130,7 @@ Tools.

    - + Support

    @@ -146,7 +146,8 @@

    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/quick_start.html b/doc/html/fusion/quick_start.html index 61ae0b8b..b2f1518a 100644 --- a/doc/html/fusion/quick_start.html +++ b/doc/html/fusion/quick_start.html @@ -33,7 +33,7 @@

    For starters, we shall include all of Fusion's _sequence_s - [1] + [1] :

    @@ -41,7 +41,7 @@
     

    Let's begin with a vector - [2] + [2] :

    @@ -59,7 +59,7 @@
           Let's see some examples.
         

    - + Print the vector as XML

    @@ -116,7 +116,7 @@ print just about any Fusion Sequence.

    - + Print only pointers

    @@ -150,7 +150,7 @@ Easy, right?

    - + Associative tuples

    @@ -225,7 +225,7 @@ a dog or a whole alternate_universe.

    - + Tip of the Iceberg

    @@ -236,12 +236,12 @@



    -

    [1] +

    [1] There are finer grained header files available if you wish to have more control over which components to include (see section Orgainization for details).

    -

    [2] +

    [2] 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. @@ -250,7 +250,8 @@

    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/references.html b/doc/html/fusion/references.html index 3655c26e..c4c9c77c 100644 --- a/doc/html/fusion/references.html +++ b/doc/html/fusion/references.html @@ -57,7 +57,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences.html b/doc/html/fusion/sequences.html index b6cb39fd..9346711d 100644 --- a/doc/html/fusion/sequences.html +++ b/doc/html/fusion/sequences.html @@ -66,97 +66,22 @@
    Intrinsics
    Functions
    -
    -
    begin
    -
    end
    -
    empty
    -
    front
    -
    back
    -
    size
    -
    at
    -
    at_c
    -
    has_key
    -
    at_key
    -
    Metafunctions
    -
    -
    begin
    -
    end
    -
    empty
    -
    front
    -
    back
    -
    size
    -
    at
    -
    at_c
    -
    value_at
    -
    value_at_c
    -
    has_key
    -
    at_key
    -
    value_at_key
    -
    Generation
    Functions
    -
    -
    make_list
    -
    make_cons
    -
    make_vector
    -
    make_set
    -
    make_map
    -
    Tiers
    -
    list_tie
    -
    vector_tie
    -
    MetaFunctions
    -
    -
    make_list
    -
    make_cons
    -
    make_vector
    -
    make_set
    -
    make_map
    -
    list_tie
    -
    vector_tie
    -
    Conversion
    Functions
    -
    -
    as_list
    -
    as_vector
    -
    as_set
    -
    as_map
    -
    Metafunctions
    -
    -
    as_list
    -
    as_vector
    -
    as_set
    -
    as_map
    -
    Operators
    I/O
    -
    -
    in
    -
    out
    -
    Comparison
    -
    -
    equal
    -
    not - equal
    -
    less - than
    -
    less - than equal
    -
    greater - than
    -
    greater - than equal
    -

    @@ -170,7 +95,7 @@ type that can be used to iterate through the Sequence's elements.

    - + Header

    @@ -179,7 +104,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/adapted.html b/doc/html/fusion/sequences/adapted.html index 7eeeee94..c00b2dcf 100644 --- a/doc/html/fusion/sequences/adapted.html +++ b/doc/html/fusion/sequences/adapted.html @@ -40,11 +40,11 @@ mechanism. If you wish to use these sequences with fusion, simply include the necessary files and they will be regarded as first-class, fully conforming fusion sequences - [4] + [4] .

    - + Header

    @@ -52,7 +52,7 @@
     


    -

    [4] +

    [4] Fusion sequences may also be adapted as fully conforming MPL sequences (see Intrinsics). That way, we can have 2-way adaptation to and from MPL @@ -62,7 +62,8 @@

    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/adapted/boost__array.html b/doc/html/fusion/sequences/adapted/boost__array.html index e18a3c93..3d89512f 100644 --- a/doc/html/fusion/sequences/adapted/boost__array.html +++ b/doc/html/fusion/sequences/adapted/boost__array.html @@ -33,21 +33,21 @@ Access Sequence.

    - + Header
     #include <boost/fusion/sequence/adapted/array.hpp>
     
    - + Model of
    - + Example
    @@ -60,7 +60,7 @@
     std::cout << at_c<2>(arr) << std::endl;
     
    - + See also

    @@ -69,7 +69,8 @@

    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/adapted/boost__tuple.html b/doc/html/fusion/sequences/adapted/boost__tuple.html index 80f25a88..6ef359ab 100644 --- a/doc/html/fusion/sequences/adapted/boost__tuple.html +++ b/doc/html/fusion/sequences/adapted/boost__tuple.html @@ -33,20 +33,20 @@ Sequence.

    - + Header
     #include <boost/fusion/sequence/adapted/boost_tuple.hpp>
     
    - + Model of
    - + Example
    @@ -55,7 +55,7 @@
     std::cout << *boost::fusion::next(boost::fusion::begin(example_tuple)) << '\n';
     
    - + See also

    @@ -65,7 +65,8 @@

    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/adapted/boost__variant.html b/doc/html/fusion/sequences/adapted/boost__variant.html index 080344f6..08691e2e 100644 --- a/doc/html/fusion/sequences/adapted/boost__variant.html +++ b/doc/html/fusion/sequences/adapted/boost__variant.html @@ -36,21 +36,21 @@ value of that type.

    - + Header
     #include <boost/fusion/sequence/adapted/variant.hpp>
     
    - + Model of
    - + Example
    @@ -60,7 +60,7 @@
     std::cout << example_variant << '\n';
     
    - + See also

    @@ -69,7 +69,8 @@

    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/adapted/mpl_sequence.html b/doc/html/fusion/sequences/adapted/mpl_sequence.html index b15c4cc2..0cf50330 100644 --- a/doc/html/fusion/sequences/adapted/mpl_sequence.html +++ b/doc/html/fusion/sequences/adapted/mpl_sequence.html @@ -31,14 +31,14 @@ sequences fully conforming fusion sequences.

    - + Header
     #include <boost/fusion/sequence/adapted/mpl.hpp>
     
    - + Model of
      @@ -62,7 +62,7 @@
    - + Example
    @@ -76,7 +76,7 @@
     std::cout << at_c<1>(v) << std::endl;
     
    - + See also

    @@ -85,7 +85,8 @@

    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/adapted/std__pair.html b/doc/html/fusion/sequences/adapted/std__pair.html index 606cda22..be79aa89 100644 --- a/doc/html/fusion/sequences/adapted/std__pair.html +++ b/doc/html/fusion/sequences/adapted/std__pair.html @@ -33,21 +33,21 @@ Access Sequence.

    - + Header
     #include <boost/fusion/sequence/adapted/std_pair.hpp>
     
    - + Model of
    - + Example
    @@ -57,7 +57,7 @@
     std::cout << p << std::endl;
     
    - + See also

    @@ -68,7 +68,8 @@

    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/concepts.html b/doc/html/fusion/sequences/concepts.html index bad9e691..83e83b5a 100644 --- a/doc/html/fusion/sequences/concepts.html +++ b/doc/html/fusion/sequences/concepts.html @@ -40,7 +40,7 @@ Fusion Sequences are organized into a hierarchy of concepts.

    - + Traversal

    @@ -58,7 +58,7 @@ Sequence. These concepts pertain to sequence traversal.

    - + Associativity

    @@ -70,7 +70,8 @@

    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/concepts/associative_sequence.html b/doc/html/fusion/sequences/concepts/associative_sequence.html index e67216b5..6fa444c9 100644 --- a/doc/html/fusion/sequences/concepts/associative_sequence.html +++ b/doc/html/fusion/sequences/concepts/associative_sequence.html @@ -30,7 +30,7 @@ Sequence">Associative Sequence
    - + Description

    @@ -71,7 +71,7 @@

    - + Valid Expressions
    @@ -122,7 +122,7 @@
    - + Result Type Expressions
    @@ -162,7 +162,7 @@ result_of::value_at_key<S, N>.

    - + Expression Semantics
    @@ -195,7 +195,7 @@
    - + Models
      @@ -205,7 +205,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/concepts/bidirectional_sequence.html b/doc/html/fusion/sequences/concepts/bidirectional_sequence.html index 972f9c7c..b64f4c60 100644 --- a/doc/html/fusion/sequences/concepts/bidirectional_sequence.html +++ b/doc/html/fusion/sequences/concepts/bidirectional_sequence.html @@ -31,7 +31,7 @@ Sequence">Bidirectional Sequence
    - + Description

    @@ -42,7 +42,7 @@ Iterator.

    - + Refinement of
    @@ -72,7 +72,7 @@
    - + Valid Expressions
    @@ -133,7 +133,7 @@
    - + Result Type Expressions
    @@ -165,7 +165,7 @@
    - + Expression Semantics
    @@ -191,7 +191,7 @@
    - + Models
      @@ -211,7 +211,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/concepts/forward_sequence.html b/doc/html/fusion/sequences/concepts/forward_sequence.html index e4217258..5aa9edd8 100644 --- a/doc/html/fusion/sequences/concepts/forward_sequence.html +++ b/doc/html/fusion/sequences/concepts/forward_sequence.html @@ -30,7 +30,7 @@ Sequence">Forward Sequence
    - + Description

    @@ -62,7 +62,7 @@

    - + Valid Expressions
    @@ -135,7 +135,7 @@
    - + Result Type Expressions
    @@ -175,7 +175,7 @@
    - + Expression Semantics
    @@ -220,7 +220,7 @@
    - + Invariants

    @@ -246,7 +246,7 @@

    - + Models
      @@ -267,7 +267,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/concepts/random_access_sequence.html b/doc/html/fusion/sequences/concepts/random_access_sequence.html index bb8d6f51..d286f202 100644 --- a/doc/html/fusion/sequences/concepts/random_access_sequence.html +++ b/doc/html/fusion/sequences/concepts/random_access_sequence.html @@ -31,7 +31,7 @@ Access Sequence">Random Access Sequence
    - + Description

    @@ -43,7 +43,7 @@ sequence elements.

    - + Refinement of
    @@ -78,7 +78,7 @@
    - + Valid Expressions
    @@ -139,7 +139,7 @@
    - + Result Type Expressions
    @@ -184,7 +184,7 @@ result_of::value_at<S, N>.

    - + Expression Semantics
    @@ -210,7 +210,7 @@
    - + Models
      @@ -230,7 +230,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/containers.html b/doc/html/fusion/sequences/containers.html index 3d57eb13..06186496 100644 --- a/doc/html/fusion/sequences/containers.html +++ b/doc/html/fusion/sequences/containers.html @@ -39,7 +39,7 @@ These containers are more or less counterparts of those in STL.

    - + Header

    @@ -48,7 +48,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/containers/cons.html b/doc/html/fusion/sequences/containers/cons.html index 539b3016..7a627c39 100644 --- a/doc/html/fusion/sequences/containers/cons.html +++ b/doc/html/fusion/sequences/containers/cons.html @@ -26,7 +26,7 @@
    - + Description

    @@ -41,14 +41,14 @@ Inlined Functions).

    - + Header
     #include <boost/fusion/sequence/container/list/cons.hpp>
     
    - + Synopsis
    @@ -56,7 +56,7 @@
     struct cons;
     
    - + Template parameters
    @@ -87,7 +87,7 @@
    - + Model of
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/containers/list.html b/doc/html/fusion/sequences/containers/list.html index a2e02bfe..11cd0672 100644 --- a/doc/html/fusion/sequences/containers/list.html +++ b/doc/html/fusion/sequences/containers/list.html @@ -26,7 +26,7 @@
    - + Description

    @@ -38,7 +38,7 @@ runtime cost of access to each element is peculiarly constant (see Recursive Inlined Functions).

    - + Header
    @@ -46,7 +46,7 @@
     #include <boost/fusion/sequence/container/list/list_forward.hpp>
     
    - + Synopsis
    @@ -77,7 +77,7 @@
     #define FUSION_MAX_LIST_SIZE 20
     
    - + Template parameters
    @@ -101,7 +101,7 @@
    - + Model of
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/containers/map.html b/doc/html/fusion/sequences/containers/map.html index 2a003c8f..5201c95f 100644 --- a/doc/html/fusion/sequences/containers/map.html +++ b/doc/html/fusion/sequences/containers/map.html @@ -26,7 +26,7 @@
    - + Description

    @@ -41,14 +41,14 @@ Functions).

    - + Header
     #include <boost/fusion/sequence/container/map.hpp>
     
    - + Synopsis
    @@ -79,7 +79,7 @@
     #define FUSION_MAX_MAP_SIZE 20
     
    - + Template parameters
    @@ -103,7 +103,7 @@
    - + Model of
      @@ -137,7 +137,7 @@
    - + Expression Semantics
    @@ -189,7 +189,7 @@
    - + Example
    @@ -208,7 +208,8 @@
     
     
    -
    +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/containers/set.html b/doc/html/fusion/sequences/containers/set.html index 21c24be6..73d4de8b 100644 --- a/doc/html/fusion/sequences/containers/set.html +++ b/doc/html/fusion/sequences/containers/set.html @@ -26,7 +26,7 @@
    - + Description

    @@ -39,14 +39,14 @@ Functions).

    - + Header
     #include <boost/fusion/sequence/container/set.hpp>
     
    - + Synopsis
    @@ -77,7 +77,7 @@
     #define FUSION_MAX_SET_SIZE 20
     
    - + Template parameters
    @@ -101,7 +101,7 @@
    - + Model of
      @@ -135,7 +135,7 @@
    - + Expression Semantics
    @@ -187,7 +187,7 @@
    - + Example
    @@ -200,7 +200,8 @@
     
     
    -
    +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/containers/vector.html b/doc/html/fusion/sequences/containers/vector.html index 2232e43e..27f6ab59 100644 --- a/doc/html/fusion/sequences/containers/vector.html +++ b/doc/html/fusion/sequences/containers/vector.html @@ -26,7 +26,7 @@
    - + Description

    @@ -39,7 +39,7 @@ most efficient.

    - + Header
    @@ -54,7 +54,7 @@
     #include <boost/fusion/sequence/container/vector/vector50.hpp>
     
    - + Synopsis

    @@ -115,7 +115,7 @@ #define FUSION_MAX_VECTOR_SIZE 20

    - + Template parameters
    @@ -139,7 +139,7 @@
    - + Model of
    - + Example
    @@ -230,7 +230,8 @@
     
     
    -
    +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/conversion.html b/doc/html/fusion/sequences/conversion.html index 976f2743..9ccd79a7 100644 --- a/doc/html/fusion/sequences/conversion.html +++ b/doc/html/fusion/sequences/conversion.html @@ -27,26 +27,14 @@ Conversion

    All fusion sequences can be converted to one of the Containers types using one of these conversion functions.

    - + Header

    @@ -55,7 +43,8 @@
     
     
    -
    +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/conversion/functions.html b/doc/html/fusion/sequences/conversion/functions.html index 90dd0560..fc595a49 100644 --- a/doc/html/fusion/sequences/conversion/functions.html +++ b/doc/html/fusion/sequences/conversion/functions.html @@ -34,7 +34,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/conversion/functions/as_list.html b/doc/html/fusion/sequences/conversion/functions/as_list.html index 99e07c10..28fa5f98 100644 --- a/doc/html/fusion/sequences/conversion/functions/as_list.html +++ b/doc/html/fusion/sequences/conversion/functions/as_list.html @@ -26,14 +26,14 @@
    - + Description

    Convert a fusion sequence to a list.

    - + Synopsis
    @@ -46,7 +46,7 @@
     as_list(Sequence const& seq);
     
    - + Parameters
    @@ -68,7 +68,7 @@
    - + Expression Semantics
    @@ -83,14 +83,14 @@ seq, to a list.

    - + Header
     #include <boost/fusion/sequence/conversion/as_list.hpp>
     
    - + Example
    @@ -99,7 +99,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/conversion/functions/as_map.html b/doc/html/fusion/sequences/conversion/functions/as_map.html index 5c306f22..1ec13167 100644 --- a/doc/html/fusion/sequences/conversion/functions/as_map.html +++ b/doc/html/fusion/sequences/conversion/functions/as_map.html @@ -26,14 +26,14 @@
    - + Description

    Convert a fusion sequence to a map.

    - + Synopsis
    @@ -46,7 +46,7 @@
     as_map(Sequence const& seq);
     
    - + Parameters
    @@ -68,7 +68,7 @@
    - + Expression Semantics
    @@ -88,14 +88,14 @@ There may be no duplicate fusion::pair key types.

    - + Header
     #include <boost/fusion/sequence/conversion/as_map.hpp>
     
    - + Example
    @@ -106,7 +106,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/conversion/functions/as_set.html b/doc/html/fusion/sequences/conversion/functions/as_set.html index bc76358e..94dc5549 100644 --- a/doc/html/fusion/sequences/conversion/functions/as_set.html +++ b/doc/html/fusion/sequences/conversion/functions/as_set.html @@ -26,14 +26,14 @@
    - + Description

    Convert a fusion sequence to a set.

    - + Synopsis
    @@ -46,7 +46,7 @@
     as_set(Sequence const& seq);
     
    - + Parameters
    @@ -68,7 +68,7 @@
    - + Expression Semantics
    @@ -87,14 +87,14 @@ key types.

    - + Header
     #include <boost/fusion/sequence/conversion/as_set.hpp>
     
    - + Example
    @@ -103,7 +103,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/conversion/functions/as_vector.html b/doc/html/fusion/sequences/conversion/functions/as_vector.html index 3e8eeae2..a8f276bf 100644 --- a/doc/html/fusion/sequences/conversion/functions/as_vector.html +++ b/doc/html/fusion/sequences/conversion/functions/as_vector.html @@ -26,14 +26,14 @@
    - + Description

    Convert a fusion sequence to a vector.

    - + Synopsis
    @@ -46,7 +46,7 @@
     as_vector(Sequence const& seq);
     
    - + Parameters
    @@ -68,7 +68,7 @@
    - + Expression Semantics
    @@ -83,14 +83,14 @@ seq, to a vector.

    - + Header
     #include <boost/fusion/sequence/conversion/as_vector.hpp>
     
    - + Example
    @@ -99,7 +99,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/conversion/metafunctions.html b/doc/html/fusion/sequences/conversion/metafunctions.html index 07397f1f..45706eba 100644 --- a/doc/html/fusion/sequences/conversion/metafunctions.html +++ b/doc/html/fusion/sequences/conversion/metafunctions.html @@ -34,7 +34,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_list.html b/doc/html/fusion/sequences/conversion/metafunctions/as_list.html index ccd7b83e..8d232574 100644 --- a/doc/html/fusion/sequences/conversion/metafunctions/as_list.html +++ b/doc/html/fusion/sequences/conversion/metafunctions/as_list.html @@ -26,14 +26,14 @@
    - + Description

    Returns the result type of as_list.

    - + Synopsis
    @@ -41,7 +41,7 @@
     struct as_list;
     
    - + Parameters
    @@ -65,7 +65,7 @@
    - + Expression Semantics
    @@ -81,14 +81,14 @@ Sequence, to a list.

    - + Header
     #include <boost/fusion/sequence/conversion/as_list.hpp>
     
    - + Example
    @@ -97,7 +97,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_map.html b/doc/html/fusion/sequences/conversion/metafunctions/as_map.html index 727def9e..2d73fe3d 100644 --- a/doc/html/fusion/sequences/conversion/metafunctions/as_map.html +++ b/doc/html/fusion/sequences/conversion/metafunctions/as_map.html @@ -26,14 +26,14 @@
    - + Description

    Returns the result type of as_map.

    - + Synopsis
    @@ -41,7 +41,7 @@
     struct as_map;
     
    - + Parameters
    @@ -65,7 +65,7 @@
    - + Expression Semantics
    @@ -86,14 +86,14 @@ There may be no duplicate fusion::pair key types.

    - + Header
     #include <boost/fusion/sequence/conversion/as_map.hpp>
     
    - + Example
    @@ -104,7 +104,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_set.html b/doc/html/fusion/sequences/conversion/metafunctions/as_set.html index 810416b3..d753deb8 100644 --- a/doc/html/fusion/sequences/conversion/metafunctions/as_set.html +++ b/doc/html/fusion/sequences/conversion/metafunctions/as_set.html @@ -26,14 +26,14 @@
    - + Description

    Returns the result type of as_set.

    - + Synopsis
    @@ -41,7 +41,7 @@
     struct as_set;
     
    - + Parameters
    @@ -65,7 +65,7 @@
    - + Expression Semantics
    @@ -85,14 +85,14 @@ key types.

    - + Header
     #include <boost/fusion/sequence/conversion/as_set.hpp>
     
    - + Example
    @@ -101,7 +101,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html b/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html index a666e4e3..7203ec9a 100644 --- a/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html +++ b/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html @@ -26,14 +26,14 @@
    - + Description

    Returns the result type of as_vector.

    - + Synopsis
    @@ -41,7 +41,7 @@
     struct as_vector;
     
    - + Parameters
    @@ -65,7 +65,7 @@
    - + Expression Semantics
    @@ -81,14 +81,14 @@ Sequence, to a vector.

    - + Header
     #include <boost/fusion/sequence/conversion/as_vector.hpp>
     
    - + Example
    @@ -97,7 +97,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/generation.html b/doc/html/fusion/sequences/generation.html index 9a7ca6fd..c4eaa4e9 100644 --- a/doc/html/fusion/sequences/generation.html +++ b/doc/html/fusion/sequences/generation.html @@ -27,32 +27,13 @@ Generation

    These are the functions that you can use to generate various forms of Containers from elemental values.

    - + Header

    @@ -61,7 +42,8 @@
     
     
    -
    +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/generation/functions.html b/doc/html/fusion/sequences/generation/functions.html index fe7a10e8..1e3e5000 100644 --- a/doc/html/fusion/sequences/generation/functions.html +++ b/doc/html/fusion/sequences/generation/functions.html @@ -38,7 +38,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/generation/functions/list_tie.html b/doc/html/fusion/sequences/generation/functions/list_tie.html index 294c0f27..a28ce837 100644 --- a/doc/html/fusion/sequences/generation/functions/list_tie.html +++ b/doc/html/fusion/sequences/generation/functions/list_tie.html @@ -26,14 +26,14 @@
    - + Description

    Constructs a tie using a list sequence.

    - + Synopsis
    @@ -53,7 +53,7 @@
     #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -82,7 +82,7 @@
    - + Expression Semantics
    @@ -97,14 +97,14 @@ Semantics: Create a list of references from x0, x1,... xN.

    - + Header
     #include <boost/fusion/sequence/generation/list_tie.hpp>
     
    - + Example
    @@ -115,7 +115,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/generation/functions/make_cons.html b/doc/html/fusion/sequences/generation/functions/make_cons.html index 80a05980..c38fcff1 100644 --- a/doc/html/fusion/sequences/generation/functions/make_cons.html +++ b/doc/html/fusion/sequences/generation/functions/make_cons.html @@ -26,7 +26,7 @@
    - + Description

    @@ -35,7 +35,7 @@ (tail).

    - + Synopsis
    @@ -48,7 +48,7 @@
     make_cons(Car const& car, Cdr const& cdr);
     
    - + Parameters
    @@ -82,7 +82,7 @@
    - + Expression Semantics
    @@ -98,21 +98,21 @@ (tail).

    - + Header
     #include <boost/fusion/sequence/generation/make_cons.hpp>
     
    - + Example
     make_cons('x', make_cons(123))
     
    - + See also
    @@ -122,7 +122,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/generation/functions/make_list.html b/doc/html/fusion/sequences/generation/functions/make_list.html index 6bd9f948..3d02a862 100644 --- a/doc/html/fusion/sequences/generation/functions/make_list.html +++ b/doc/html/fusion/sequences/generation/functions/make_list.html @@ -26,14 +26,14 @@
    - + Description

    Create a list from one or more values.

    - + Synopsis
    @@ -53,7 +53,7 @@
     #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -82,7 +82,7 @@
    - + Expression Semantics
    @@ -96,21 +96,21 @@ Semantics: Create a list from x0, x1,... xN.

    - + Header
     #include <boost/fusion/sequence/generation/make_list.hpp>
     
    - + Example
     make_list(123, "hello", 12.5)
     
    - + See also
    @@ -120,7 +120,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/generation/functions/make_map.html b/doc/html/fusion/sequences/generation/functions/make_map.html index 0e1388d4..50f2ff0f 100644 --- a/doc/html/fusion/sequences/generation/functions/make_map.html +++ b/doc/html/fusion/sequences/generation/functions/make_map.html @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ pairs.

    - + Synopsis
    @@ -47,7 +47,7 @@
     

    The variadic function accepts 0 to FUSION_MAX_VECTOR_SIZE - [10] + [10] elements, where FUSION_MAX_VECTOR_SIZE is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE @@ -57,7 +57,7 @@ #define FUSION_MAX_VECTOR_SIZE 20

    - + Parameters
    @@ -97,7 +97,7 @@
    - + Expression Semantics
    @@ -118,14 +118,14 @@ key types.

    - + Header
     #include <boost/fusion/sequence/generation/make_map.hpp>
     
    - + Example
    @@ -134,7 +134,7 @@
       , make_pair<double>("Men"))
     
    - + See also
    @@ -144,7 +144,7 @@



    -

    [10] +

    [10] map is implemented in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

    @@ -152,7 +152,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/generation/functions/make_set.html b/doc/html/fusion/sequences/generation/functions/make_set.html index 62ba710d..26da2b0e 100644 --- a/doc/html/fusion/sequences/generation/functions/make_set.html +++ b/doc/html/fusion/sequences/generation/functions/make_set.html @@ -26,14 +26,14 @@
    - + Description

    Create a set from one or more values.

    - + Synopsis
    @@ -44,7 +44,7 @@
     

    The variadic function accepts 0 to FUSION_MAX_VECTOR_SIZE - [9] + [9] elements, where FUSION_MAX_VECTOR_SIZE is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE @@ -54,7 +54,7 @@ #define FUSION_MAX_VECTOR_SIZE 20

    - + Parameters
    @@ -83,7 +83,7 @@
    - + Expression Semantics
    @@ -101,21 +101,21 @@ key types.

    - + Header
     #include <boost/fusion/sequence/generation/make_set.hpp>
     
    - + Example
     make_set(123, "hello", 12.5)
     
    - + See also
    @@ -124,7 +124,7 @@



    -

    [9] +

    [9] set is implemented in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

    @@ -132,7 +132,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/generation/functions/make_vector.html b/doc/html/fusion/sequences/generation/functions/make_vector.html index 77db2226..42d33c7e 100644 --- a/doc/html/fusion/sequences/generation/functions/make_vector.html +++ b/doc/html/fusion/sequences/generation/functions/make_vector.html @@ -26,14 +26,14 @@
    - + Description

    Create a vector from one or more values.

    - + Synopsis
    @@ -53,7 +53,7 @@
     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -82,7 +82,7 @@
    - + Expression Semantics
    @@ -96,21 +96,21 @@ Semantics: Create a vector from x0, x1,... xN.

    - + Header
     #include <boost/fusion/sequence/generation/make_vector.hpp>
     
    - + Example
     make_vector(123, "hello", 12.5)
     
    - + See also
    @@ -120,7 +120,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/generation/functions/tiers.html b/doc/html/fusion/sequences/generation/functions/tiers.html index 9524e749..9bfc2f14 100644 --- a/doc/html/fusion/sequences/generation/functions/tiers.html +++ b/doc/html/fusion/sequences/generation/functions/tiers.html @@ -48,7 +48,7 @@ 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)) - [11] + [11] .

    @@ -66,7 +66,7 @@ when calling functions which return sequences.

    - + Ignore

    @@ -81,7 +81,7 @@



    -

    [11] +

    [11] see Boost.Ref for details about ref

    @@ -89,7 +89,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/generation/functions/vector_tie.html b/doc/html/fusion/sequences/generation/functions/vector_tie.html index c47e8001..cf33dbba 100644 --- a/doc/html/fusion/sequences/generation/functions/vector_tie.html +++ b/doc/html/fusion/sequences/generation/functions/vector_tie.html @@ -26,14 +26,14 @@
    - + Description

    Constructs a tie using a vector sequence.

    - + Synopsis
    @@ -53,7 +53,7 @@
     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -82,7 +82,7 @@
    - + Expression Semantics
    @@ -97,14 +97,14 @@ Semantics: Create a vector of references from x0, x1,... xN.

    - + Header
     #include <boost/fusion/sequence/generation/vector_tie.hpp>
     
    - + Example
    @@ -115,7 +115,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/generation/metafunctions.html b/doc/html/fusion/sequences/generation/metafunctions.html index c5cc4937..3a4a1b45 100644 --- a/doc/html/fusion/sequences/generation/metafunctions.html +++ b/doc/html/fusion/sequences/generation/metafunctions.html @@ -37,7 +37,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/generation/metafunctions/list_tie.html b/doc/html/fusion/sequences/generation/metafunctions/list_tie.html index 52b71219..15a691f6 100644 --- a/doc/html/fusion/sequences/generation/metafunctions/list_tie.html +++ b/doc/html/fusion/sequences/generation/metafunctions/list_tie.html @@ -26,14 +26,14 @@
    - + Description

    Returns the result type of list_tie.

    - + Synopsis
    @@ -52,7 +52,7 @@
     #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -77,7 +77,7 @@
    - + Expression Semantics
    @@ -92,14 +92,14 @@ Semantics: Create a list of references from T0, T1,... TN.

    - + Header
     #include <boost/fusion/sequence/generation/list_tie.hpp>
     
    - + Example
    @@ -108,7 +108,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_cons.html b/doc/html/fusion/sequences/generation/metafunctions/make_cons.html index 2fa7c98a..97a0dff5 100644 --- a/doc/html/fusion/sequences/generation/metafunctions/make_cons.html +++ b/doc/html/fusion/sequences/generation/metafunctions/make_cons.html @@ -26,14 +26,14 @@
    - + Description

    Returns the result type of make_cons.

    - + Synopsis
    @@ -41,7 +41,7 @@
     struct make_cons;
     
    - + Parameters
    @@ -73,7 +73,7 @@
    - + Expression Semantics
    @@ -91,14 +91,14 @@ (tail).

    - + Header
     #include <boost/fusion/sequence/generation/make_cons.hpp>
     
    - + Example
    @@ -107,7 +107,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_list.html b/doc/html/fusion/sequences/generation/metafunctions/make_list.html index be44aca3..111e78eb 100644 --- a/doc/html/fusion/sequences/generation/metafunctions/make_list.html +++ b/doc/html/fusion/sequences/generation/metafunctions/make_list.html @@ -26,14 +26,14 @@
    - + Description

    Returns the result type of make_list.

    - + Synopsis
    @@ -52,7 +52,7 @@
     #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -77,7 +77,7 @@
    - + Expression Semantics
    @@ -93,14 +93,14 @@ Semantics: Create a list from T0, T1,... TN.

    - + Header
     #include <boost/fusion/sequence/generation/make_list.hpp>
     
    - + Example
    @@ -109,7 +109,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_map.html b/doc/html/fusion/sequences/generation/metafunctions/make_map.html index fe576662..ed3ca042 100644 --- a/doc/html/fusion/sequences/generation/metafunctions/make_map.html +++ b/doc/html/fusion/sequences/generation/metafunctions/make_map.html @@ -26,14 +26,14 @@
    - + Description

    Returns the result type of make_map.

    - + Synopsis
    @@ -45,7 +45,7 @@
     

    The variadic function accepts 0 to FUSION_MAX_VECTOR_SIZE - [13] + [13] elements, where FUSION_MAX_VECTOR_SIZE is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE @@ -55,7 +55,7 @@ #define FUSION_MAX_VECTOR_SIZE 20

    - + Parameters
    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -111,21 +111,21 @@ key types.

    - + Header
     #include <boost/fusion/sequence/generation/make_map.hpp>
     
    - + Example
     result_of::make_map<int, double, char, double>::type
     
    - + See also
    @@ -134,7 +134,7 @@



    -

    [13] +

    [13] map is implemented in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

    @@ -142,7 +142,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_set.html b/doc/html/fusion/sequences/generation/metafunctions/make_set.html index 754de52b..aabca251 100644 --- a/doc/html/fusion/sequences/generation/metafunctions/make_set.html +++ b/doc/html/fusion/sequences/generation/metafunctions/make_set.html @@ -26,14 +26,14 @@
    - + Description

    Returns the result type of make_set.

    - + Synopsis
    @@ -43,7 +43,7 @@
     

    The variadic function accepts 0 to FUSION_MAX_VECTOR_SIZE - [12] + [12] elements, where FUSION_MAX_VECTOR_SIZE is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE @@ -53,7 +53,7 @@ #define FUSION_MAX_VECTOR_SIZE 20

    - + Parameters
    @@ -78,7 +78,7 @@
    - + Expression Semantics
    @@ -98,14 +98,14 @@ key types.

    - + Header
     #include <boost/fusion/sequence/generation/make_set.hpp>
     
    - + Example
    @@ -113,7 +113,7 @@
     


    -

    [12] +

    [12] set is implemented in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

    @@ -121,7 +121,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_vector.html b/doc/html/fusion/sequences/generation/metafunctions/make_vector.html index ef83d1f5..1fffe123 100644 --- a/doc/html/fusion/sequences/generation/metafunctions/make_vector.html +++ b/doc/html/fusion/sequences/generation/metafunctions/make_vector.html @@ -26,14 +26,14 @@
    - + Description

    Returns the result type of make_vector.

    - + Synopsis
    @@ -52,7 +52,7 @@
     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -77,7 +77,7 @@
    - + Expression Semantics
    @@ -93,14 +93,14 @@ Semantics: Create a vector from T0, T1,... TN.

    - + Header
     #include <boost/fusion/sequence/generation/make_list.hpp>
     
    - + Example
    @@ -109,7 +109,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html b/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html index bfe44947..b70cc262 100644 --- a/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html +++ b/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html @@ -26,14 +26,14 @@
    - + Description

    Returns the result type of vector_tie.

    - + Synopsis
    @@ -52,7 +52,7 @@
     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -77,7 +77,7 @@
    - + Expression Semantics
    @@ -92,14 +92,14 @@ Semantics: Create a vector of references from T0, T1,... TN.

    - + Header
     #include <boost/fusion/sequence/generation/vector_tie.hpp>
     
    - + Example
    @@ -108,7 +108,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/intrinsics.html b/doc/html/fusion/sequences/intrinsics.html index 9df6eb40..8143ab1c 100644 --- a/doc/html/fusion/sequences/intrinsics.html +++ b/doc/html/fusion/sequences/intrinsics.html @@ -27,34 +27,7 @@ Intrinsics

    Intrinsics form the essential interface of Fusion _sequence_s. @@ -63,11 +36,11 @@ Intrinsic functions, unlike Algorithms, are not generic across the full Sequence repertoire. They need to be implemented for each Fusion Sequence - [5] + [5] .

    - + Header

    @@ -75,7 +48,7 @@
     


    -

    [5] +

    [5] In practice, many of intrinsic functions have default implementations that will work in majority of cases

    @@ -83,7 +56,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/intrinsics/functions.html b/doc/html/fusion/sequences/intrinsics/functions.html index 640d4768..d81674c8 100644 --- a/doc/html/fusion/sequences/intrinsics/functions.html +++ b/doc/html/fusion/sequences/intrinsics/functions.html @@ -40,7 +40,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/intrinsics/functions/at.html b/doc/html/fusion/sequences/intrinsics/functions/at.html index eda46105..bf182a0a 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/at.html +++ b/doc/html/fusion/sequences/intrinsics/functions/at.html @@ -26,14 +26,14 @@
    - + Description

    Returns the N-th element from the beginning of the sequence.

    - + Synopsis
    @@ -46,7 +46,7 @@
     at(Sequence const& seq);
     
    - + Parameters
    @@ -81,7 +81,7 @@
    - + Expression Semantics
    @@ -109,14 +109,14 @@ deref(advance<N>(begin(s)))
    - + Header
     #include <boost/fusion/sequence/intrinsic/at.hpp>
     
    - + Example
    @@ -126,7 +126,8 @@
     
     
    -
    +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/intrinsics/functions/at_c.html b/doc/html/fusion/sequences/intrinsics/functions/at_c.html index 735dbda9..02d8542b 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/at_c.html +++ b/doc/html/fusion/sequences/intrinsics/functions/at_c.html @@ -26,14 +26,14 @@
    - + Description

    Returns the N-th element from the beginning of the sequence.

    - + Synopsis
    @@ -46,7 +46,7 @@
     at_c(Sequence const& seq);
     
    - + Parameters
    @@ -80,7 +80,7 @@
    - + Expression Semantics
    @@ -109,14 +109,14 @@ deref(advance<N>(begin(s)))
    - + Header
     #include <boost/fusion/sequence/intrinsic/at_c.hpp>
     
    - + Example
    @@ -126,7 +126,8 @@
     
     
    -
    +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/intrinsics/functions/at_key.html b/doc/html/fusion/sequences/intrinsics/functions/at_key.html index 34f4c4ba..385d9090 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/at_key.html +++ b/doc/html/fusion/sequences/intrinsics/functions/at_key.html @@ -26,14 +26,14 @@
    - + Description

    Returns the element associated with a Key from the sequence.

    - + Synopsis
    @@ -46,7 +46,7 @@
     at_key(Sequence const& seq);
     
    - + Parameters
    @@ -79,7 +79,7 @@
    - + Expression Semantics
    @@ -103,14 +103,14 @@ with Key.

    - + Header
     #include <boost/fusion/sequence/intrinsic/at_key.hpp>
     
    - + Example
    @@ -120,7 +120,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/intrinsics/functions/back.html b/doc/html/fusion/sequences/intrinsics/functions/back.html index 32d6d6dd..3a02d172 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/back.html +++ b/doc/html/fusion/sequences/intrinsics/functions/back.html @@ -26,14 +26,14 @@
    - + Description

    Returns the last element in the sequence.

    - + Synopsis
    @@ -46,7 +46,7 @@
     back(Sequence const& seq);
     
    - + Parameters
    @@ -71,7 +71,7 @@
    - + Expression Semantics
    @@ -95,14 +95,14 @@ in the sequence.

    - + Header
     #include <boost/fusion/sequence/intrinsic/back.hpp>
     
    - + Example
    @@ -112,7 +112,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/intrinsics/functions/begin.html b/doc/html/fusion/sequences/intrinsics/functions/begin.html index c2a0336d..35e40ee4 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/begin.html +++ b/doc/html/fusion/sequences/intrinsics/functions/begin.html @@ -26,14 +26,14 @@
    - + Description

    Returns an iterator pointing to the first element in the sequence.

    - + Synopsis
    @@ -46,7 +46,7 @@
     begin(Sequence const& seq);
     
    - + Parameters
    @@ -72,7 +72,7 @@
    - + Expression Semantics
    @@ -102,14 +102,14 @@ to the first element in the sequence.

    - + Header
     #include <boost/fusion/sequence/intrinsic/begin.hpp>
     
    - + Example
    @@ -119,7 +119,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/intrinsics/functions/empty.html b/doc/html/fusion/sequences/intrinsics/functions/empty.html index 18dae581..91c8aa7a 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/empty.html +++ b/doc/html/fusion/sequences/intrinsics/functions/empty.html @@ -26,7 +26,7 @@
    - + Description

    @@ -35,7 +35,7 @@ the sequence is empty, else, evaluates to false.

    - + Synopsis
    @@ -44,7 +44,7 @@
     empty(Sequence const& seq);
     
    - + Parameters
    @@ -69,7 +69,7 @@
    - + Expression Semantics
    @@ -84,14 +84,14 @@ to false.

    - + Header
     #include <boost/fusion/sequence/intrinsic/empty.hpp>
     
    - + Example
    @@ -101,7 +101,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/intrinsics/functions/end.html b/doc/html/fusion/sequences/intrinsics/functions/end.html index e6e72d93..1945108c 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/end.html +++ b/doc/html/fusion/sequences/intrinsics/functions/end.html @@ -26,14 +26,14 @@
    - + Description

    Returns an iterator pointing to one element past the end of the sequence.

    - + Synopsis
    @@ -46,7 +46,7 @@
     end(Sequence const& seq);
     
    - + Parameters
    @@ -72,7 +72,7 @@
    - + Expression Semantics
    @@ -102,14 +102,14 @@ to one element past the end of the sequence.

    - + Header
     #include <boost/fusion/sequence/intrinsic/end.hpp>
     
    - + Example
    @@ -119,7 +119,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/intrinsics/functions/front.html b/doc/html/fusion/sequences/intrinsics/functions/front.html index 0d49a4a9..97f5d498 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/front.html +++ b/doc/html/fusion/sequences/intrinsics/functions/front.html @@ -26,14 +26,14 @@
    - + Description

    Returns the first element in the sequence.

    - + Synopsis
    @@ -46,7 +46,7 @@
     front(Sequence const& seq);
     
    - + Parameters
    @@ -71,7 +71,7 @@
    - + Expression Semantics
    @@ -95,14 +95,14 @@ in the sequence.

    - + Header
     #include <boost/fusion/sequence/intrinsic/front.hpp>
     
    - + Example
    @@ -112,7 +112,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/intrinsics/functions/has_key.html b/doc/html/fusion/sequences/intrinsics/functions/has_key.html index 7212017e..55176331 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/has_key.html +++ b/doc/html/fusion/sequences/intrinsics/functions/has_key.html @@ -26,7 +26,7 @@
    - + Description

    @@ -36,7 +36,7 @@ to false.

    - + Synopsis
    @@ -45,7 +45,7 @@
     has_key(Sequence const& seq);
     
    - + Parameters
    @@ -78,7 +78,7 @@
    - + Expression Semantics
    @@ -93,14 +93,14 @@ associated with Key, else, evaluates to false.

    - + Header
     #include <boost/fusion/sequence/intrinsic/has_key.hpp>
     
    - + Example
    @@ -110,7 +110,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/intrinsics/functions/size.html b/doc/html/fusion/sequences/intrinsics/functions/size.html index 000c6e4d..d1e8f313 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/size.html +++ b/doc/html/fusion/sequences/intrinsics/functions/size.html @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ that evaluates the number of elements in the sequence.

    - + Synopsis
    @@ -43,7 +43,7 @@
     size(Sequence const& seq);
     
    - + Parameters
    @@ -68,7 +68,7 @@
    - + Expression Semantics
    @@ -83,14 +83,14 @@ in the sequence.

    - + Header
     #include <boost/fusion/sequence/intrinsic/size.hpp>
     
    - + Example
    @@ -100,7 +100,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions.html b/doc/html/fusion/sequences/intrinsics/metafunctions.html index f7b21dc8..e50cb52f 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions.html @@ -43,7 +43,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/at.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at.html index d592b28a..078481c1 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/at.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/at.html @@ -26,16 +26,16 @@
    - + Description

    Returns the result type of at - [6] + [6] .

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.25. Parameters

    +

    Table 1.25. Parameters

    @@ -82,7 +82,7 @@
    - + Expression Semantics
    @@ -97,14 +97,14 @@ using at to access the Nth element of Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/at.hpp>
     
    - + Example
    @@ -113,7 +113,7 @@
     


    -

    [6] +

    [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 @@ -123,7 +123,8 @@

    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html index 7a33a522..6b44b93b 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html @@ -26,16 +26,16 @@
    - + Description

    Returns the result type of at_c - [7] + [7] .

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.26. Parameters

    +

    Table 1.26. Parameters

    @@ -80,7 +80,7 @@
    - + Expression Semantics
    @@ -95,14 +95,14 @@ using at_c to access the Mth element of Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/at.hpp>
     
    - + Example
    @@ -111,7 +111,7 @@
     


    -

    [7] +

    [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 @@ -121,7 +121,8 @@

    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html index c1f395fe..5e46c469 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html @@ -26,16 +26,16 @@
    - + Description

    Returns the result type of at_key - [8] + [8] .

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.30. Parameters

    +

    Table 1.30. Parameters

    @@ -80,7 +80,7 @@
    - + Expression Semantics
    @@ -97,14 +97,14 @@ Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/at_key.hpp>
     
    - + Example
    @@ -113,7 +113,7 @@
     


    -

    [8] +

    [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 @@ -123,7 +123,8 @@

    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/back.html b/doc/html/fusion/sequences/intrinsics/metafunctions/back.html index 9641d60a..92506d86 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/back.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/back.html @@ -26,14 +26,14 @@
    - + Description

    Returns the result type of back.

    - + Synopsis
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.23. Parameters

    +

    Table 1.23. Parameters

    @@ -68,7 +68,7 @@
    - + Expression Semantics
    @@ -83,14 +83,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>
     
    - + Example
    @@ -100,7 +100,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html b/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html index 72dbf953..ebdcceab 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html @@ -26,14 +26,14 @@
    - + Description

    Returns the result type of begin.

    - + Synopsis
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.19. Parameters

    +

    Table 1.19. Parameters

    @@ -68,7 +68,7 @@
    - + Expression Semantics
    @@ -84,14 +84,14 @@ to the first element of Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/begin.hpp>
     
    - + Example
    @@ -102,7 +102,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html b/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html index 8384a286..a0b551c8 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html @@ -26,14 +26,14 @@
    - + Description

    Returns the result type of empty.

    - + Synopsis
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.21. Parameters

    +

    Table 1.21. Parameters

    @@ -68,7 +68,7 @@
    - + Expression Semantics
    @@ -85,14 +85,14 @@ mpl::false_ otherwise.

    - + Header
     #include <boost/fusion/sequence/intrinsic/empty.hpp>
     
    - + Example
    @@ -105,7 +105,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/end.html b/doc/html/fusion/sequences/intrinsics/metafunctions/end.html index 0c9aa1db..0743e27d 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/end.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/end.html @@ -26,14 +26,14 @@
    - + Description

    Returns the result type of end.

    - + Synopsis
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.20. Parameters

    +

    Table 1.20. Parameters

    @@ -68,7 +68,7 @@
    - + Expression Semantics
    @@ -84,14 +84,14 @@ one past the end of Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/end.hpp>
     
    - + Example
    @@ -102,7 +102,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/front.html b/doc/html/fusion/sequences/intrinsics/metafunctions/front.html index d742ebb8..a31ddb4c 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/front.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/front.html @@ -26,14 +26,14 @@
    - + Description

    Returns the result type of front.

    - + Synopsis
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.22. Parameters

    +

    Table 1.22. Parameters

    @@ -68,7 +68,7 @@
    - + Expression Semantics
    @@ -84,14 +84,14 @@ Equivalent to result_of::deref<result_of::begin<Seq>::type>::type.

    - + Header
     #include <boost/fusion/sequence/intrinsic/front.hpp>
     
    - + Example
    @@ -101,7 +101,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html index f999b484..cbcadd73 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html @@ -26,14 +26,14 @@
    - + Description

    Returns the result type of has_key.

    - + Synopsis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.29. Parameters

    +

    Table 1.29. Parameters

    @@ -78,7 +78,7 @@
    - + Expression Semantics
    @@ -96,14 +96,14 @@ mpl::false_ otherwise.

    - + Header
     #include <boost/fusion/sequence/intrinsic/has_key.hpp>
     
    - + Example
    @@ -114,7 +114,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/size.html b/doc/html/fusion/sequences/intrinsics/metafunctions/size.html index d15ddd94..f52e4550 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/size.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/size.html @@ -26,14 +26,14 @@
    - + Description

    Returns the result type of size.

    - + Synopsis
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.24. Parameters

    +

    Table 1.24. Parameters

    @@ -68,7 +68,7 @@
    - + Expression Semantics
    @@ -84,14 +84,14 @@ in Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/size.hpp>
     
    - + Example
    @@ -102,7 +102,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html index f872fc3d..8c7ff70f 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html @@ -26,14 +26,14 @@
    - + Description

    Returns the actual type at a given index from the Sequence.

    - + Synopsis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.27. Parameters

    +

    Table 1.27. Parameters

    @@ -80,7 +80,7 @@
    - + Expression Semantics
    @@ -95,14 +95,14 @@ the Nth element of Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/value_at.hpp>
     
    - + Example
    @@ -112,7 +112,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html index b75eacaa..bf53847a 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html @@ -26,14 +26,14 @@
    - + Description

    Returns the actual type at a given index from the Sequence.

    - + Synopsis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.28. Parameters

    +

    Table 1.28. Parameters

    @@ -78,7 +78,7 @@
    - + Expression Semantics
    @@ -93,14 +93,14 @@ the Mth element of Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/value_at.hpp>
     
    - + Example
    @@ -110,7 +110,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html index 9982c99e..cda46f50 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html @@ -26,14 +26,14 @@
    - + Description

    Returns the actual element type associated with a Key from the Sequence.

    - + Synopsis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.31. Parameters

    +

    Table 1.31. Parameters

    @@ -78,7 +78,7 @@
    - + Expression Semantics
    @@ -94,14 +94,14 @@ in Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/value_at_key.hpp>
     
    - + Example
    @@ -111,7 +111,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/operators.html b/doc/html/fusion/sequences/operators.html index 141ad2c4..40004fc6 100644 --- a/doc/html/fusion/sequences/operators.html +++ b/doc/html/fusion/sequences/operators.html @@ -27,24 +27,7 @@ Operators

    These operators, like the Algorithms, @@ -54,7 +37,8 @@

    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/operators/comparison.html b/doc/html/fusion/sequences/operators/comparison.html index d27d86f5..e91c0940 100644 --- a/doc/html/fusion/sequences/operators/comparison.html +++ b/doc/html/fusion/sequences/operators/comparison.html @@ -48,7 +48,7 @@ only until the result is clear.

    - + Header
    @@ -57,7 +57,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/operators/comparison/equal.html b/doc/html/fusion/sequences/operators/comparison/equal.html index 82c5dd95..16b47f95 100644 --- a/doc/html/fusion/sequences/operators/comparison/equal.html +++ b/doc/html/fusion/sequences/operators/comparison/equal.html @@ -27,14 +27,14 @@
    - + Description

    Compare two sequences for equality.

    - + Synopsis
    @@ -43,7 +43,7 @@
     operator==(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -68,7 +68,7 @@
    - + Expression Semantics
    @@ -104,14 +104,14 @@ true.

    - + Header
     #include <boost/fusion/sequence/comparison/equal_to.hpp>
     
    - + Example
    @@ -122,7 +122,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/operators/comparison/greater_than.html b/doc/html/fusion/sequences/operators/comparison/greater_than.html index 3336560e..10f71626 100644 --- a/doc/html/fusion/sequences/operators/comparison/greater_than.html +++ b/doc/html/fusion/sequences/operators/comparison/greater_than.html @@ -34,7 +34,7 @@ Lexicographically compare two sequences.

    - + Synopsis
    @@ -43,7 +43,7 @@
     operator>(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -68,7 +68,7 @@
    - + Expression Semantics
    @@ -96,14 +96,14 @@ Semantics: Returns b < a.

    - + Header
     #include <boost/fusion/sequence/comparison/less_equal.hpp>
     
    - + Example
    @@ -116,7 +116,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html b/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html index 05a8319f..2a66a1e3 100644 --- a/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html +++ b/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html @@ -33,7 +33,7 @@ Lexicographically compare two sequences.

    - + Synopsis
    @@ -42,7 +42,7 @@
     operator>=(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -67,7 +67,7 @@
    - + Expression Semantics
    @@ -95,14 +95,14 @@ Semantics: Returns !(a < b).

    - + Header
     #include <boost/fusion/sequence/comparison/greater_equal.hpp>
     
    - + Example
    @@ -115,7 +115,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/operators/comparison/less_than.html b/doc/html/fusion/sequences/operators/comparison/less_than.html index b002a5cc..1a9a8ab4 100644 --- a/doc/html/fusion/sequences/operators/comparison/less_than.html +++ b/doc/html/fusion/sequences/operators/comparison/less_than.html @@ -34,7 +34,7 @@ Lexicographically compare two sequences.

    - + Synopsis
    @@ -43,7 +43,7 @@
     operator<(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -68,7 +68,7 @@
    - + Expression Semantics
    @@ -98,14 +98,14 @@ and b.

    - + Header
     #include <boost/fusion/sequence/comparison/less.hpp>
     
    - + Example
    @@ -118,7 +118,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/operators/comparison/less_than_equal.html b/doc/html/fusion/sequences/operators/comparison/less_than_equal.html index 1e149368..0137445c 100644 --- a/doc/html/fusion/sequences/operators/comparison/less_than_equal.html +++ b/doc/html/fusion/sequences/operators/comparison/less_than_equal.html @@ -34,7 +34,7 @@ Lexicographically compare two sequences.

    - + Synopsis
    @@ -43,7 +43,7 @@
     operator<=(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -68,7 +68,7 @@
    - + Expression Semantics
    @@ -96,14 +96,14 @@ Semantics: Returns !(b < a).

    - + Header
     #include <boost/fusion/sequence/comparison/less_equal.hpp>
     
    - + Example
    @@ -116,7 +116,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/operators/comparison/not_equal.html b/doc/html/fusion/sequences/operators/comparison/not_equal.html index 7f96e9ed..eae92c5f 100644 --- a/doc/html/fusion/sequences/operators/comparison/not_equal.html +++ b/doc/html/fusion/sequences/operators/comparison/not_equal.html @@ -33,7 +33,7 @@ Compare two sequences for inequality.

    - + Synopsis
    @@ -42,7 +42,7 @@
     operator!=(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -67,7 +67,7 @@
    - + Expression Semantics
    @@ -98,14 +98,14 @@ Returns !(a == b).

    - + Header
     #include <boost/fusion/sequence/comparison/not_equal_to.hpp>
     
    - + Example
    @@ -118,7 +118,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/operators/i_o.html b/doc/html/fusion/sequences/operators/i_o.html index c86d5c97..1a569ef1 100644 --- a/doc/html/fusion/sequences/operators/i_o.html +++ b/doc/html/fusion/sequences/operators/i_o.html @@ -115,7 +115,7 @@ representation may not be unambiguously parseable.

    - + Header
    @@ -124,7 +124,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/operators/i_o/in.html b/doc/html/fusion/sequences/operators/i_o/in.html index 6bf497f7..55b5eef9 100644 --- a/doc/html/fusion/sequences/operators/i_o/in.html +++ b/doc/html/fusion/sequences/operators/i_o/in.html @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ stream.

    - + Synopsis
    @@ -43,7 +43,7 @@
     operator>>(IStream& is, Sequence& seq);
     
    - + Parameters
    @@ -73,7 +73,7 @@
    - + Expression Semantics
    @@ -89,14 +89,14 @@ e.

    - + Header
     #include <boost/fusion/sequence/io/in.hpp>
     
    - + Example
    @@ -106,7 +106,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/operators/i_o/out.html b/doc/html/fusion/sequences/operators/i_o/out.html index 10ddfd63..7403c697 100644 --- a/doc/html/fusion/sequences/operators/i_o/out.html +++ b/doc/html/fusion/sequences/operators/i_o/out.html @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ stream.

    - + Synopsis
    @@ -43,7 +43,7 @@
     operator<<(OStream& os, Sequence& seq);
     
    - + Parameters
    @@ -73,7 +73,7 @@
    - + Expression Semantics
    @@ -89,14 +89,14 @@ e.

    - + Header
     #include <boost/fusion/sequence/io/out.hpp>
     
    - + Example
    @@ -105,7 +105,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/views.html b/doc/html/fusion/sequences/views.html index d7542b79..cf44cfa9 100644 --- a/doc/html/fusion/sequences/views.html +++ b/doc/html/fusion/sequences/views.html @@ -44,7 +44,7 @@ very cheap to copy and be passed around by value.

    - + Header

    @@ -53,7 +53,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/views/filter_view.html b/doc/html/fusion/sequences/views/filter_view.html index 355cfcf9..85931ef9 100644 --- a/doc/html/fusion/sequences/views/filter_view.html +++ b/doc/html/fusion/sequences/views/filter_view.html @@ -26,7 +26,7 @@
    - + Description

    @@ -37,14 +37,14 @@ only those elements for which its predicate evaluates to mpl::true_.

    - + Header
     #include <boost/fusion/sequence/view/filter_view.hpp>
     
    - + Synopsis
    @@ -52,7 +52,7 @@
     struct filter_view;
     
    - + Template parameters
    @@ -87,7 +87,7 @@
    - + Model of
    - + Example
    @@ -174,7 +174,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/views/iterator_range.html b/doc/html/fusion/sequences/views/iterator_range.html index 70bf3661..7be159c2 100644 --- a/doc/html/fusion/sequences/views/iterator_range.html +++ b/doc/html/fusion/sequences/views/iterator_range.html @@ -26,7 +26,7 @@
    - + Description

    @@ -34,14 +34,14 @@ a sub-range of its underlying sequence delimited by a pair of iterators.

    - + Header
     #include <boost/fusion/sequence/view/iterator_range.hpp>
     
    - + Synopsis
    @@ -49,7 +49,7 @@
     struct iterator_range;
     
    - + Template parameters
    @@ -82,7 +82,7 @@
    - + Model of
    - + Example
    @@ -178,7 +178,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/views/joint_view.html b/doc/html/fusion/sequences/views/joint_view.html index 81199a6c..67eca342 100644 --- a/doc/html/fusion/sequences/views/joint_view.html +++ b/doc/html/fusion/sequences/views/joint_view.html @@ -26,7 +26,7 @@
    - + Description

    @@ -34,14 +34,14 @@ which is a concatenation of two sequences.

    - + Header
     #include <boost/fusion/sequence/view/joint_view.hpp>
     
    - + Synopsis
    @@ -49,7 +49,7 @@
     struct joint_view;
     
    - + Template parameters
    @@ -86,7 +86,7 @@
    - + Model of
    - + Example
    @@ -174,7 +174,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/views/reverse_view.html b/doc/html/fusion/sequences/views/reverse_view.html index e2692be0..f83d7e95 100644 --- a/doc/html/fusion/sequences/views/reverse_view.html +++ b/doc/html/fusion/sequences/views/reverse_view.html @@ -31,14 +31,14 @@ and the last element will be its first.

    - + Header
     #include <boost/fusion/sequence/view/reverse_view.hpp>
     
    - + Synopsis
    @@ -46,7 +46,7 @@
     struct reverse_view;
     
    - + Template parameters
    @@ -72,7 +72,7 @@
    - + Model of
    - + Example
    @@ -154,7 +154,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/views/single_view.html b/doc/html/fusion/sequences/views/single_view.html index 69d4fb9d..c796811d 100644 --- a/doc/html/fusion/sequences/views/single_view.html +++ b/doc/html/fusion/sequences/views/single_view.html @@ -30,14 +30,14 @@ a value as a single element sequence.

    - + Header
     #include <boost/fusion/sequence/view/single_view.hpp>
     
    - + Synopsis
    @@ -45,7 +45,7 @@
     struct single_view;
     
    - + Template parameters
    @@ -68,7 +68,7 @@
    - + Model of
    - + Example
    @@ -146,7 +146,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/views/transform_view.html b/doc/html/fusion/sequences/views/transform_view.html index 0c956438..3896a1bb 100644 --- a/doc/html/fusion/sequences/views/transform_view.html +++ b/doc/html/fusion/sequences/views/transform_view.html @@ -34,14 +34,14 @@ Traversal Concept) of its underlying sequence.

    - + Header
     #include <boost/fusion/sequence/view/transform_view.hpp>
     
    - + Synopsis

    @@ -59,7 +59,7 @@ struct transform_view;

    - + Template parameters
    @@ -114,7 +114,7 @@
    - + Model of
    • @@ -169,7 +169,7 @@
    - + Expression Semantics
    @@ -233,7 +233,7 @@
    - + Example
    @@ -261,7 +261,8 @@
     
     
    -
    +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/sequences/views/zip_view.html b/doc/html/fusion/sequences/views/zip_view.html index 28e1538c..f5d8b54a 100644 --- a/doc/html/fusion/sequences/views/zip_view.html +++ b/doc/html/fusion/sequences/views/zip_view.html @@ -26,7 +26,7 @@
    - + Description

    @@ -37,14 +37,14 @@ of references to the component _sequence_s.

    - + Header
     #include <boost/fusion/sequence/view/zip_view.hpp>
     
    - + Synopsis
    @@ -52,7 +52,7 @@
     struct zip_view;
     
    - + Template parameters
    @@ -77,7 +77,7 @@
    - + Model of
    - + Example
    @@ -157,7 +157,8 @@
     
     
    -
    +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/support.html b/doc/html/fusion/support.html index dfaeb458..b81fb21c 100644 --- a/doc/html/fusion/support.html +++ b/doc/html/fusion/support.html @@ -40,7 +40,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/support/category_of.html b/doc/html/fusion/support/category_of.html index 4046368a..f5ec8856 100644 --- a/doc/html/fusion/support/category_of.html +++ b/doc/html/fusion/support/category_of.html @@ -26,7 +26,7 @@

    - + Description

    @@ -36,7 +36,7 @@ Sequence Concepts).

    - + Synopsis

    @@ -50,7 +50,7 @@
     }
     

    - + Parameters

    @@ -72,7 +72,7 @@

    - + Expression Semantics

    @@ -138,14 +138,14 @@ of a particular Sequence or Iterator.

    - + Header

     #include <boost/fusion/support/category_of.hpp>
     

    - + Example

    @@ -158,7 +158,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/support/deduce.html b/doc/html/fusion/support/deduce.html index a5b28c6a..67787840 100644 --- a/doc/html/fusion/support/deduce.html +++ b/doc/html/fusion/support/deduce.html @@ -26,7 +26,7 @@

    - + Description

    @@ -39,14 +39,14 @@ Reference wrappers are removed (see boost::ref).

    - + Header

     #include <boost/fusion/support/deduce.hpp>
     

    - + Synopsis

    @@ -60,7 +60,7 @@
     }
     

    - + Example

    @@ -81,14 +81,15 @@
     }
     

    - + See also

    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/support/deduce_sequence.html b/doc/html/fusion/support/deduce_sequence.html index 14960de0..4e645efb 100644 --- a/doc/html/fusion/support/deduce_sequence.html +++ b/doc/html/fusion/support/deduce_sequence.html @@ -26,7 +26,7 @@

    - + Description

    @@ -39,14 +39,14 @@ original type as its argument.

    - + Header

     #include <boost/fusion/support/deduce_sequence.hpp>
     

    - + Synopsis

    @@ -60,7 +60,7 @@
     }
     

    - + Example

    @@ -83,14 +83,15 @@
     }
     

    - + See also

    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/support/is_sequence.html b/doc/html/fusion/support/is_sequence.html index c650ee29..b55277f1 100644 --- a/doc/html/fusion/support/is_sequence.html +++ b/doc/html/fusion/support/is_sequence.html @@ -26,7 +26,7 @@

    - + Description

    @@ -37,7 +37,7 @@ conforming sequences.

    - + Synopsis

    @@ -51,7 +51,7 @@
     }
     

    - + Parameters

    @@ -73,7 +73,7 @@

    - + Expression Semantics

    @@ -91,14 +91,14 @@ otherwise.

    - + Header

     #include <boost/fusion/support/is_sequence.hpp>
     

    - + Example

    @@ -112,7 +112,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/support/is_view.html b/doc/html/fusion/support/is_view.html index 08bfb18c..e5385608 100644 --- a/doc/html/fusion/support/is_view.html +++ b/doc/html/fusion/support/is_view.html @@ -26,7 +26,7 @@

    - + Description

    @@ -40,7 +40,7 @@ specialized to accomodate clients providing Fusion conforming views.

    - + Synopsis

    @@ -54,7 +54,7 @@
     }
     

    - + Parameters

    @@ -76,7 +76,7 @@

    - + Expression Semantics

    @@ -93,14 +93,14 @@
             otherwise.
           

    - + Header

     #include <boost/fusion/support/is_view.hpp>
     

    - + Example

    @@ -116,7 +116,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/support/pair.html b/doc/html/fusion/support/pair.html index 0cd9bfc8..0a1088c1 100644 --- a/doc/html/fusion/support/pair.html +++ b/doc/html/fusion/support/pair.html @@ -26,7 +26,7 @@

    - + Description

    @@ -37,7 +37,7 @@ for example.

    - + Synopsis

    @@ -61,7 +61,7 @@
     make_pair(Second const &);
     

    - + Template parameters

    @@ -117,7 +117,7 @@

    - + Expression Semantics

    @@ -198,14 +198,14 @@

    - + Header

     #include <boost/fusion/support/pair.hpp>
     

    - + Example

    @@ -217,7 +217,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/support/tag_of.html b/doc/html/fusion/support/tag_of.html index 80dd82cb..38b60373 100644 --- a/doc/html/fusion/support/tag_of.html +++ b/doc/html/fusion/support/tag_of.html @@ -26,7 +26,7 @@

    - + Description

    @@ -40,7 +40,7 @@ conforming sequences.

    - + Synopsis

    @@ -54,7 +54,7 @@
     }
     

    - + Parameters

    @@ -76,7 +76,7 @@

    - + Expression Semantics

    @@ -90,14 +90,14 @@
             with T.
           

    - + Header

     #include <boost/fusion/support/tag_of.hpp>
     

    - + Example

    @@ -112,7 +112,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/tuples.html b/doc/html/fusion/tuples.html index 524c8fe7..ad1d5d49 100644 --- a/doc/html/fusion/tuples.html +++ b/doc/html/fusion/tuples.html @@ -54,7 +54,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/tuples/class_template_tuple.html b/doc/html/fusion/tuples/class_template_tuple.html index e62eebda..958312cf 100644 --- a/doc/html/fusion/tuples/class_template_tuple.html +++ b/doc/html/fusion/tuples/class_template_tuple.html @@ -48,7 +48,7 @@ in future releases of fusion.

    - + Synopsis

    @@ -60,7 +60,7 @@
     class tuple;
     

    - + Header

    @@ -69,7 +69,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/tuples/class_template_tuple/construction.html b/doc/html/fusion/tuples/class_template_tuple/construction.html index 73e48b73..965177b6 100644 --- a/doc/html/fusion/tuples/class_template_tuple/construction.html +++ b/doc/html/fusion/tuples/class_template_tuple/construction.html @@ -27,7 +27,7 @@
    - + Description

    @@ -38,7 +38,7 @@ in this section.

    - + Specification
    @@ -118,7 +118,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/tuples/class_template_tuple/element_access.html b/doc/html/fusion/tuples/class_template_tuple/element_access.html index 0de1e5fb..6f0eaa92 100644 --- a/doc/html/fusion/tuples/class_template_tuple/element_access.html +++ b/doc/html/fusion/tuples/class_template_tuple/element_access.html @@ -31,7 +31,7 @@ access">Element access
    - + Description

    @@ -40,7 +40,7 @@ function to provide access to it's elements by zero based numeric index.

    - + Specification
    @@ -84,7 +84,8 @@
     
     
    -
    +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/tuples/class_template_tuple/relational_operators.html b/doc/html/fusion/tuples/class_template_tuple/relational_operators.html index d5f31ca3..d4f7fadd 100644 --- a/doc/html/fusion/tuples/class_template_tuple/relational_operators.html +++ b/doc/html/fusion/tuples/class_template_tuple/relational_operators.html @@ -30,7 +30,7 @@ operators">Relational operators
    - + Description

    @@ -38,7 +38,7 @@ Tuple provides the standard boolean relational operators.

    - + Specification
    @@ -195,7 +195,8 @@
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html b/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html index d771af6f..3cceb9e1 100644 --- a/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html +++ b/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html @@ -30,7 +30,7 @@ creation functions">Tuple creation functions
    - + Description

    @@ -40,7 +40,7 @@ functions are described in this section.

    - + Specification
    @@ -69,7 +69,8 @@
     
     
    -
    +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html b/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html index 889d1d44..e0ae8c78 100644 --- a/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html +++ b/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html @@ -31,7 +31,7 @@ helper classes">Tuple helper classes
    - + Description

    @@ -40,7 +40,7 @@ tuple size, and the element types.

    - + Specification
    @@ -76,7 +76,8 @@
     
     
    -
    +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/fusion/tuples/pairs.html b/doc/html/fusion/tuples/pairs.html index 62c8e6f3..c2e7c94a 100644 --- a/doc/html/fusion/tuples/pairs.html +++ b/doc/html/fusion/tuples/pairs.html @@ -27,7 +27,7 @@

    - + Description

    @@ -36,7 +36,7 @@ as if it were a 2 element tuple.

    - + Specification

    @@ -97,7 +97,8 @@
     
    - +
    Copyright © 2001-2005 Joel de Guzman, Dan MarsdenCopyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger

    diff --git a/doc/html/index.html b/doc/html/index.html index 705d86ed..447d82a1 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -28,9 +28,10 @@

    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)

    @@ -136,97 +137,22 @@
    Intrinsics
    Functions
    -
    -
    begin
    -
    end
    -
    empty
    -
    front
    -
    back
    -
    size
    -
    at
    -
    at_c
    -
    has_key
    -
    at_key
    -
    Metafunctions
    -
    -
    begin
    -
    end
    -
    empty
    -
    front
    -
    back
    -
    size
    -
    at
    -
    at_c
    -
    value_at
    -
    value_at_c
    -
    has_key
    -
    at_key
    -
    value_at_key
    -
    Generation
    Functions
    -
    -
    make_list
    -
    make_cons
    -
    make_vector
    -
    make_set
    -
    make_map
    -
    Tiers
    -
    list_tie
    -
    vector_tie
    -
    MetaFunctions
    -
    -
    make_list
    -
    make_cons
    -
    make_vector
    -
    make_set
    -
    make_map
    -
    list_tie
    -
    vector_tie
    -
    Conversion
    Functions
    -
    -
    as_list
    -
    as_vector
    -
    as_set
    -
    as_map
    -
    Metafunctions
    -
    -
    as_list
    -
    as_vector
    -
    as_set
    -
    as_map
    -
    Operators
    I/O
    -
    -
    in
    -
    out
    -
    Comparison
    -
    -
    equal
    -
    not - equal
    -
    less - than
    -
    less - than equal
    -
    greater - than
    -
    greater - than equal
    -
    Algorithms
    @@ -234,87 +160,17 @@
    Iteration
    Functions
    -
    -
    fold
    -
    accumulate
    -
    for_each
    -
    Metafunctions
    -
    -
    fold
    -
    accumulate
    -
    for_each
    -
    Query
    Functions
    -
    -
    any
    -
    all
    -
    none
    -
    find
    -
    find_if
    -
    count
    -
    count_if
    -
    Metafunctions
    -
    -
    any
    -
    all
    -
    none
    -
    find
    -
    find_if
    -
    count
    -
    count_if
    -
    Transformation
    Functions
    -
    -
    filter
    -
    filter_if
    -
    transform
    -
    replace
    -
    replace_if
    -
    remove
    -
    remove_if
    -
    reverse
    -
    clear
    -
    erase
    -
    erase_key
    -
    insert
    -
    insert_range
    -
    join
    -
    zip
    -
    pop_back
    -
    pop_front
    -
    push_back
    -
    push_front
    -
    Metafunctions
    -
    -
    filter
    -
    filter_if
    -
    transform
    -
    replace
    -
    replace_if
    -
    remove
    -
    remove_if
    -
    reverse
    -
    clear
    -
    erase
    -
    erase_key
    -
    insert
    -
    insert_range
    -
    join
    -
    zip
    -
    pop_back
    -
    pop_front
    -
    push_back
    -
    push_front
    -
    Tuples
    @@ -347,17 +203,7 @@
    Invocation
    Functions
    -
    -
    invoke
    -
    invoke_procedure
    -
    invoke_function_object
    -
    Metafunctions
    -
    -
    invoke
    -
    invoke_procedure
    -
    invoke_function_object
    -
    Adapters
    @@ -372,23 +218,7 @@
    Generation
    Functions
    -
    -
    make_fused
    -
    make_fused_procedure
    -
    make_fused_function_object
    -
    make_unfused_generic
    -
    make_unfused_lvalue_args
    -
    make_unfused_rvalue_args
    -
    Metafunctions
    -
    -
    make_fused
    -
    make_fused_procedure
    -
    make_fused_function_object
    -
    make_unfused_generic
    -
    make_unfused_lvalue_args
    -
    make_unfused_rvalue_args
    -
    Notes
    @@ -399,7 +229,7 @@
    - +

    Last revised: February 15, 2007 at 23:05:16 GMT

    Last revised: February 25, 2007 at 21:53:50 GMT


    From 4d65880283a03111cf0160361ceab82f035629fe Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Sun, 25 Feb 2007 22:15:08 +0000 Subject: [PATCH 101/234] removes test for obsolete unpack_args [SVN r37073] --- test/Jamfile | 1 - test/sequence/unpack_args.cpp | 229 ---------------------------------- 2 files changed, 230 deletions(-) delete mode 100644 test/sequence/unpack_args.cpp diff --git a/test/Jamfile b/test/Jamfile index e7411a8b..44faad7d 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -90,7 +90,6 @@ import testing ; [ run sequence/tuple_mutate.cpp : : : : ] [ run sequence/tuple_tie.cpp : : : : ] [ run sequence/transform_view.cpp : : : : ] - [ run sequence/unpack_args.cpp ] [ run sequence/vector_comparison.cpp : : : : ] [ run sequence/vector_construction.cpp : : : : ] [ run sequence/vector_copy.cpp : : : : ] diff --git a/test/sequence/unpack_args.cpp b/test/sequence/unpack_args.cpp deleted file mode 100644 index 099b411f..00000000 --- a/test/sequence/unpack_args.cpp +++ /dev/null @@ -1,229 +0,0 @@ -// -// Copyright (c) 2006 João Abecasis -// -// Distributed under the 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; - -//////////////////////////////////////////////////////////////////////////////// -// -// Helper stuff -// - -struct object {}; -struct nc_object : boost::noncopyable {}; - -template -inline T const & const_(T const & t) -{ - return t; -} - -//////////////////////////////////////////////////////////////////////////////// -// -// Test functoids -// - -// polymorphic functors -struct foo -{ - typedef int result_type; - - int operator()() { return 0; } - int operator()() const { return 1; } - - int operator()(int i) { return 2 + i; } - int operator()(int i) const { return 3 + i; } - - int operator()(int i, object &) { return 4 + i; } - int operator()(int i, object &) const { return 5 + i; } - int operator()(int i, object const &) { return 6 + i; } - int operator()(int i, object const &) const { return 7 + i; } - - int operator()(int i, object &, nc_object &) { return 10 + i; } - int operator()(int i, object &, nc_object &) const { return 11 + i; } -}; - -struct nc_foo - : boost::noncopyable -{ - typedef int result_type; - - int operator()() { return 0; } - int operator()() const { return 1; } - - int operator()(int i) { return 2 + i; } - int operator()(int i) const { return 3 + i; } -}; - -// nullary function -int bar() { return 20; } - -// unary function -int square(int i) { return i * i; } - -// binary functions -int baz1(int i, object &) { return 30 + i; } -int baz2(int i, object const &) { return 70 + i; } - -// cv-qualified unary function pointers -typedef int (* func_ptr)(int); -typedef int (* const c_func_ptr)(int); -typedef int (* volatile v_func_ptr)(int); -typedef int (* const volatile cv_func_ptr)(int); - - func_ptr func_ptr1 = □ - c_func_ptr func_ptr2 = □ - v_func_ptr func_ptr3 = □ -cv_func_ptr func_ptr4 = □ - -//////////////////////////////////////////////////////////////////////////////// -// -// Test data -// - -typedef int element1_type; -typedef object element2_type; -typedef nc_object & element3_type; - -int element1 = 100; -object element2 = object(); -nc_object element3; - -//////////////////////////////////////////////////////////////////////////////// -// -// Tests (by sequence size) -// - -template -void test_sequence_n(Sequence & seq, boost::mpl::int_<0>) -{ - { - foo f; - - BOOST_TEST( f () == fusion::unpack_args( f , seq )); - BOOST_TEST(const_(f)() == fusion::unpack_args(const_(f), seq )); - BOOST_TEST( f () == fusion::unpack_args( f , const_(seq))); - BOOST_TEST(const_(f)() == fusion::unpack_args(const_(f), const_(seq))); - } - - { - nc_foo nc_f; - - BOOST_TEST( nc_f () == fusion::unpack_args( nc_f , seq )); - BOOST_TEST(const_(nc_f)() == fusion::unpack_args(const_(nc_f), seq )); - BOOST_TEST( nc_f () == fusion::unpack_args( nc_f , const_(seq))); - BOOST_TEST(const_(nc_f)() == fusion::unpack_args(const_(nc_f), const_(seq))); - } - - BOOST_TEST(bar() == fusion::unpack_args(bar, seq)); -} - -template -void test_sequence_n(Sequence & seq, boost::mpl::int_<1>) -{ - { - foo f; - - BOOST_TEST( f (element1) == fusion::unpack_args( f , seq )); - BOOST_TEST(const_(f)(element1) == fusion::unpack_args(const_(f), seq )); - BOOST_TEST( f (element1) == fusion::unpack_args( f , const_(seq))); - BOOST_TEST(const_(f)(element1) == fusion::unpack_args(const_(f), const_(seq))); - } - - { - nc_foo nc_f; - - BOOST_TEST( nc_f (element1) == fusion::unpack_args( nc_f , seq )); - BOOST_TEST(const_(nc_f)(element1) == fusion::unpack_args(const_(nc_f), seq )); - BOOST_TEST( nc_f (element1) == fusion::unpack_args( nc_f , const_(seq))); - BOOST_TEST(const_(nc_f)(element1) == fusion::unpack_args(const_(nc_f), const_(seq))); - } - - BOOST_TEST(square(element1) == fusion::unpack_args(square, seq)); - - BOOST_TEST(func_ptr1(element1) == fusion::unpack_args(func_ptr1, seq)); - BOOST_TEST(func_ptr2(element1) == fusion::unpack_args(func_ptr2, seq)); - BOOST_TEST(func_ptr3(element1) == fusion::unpack_args(func_ptr3, seq)); - BOOST_TEST(func_ptr4(element1) == fusion::unpack_args(func_ptr4, seq)); -} - -template -void test_sequence_n(Sequence & seq, boost::mpl::int_<2>) -{ - { - foo f; - - BOOST_TEST( f (element1, element2) == fusion::unpack_args( f , seq)); - BOOST_TEST(const_(f)(element1, element2) == fusion::unpack_args(const_(f), seq)); - - BOOST_TEST( f (element1, const_(element2)) == fusion::unpack_args( f , const_(seq))); - BOOST_TEST(const_(f)(element1, const_(element2)) == fusion::unpack_args(const_(f), const_(seq))); - } - - BOOST_TEST(baz1(element1, element2) == fusion::unpack_args(baz1, seq)); - BOOST_TEST(baz2(element1, element2) == fusion::unpack_args(baz2, seq)); -} - -template -void test_sequence_n(Sequence & seq, boost::mpl::int_<3>) -{ - foo f; - - BOOST_TEST( f (element1, element2, element3) == fusion::unpack_args( f , seq)); - BOOST_TEST(const_(f)(element1, element2, element3) == fusion::unpack_args(const_(f), seq)); -} - -//////////////////////////////////////////////////////////////////////////////// -template -void test_sequence(Sequence & seq) -{ - test_sequence_n(seq, fusion::size(seq)); -} - -//////////////////////////////////////////////////////////////////////////////// -int main() -{ - typedef fusion::vector<> vector0; - typedef fusion::vector vector1; - typedef fusion::vector vector2; - typedef fusion::vector vector3; - - vector0 v0; - vector1 v1(element1); - vector2 v2(element1, element2); - vector3 v3(element1, element2, element3); - - test_sequence(v0); - test_sequence(v1); - test_sequence(v2); - test_sequence(v3); - - typedef fusion::list<> list0; - typedef fusion::list list1; - typedef fusion::list list2; - typedef fusion::list list3; - - list0 l0; - list1 l1(element1); - list2 l2(element1, element2); - list3 l3(element1, element2, element3); - - test_sequence(l0); - test_sequence(l1); - test_sequence(l2); - test_sequence(l3); - return boost::report_errors(); -} From a3b34113840ecf248779741ae384b1d7f6ad30b5 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Sun, 25 Feb 2007 22:15:59 +0000 Subject: [PATCH 102/234] removes obsolete unpack_args [SVN r37074] --- .../boost/fusion/sequence/utility/limits.hpp | 16 -- .../fusion/sequence/utility/unpack_args.hpp | 171 ------------------ 2 files changed, 187 deletions(-) delete mode 100644 include/boost/fusion/sequence/utility/limits.hpp delete mode 100644 include/boost/fusion/sequence/utility/unpack_args.hpp diff --git a/include/boost/fusion/sequence/utility/limits.hpp b/include/boost/fusion/sequence/utility/limits.hpp deleted file mode 100644 index 7f3d0136..00000000 --- a/include/boost/fusion/sequence/utility/limits.hpp +++ /dev/null @@ -1,16 +0,0 @@ -// -// Copyright (c) 2006 João Abecasis -// -// Distributed under the 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_ALGORITHM_INVOCATION_LIMITS_HPP_INCLUDED) -#define BOOST_FUSION_ALGORITHM_INVOCATION_LIMITS_HPP_INCLUDED - -# if !defined(FUSION_MAX_UNPACK_ARG_SIZE) -# define FUSION_MAX_UNPACK_ARG_SIZE 10 -# endif - -#endif // include guard diff --git a/include/boost/fusion/sequence/utility/unpack_args.hpp b/include/boost/fusion/sequence/utility/unpack_args.hpp deleted file mode 100644 index a379a693..00000000 --- a/include/boost/fusion/sequence/utility/unpack_args.hpp +++ /dev/null @@ -1,171 +0,0 @@ -// -// Copyright (c) 2005, 2006 João Abecasis -// -// Distributed under the 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 !BOOST_PP_IS_ITERATING - -# if !defined(BOOST_FUSION_SEQUENCE_UTILITY_UNPACK_ARGS_HPP_INCLUDED) -# define BOOST_FUSION_SEQUENCE_UTILITY_UNPACK_ARGS_HPP_INCLUDED - -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include - -namespace boost { namespace fusion -{ - namespace detail - { - template - struct unpack_args_impl_helper - { - typedef typename remove_cv::type f_nocv; - - typedef - typename mpl::eval_if< - is_pointer, - mpl::identity, - mpl::eval_if< - is_function, - add_pointer, - mpl::identity - > - >::type - type; - }; - - template < - class F, - class Sequence, - class F_ = typename unpack_args_impl_helper::type, - class Size = mpl::int_::value> - > - struct unpack_args_impl; - - template - struct unpack_args_impl > - { - typedef typename boost::result_of::type type; - - static type call(F & f, Sequence &) - { - return f(); - } - }; - -# define BOOST_FUSION_next_iterator(z, n, data) \ - typedef typename fusion::result_of::next::type \ - BOOST_PP_CAT(I, BOOST_PP_INC(n)); - -# define BOOST_FUSION_deref_iterator(z, n, data) \ - typedef typename fusion::result_of::deref::type BOOST_PP_CAT(T, BOOST_PP_INC(n)); - -# define BOOST_FUSION_next_call_iterator(z, n, data) \ - BOOST_PP_CAT(I, BOOST_PP_INC(n)) BOOST_PP_CAT(i, BOOST_PP_INC(n)) \ - = fusion::next(BOOST_PP_CAT(i, n)); - -# define BOOST_FUSION_n BOOST_PP_ITERATION() - -# define BOOST_PP_ITERATION_PARAMS_1 (3, (1, FUSION_MAX_UNPACK_ARG_SIZE, \ - )) - -# include BOOST_PP_ITERATE() - -# undef BOOST_FUSION_next_iterator -# undef BOOST_FUSION_deref_iterator -# undef BOOST_FUSION_next_call_iterator -# undef BOOST_FUSION_n - -# undef BOOST_PP_ITERATION_PARAMS_1 - - } // namespace detail - - namespace result_of - { - - template - struct unpack_args - : detail::unpack_args_impl - { - }; - - } // namespace result_of - - template - inline typename result_of::unpack_args::type - unpack_args(F & f, Sequence & seq) - { - return result_of::unpack_args::call(f, seq); - } - - template - inline typename result_of::unpack_args::type - unpack_args(F const & f, Sequence & seq) - { - return result_of::unpack_args::call(f, seq); - } - - template - inline typename result_of::unpack_args::type - unpack_args(F & f, Sequence const & seq) - { - return result_of::unpack_args::call(f, seq); - } - - template - inline typename result_of::unpack_args::type - unpack_args(F const & f, Sequence const & seq) - { - return result_of::unpack_args::call(f, seq); - } - -}} // namespace boost::fusion - -# endif // include guard - -#else // BOOST_PP_IS_ITERATING - - template - struct unpack_args_impl > - { - typedef typename fusion::result_of::begin::type I0; - typedef typename fusion::result_of::deref::type T0; - - BOOST_PP_REPEAT(BOOST_FUSION_n, BOOST_FUSION_next_iterator, ~) - BOOST_PP_REPEAT(BOOST_FUSION_n, BOOST_FUSION_deref_iterator, ~) - - typedef typename boost::result_of< - F_( BOOST_PP_ENUM_PARAMS(BOOST_FUSION_n, T) ) - >::type type; - - static type call(F & f, Sequence & seq) - { - I0 i0 = fusion::begin(seq); - - BOOST_PP_REPEAT(BOOST_PP_DEC(BOOST_FUSION_n), BOOST_FUSION_next_call_iterator, ~) - - return f( BOOST_PP_ENUM_PARAMS(BOOST_FUSION_n, *i) ); - } - }; - -#endif // BOOST_PP_IS_ITERATING From f19c0b767d2c9c264cc25c3d0c9f88db0c0f27d4 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Sun, 25 Feb 2007 22:25:29 +0000 Subject: [PATCH 103/234] unpack_args has been removed - there are docs for its replacement [SVN r37075] --- todo.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/todo.txt b/todo.txt index 66899882..f6946d57 100644 --- a/todo.txt +++ b/todo.txt @@ -4,5 +4,4 @@ * Improved motivation section * Expand details of view concept * Examples, examples, examples -* unpack_args documentation -* look at lambda stuff \ No newline at end of file +* look at lambda stuff From 92e7e32ed89f95f7d9cab9a0d08713af68552926 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Fri, 2 Mar 2007 10:44:14 +0000 Subject: [PATCH 104/234] update copyright notice [SVN r37131] --- example/cookbook/fill_em_up.cpp | 5 ++- example/extension/detail/advance_impl.hpp | 5 ++- example/extension/detail/at_impl.hpp | 5 ++- example/extension/detail/at_key_impl.hpp | 5 ++- example/extension/detail/begin_impl.hpp | 5 ++- example/extension/detail/category_of_impl.hpp | 5 ++- example/extension/detail/deref_impl.hpp | 5 ++- example/extension/detail/distance_impl.hpp | 5 ++- example/extension/detail/end_impl.hpp | 5 ++- example/extension/detail/equal_to_impl.hpp | 5 ++- example/extension/detail/has_key_impl.hpp | 5 ++- example/extension/detail/is_sequence_impl.hpp | 5 ++- example/extension/detail/is_view_impl.hpp | 5 ++- example/extension/detail/next_impl.hpp | 5 ++- example/extension/detail/prior_impl.hpp | 5 ++- example/extension/detail/size_impl.hpp | 5 ++- example/extension/detail/value_at_impl.hpp | 5 ++- .../extension/detail/value_at_key_impl.hpp | 5 ++- example/extension/detail/value_of_impl.hpp | 5 ++- example/extension/example_struct.hpp | 5 ++- example/extension/example_struct_iterator.hpp | 5 ++- example/extension/example_struct_type.hpp | 5 ++- example/extension/tag_of.hpp | 5 ++- example/extension/test_example.cpp | 5 ++- example/performance/accumulate.cpp | 5 ++- example/performance/inner_product.cpp | 5 ++- example/performance/inner_product2.cpp | 5 ++- example/performance/sequence_efficiency.cpp | 5 ++- example/performance/zip_efficiency.cpp | 5 ++- include/boost/fusion/algorithm.hpp | 5 ++- include/boost/fusion/algorithm/iteration.hpp | 5 ++- .../fusion/algorithm/iteration/accumulate.hpp | 5 ++- .../algorithm/iteration/detail/fold.hpp | 5 ++- .../algorithm/iteration/detail/for_each.hpp | 5 ++- .../algorithm/iteration/ext_/for_each_s.hpp | 5 ++- .../boost/fusion/algorithm/iteration/fold.hpp | 5 ++- .../fusion/algorithm/iteration/for_each.hpp | 5 ++- include/boost/fusion/algorithm/query.hpp | 5 ++- include/boost/fusion/algorithm/query/all.hpp | 5 ++- include/boost/fusion/algorithm/query/any.hpp | 5 ++- .../boost/fusion/algorithm/query/count.hpp | 5 ++- .../boost/fusion/algorithm/query/count_if.hpp | 5 ++- .../algorithm/query/detail/Attic/none.hpp | 5 ++- .../fusion/algorithm/query/detail/all.hpp | 5 ++- .../fusion/algorithm/query/detail/any.hpp | 5 ++- .../algorithm/query/detail/assoc_find.hpp | 5 ++- .../fusion/algorithm/query/detail/count.hpp | 5 ++- .../algorithm/query/detail/count_if.hpp | 5 ++- .../fusion/algorithm/query/detail/find_if.hpp | 5 ++- .../fusion/algorithm/query/detail/none.hpp | 5 ++- .../fusion/algorithm/query/ext_/find_if_s.hpp | 5 ++- include/boost/fusion/algorithm/query/find.hpp | 5 ++- .../boost/fusion/algorithm/query/find_if.hpp | 5 ++- include/boost/fusion/algorithm/query/none.hpp | 5 ++- .../boost/fusion/algorithm/transformation.hpp | 5 ++- .../fusion/algorithm/transformation/clear.hpp | 5 ++- .../transformation/detail/replace.hpp | 5 ++- .../transformation/detail/replace_if.hpp | 5 ++- .../fusion/algorithm/transformation/erase.hpp | 5 ++- .../algorithm/transformation/erase_key.hpp | 5 ++- .../algorithm/transformation/filter.hpp | 5 ++- .../algorithm/transformation/filter_if.hpp | 5 ++- .../algorithm/transformation/insert.hpp | 5 ++- .../algorithm/transformation/insert_range.hpp | 5 ++- .../fusion/algorithm/transformation/join.hpp | 5 ++- .../algorithm/transformation/pop_back.hpp | 5 ++- .../algorithm/transformation/pop_front.hpp | 5 ++- .../algorithm/transformation/push_back.hpp | 5 ++- .../algorithm/transformation/push_front.hpp | 5 ++- .../algorithm/transformation/remove.hpp | 5 ++- .../algorithm/transformation/remove_if.hpp | 5 ++- .../algorithm/transformation/replace.hpp | 5 ++- .../algorithm/transformation/replace_if.hpp | 5 ++- .../algorithm/transformation/reverse.hpp | 5 ++- .../algorithm/transformation/transform.hpp | 5 ++- .../fusion/algorithm/transformation/zip.hpp | 5 ++- include/boost/fusion/include/as_vector.hpp | 5 ++- include/boost/fusion/include/at.hpp | 5 ++- include/boost/fusion/include/is_sequence.hpp | 5 ++- include/boost/fusion/include/join.hpp | 5 ++- include/boost/fusion/include/joint_view.hpp | 5 ++- include/boost/fusion/include/mpl.hpp | 5 ++- include/boost/fusion/include/push_front.hpp | 5 ++- include/boost/fusion/include/single_view.hpp | 5 ++- include/boost/fusion/include/transform.hpp | 5 ++- .../boost/fusion/include/transform_view.hpp | 5 ++- include/boost/fusion/include/vector.hpp | 5 ++- include/boost/fusion/iterator.hpp | 5 ++- include/boost/fusion/iterator/advance.hpp | 5 ++- include/boost/fusion/iterator/deref.hpp | 5 ++- .../iterator/detail/adapt_deref_traits.hpp | 5 ++- .../iterator/detail/adapt_value_traits.hpp | 5 ++- .../boost/fusion/iterator/detail/advance.hpp | 5 ++- .../boost/fusion/iterator/detail/distance.hpp | 5 ++- include/boost/fusion/iterator/distance.hpp | 5 ++- include/boost/fusion/iterator/equal_to.hpp | 5 ++- .../boost/fusion/iterator/iterator_facade.hpp | 5 ++- include/boost/fusion/iterator/mpl.hpp | 5 ++- .../fusion/iterator/mpl/convert_iterator.hpp | 5 ++- .../fusion/iterator/mpl/fusion_iterator.hpp | 5 ++- include/boost/fusion/iterator/next.hpp | 5 ++- include/boost/fusion/iterator/prior.hpp | 5 ++- include/boost/fusion/iterator/value_of.hpp | 5 ++- include/boost/fusion/mpl.hpp | 5 ++- include/boost/fusion/sequence.hpp | 5 ++- include/boost/fusion/sequence/adapted.hpp | 5 ++- .../boost/fusion/sequence/adapted/array.hpp | 5 ++- .../sequence/adapted/array/array_iterator.hpp | 5 ++- .../sequence/adapted/array/detail/at_impl.hpp | 5 ++- .../adapted/array/detail/begin_impl.hpp | 5 ++- .../adapted/array/detail/category_of_impl.hpp | 5 ++- .../adapted/array/detail/end_impl.hpp | 5 ++- .../adapted/array/detail/is_sequence_impl.hpp | 5 ++- .../adapted/array/detail/is_view_impl.hpp | 5 ++- .../adapted/array/detail/size_impl.hpp | 5 ++- .../adapted/array/detail/value_at_impl.hpp | 5 ++- .../fusion/sequence/adapted/array/tag_of.hpp | 5 ++- .../fusion/sequence/adapted/boost_tuple.hpp | 5 ++- .../boost_tuple/boost_tuple_iterator.hpp | 5 ++- .../adapted/boost_tuple/detail/at_impl.hpp | 5 ++- .../adapted/boost_tuple/detail/begin_impl.hpp | 5 ++- .../boost_tuple/detail/category_of_impl.hpp | 5 ++- .../adapted/boost_tuple/detail/end_impl.hpp | 5 ++- .../boost_tuple/detail/is_sequence_impl.hpp | 5 ++- .../boost_tuple/detail/is_view_impl.hpp | 5 ++- .../adapted/boost_tuple/detail/size_impl.hpp | 5 ++- .../boost_tuple/detail/value_at_impl.hpp | 5 ++- .../sequence/adapted/boost_tuple/tag_of.hpp | 5 ++- include/boost/fusion/sequence/adapted/mpl.hpp | 5 ++- .../sequence/adapted/mpl/detail/at_impl.hpp | 5 ++- .../adapted/mpl/detail/begin_impl.hpp | 5 ++- .../adapted/mpl/detail/category_of_impl.hpp | 5 ++- .../adapted/mpl/detail/empty_impl.hpp | 5 ++- .../sequence/adapted/mpl/detail/end_impl.hpp | 5 ++- .../adapted/mpl/detail/has_key_impl.hpp | 5 ++- .../adapted/mpl/detail/is_sequence_impl.hpp | 5 ++- .../adapted/mpl/detail/is_view_impl.hpp | 5 ++- .../sequence/adapted/mpl/detail/size_impl.hpp | 5 ++- .../adapted/mpl/detail/value_at_impl.hpp | 5 ++- .../sequence/adapted/mpl/mpl_iterator.hpp | 5 ++- .../fusion/sequence/adapted/mpl/tag_of.hpp | 5 ++- .../fusion/sequence/adapted/std_pair.hpp | 5 ++- .../std_pair/Attic/std_pair_iterator.hpp | 5 ++- .../adapted/std_pair/Attic/tag_of.hpp | 5 ++- .../adapted/std_pair/detail/Attic/at_impl.hpp | 5 ++- .../std_pair/detail/Attic/begin_impl.hpp | 5 ++- .../detail/Attic/category_of_impl.hpp | 5 ++- .../std_pair/detail/Attic/end_impl.hpp | 5 ++- .../detail/Attic/is_sequence_impl.hpp | 5 ++- .../std_pair/detail/Attic/is_view_impl.hpp | 5 ++- .../std_pair/detail/Attic/size_impl.hpp | 5 ++- .../std_pair/detail/Attic/value_at_impl.hpp | 5 ++- .../adapted/std_pair/detail/at_impl.hpp | 5 ++- .../adapted/std_pair/detail/begin_impl.hpp | 5 ++- .../std_pair/detail/category_of_impl.hpp | 5 ++- .../adapted/std_pair/detail/end_impl.hpp | 5 ++- .../std_pair/detail/is_sequence_impl.hpp | 5 ++- .../adapted/std_pair/detail/is_view_impl.hpp | 5 ++- .../adapted/std_pair/detail/size_impl.hpp | 5 ++- .../adapted/std_pair/detail/value_at_impl.hpp | 5 ++- .../adapted/std_pair/std_pair_iterator.hpp | 5 ++- .../sequence/adapted/std_pair/tag_of.hpp | 5 ++- .../boost/fusion/sequence/adapted/variant.hpp | 5 ++- .../adapted/variant/detail/begin_impl.hpp | 5 ++- .../variant/detail/category_of_impl.hpp | 5 ++- .../adapted/variant/detail/end_impl.hpp | 5 ++- .../variant/detail/is_sequence_impl.hpp | 5 ++- .../adapted/variant/detail/is_view_impl.hpp | 5 ++- .../adapted/variant/detail/size_impl.hpp | 5 ++- .../sequence/adapted/variant/tag_of.hpp | 5 ++- .../adapted/variant/variant_iterator.hpp | 5 ++- include/boost/fusion/sequence/comparison.hpp | 5 ++- .../comparison/detail/enable_comparison.hpp | 5 ++- .../sequence/comparison/detail/equal_to.hpp | 5 ++- .../sequence/comparison/detail/greater.hpp | 5 ++- .../comparison/detail/greater_equal.hpp | 5 ++- .../sequence/comparison/detail/less.hpp | 5 ++- .../sequence/comparison/detail/less_equal.hpp | 5 ++- .../comparison/detail/not_equal_to.hpp | 5 ++- .../fusion/sequence/comparison/equal_to.hpp | 5 ++- .../fusion/sequence/comparison/greater.hpp | 5 ++- .../sequence/comparison/greater_equal.hpp | 5 ++- .../boost/fusion/sequence/comparison/less.hpp | 5 ++- .../fusion/sequence/comparison/less_equal.hpp | 5 ++- .../sequence/comparison/not_equal_to.hpp | 5 ++- include/boost/fusion/sequence/container.hpp | 5 ++- .../boost/fusion/sequence/container/deque.hpp | 5 ++- .../container/deque/back_extended_deque.hpp | 5 ++- .../fusion/sequence/container/deque/deque.hpp | 5 ++- .../sequence/container/deque/deque_fwd.hpp | 5 ++- .../container/deque/deque_iterator.hpp | 5 ++- .../container/deque/detail/at_impl.hpp | 5 ++- .../container/deque/detail/begin_impl.hpp | 5 ++- .../deque/detail/deque_forward_ctor.hpp | 5 ++- .../deque/detail/deque_initial_size.hpp | 5 ++- .../deque/detail/deque_keyed_values.hpp | 5 ++- .../deque/detail/deque_keyed_values_call.hpp | 5 ++- .../container/deque/detail/end_impl.hpp | 5 ++- .../container/deque/detail/keyed_element.hpp | 5 ++- .../container/deque/detail/value_at_impl.hpp | 5 ++- .../container/deque/front_extended_deque.hpp | 5 ++- .../sequence/container/deque/limits.hpp | 5 ++- .../boost/fusion/sequence/container/list.hpp | 5 ++- .../fusion/sequence/container/list/cons.hpp | 5 ++- .../sequence/container/list/cons_iterator.hpp | 5 ++- .../container/list/detail/at_impl.hpp | 5 ++- .../container/list/detail/begin_impl.hpp | 5 ++- .../container/list/detail/deref_impl.hpp | 5 ++- .../container/list/detail/empty_impl.hpp | 5 ++- .../container/list/detail/end_impl.hpp | 5 ++- .../container/list/detail/equal_to_impl.hpp | 5 ++- .../list/detail/list_forward_ctor.hpp | 5 ++- .../container/list/detail/list_to_cons.hpp | 5 ++- .../list/detail/list_to_cons_call.hpp | 5 ++- .../container/list/detail/next_impl.hpp | 5 ++- .../container/list/detail/value_at_impl.hpp | 5 ++- .../container/list/detail/value_of_impl.hpp | 5 ++- .../fusion/sequence/container/list/limits.hpp | 5 ++- .../fusion/sequence/container/list/list.hpp | 5 ++- .../sequence/container/list/list_fwd.hpp | 5 ++- .../boost/fusion/sequence/container/map.hpp | 5 ++- .../container/map/detail/at_key_impl.hpp | 5 ++- .../container/map/detail/begin_impl.hpp | 5 ++- .../container/map/detail/end_impl.hpp | 5 ++- .../container/map/detail/lookup_key.hpp | 5 ++- .../container/map/detail/map_forward_ctor.hpp | 5 ++- .../container/map/detail/map_lookup.hpp | 5 ++- .../map/detail/value_at_key_impl.hpp | 5 ++- .../fusion/sequence/container/map/limits.hpp | 5 ++- .../fusion/sequence/container/map/map.hpp | 5 ++- .../fusion/sequence/container/map/map_fwd.hpp | 5 ++- .../boost/fusion/sequence/container/set.hpp | 5 ++- .../container/set/detail/at_key_impl.hpp | 5 ++- .../container/set/detail/begin_impl.hpp | 5 ++- .../container/set/detail/end_impl.hpp | 5 ++- .../container/set/detail/lookup_key.hpp | 5 ++- .../container/set/detail/set_forward_ctor.hpp | 5 ++- .../container/set/detail/set_lookup.hpp | 5 ++- .../set/detail/value_at_key_impl.hpp | 5 ++- .../fusion/sequence/container/set/limits.hpp | 5 ++- .../fusion/sequence/container/set/set.hpp | 5 ++- .../fusion/sequence/container/set/set_fwd.hpp | 5 ++- .../fusion/sequence/container/vector.hpp | 5 ++- .../container/vector/detail/advance_impl.hpp | 5 ++- .../container/vector/detail/at_impl.hpp | 5 ++- .../container/vector/detail/begin_impl.hpp | 5 ++- .../container/vector/detail/deref_impl.hpp | 5 ++- .../container/vector/detail/distance_impl.hpp | 5 ++- .../container/vector/detail/end_impl.hpp | 5 ++- .../container/vector/detail/equal_to_impl.hpp | 5 ++- .../container/vector/detail/next_impl.hpp | 5 ++- .../container/vector/detail/prior_impl.hpp | 5 ++- .../container/vector/detail/value_at_impl.hpp | 5 ++- .../container/vector/detail/value_of_impl.hpp | 5 ++- .../vector/detail/vector_forward_ctor.hpp | 5 ++- .../container/vector/detail/vector_n.hpp | 5 ++- .../vector/detail/vector_n_chooser.hpp | 5 ++- .../sequence/container/vector/limits.hpp | 5 ++- .../sequence/container/vector/vector.hpp | 5 ++- .../sequence/container/vector/vector10.hpp | 5 ++- .../sequence/container/vector/vector20.hpp | 5 ++- .../sequence/container/vector/vector30.hpp | 5 ++- .../sequence/container/vector/vector40.hpp | 5 ++- .../sequence/container/vector/vector50.hpp | 5 ++- .../sequence/container/vector/vector_fwd.hpp | 5 ++- .../container/vector/vector_iterator.hpp | 5 ++- include/boost/fusion/sequence/conversion.hpp | 5 ++- .../fusion/sequence/conversion/as_deque.hpp | 5 ++- .../fusion/sequence/conversion/as_list.hpp | 5 ++- .../fusion/sequence/conversion/as_map.hpp | 5 ++- .../fusion/sequence/conversion/as_set.hpp | 5 ++- .../fusion/sequence/conversion/as_vector.hpp | 5 ++- .../sequence/conversion/detail/as_deque.hpp | 5 ++- .../sequence/conversion/detail/as_map.hpp | 5 ++- .../sequence/conversion/detail/as_set.hpp | 5 ++- .../sequence/conversion/detail/as_vector.hpp | 5 ++- .../sequence/conversion/detail/build_cons.hpp | 5 ++- include/boost/fusion/sequence/generation.hpp | 5 ++- .../fusion/sequence/generation/cons_tie.hpp | 5 ++- .../fusion/sequence/generation/deque_tie.hpp | 5 ++- .../fusion/sequence/generation/ignore.hpp | 5 ++- .../fusion/sequence/generation/list_tie.hpp | 5 ++- .../fusion/sequence/generation/make_cons.hpp | 5 ++- .../fusion/sequence/generation/make_deque.hpp | 10 +++--- .../fusion/sequence/generation/make_list.hpp | 5 ++- .../fusion/sequence/generation/make_map.hpp | 5 ++- .../fusion/sequence/generation/make_set.hpp | 5 ++- .../sequence/generation/make_vector.hpp | 5 ++- .../fusion/sequence/generation/map_tie.hpp | 5 ++- .../fusion/sequence/generation/pair_tie.hpp | 5 ++- .../fusion/sequence/generation/vector_tie.hpp | 5 ++- include/boost/fusion/sequence/intrinsic.hpp | 5 ++- .../boost/fusion/sequence/intrinsic/at.hpp | 5 ++- .../fusion/sequence/intrinsic/at_key.hpp | 5 ++- .../boost/fusion/sequence/intrinsic/back.hpp | 5 ++- .../boost/fusion/sequence/intrinsic/begin.hpp | 5 ++- .../boost/fusion/sequence/intrinsic/empty.hpp | 5 ++- .../boost/fusion/sequence/intrinsic/end.hpp | 5 ++- .../sequence/intrinsic/ext_/segments.hpp | 5 ++- .../fusion/sequence/intrinsic/ext_/size_s.hpp | 5 ++- .../boost/fusion/sequence/intrinsic/front.hpp | 5 ++- .../fusion/sequence/intrinsic/has_key.hpp | 5 ++- .../boost/fusion/sequence/intrinsic/mpl.hpp | 5 ++- .../fusion/sequence/intrinsic/mpl/at.hpp | 5 ++- .../fusion/sequence/intrinsic/mpl/back.hpp | 5 ++- .../fusion/sequence/intrinsic/mpl/begin.hpp | 5 ++- .../fusion/sequence/intrinsic/mpl/clear.hpp | 5 ++- .../sequence/intrinsic/mpl/detail/as.hpp | 5 ++- .../sequence/intrinsic/mpl/detail/clear.hpp | 5 ++- .../fusion/sequence/intrinsic/mpl/empty.hpp | 5 ++- .../fusion/sequence/intrinsic/mpl/end.hpp | 5 ++- .../fusion/sequence/intrinsic/mpl/erase.hpp | 5 ++- .../sequence/intrinsic/mpl/erase_key.hpp | 5 ++- .../fusion/sequence/intrinsic/mpl/front.hpp | 5 ++- .../fusion/sequence/intrinsic/mpl/has_key.hpp | 5 ++- .../fusion/sequence/intrinsic/mpl/insert.hpp | 5 ++- .../sequence/intrinsic/mpl/insert_range.hpp | 5 ++- .../sequence/intrinsic/mpl/pop_back.hpp | 5 ++- .../sequence/intrinsic/mpl/pop_front.hpp | 5 ++- .../sequence/intrinsic/mpl/push_back.hpp | 5 ++- .../sequence/intrinsic/mpl/push_front.hpp | 5 ++- .../fusion/sequence/intrinsic/mpl/size.hpp | 5 ++- .../boost/fusion/sequence/intrinsic/size.hpp | 5 ++- .../fusion/sequence/intrinsic/value_at.hpp | 5 ++- .../sequence/intrinsic/value_at_key.hpp | 5 ++- include/boost/fusion/sequence/io.hpp | 5 ++- .../boost/fusion/sequence/io/detail/in.hpp | 5 ++- .../boost/fusion/sequence/io/detail/manip.hpp | 5 ++- .../boost/fusion/sequence/io/detail/out.hpp | 5 ++- include/boost/fusion/sequence/io/in.hpp | 5 ++- include/boost/fusion/sequence/io/out.hpp | 5 ++- .../boost/fusion/sequence/sequence_facade.hpp | 5 ++- include/boost/fusion/sequence/view.hpp | 5 ++- .../sequence/view/ext_/multiple_view.hpp | 5 ++- .../fusion/sequence/view/filter_view.hpp | 5 ++- .../view/filter_view/detail/begin_impl.hpp | 5 ++- .../view/filter_view/detail/deref_impl.hpp | 5 ++- .../view/filter_view/detail/end_impl.hpp | 5 ++- .../view/filter_view/detail/equal_to_impl.hpp | 5 ++- .../view/filter_view/detail/next_impl.hpp | 5 ++- .../view/filter_view/detail/size_impl.hpp | 5 ++- .../view/filter_view/detail/value_of_impl.hpp | 5 ++- .../sequence/view/filter_view/filter_view.hpp | 5 ++- .../view/filter_view/filter_view_iterator.hpp | 5 ++- .../fusion/sequence/view/iterator_range.hpp | 5 ++- .../view/iterator_range/detail/begin_impl.hpp | 5 ++- .../view/iterator_range/detail/end_impl.hpp | 5 ++- .../view/iterator_range/iterator_range.hpp | 5 ++- .../boost/fusion/sequence/view/joint_view.hpp | 5 ++- .../view/joint_view/detail/begin_impl.hpp | 5 ++- .../view/joint_view/detail/deref_impl.hpp | 5 ++- .../view/joint_view/detail/end_impl.hpp | 5 ++- .../view/joint_view/detail/next_impl.hpp | 5 ++- .../view/joint_view/detail/value_of_impl.hpp | 5 ++- .../sequence/view/joint_view/joint_view.hpp | 5 ++- .../view/joint_view/joint_view_iterator.hpp | 5 ++- .../fusion/sequence/view/reverse_view.hpp | 5 ++- .../view/reverse_view/detail/advance_impl.hpp | 5 ++- .../view/reverse_view/detail/begin_impl.hpp | 5 ++- .../view/reverse_view/detail/deref_impl.hpp | 5 ++- .../reverse_view/detail/distance_impl.hpp | 5 ++- .../view/reverse_view/detail/end_impl.hpp | 5 ++- .../view/reverse_view/detail/next_impl.hpp | 5 ++- .../view/reverse_view/detail/prior_impl.hpp | 5 ++- .../reverse_view/detail/value_of_impl.hpp | 5 ++- .../view/reverse_view/reverse_view.hpp | 5 ++- .../reverse_view/reverse_view_iterator.hpp | 5 ++- .../fusion/sequence/view/single_view.hpp | 5 ++- .../view/single_view/detail/begin_impl.hpp | 5 ++- .../view/single_view/detail/deref_impl.hpp | 5 ++- .../view/single_view/detail/end_impl.hpp | 5 ++- .../view/single_view/detail/next_impl.hpp | 5 ++- .../view/single_view/detail/value_of_impl.hpp | 5 ++- .../sequence/view/single_view/single_view.hpp | 5 ++- .../view/single_view/single_view_iterator.hpp | 5 ++- .../fusion/sequence/view/transform_view.hpp | 5 ++- .../transform_view/detail/advance_impl.hpp | 5 ++- .../detail/apply_transform_result.hpp | 5 ++- .../view/transform_view/detail/at_impl.hpp | 5 ++- .../view/transform_view/detail/begin_impl.hpp | 5 ++- .../view/transform_view/detail/deref_impl.hpp | 5 ++- .../transform_view/detail/distance_impl.hpp | 5 ++- .../view/transform_view/detail/end_impl.hpp | 5 ++- .../transform_view/detail/equal_to_impl.hpp | 5 ++- .../view/transform_view/detail/next_impl.hpp | 5 ++- .../view/transform_view/detail/prior_impl.hpp | 5 ++- .../transform_view/detail/value_at_impl.hpp | 5 ++- .../transform_view/detail/value_of_impl.hpp | 5 ++- .../view/transform_view/transform_view.hpp | 5 ++- .../transform_view/transform_view_fwd.hpp | 5 ++- .../transform_view_iterator.hpp | 5 ++- .../boost/fusion/sequence/view/zip_view.hpp | 5 ++- .../view/zip_view/detail/advance_impl.hpp | 5 ++- .../sequence/view/zip_view/detail/at_impl.hpp | 5 ++- .../view/zip_view/detail/begin_impl.hpp | 5 ++- .../view/zip_view/detail/deref_impl.hpp | 5 ++- .../view/zip_view/detail/distance_impl.hpp | 5 ++- .../view/zip_view/detail/end_impl.hpp | 5 ++- .../view/zip_view/detail/equal_to_impl.hpp | 5 ++- .../view/zip_view/detail/next_impl.hpp | 5 ++- .../view/zip_view/detail/prior_impl.hpp | 5 ++- .../view/zip_view/detail/size_impl.hpp | 5 ++- .../zip_view/detail/strictest_traversal.hpp | 5 ++- .../view/zip_view/detail/value_at_impl.hpp | 5 ++- .../view/zip_view/detail/value_of_impl.hpp | 5 ++- .../sequence/view/zip_view/zip_view.hpp | 5 ++- .../view/zip_view/zip_view_iterator.hpp | 5 ++- .../view/zip_view/zip_view_iterator_fwd.hpp | 5 ++- include/boost/fusion/support.hpp | 5 ++- include/boost/fusion/support/category_of.hpp | 5 ++- .../boost/fusion/support/detail/access.hpp | 5 ++- .../support/detail/as_fusion_element.hpp | 5 ++- .../fusion/support/detail/category_of.hpp | 5 ++- .../fusion/support/detail/compiler_config.hpp | 5 ++- .../fusion/support/detail/is_mpl_sequence.hpp | 5 ++- .../boost/fusion/support/detail/is_view.hpp | 5 ++- .../support/detail/mpl_iterator_category.hpp | 5 ++- .../fusion/support/detail/unknown_key.hpp | 5 ++- .../fusion/support/ext_/is_segmented.hpp | 5 ++- include/boost/fusion/support/is_iterator.hpp | 5 ++- include/boost/fusion/support/is_sequence.hpp | 5 ++- include/boost/fusion/support/is_view.hpp | 5 ++- .../boost/fusion/support/iterator_base.hpp | 5 ++- include/boost/fusion/support/pair.hpp | 5 ++- .../boost/fusion/support/sequence_base.hpp | 5 ++- include/boost/fusion/support/tag_of.hpp | 5 ++- include/boost/fusion/support/tag_of_fwd.hpp | 5 ++- include/boost/fusion/tuple.hpp | 5 ++- .../tuple/detail/tuple_forward_ctor.hpp | 5 ++- include/boost/fusion/tuple/make_tuple.hpp | 5 ++- include/boost/fusion/tuple/tuple.hpp | 5 ++- include/boost/fusion/tuple/tuple_fwd.hpp | 5 ++- include/boost/fusion/tuple/tuple_tie.hpp | 5 ++- test/algorithm/all.cpp | 5 ++- test/algorithm/any.cpp | 5 ++- test/algorithm/clear.cpp | 5 ++- test/algorithm/count.cpp | 5 ++- test/algorithm/count_if.cpp | 5 ++- test/algorithm/erase.cpp | 5 ++- test/algorithm/erase_key.cpp | 5 ++- test/algorithm/ext_/find_if_s.cpp | 5 ++- test/algorithm/ext_/for_each_s.cpp | 5 ++- test/algorithm/filter.cpp | 5 ++- test/algorithm/filter_if.cpp | 5 ++- test/algorithm/find.cpp | 5 ++- test/algorithm/find_if.cpp | 5 ++- test/algorithm/fold.cpp | 5 ++- test/algorithm/for_each.cpp | 5 ++- test/algorithm/insert.cpp | 5 ++- test/algorithm/insert_range.cpp | 5 ++- test/algorithm/join.cpp | 5 ++- test/algorithm/none.cpp | 5 ++- test/algorithm/pop_back.cpp | 5 ++- test/algorithm/pop_front.cpp | 5 ++- test/algorithm/push_back.cpp | 5 ++- test/algorithm/push_front.cpp | 5 ++- test/algorithm/remove.cpp | 5 ++- test/algorithm/remove_if.cpp | 5 ++- test/algorithm/replace.cpp | 5 ++- test/algorithm/replace_if.cpp | 5 ++- test/algorithm/reverse.cpp | 5 ++- test/algorithm/transform.cpp | 5 ++- test/algorithm/zip.cpp | 5 ++- test/algorithm/zip2.cpp | 5 ++- test/sequence/array.cpp | 5 ++- test/sequence/as_list.cpp | 5 ++- test/sequence/as_map.cpp | 5 ++- test/sequence/as_set.cpp | 5 ++- test/sequence/as_vector.cpp | 5 ++- test/sequence/back_extended_deque.cpp | 5 ++- test/sequence/boost_tuple.cpp | 5 ++- test/sequence/comparison.hpp | 5 ++- test/sequence/cons.cpp | 5 ++- test/sequence/construction.hpp | 5 ++- test/sequence/copy.hpp | 33 ++++++++++++++++--- test/sequence/deque_comparison.cpp | 5 ++- test/sequence/deque_construction.cpp | 5 ++- test/sequence/deque_copy.cpp | 5 ++- test/sequence/deque_iterator.cpp | 5 ++- test/sequence/deque_make.cpp | 5 ++- test/sequence/deque_misc.cpp | 5 ++- test/sequence/deque_mutate.cpp | 5 ++- test/sequence/deque_tie.cpp | 5 ++- test/sequence/deque_value_at.cpp | 5 ++- test/sequence/ext_/iterator_range_s.cpp | 5 ++- test/sequence/filter_view.cpp | 5 ++- test/sequence/front_extended_deque.cpp | 5 ++- test/sequence/io.cpp | 5 ++- test/sequence/iterator.hpp | 5 ++- test/sequence/iterator_range.cpp | 5 ++- test/sequence/joint_view.cpp | 5 ++- test/sequence/list_comparison.cpp | 5 ++- test/sequence/list_construction.cpp | 5 ++- test/sequence/list_copy.cpp | 5 ++- test/sequence/list_iterator.cpp | 5 ++- test/sequence/list_make.cpp | 5 ++- test/sequence/list_misc.cpp | 5 ++- test/sequence/list_mutate.cpp | 5 ++- test/sequence/list_tie.cpp | 5 ++- test/sequence/list_value_at.cpp | 5 ++- test/sequence/make.hpp | 5 ++- test/sequence/make_list.cpp | 5 ++- test/sequence/make_vector.cpp | 5 ++- test/sequence/map.cpp | 5 ++- test/sequence/misc.hpp | 5 ++- test/sequence/mutate.hpp | 5 ++- test/sequence/reverse_view.cpp | 5 ++- test/sequence/set.cpp | 5 ++- test/sequence/single_view.cpp | 5 ++- test/sequence/std_pair.cpp | 5 ++- test/sequence/tie.hpp | 5 ++- test/sequence/transform_view.cpp | 5 ++- test/sequence/tuple_comparison.cpp | 5 ++- test/sequence/tuple_construction.cpp | 5 ++- test/sequence/tuple_copy.cpp | 5 ++- test/sequence/tuple_element.cpp | 5 ++- test/sequence/tuple_make.cpp | 5 ++- test/sequence/tuple_misc.cpp | 5 ++- test/sequence/tuple_mutate.cpp | 5 ++- test/sequence/tuple_tie.cpp | 5 ++- test/sequence/value_at.hpp | 5 ++- test/sequence/variant.cpp | 5 ++- test/sequence/vector_comparison.cpp | 5 ++- test/sequence/vector_construction.cpp | 5 ++- test/sequence/vector_copy.cpp | 5 ++- test/sequence/vector_iterator.cpp | 5 ++- test/sequence/vector_make.cpp | 5 ++- test/sequence/vector_misc.cpp | 5 ++- test/sequence/vector_mutate.cpp | 5 ++- test/sequence/vector_n.cpp | 5 ++- test/sequence/vector_tie.cpp | 5 ++- test/sequence/vector_value_at.cpp | 5 ++- test/sequence/zip_view.cpp | 5 ++- test/sequence/zip_view2.cpp | 5 ++- 534 files changed, 1097 insertions(+), 1606 deletions(-) diff --git a/example/cookbook/fill_em_up.cpp b/example/cookbook/fill_em_up.cpp index 1851529f..c77c7b68 100644 --- a/example/cookbook/fill_em_up.cpp +++ b/example/cookbook/fill_em_up.cpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) Problem: diff --git a/example/extension/detail/advance_impl.hpp b/example/extension/detail/advance_impl.hpp index 91309672..3d3691b2 100644 --- a/example/extension/detail/advance_impl.hpp +++ b/example/extension/detail/advance_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_ADVANCE_IMPL_20060222_2150) #define BOOST_FUSION_ADVANCE_IMPL_20060222_2150 diff --git a/example/extension/detail/at_impl.hpp b/example/extension/detail/at_impl.hpp index 058c31cc..c65650d1 100644 --- a/example/extension/detail/at_impl.hpp +++ b/example/extension/detail/at_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_20060223_2017) #define BOOST_FUSION_AT_IMPL_20060223_2017 diff --git a/example/extension/detail/at_key_impl.hpp b/example/extension/detail/at_key_impl.hpp index 39d914dc..0af810e1 100644 --- a/example/extension/detail/at_key_impl.hpp +++ b/example/extension/detail/at_key_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_20060223_2017) #define BOOST_FUSION_AT_KEY_IMPL_20060223_2017 diff --git a/example/extension/detail/begin_impl.hpp b/example/extension/detail/begin_impl.hpp index d0c1dafc..3e1f0802 100644 --- a/example/extension/detail/begin_impl.hpp +++ b/example/extension/detail/begin_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_20060222_2042) #define BOOST_FUSION_BEGIN_IMPL_20060222_2042 diff --git a/example/extension/detail/category_of_impl.hpp b/example/extension/detail/category_of_impl.hpp index 56fdd082..bbc8fe64 100644 --- a/example/extension/detail/category_of_impl.hpp +++ b/example/extension/detail/category_of_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_20060223_2037) #define BOOST_FUSION_CATEGORY_OF_IMPL_20060223_2037 diff --git a/example/extension/detail/deref_impl.hpp b/example/extension/detail/deref_impl.hpp index 7454c44c..a65a7fae 100644 --- a/example/extension/detail/deref_impl.hpp +++ b/example/extension/detail/deref_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_DEREF_IMPL_20060222_1952) #define BOOST_FUSION_DEREF_IMPL_20060222_1952 diff --git a/example/extension/detail/distance_impl.hpp b/example/extension/detail/distance_impl.hpp index 3b93d1e0..5768ec5e 100644 --- a/example/extension/detail/distance_impl.hpp +++ b/example/extension/detail/distance_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_DISTANCE_IMPL_20060223_0814) #define BOOST_FUSION_DISTANCE_IMPL_20060223_0814 diff --git a/example/extension/detail/end_impl.hpp b/example/extension/detail/end_impl.hpp index 5ab0608b..789e7c1b 100644 --- a/example/extension/detail/end_impl.hpp +++ b/example/extension/detail/end_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_20060222_2042) #define BOOST_FUSION_END_IMPL_20060222_2042 diff --git a/example/extension/detail/equal_to_impl.hpp b/example/extension/detail/equal_to_impl.hpp index fb261071..d5decf35 100644 --- a/example/extension/detail/equal_to_impl.hpp +++ b/example/extension/detail/equal_to_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_EQUAL_TO_IMPL_20060223_1941) #define BOOST_FUSION_EQUAL_TO_IMPL_20060223_1941 diff --git a/example/extension/detail/has_key_impl.hpp b/example/extension/detail/has_key_impl.hpp index 47a39fda..20c663d7 100644 --- a/example/extension/detail/has_key_impl.hpp +++ b/example/extension/detail/has_key_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_20060223_2156) #define BOOST_FUSION_HAS_KEY_IMPL_20060223_2156 diff --git a/example/extension/detail/is_sequence_impl.hpp b/example/extension/detail/is_sequence_impl.hpp index 06a7d433..e15c08a0 100644 --- a/example/extension/detail/is_sequence_impl.hpp +++ b/example/extension/detail/is_sequence_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_20060228_1946) #define BOOST_FUSION_IS_SEQUENCE_IMPL_20060228_1946 diff --git a/example/extension/detail/is_view_impl.hpp b/example/extension/detail/is_view_impl.hpp index 02151d52..a9b05657 100644 --- a/example/extension/detail/is_view_impl.hpp +++ b/example/extension/detail/is_view_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_200604227_2150) #define BOOST_FUSION_IS_VIEW_IMPL_200604227_2150 diff --git a/example/extension/detail/next_impl.hpp b/example/extension/detail/next_impl.hpp index 763a7ccc..b8aa3f0d 100644 --- a/example/extension/detail/next_impl.hpp +++ b/example/extension/detail/next_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_NEXT_IMPL_20060222_1859) #define BOOST_FUSION_NEXT_IMPL_20060222_1859 diff --git a/example/extension/detail/prior_impl.hpp b/example/extension/detail/prior_impl.hpp index 990fbbc7..3577485a 100644 --- a/example/extension/detail/prior_impl.hpp +++ b/example/extension/detail/prior_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_PRIOR_IMPL_20060222_1944) #define BOOST_FUSION_PRIOR_IMPL_20060222_1944 diff --git a/example/extension/detail/size_impl.hpp b/example/extension/detail/size_impl.hpp index a9c081c3..877b4847 100644 --- a/example/extension/detail/size_impl.hpp +++ b/example/extension/detail/size_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_20060223_2033) #define BOOST_FUSION_SIZE_IMPL_20060223_2033 diff --git a/example/extension/detail/value_at_impl.hpp b/example/extension/detail/value_at_impl.hpp index 38fc6ab3..f2599dfd 100644 --- a/example/extension/detail/value_at_impl.hpp +++ b/example/extension/detail/value_at_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_20060223_2025) #define BOOST_FUSION_VALUE_AT_IMPL_20060223_2025 diff --git a/example/extension/detail/value_at_key_impl.hpp b/example/extension/detail/value_at_key_impl.hpp index bb0c68e9..e30ba9ba 100644 --- a/example/extension/detail/value_at_key_impl.hpp +++ b/example/extension/detail/value_at_key_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_20060223_2025) #define BOOST_FUSION_VALUE_AT_KEY_IMPL_20060223_2025 diff --git a/example/extension/detail/value_of_impl.hpp b/example/extension/detail/value_of_impl.hpp index b4a09742..2d0b78aa 100644 --- a/example/extension/detail/value_of_impl.hpp +++ b/example/extension/detail/value_of_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_OF_IMPL_20060223_1905) #define BOOST_FUSION_VALUE_OF_IMPL_20060223_1905 diff --git a/example/extension/example_struct.hpp b/example/extension/example_struct.hpp index d07aeb78..73e52d39 100644 --- a/example/extension/example_struct.hpp +++ b/example/extension/example_struct.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_EXAMPLE_STRUCT) #define BOOST_FUSION_EXAMPLE_STRUCT diff --git a/example/extension/example_struct_iterator.hpp b/example/extension/example_struct_iterator.hpp index c3165d8e..064c0d74 100644 --- a/example/extension/example_struct_iterator.hpp +++ b/example/extension/example_struct_iterator.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_EXAMPLE_STRUCT_ITERATOR) #define BOOST_FUSION_EXAMPLE_STRUCT_ITERATOR diff --git a/example/extension/example_struct_type.hpp b/example/extension/example_struct_type.hpp index 543c9b69..0e8abdfb 100644 --- a/example/extension/example_struct_type.hpp +++ b/example/extension/example_struct_type.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_EXAMPLE_STRUCT_TYPE) #define BOOST_FUSION_EXAMPLE_STRUCT_TYPE diff --git a/example/extension/tag_of.hpp b/example/extension/tag_of.hpp index 4eb3e936..55777bab 100644 --- a/example/extension/tag_of.hpp +++ b/example/extension/tag_of.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_TAG_OF_20060222_2052) #define BOOST_FUSION_TAG_OF_20060222_2052 diff --git a/example/extension/test_example.cpp b/example/extension/test_example.cpp index dc16a462..264d1854 100644 --- a/example/extension/test_example.cpp +++ b/example/extension/test_example.cpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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 "./example_struct.hpp" #include "./example_struct_type.hpp" diff --git a/example/performance/accumulate.cpp b/example/performance/accumulate.cpp index 88c841f6..7d8f0a76 100644 --- a/example/performance/accumulate.cpp +++ b/example/performance/accumulate.cpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/example/performance/inner_product.cpp b/example/performance/inner_product.cpp index ee3f7036..8257921d 100644 --- a/example/performance/inner_product.cpp +++ b/example/performance/inner_product.cpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/example/performance/inner_product2.cpp b/example/performance/inner_product2.cpp index dfc7d4f4..b831b219 100644 --- a/example/performance/inner_product2.cpp +++ b/example/performance/inner_product2.cpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/example/performance/sequence_efficiency.cpp b/example/performance/sequence_efficiency.cpp index 43e39d88..6a24f74f 100644 --- a/example/performance/sequence_efficiency.cpp +++ b/example/performance/sequence_efficiency.cpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 "measure.hpp" diff --git a/example/performance/zip_efficiency.cpp b/example/performance/zip_efficiency.cpp index 8cea77cf..c8132c74 100644 --- a/example/performance/zip_efficiency.cpp +++ b/example/performance/zip_efficiency.cpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 "measure.hpp" diff --git a/include/boost/fusion/algorithm.hpp b/include/boost/fusion/algorithm.hpp index 4f822b63..74e52723 100644 --- a/include/boost/fusion/algorithm.hpp +++ b/include/boost/fusion/algorithm.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_ALGORITHM_10022005_0549) #define FUSION_ALGORITHM_10022005_0549 diff --git a/include/boost/fusion/algorithm/iteration.hpp b/include/boost/fusion/algorithm/iteration.hpp index 9adf406c..5d0fefa0 100644 --- a/include/boost/fusion/algorithm/iteration.hpp +++ b/include/boost/fusion/algorithm/iteration.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_ALGORITHM_ITERATION_10022005_0549) #define FUSION_ALGORITHM_ITERATION_10022005_0549 diff --git a/include/boost/fusion/algorithm/iteration/accumulate.hpp b/include/boost/fusion/algorithm/iteration/accumulate.hpp index 7b848e26..b22147dc 100644 --- a/include/boost/fusion/algorithm/iteration/accumulate.hpp +++ b/include/boost/fusion/algorithm/iteration/accumulate.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_ACCUMULATE_09172005_1032) #define FUSION_ACCUMULATE_09172005_1032 diff --git a/include/boost/fusion/algorithm/iteration/detail/fold.hpp b/include/boost/fusion/algorithm/iteration/detail/fold.hpp index ecf23115..83a6eefc 100644 --- a/include/boost/fusion/algorithm/iteration/detail/fold.hpp +++ b/include/boost/fusion/algorithm/iteration/detail/fold.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_FOLD_05052005_1211) #define FUSION_FOLD_05052005_1211 diff --git a/include/boost/fusion/algorithm/iteration/detail/for_each.hpp b/include/boost/fusion/algorithm/iteration/detail/for_each.hpp index 5271517e..7f81d9af 100644 --- a/include/boost/fusion/algorithm/iteration/detail/for_each.hpp +++ b/include/boost/fusion/algorithm/iteration/detail/for_each.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_FOR_EACH_05052005_1028) #define FUSION_FOR_EACH_05052005_1028 diff --git a/include/boost/fusion/algorithm/iteration/ext_/for_each_s.hpp b/include/boost/fusion/algorithm/iteration/ext_/for_each_s.hpp index 2a0f9a48..9e571d0f 100755 --- a/include/boost/fusion/algorithm/iteration/ext_/for_each_s.hpp +++ b/include/boost/fusion/algorithm/iteration/ext_/for_each_s.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2006 Eric Niebler - Use, modification and distribution is 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) + Distributed under the 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_FOR_EACH_S_05022006_1027) #define FUSION_FOR_EACH_S_05022006_1027 diff --git a/include/boost/fusion/algorithm/iteration/fold.hpp b/include/boost/fusion/algorithm/iteration/fold.hpp index 279daa1c..e6930ff6 100644 --- a/include/boost/fusion/algorithm/iteration/fold.hpp +++ b/include/boost/fusion/algorithm/iteration/fold.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_FOLD_05052005_1214) #define FUSION_FOLD_05052005_1214 diff --git a/include/boost/fusion/algorithm/iteration/for_each.hpp b/include/boost/fusion/algorithm/iteration/for_each.hpp index 4609bd2b..0d96a04e 100644 --- a/include/boost/fusion/algorithm/iteration/for_each.hpp +++ b/include/boost/fusion/algorithm/iteration/for_each.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_FOR_EACH_05052005_1027) #define FUSION_FOR_EACH_05052005_1027 diff --git a/include/boost/fusion/algorithm/query.hpp b/include/boost/fusion/algorithm/query.hpp index 7b826f6f..488a62a8 100644 --- a/include/boost/fusion/algorithm/query.hpp +++ b/include/boost/fusion/algorithm/query.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_ALGORITHM_QUERY_10022005_0549) #define FUSION_ALGORITHM_QUERY_10022005_0549 diff --git a/include/boost/fusion/algorithm/query/all.hpp b/include/boost/fusion/algorithm/query/all.hpp index bd974f99..67452d5a 100644 --- a/include/boost/fusion/algorithm/query/all.hpp +++ b/include/boost/fusion/algorithm/query/all.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_ALL_05052005_1238) #define FUSION_ALL_05052005_1238 diff --git a/include/boost/fusion/algorithm/query/any.hpp b/include/boost/fusion/algorithm/query/any.hpp index fed72a58..39590dfe 100644 --- a/include/boost/fusion/algorithm/query/any.hpp +++ b/include/boost/fusion/algorithm/query/any.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005 Eric Niebler - Use, modification and distribution is 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) + Distributed under the 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_ANY_05052005_1230) #define FUSION_ANY_05052005_1230 diff --git a/include/boost/fusion/algorithm/query/count.hpp b/include/boost/fusion/algorithm/query/count.hpp index 19ca5766..88289301 100644 --- a/include/boost/fusion/algorithm/query/count.hpp +++ b/include/boost/fusion/algorithm/query/count.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_COUNT_09162005_0150) #define FUSION_COUNT_09162005_0150 diff --git a/include/boost/fusion/algorithm/query/count_if.hpp b/include/boost/fusion/algorithm/query/count_if.hpp index 6c1221c4..43531c67 100644 --- a/include/boost/fusion/algorithm/query/count_if.hpp +++ b/include/boost/fusion/algorithm/query/count_if.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_COUNT_IF_09162005_0137) #define FUSION_COUNT_IF_09162005_0137 diff --git a/include/boost/fusion/algorithm/query/detail/Attic/none.hpp b/include/boost/fusion/algorithm/query/detail/Attic/none.hpp index dfe2d1d3..1a633fca 100644 --- a/include/boost/fusion/algorithm/query/detail/Attic/none.hpp +++ b/include/boost/fusion/algorithm/query/detail/Attic/none.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_NONE_07062005_1126) #define FUSION_NONE_07062005_1126 diff --git a/include/boost/fusion/algorithm/query/detail/all.hpp b/include/boost/fusion/algorithm/query/detail/all.hpp index 96101027..ae3e64c6 100644 --- a/include/boost/fusion/algorithm/query/detail/all.hpp +++ b/include/boost/fusion/algorithm/query/detail/all.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_ALL_05052005_1237) #define FUSION_ALL_05052005_1237 diff --git a/include/boost/fusion/algorithm/query/detail/any.hpp b/include/boost/fusion/algorithm/query/detail/any.hpp index 2cbdcdd6..5e5e569f 100644 --- a/include/boost/fusion/algorithm/query/detail/any.hpp +++ b/include/boost/fusion/algorithm/query/detail/any.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005 Eric Niebler - Use, modification and distribution is 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) + Distributed under the 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_ANY_05052005_1229) #define FUSION_ANY_05052005_1229 diff --git a/include/boost/fusion/algorithm/query/detail/assoc_find.hpp b/include/boost/fusion/algorithm/query/detail/assoc_find.hpp index 8e4e4920..7591405f 100644 --- a/include/boost/fusion/algorithm/query/detail/assoc_find.hpp +++ b/include/boost/fusion/algorithm/query/detail/assoc_find.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_ASSOC_FIND_09242005_1133) #define FUSION_ASSOC_FIND_09242005_1133 diff --git a/include/boost/fusion/algorithm/query/detail/count.hpp b/include/boost/fusion/algorithm/query/detail/count.hpp index e9060044..ff17adbd 100644 --- a/include/boost/fusion/algorithm/query/detail/count.hpp +++ b/include/boost/fusion/algorithm/query/detail/count.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_COUNT_09162005_0158) #define FUSION_COUNT_09162005_0158 diff --git a/include/boost/fusion/algorithm/query/detail/count_if.hpp b/include/boost/fusion/algorithm/query/detail/count_if.hpp index bd9fdf44..c4d612a8 100644 --- a/include/boost/fusion/algorithm/query/detail/count_if.hpp +++ b/include/boost/fusion/algorithm/query/detail/count_if.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_COUNT_IF_09162005_0141) #define FUSION_COUNT_IF_09162005_0141 diff --git a/include/boost/fusion/algorithm/query/detail/find_if.hpp b/include/boost/fusion/algorithm/query/detail/find_if.hpp index 1707b37d..a82c040b 100644 --- a/include/boost/fusion/algorithm/query/detail/find_if.hpp +++ b/include/boost/fusion/algorithm/query/detail/find_if.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_FIND_IF_05052005_1107) #define FUSION_FIND_IF_05052005_1107 diff --git a/include/boost/fusion/algorithm/query/detail/none.hpp b/include/boost/fusion/algorithm/query/detail/none.hpp index dfe2d1d3..1a633fca 100644 --- a/include/boost/fusion/algorithm/query/detail/none.hpp +++ b/include/boost/fusion/algorithm/query/detail/none.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_NONE_07062005_1126) #define FUSION_NONE_07062005_1126 diff --git a/include/boost/fusion/algorithm/query/ext_/find_if_s.hpp b/include/boost/fusion/algorithm/query/ext_/find_if_s.hpp index 6d2d1ea8..2534ba4e 100755 --- a/include/boost/fusion/algorithm/query/ext_/find_if_s.hpp +++ b/include/boost/fusion/algorithm/query/ext_/find_if_s.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2006 Eric Niebler - Use, modification and distribution is 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) + Distributed under the 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(FIND_IF_S_05152006_1027) #define FIND_IF_S_05152006_1027 diff --git a/include/boost/fusion/algorithm/query/find.hpp b/include/boost/fusion/algorithm/query/find.hpp index a21c32b5..ece8cdd6 100644 --- a/include/boost/fusion/algorithm/query/find.hpp +++ b/include/boost/fusion/algorithm/query/find.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_FIND_05052005_1107) #define FUSION_FIND_05052005_1107 diff --git a/include/boost/fusion/algorithm/query/find_if.hpp b/include/boost/fusion/algorithm/query/find_if.hpp index 8c8f6d6b..4340d688 100644 --- a/include/boost/fusion/algorithm/query/find_if.hpp +++ b/include/boost/fusion/algorithm/query/find_if.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_FIND_IF_05052005_1108) #define FUSION_FIND_IF_05052005_1108 diff --git a/include/boost/fusion/algorithm/query/none.hpp b/include/boost/fusion/algorithm/query/none.hpp index 15483d36..e182d811 100644 --- a/include/boost/fusion/algorithm/query/none.hpp +++ b/include/boost/fusion/algorithm/query/none.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_NONE_07062005_1128) #define FUSION_NONE_07062005_1128 diff --git a/include/boost/fusion/algorithm/transformation.hpp b/include/boost/fusion/algorithm/transformation.hpp index da76e995..0757b5ee 100644 --- a/include/boost/fusion/algorithm/transformation.hpp +++ b/include/boost/fusion/algorithm/transformation.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_ALGORITHM_TRANSFORMATION_10022005_0551) #define FUSION_ALGORITHM_TRANSFORMATION_10022005_0551 diff --git a/include/boost/fusion/algorithm/transformation/clear.hpp b/include/boost/fusion/algorithm/transformation/clear.hpp index f35232cc..31e4269d 100644 --- a/include/boost/fusion/algorithm/transformation/clear.hpp +++ b/include/boost/fusion/algorithm/transformation/clear.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_CLEAR_09172005_1127) #define FUSION_CLEAR_09172005_1127 diff --git a/include/boost/fusion/algorithm/transformation/detail/replace.hpp b/include/boost/fusion/algorithm/transformation/detail/replace.hpp index 816ca027..2c738c32 100644 --- a/include/boost/fusion/algorithm/transformation/detail/replace.hpp +++ b/include/boost/fusion/algorithm/transformation/detail/replace.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_REPLACE_08182005_0841) #define FUSION_REPLACE_08182005_0841 diff --git a/include/boost/fusion/algorithm/transformation/detail/replace_if.hpp b/include/boost/fusion/algorithm/transformation/detail/replace_if.hpp index 9bd616d8..501297e0 100644 --- a/include/boost/fusion/algorithm/transformation/detail/replace_if.hpp +++ b/include/boost/fusion/algorithm/transformation/detail/replace_if.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_REPLACE_IF_08182005_0946) #define FUSION_REPLACE_IF_08182005_0946 diff --git a/include/boost/fusion/algorithm/transformation/erase.hpp b/include/boost/fusion/algorithm/transformation/erase.hpp index 091c63b4..9e78da27 100644 --- a/include/boost/fusion/algorithm/transformation/erase.hpp +++ b/include/boost/fusion/algorithm/transformation/erase.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_ERASE_07232005_0534) #define FUSION_ERASE_07232005_0534 diff --git a/include/boost/fusion/algorithm/transformation/erase_key.hpp b/include/boost/fusion/algorithm/transformation/erase_key.hpp index ee9ec508..dcdc6f09 100644 --- a/include/boost/fusion/algorithm/transformation/erase_key.hpp +++ b/include/boost/fusion/algorithm/transformation/erase_key.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_ERASE_KEY_10022005_1851) #define FUSION_ERASE_KEY_10022005_1851 diff --git a/include/boost/fusion/algorithm/transformation/filter.hpp b/include/boost/fusion/algorithm/transformation/filter.hpp index 235c2e9b..16244649 100644 --- a/include/boost/fusion/algorithm/transformation/filter.hpp +++ b/include/boost/fusion/algorithm/transformation/filter.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_FILTER_02122005_1839) #define FUSION_FILTER_02122005_1839 diff --git a/include/boost/fusion/algorithm/transformation/filter_if.hpp b/include/boost/fusion/algorithm/transformation/filter_if.hpp index 1f9f9325..4f362882 100644 --- a/include/boost/fusion/algorithm/transformation/filter_if.hpp +++ b/include/boost/fusion/algorithm/transformation/filter_if.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_FILTER_IF_07172005_0818) #define FUSION_FILTER_IF_07172005_0818 diff --git a/include/boost/fusion/algorithm/transformation/insert.hpp b/include/boost/fusion/algorithm/transformation/insert.hpp index b91e459d..5b676538 100644 --- a/include/boost/fusion/algorithm/transformation/insert.hpp +++ b/include/boost/fusion/algorithm/transformation/insert.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_INSERT_07222005_0730) #define FUSION_INSERT_07222005_0730 diff --git a/include/boost/fusion/algorithm/transformation/insert_range.hpp b/include/boost/fusion/algorithm/transformation/insert_range.hpp index 735b8857..4db840aa 100644 --- a/include/boost/fusion/algorithm/transformation/insert_range.hpp +++ b/include/boost/fusion/algorithm/transformation/insert_range.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_INSERT_RANGE_009172005_1147) #define FUSION_INSERT_RANGE_009172005_1147 diff --git a/include/boost/fusion/algorithm/transformation/join.hpp b/include/boost/fusion/algorithm/transformation/join.hpp index 4228a77f..10a5eecc 100644 --- a/include/boost/fusion/algorithm/transformation/join.hpp +++ b/include/boost/fusion/algorithm/transformation/join.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_JOIN_200601222109) #define FUSION_JOIN_200601222109 diff --git a/include/boost/fusion/algorithm/transformation/pop_back.hpp b/include/boost/fusion/algorithm/transformation/pop_back.hpp index 688c36cd..c83d5904 100644 --- a/include/boost/fusion/algorithm/transformation/pop_back.hpp +++ b/include/boost/fusion/algorithm/transformation/pop_back.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_POP_BACK_09172005_1038) #define FUSION_POP_BACK_09172005_1038 diff --git a/include/boost/fusion/algorithm/transformation/pop_front.hpp b/include/boost/fusion/algorithm/transformation/pop_front.hpp index e9a16d77..d01e3754 100644 --- a/include/boost/fusion/algorithm/transformation/pop_front.hpp +++ b/include/boost/fusion/algorithm/transformation/pop_front.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_POP_FRONT_09172005_1115) #define FUSION_POP_FRONT_09172005_1115 diff --git a/include/boost/fusion/algorithm/transformation/push_back.hpp b/include/boost/fusion/algorithm/transformation/push_back.hpp index 9312b52a..c33b5da8 100644 --- a/include/boost/fusion/algorithm/transformation/push_back.hpp +++ b/include/boost/fusion/algorithm/transformation/push_back.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_PUSH_BACK_07162005_0235) #define FUSION_PUSH_BACK_07162005_0235 diff --git a/include/boost/fusion/algorithm/transformation/push_front.hpp b/include/boost/fusion/algorithm/transformation/push_front.hpp index 1a0a343c..b8ea8261 100644 --- a/include/boost/fusion/algorithm/transformation/push_front.hpp +++ b/include/boost/fusion/algorithm/transformation/push_front.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_PUSH_FRONT_07162005_0749) #define FUSION_PUSH_FRONT_07162005_0749 diff --git a/include/boost/fusion/algorithm/transformation/remove.hpp b/include/boost/fusion/algorithm/transformation/remove.hpp index fce97b70..1eb4bfb3 100644 --- a/include/boost/fusion/algorithm/transformation/remove.hpp +++ b/include/boost/fusion/algorithm/transformation/remove.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_REMOVE_07162005_0818) #define FUSION_REMOVE_07162005_0818 diff --git a/include/boost/fusion/algorithm/transformation/remove_if.hpp b/include/boost/fusion/algorithm/transformation/remove_if.hpp index 9660acd6..c2140d17 100644 --- a/include/boost/fusion/algorithm/transformation/remove_if.hpp +++ b/include/boost/fusion/algorithm/transformation/remove_if.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_REMOVE_IF_07162005_0818) #define FUSION_REMOVE_IF_07162005_0818 diff --git a/include/boost/fusion/algorithm/transformation/replace.hpp b/include/boost/fusion/algorithm/transformation/replace.hpp index 59a851e6..43657f99 100644 --- a/include/boost/fusion/algorithm/transformation/replace.hpp +++ b/include/boost/fusion/algorithm/transformation/replace.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_REPLACE_08182005_0830) #define FUSION_REPLACE_08182005_0830 diff --git a/include/boost/fusion/algorithm/transformation/replace_if.hpp b/include/boost/fusion/algorithm/transformation/replace_if.hpp index 090f4dbe..07abbdca 100644 --- a/include/boost/fusion/algorithm/transformation/replace_if.hpp +++ b/include/boost/fusion/algorithm/transformation/replace_if.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_REPLACE_IF_08182005_0939) #define FUSION_REPLACE_IF_08182005_0939 diff --git a/include/boost/fusion/algorithm/transformation/reverse.hpp b/include/boost/fusion/algorithm/transformation/reverse.hpp index 75ecfe6a..faf78114 100644 --- a/include/boost/fusion/algorithm/transformation/reverse.hpp +++ b/include/boost/fusion/algorithm/transformation/reverse.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_REVERSE_07212005_1230) #define FUSION_REVERSE_07212005_1230 diff --git a/include/boost/fusion/algorithm/transformation/transform.hpp b/include/boost/fusion/algorithm/transformation/transform.hpp index c1d56e6b..0315a8d0 100644 --- a/include/boost/fusion/algorithm/transformation/transform.hpp +++ b/include/boost/fusion/algorithm/transformation/transform.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_TRANSFORM_07052005_1057) #define FUSION_TRANSFORM_07052005_1057 diff --git a/include/boost/fusion/algorithm/transformation/zip.hpp b/include/boost/fusion/algorithm/transformation/zip.hpp index a20a6cc3..33b7d25b 100644 --- a/include/boost/fusion/algorithm/transformation/zip.hpp +++ b/include/boost/fusion/algorithm/transformation/zip.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_PP_IS_ITERATING #if !defined(FUSION_ZIP_HPP_20060125_2058) diff --git a/include/boost/fusion/include/as_vector.hpp b/include/boost/fusion/include/as_vector.hpp index 802c66db..2136b492 100644 --- a/include/boost/fusion/include/as_vector.hpp +++ b/include/boost/fusion/include/as_vector.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2007 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_INCLUDE_AS_VECTOR) #define FUSION_INCLUDE_AS_VECTOR diff --git a/include/boost/fusion/include/at.hpp b/include/boost/fusion/include/at.hpp index 66e62360..eacd7bbb 100644 --- a/include/boost/fusion/include/at.hpp +++ b/include/boost/fusion/include/at.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2007 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_INCLUDE_AT) #define FUSION_INCLUDE_AT diff --git a/include/boost/fusion/include/is_sequence.hpp b/include/boost/fusion/include/is_sequence.hpp index 058066c2..a7f2b4d8 100644 --- a/include/boost/fusion/include/is_sequence.hpp +++ b/include/boost/fusion/include/is_sequence.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2007 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_INCLUDE_IS_SEQUENCE) #define FUSION_INCLUDE_IS_SEQUENCE diff --git a/include/boost/fusion/include/join.hpp b/include/boost/fusion/include/join.hpp index 6b2772f2..5f701ad3 100644 --- a/include/boost/fusion/include/join.hpp +++ b/include/boost/fusion/include/join.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2007 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_INCLUDE_JOIN) #define FUSION_INCLUDE_JOIN diff --git a/include/boost/fusion/include/joint_view.hpp b/include/boost/fusion/include/joint_view.hpp index d7a6aa80..c60e34e5 100644 --- a/include/boost/fusion/include/joint_view.hpp +++ b/include/boost/fusion/include/joint_view.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2007 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_INCLUDE_JOINT_VIEW) #define FUSION_INCLUDE_JOINT_VIEW diff --git a/include/boost/fusion/include/mpl.hpp b/include/boost/fusion/include/mpl.hpp index 1d1bbe41..36b5f763 100644 --- a/include/boost/fusion/include/mpl.hpp +++ b/include/boost/fusion/include/mpl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2007 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_INCLUDE_MPL) #define FUSION_INCLUDE_MPL diff --git a/include/boost/fusion/include/push_front.hpp b/include/boost/fusion/include/push_front.hpp index 3e3fa672..5a9cfa5e 100644 --- a/include/boost/fusion/include/push_front.hpp +++ b/include/boost/fusion/include/push_front.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2007 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_INCLUDE_PUSH_FRONT) #define FUSION_INCLUDE_PUSH_FRONT diff --git a/include/boost/fusion/include/single_view.hpp b/include/boost/fusion/include/single_view.hpp index 9676e874..ae60d867 100644 --- a/include/boost/fusion/include/single_view.hpp +++ b/include/boost/fusion/include/single_view.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2007 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_INCLUDE_SINGLE_VIEW) #define FUSION_INCLUDE_SINGLE_VIEW diff --git a/include/boost/fusion/include/transform.hpp b/include/boost/fusion/include/transform.hpp index d2c4d2c8..2b66c4f7 100644 --- a/include/boost/fusion/include/transform.hpp +++ b/include/boost/fusion/include/transform.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2007 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_INCLUDE_TRANSFORM) #define FUSION_INCLUDE_TRANSFORM diff --git a/include/boost/fusion/include/transform_view.hpp b/include/boost/fusion/include/transform_view.hpp index c7442645..7564c6ab 100644 --- a/include/boost/fusion/include/transform_view.hpp +++ b/include/boost/fusion/include/transform_view.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2007 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_INCLUDE_TRANSFORM_VIEW) #define FUSION_INCLUDE_TRANSFORM_VIEW diff --git a/include/boost/fusion/include/vector.hpp b/include/boost/fusion/include/vector.hpp index ee7aac0c..e49568e2 100644 --- a/include/boost/fusion/include/vector.hpp +++ b/include/boost/fusion/include/vector.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2007 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_INCLUDE_VECTOR) #define FUSION_INCLUDE_VECTOR diff --git a/include/boost/fusion/iterator.hpp b/include/boost/fusion/iterator.hpp index 074d9542..c7f8e1eb 100644 --- a/include/boost/fusion/iterator.hpp +++ b/include/boost/fusion/iterator.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_ITERATOR_10022005_0559) #define FUSION_ITERATOR_10022005_0559 diff --git a/include/boost/fusion/iterator/advance.hpp b/include/boost/fusion/iterator/advance.hpp index a8e3e934..2cbafede 100644 --- a/include/boost/fusion/iterator/advance.hpp +++ b/include/boost/fusion/iterator/advance.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_ADVANCE_09172005_1146) #define FUSION_ADVANCE_09172005_1146 diff --git a/include/boost/fusion/iterator/deref.hpp b/include/boost/fusion/iterator/deref.hpp index dae0a04e..0e6f54d2 100644 --- a/include/boost/fusion/iterator/deref.hpp +++ b/include/boost/fusion/iterator/deref.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_DEREF_05042005_1019) #define FUSION_DEREF_05042005_1019 diff --git a/include/boost/fusion/iterator/detail/adapt_deref_traits.hpp b/include/boost/fusion/iterator/detail/adapt_deref_traits.hpp index 1bfe5d63..d683c289 100644 --- a/include/boost/fusion/iterator/detail/adapt_deref_traits.hpp +++ b/include/boost/fusion/iterator/detail/adapt_deref_traits.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_ADAPT_DEREF_TRAITS_05062005_0900) #define FUSION_ADAPT_DEREF_TRAITS_05062005_0900 diff --git a/include/boost/fusion/iterator/detail/adapt_value_traits.hpp b/include/boost/fusion/iterator/detail/adapt_value_traits.hpp index 60bf9cd3..a7d72f53 100644 --- a/include/boost/fusion/iterator/detail/adapt_value_traits.hpp +++ b/include/boost/fusion/iterator/detail/adapt_value_traits.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_ADAPT_VALUE_TRAITS_05062005_0859) #define FUSION_ADAPT_VALUE_TRAITS_05062005_0859 diff --git a/include/boost/fusion/iterator/detail/advance.hpp b/include/boost/fusion/iterator/detail/advance.hpp index 37792371..900608fa 100644 --- a/include/boost/fusion/iterator/detail/advance.hpp +++ b/include/boost/fusion/iterator/detail/advance.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_ADVANCE_09172005_1149) #define FUSION_ADVANCE_09172005_1149 diff --git a/include/boost/fusion/iterator/detail/distance.hpp b/include/boost/fusion/iterator/detail/distance.hpp index 2ee467d6..e4c0a5e7 100644 --- a/include/boost/fusion/iterator/detail/distance.hpp +++ b/include/boost/fusion/iterator/detail/distance.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_DISTANCE_09172005_0730) #define FUSION_DISTANCE_09172005_0730 diff --git a/include/boost/fusion/iterator/distance.hpp b/include/boost/fusion/iterator/distance.hpp index bdafa9f1..897bd1de 100644 --- a/include/boost/fusion/iterator/distance.hpp +++ b/include/boost/fusion/iterator/distance.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_DISTANCE_09172005_0721) #define FUSION_DISTANCE_09172005_0721 diff --git a/include/boost/fusion/iterator/equal_to.hpp b/include/boost/fusion/iterator/equal_to.hpp index be1e7ed7..2db27675 100644 --- a/include/boost/fusion/iterator/equal_to.hpp +++ b/include/boost/fusion/iterator/equal_to.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_EQUAL_TO_05052005_1208) #define FUSION_EQUAL_TO_05052005_1208 diff --git a/include/boost/fusion/iterator/iterator_facade.hpp b/include/boost/fusion/iterator/iterator_facade.hpp index af5c7719..f1720bdb 100644 --- a/include/boost/fusion/iterator/iterator_facade.hpp +++ b/include/boost/fusion/iterator/iterator_facade.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_ITERATOR_FACADE_09252006_1011) #define FUSION_ITERATOR_FACADE_09252006_1011 diff --git a/include/boost/fusion/iterator/mpl.hpp b/include/boost/fusion/iterator/mpl.hpp index 670a2879..2709bd29 100644 --- a/include/boost/fusion/iterator/mpl.hpp +++ b/include/boost/fusion/iterator/mpl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_ITERATOR_MPL_10022005_0557) #define FUSION_ITERATOR_MPL_10022005_0557 diff --git a/include/boost/fusion/iterator/mpl/convert_iterator.hpp b/include/boost/fusion/iterator/mpl/convert_iterator.hpp index fac72e9c..fc2efacf 100644 --- a/include/boost/fusion/iterator/mpl/convert_iterator.hpp +++ b/include/boost/fusion/iterator/mpl/convert_iterator.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_CONVERT_ITERATOR_05062005_1218) #define FUSION_CONVERT_ITERATOR_05062005_1218 diff --git a/include/boost/fusion/iterator/mpl/fusion_iterator.hpp b/include/boost/fusion/iterator/mpl/fusion_iterator.hpp index 253d35bc..150db549 100644 --- a/include/boost/fusion/iterator/mpl/fusion_iterator.hpp +++ b/include/boost/fusion/iterator/mpl/fusion_iterator.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_FUSION_ITERATOR_10012005_1551) #define FUSION_FUSION_ITERATOR_10012005_1551 diff --git a/include/boost/fusion/iterator/next.hpp b/include/boost/fusion/iterator/next.hpp index b5892d8c..9070a9e2 100644 --- a/include/boost/fusion/iterator/next.hpp +++ b/include/boost/fusion/iterator/next.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_NEXT_05042005_1101) #define FUSION_NEXT_05042005_1101 diff --git a/include/boost/fusion/iterator/prior.hpp b/include/boost/fusion/iterator/prior.hpp index bc9aa825..9a261039 100644 --- a/include/boost/fusion/iterator/prior.hpp +++ b/include/boost/fusion/iterator/prior.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_PRIOR_05042005_1144) #define FUSION_PRIOR_05042005_1144 diff --git a/include/boost/fusion/iterator/value_of.hpp b/include/boost/fusion/iterator/value_of.hpp index 17ab07c8..808c6593 100644 --- a/include/boost/fusion/iterator/value_of.hpp +++ b/include/boost/fusion/iterator/value_of.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_VALUE_OF_05052005_1126) #define FUSION_VALUE_OF_05052005_1126 diff --git a/include/boost/fusion/mpl.hpp b/include/boost/fusion/mpl.hpp index 3cf71d2a..6eb2538b 100644 --- a/include/boost/fusion/mpl.hpp +++ b/include/boost/fusion/mpl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_MPL_09172006_2049) #define FUSION_MPL_09172006_2049 diff --git a/include/boost/fusion/sequence.hpp b/include/boost/fusion/sequence.hpp index 86d7bdd3..e72ee21a 100644 --- a/include/boost/fusion/sequence.hpp +++ b/include/boost/fusion/sequence.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_SEQUENCE_10022005_0559) #define FUSION_ITERATOR_10022005_0559 diff --git a/include/boost/fusion/sequence/adapted.hpp b/include/boost/fusion/sequence/adapted.hpp index 80b05e21..ea951f19 100644 --- a/include/boost/fusion/sequence/adapted.hpp +++ b/include/boost/fusion/sequence/adapted.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_ADAPTED_30122005_1420) #define BOOST_FUSION_ADAPTED_30122005_1420 diff --git a/include/boost/fusion/sequence/adapted/array.hpp b/include/boost/fusion/sequence/adapted/array.hpp index 5b535ce5..0e1537f8 100644 --- a/include/boost/fusion/sequence/adapted/array.hpp +++ b/include/boost/fusion/sequence/adapted/array.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_ARRAY_27122005_1035) #define BOOST_FUSION_ARRAY_27122005_1035 diff --git a/include/boost/fusion/sequence/adapted/array/array_iterator.hpp b/include/boost/fusion/sequence/adapted/array/array_iterator.hpp index a0eef60f..dbad7763 100644 --- a/include/boost/fusion/sequence/adapted/array/array_iterator.hpp +++ b/include/boost/fusion/sequence/adapted/array/array_iterator.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_ARRAY_ITERATOR_26122005_2250) #define BOOST_FUSION_ARRAY_ITERATOR_26122005_2250 diff --git a/include/boost/fusion/sequence/adapted/array/detail/at_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/at_impl.hpp index a51e25f9..3c427059 100644 --- a/include/boost/fusion/sequence/adapted/array/detail/at_impl.hpp +++ b/include/boost/fusion/sequence/adapted/array/detail/at_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_27122005_1241) #define BOOST_FUSION_AT_IMPL_27122005_1241 diff --git a/include/boost/fusion/sequence/adapted/array/detail/begin_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/begin_impl.hpp index 52f4b784..fc4fb6a3 100644 --- a/include/boost/fusion/sequence/adapted/array/detail/begin_impl.hpp +++ b/include/boost/fusion/sequence/adapted/array/detail/begin_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_27122005_1117) #define BOOST_FUSION_BEGIN_IMPL_27122005_1117 diff --git a/include/boost/fusion/sequence/adapted/array/detail/category_of_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/category_of_impl.hpp index f5069a9e..4c6b040e 100644 --- a/include/boost/fusion/sequence/adapted/array/detail/category_of_impl.hpp +++ b/include/boost/fusion/sequence/adapted/array/detail/category_of_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_27122005_1044) #define BOOST_FUSION_CATEGORY_OF_IMPL_27122005_1044 diff --git a/include/boost/fusion/sequence/adapted/array/detail/end_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/end_impl.hpp index 233a64ce..a3ffbed4 100644 --- a/include/boost/fusion/sequence/adapted/array/detail/end_impl.hpp +++ b/include/boost/fusion/sequence/adapted/array/detail/end_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_27122005_1120) #define BOOST_FUSION_END_IMPL_27122005_1120 diff --git a/include/boost/fusion/sequence/adapted/array/detail/is_sequence_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/is_sequence_impl.hpp index 5a53f775..a248c314 100644 --- a/include/boost/fusion/sequence/adapted/array/detail/is_sequence_impl.hpp +++ b/include/boost/fusion/sequence/adapted/array/detail/is_sequence_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_27122005_1648) #define BOOST_FUSION_IS_SEQUENCE_IMPL_27122005_1648 diff --git a/include/boost/fusion/sequence/adapted/array/detail/is_view_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/is_view_impl.hpp index fe2c5523..bc821fa6 100644 --- a/include/boost/fusion/sequence/adapted/array/detail/is_view_impl.hpp +++ b/include/boost/fusion/sequence/adapted/array/detail/is_view_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_27042006_2221) #define BOOST_FUSION_IS_VIEW_IMPL_27042006_2221 diff --git a/include/boost/fusion/sequence/adapted/array/detail/size_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/size_impl.hpp index 69064da7..63661573 100644 --- a/include/boost/fusion/sequence/adapted/array/detail/size_impl.hpp +++ b/include/boost/fusion/sequence/adapted/array/detail/size_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_27122005_1251) #define BOOST_FUSION_SIZE_IMPL_27122005_1251 diff --git a/include/boost/fusion/sequence/adapted/array/detail/value_at_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/value_at_impl.hpp index b70a01c1..f465b1d6 100644 --- a/include/boost/fusion/sequence/adapted/array/detail/value_at_impl.hpp +++ b/include/boost/fusion/sequence/adapted/array/detail/value_at_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_27122005_1256) #define BOOST_FUSION_VALUE_AT_IMPL_27122005_1256 diff --git a/include/boost/fusion/sequence/adapted/array/tag_of.hpp b/include/boost/fusion/sequence/adapted/array/tag_of.hpp index 6e4b1661..96f6d35c 100644 --- a/include/boost/fusion/sequence/adapted/array/tag_of.hpp +++ b/include/boost/fusion/sequence/adapted/array/tag_of.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_SEQUENCE_TAG_OF_27122005_1030) #define FUSION_SEQUENCE_TAG_OF_27122005_1030 diff --git a/include/boost/fusion/sequence/adapted/boost_tuple.hpp b/include/boost/fusion/sequence/adapted/boost_tuple.hpp index d6e5b1b2..14288087 100644 --- a/include/boost/fusion/sequence/adapted/boost_tuple.hpp +++ b/include/boost/fusion/sequence/adapted/boost_tuple.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_BOOST_TUPLE_09272006_0732) #define BOOST_FUSION_BOOST_TUPLE_09272006_0732 diff --git a/include/boost/fusion/sequence/adapted/boost_tuple/boost_tuple_iterator.hpp b/include/boost/fusion/sequence/adapted/boost_tuple/boost_tuple_iterator.hpp index d8cc5fb7..f92ef8b6 100644 --- a/include/boost/fusion/sequence/adapted/boost_tuple/boost_tuple_iterator.hpp +++ b/include/boost/fusion/sequence/adapted/boost_tuple/boost_tuple_iterator.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_BOOST_TUPLE_ITERATOR_09262006_1851) #define FUSION_BOOST_TUPLE_ITERATOR_09262006_1851 diff --git a/include/boost/fusion/sequence/adapted/boost_tuple/detail/at_impl.hpp b/include/boost/fusion/sequence/adapted/boost_tuple/detail/at_impl.hpp index 7ed9c945..b594dfd8 100644 --- a/include/boost/fusion/sequence/adapted/boost_tuple/detail/at_impl.hpp +++ b/include/boost/fusion/sequence/adapted/boost_tuple/detail/at_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_09262006_1920) #define BOOST_FUSION_AT_IMPL_09262006_1920 diff --git a/include/boost/fusion/sequence/adapted/boost_tuple/detail/begin_impl.hpp b/include/boost/fusion/sequence/adapted/boost_tuple/detail/begin_impl.hpp index 699eabac..aaa6a670 100644 --- a/include/boost/fusion/sequence/adapted/boost_tuple/detail/begin_impl.hpp +++ b/include/boost/fusion/sequence/adapted/boost_tuple/detail/begin_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_09272006_0719) #define BOOST_FUSION_BEGIN_IMPL_09272006_0719 diff --git a/include/boost/fusion/sequence/adapted/boost_tuple/detail/category_of_impl.hpp b/include/boost/fusion/sequence/adapted/boost_tuple/detail/category_of_impl.hpp index 677e1825..34f48b1e 100644 --- a/include/boost/fusion/sequence/adapted/boost_tuple/detail/category_of_impl.hpp +++ b/include/boost/fusion/sequence/adapted/boost_tuple/detail/category_of_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_09272006_0726) #define BOOST_FUSION_CATEGORY_OF_IMPL_09272006_0726 diff --git a/include/boost/fusion/sequence/adapted/boost_tuple/detail/end_impl.hpp b/include/boost/fusion/sequence/adapted/boost_tuple/detail/end_impl.hpp index 95e81e80..016bca3f 100644 --- a/include/boost/fusion/sequence/adapted/boost_tuple/detail/end_impl.hpp +++ b/include/boost/fusion/sequence/adapted/boost_tuple/detail/end_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_09272006_0721) #define BOOST_FUSION_END_IMPL_09272006_0721 diff --git a/include/boost/fusion/sequence/adapted/boost_tuple/detail/is_sequence_impl.hpp b/include/boost/fusion/sequence/adapted/boost_tuple/detail/is_sequence_impl.hpp index 69266b11..43d73115 100644 --- a/include/boost/fusion/sequence/adapted/boost_tuple/detail/is_sequence_impl.hpp +++ b/include/boost/fusion/sequence/adapted/boost_tuple/detail/is_sequence_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_09272006_0726) #define BOOST_FUSION_IS_SEQUENCE_IMPL_09272006_0726 diff --git a/include/boost/fusion/sequence/adapted/boost_tuple/detail/is_view_impl.hpp b/include/boost/fusion/sequence/adapted/boost_tuple/detail/is_view_impl.hpp index 2e394f84..2927df7b 100644 --- a/include/boost/fusion/sequence/adapted/boost_tuple/detail/is_view_impl.hpp +++ b/include/boost/fusion/sequence/adapted/boost_tuple/detail/is_view_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_09272006_0725) #define BOOST_FUSION_IS_VIEW_IMPL_09272006_0725 diff --git a/include/boost/fusion/sequence/adapted/boost_tuple/detail/size_impl.hpp b/include/boost/fusion/sequence/adapted/boost_tuple/detail/size_impl.hpp index 0723d6f4..167a5035 100644 --- a/include/boost/fusion/sequence/adapted/boost_tuple/detail/size_impl.hpp +++ b/include/boost/fusion/sequence/adapted/boost_tuple/detail/size_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_09272006_0724) #define BOOST_FUSION_SIZE_IMPL_09272006_0724 diff --git a/include/boost/fusion/sequence/adapted/boost_tuple/detail/value_at_impl.hpp b/include/boost/fusion/sequence/adapted/boost_tuple/detail/value_at_impl.hpp index 7ee6bd69..d46d51e5 100644 --- a/include/boost/fusion/sequence/adapted/boost_tuple/detail/value_at_impl.hpp +++ b/include/boost/fusion/sequence/adapted/boost_tuple/detail/value_at_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_09262006_1926) #define BOOST_FUSION_VALUE_AT_IMPL_09262006_1926 diff --git a/include/boost/fusion/sequence/adapted/boost_tuple/tag_of.hpp b/include/boost/fusion/sequence/adapted/boost_tuple/tag_of.hpp index 37e16807..a1a27aa7 100644 --- a/include/boost/fusion/sequence/adapted/boost_tuple/tag_of.hpp +++ b/include/boost/fusion/sequence/adapted/boost_tuple/tag_of.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_TAG_OF_09262006_1900) #define BOOST_FUSION_TAG_OF_09262006_1900 diff --git a/include/boost/fusion/sequence/adapted/mpl.hpp b/include/boost/fusion/sequence/adapted/mpl.hpp index 151fe717..a7954ed8 100644 --- a/include/boost/fusion/sequence/adapted/mpl.hpp +++ b/include/boost/fusion/sequence/adapted/mpl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_MPL_31122005_1152) #define BOOST_FUSION_MPL_31122005_1152 diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/at_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/at_impl.hpp index cf3a7c8c..6f3be1c6 100644 --- a/include/boost/fusion/sequence/adapted/mpl/detail/at_impl.hpp +++ b/include/boost/fusion/sequence/adapted/mpl/detail/at_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_31122005_1642) #define BOOST_FUSION_AT_IMPL_31122005_1642 diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/begin_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/begin_impl.hpp index 5afea50b..04e09e44 100644 --- a/include/boost/fusion/sequence/adapted/mpl/detail/begin_impl.hpp +++ b/include/boost/fusion/sequence/adapted/mpl/detail/begin_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_31122005_1209) #define BOOST_FUSION_BEGIN_IMPL_31122005_1209 diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/category_of_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/category_of_impl.hpp index c196a71d..ad68fcc9 100644 --- a/include/boost/fusion/sequence/adapted/mpl/detail/category_of_impl.hpp +++ b/include/boost/fusion/sequence/adapted/mpl/detail/category_of_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_20060217_2141) #define BOOST_FUSION_CATEGORY_OF_IMPL_20060217_2141 diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/empty_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/empty_impl.hpp index 9b8e1098..14e8dfa2 100644 --- a/include/boost/fusion/sequence/adapted/mpl/detail/empty_impl.hpp +++ b/include/boost/fusion/sequence/adapted/mpl/detail/empty_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_EMPTY_IMPL_31122005_1554) #define BOOST_FUSION_EMPTY_IMPL_31122005_1554 diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/end_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/end_impl.hpp index ee286dc2..6b3d7933 100644 --- a/include/boost/fusion/sequence/adapted/mpl/detail/end_impl.hpp +++ b/include/boost/fusion/sequence/adapted/mpl/detail/end_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_31122005_1237) #define BOOST_FUSION_END_IMPL_31122005_1237 diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/has_key_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/has_key_impl.hpp index 5a7c2955..bfecbc73 100644 --- a/include/boost/fusion/sequence/adapted/mpl/detail/has_key_impl.hpp +++ b/include/boost/fusion/sequence/adapted/mpl/detail/has_key_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_31122005_1647) #define BOOST_FUSION_HAS_KEY_IMPL_31122005_1647 diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/is_sequence_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/is_sequence_impl.hpp index 6e2ce7da..bf9b349c 100644 --- a/include/boost/fusion/sequence/adapted/mpl/detail/is_sequence_impl.hpp +++ b/include/boost/fusion/sequence/adapted/mpl/detail/is_sequence_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_31122005_1505) #define BOOST_FUSION_IS_SEQUENCE_IMPL_31122005_1505 diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/is_view_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/is_view_impl.hpp index 14bc9dd0..5ae48c90 100644 --- a/include/boost/fusion/sequence/adapted/mpl/detail/is_view_impl.hpp +++ b/include/boost/fusion/sequence/adapted/mpl/detail/is_view_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_03202006_0048) #define BOOST_FUSION_IS_VIEW_IMPL_03202006_0048 diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/size_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/size_impl.hpp index 63213e07..62893517 100644 --- a/include/boost/fusion/sequence/adapted/mpl/detail/size_impl.hpp +++ b/include/boost/fusion/sequence/adapted/mpl/detail/size_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_31122005_1508) #define BOOST_FUSION_SIZE_IMPL_31122005_1508 diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/value_at_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/value_at_impl.hpp index d43982fd..5f39e4eb 100644 --- a/include/boost/fusion/sequence/adapted/mpl/detail/value_at_impl.hpp +++ b/include/boost/fusion/sequence/adapted/mpl/detail/value_at_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_31122005_1621) #define BOOST_FUSION_VALUE_AT_IMPL_31122005_1621 diff --git a/include/boost/fusion/sequence/adapted/mpl/mpl_iterator.hpp b/include/boost/fusion/sequence/adapted/mpl/mpl_iterator.hpp index 0c5587b9..c99b5804 100644 --- a/include/boost/fusion/sequence/adapted/mpl/mpl_iterator.hpp +++ b/include/boost/fusion/sequence/adapted/mpl/mpl_iterator.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_MPL_ITERATOR_05052005_0731) #define FUSION_MPL_ITERATOR_05052005_0731 diff --git a/include/boost/fusion/sequence/adapted/mpl/tag_of.hpp b/include/boost/fusion/sequence/adapted/mpl/tag_of.hpp index 6dcbea15..756d94f6 100644 --- a/include/boost/fusion/sequence/adapted/mpl/tag_of.hpp +++ b/include/boost/fusion/sequence/adapted/mpl/tag_of.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_TAG_OF_31122005_1153) #define BOOST_FUSION_TAG_OF_31122005_1153 diff --git a/include/boost/fusion/sequence/adapted/std_pair.hpp b/include/boost/fusion/sequence/adapted/std_pair.hpp index 4b5edb52..d4ba0b68 100644 --- a/include/boost/fusion/sequence/adapted/std_pair.hpp +++ b/include/boost/fusion/sequence/adapted/std_pair.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_STD_PAIR_24122005_1744) #define BOOST_FUSION_STD_PAIR_24122005_1744 diff --git a/include/boost/fusion/sequence/adapted/std_pair/Attic/std_pair_iterator.hpp b/include/boost/fusion/sequence/adapted/std_pair/Attic/std_pair_iterator.hpp index 799bd90d..4aa2daa2 100644 --- a/include/boost/fusion/sequence/adapted/std_pair/Attic/std_pair_iterator.hpp +++ b/include/boost/fusion/sequence/adapted/std_pair/Attic/std_pair_iterator.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_STD_PAIR_ITERATOR_09262005_0934) #define FUSION_STD_PAIR_ITERATOR_09262005_0934 diff --git a/include/boost/fusion/sequence/adapted/std_pair/Attic/tag_of.hpp b/include/boost/fusion/sequence/adapted/std_pair/Attic/tag_of.hpp index 98b5fa8c..3211efad 100644 --- a/include/boost/fusion/sequence/adapted/std_pair/Attic/tag_of.hpp +++ b/include/boost/fusion/sequence/adapted/std_pair/Attic/tag_of.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_TAG_OF_24122005_1722) #define BOOST_FUSION_TAG_OF_24122005_1722 diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/at_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/at_impl.hpp index b257089d..2f26fa68 100644 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/at_impl.hpp +++ b/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/at_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_24122005_1807) #define BOOST_FUSION_AT_IMPL_24122005_1807 diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/begin_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/begin_impl.hpp index 493f3f45..1b77b7a7 100644 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/begin_impl.hpp +++ b/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/begin_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_24122005_1752) #define BOOST_FUSION_BEGIN_IMPL_24122005_1752 diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/category_of_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/category_of_impl.hpp index d1c353d3..f207c1c7 100644 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/category_of_impl.hpp +++ b/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/category_of_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_24122005_1731) #define BOOST_FUSION_CATEGORY_OF_IMPL_24122005_1731 diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/end_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/end_impl.hpp index 5e311a28..9aab76c5 100644 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/end_impl.hpp +++ b/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/end_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_24122005_1755) #define BOOST_FUSION_END_IMPL_24122005_1755 diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/is_sequence_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/is_sequence_impl.hpp index d36180f8..1c669a68 100644 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/is_sequence_impl.hpp +++ b/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/is_sequence_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_27122005_1651) #define BOOST_FUSION_IS_SEQUENCE_IMPL_27122005_1651 diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/is_view_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/is_view_impl.hpp index f03fb7eb..94842bc0 100644 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/is_view_impl.hpp +++ b/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/is_view_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_27042006_2219) #define BOOST_FUSION_IS_VIEW_IMPL_27042006_2219 diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/size_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/size_impl.hpp index 618408be..5f35bffd 100644 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/size_impl.hpp +++ b/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/size_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_24122005_1759) #define BOOST_FUSION_SIZE_IMPL_24122005_1759 diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/value_at_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/value_at_impl.hpp index 5944ca09..16047ec9 100644 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/value_at_impl.hpp +++ b/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/value_at_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_24122005_1917) #define BOOST_FUSION_VALUE_AT_IMPL_24122005_1917 diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/at_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/at_impl.hpp index b257089d..2f26fa68 100644 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/at_impl.hpp +++ b/include/boost/fusion/sequence/adapted/std_pair/detail/at_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_24122005_1807) #define BOOST_FUSION_AT_IMPL_24122005_1807 diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/begin_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/begin_impl.hpp index 493f3f45..1b77b7a7 100644 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/begin_impl.hpp +++ b/include/boost/fusion/sequence/adapted/std_pair/detail/begin_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_24122005_1752) #define BOOST_FUSION_BEGIN_IMPL_24122005_1752 diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/category_of_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/category_of_impl.hpp index d1c353d3..f207c1c7 100644 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/category_of_impl.hpp +++ b/include/boost/fusion/sequence/adapted/std_pair/detail/category_of_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_24122005_1731) #define BOOST_FUSION_CATEGORY_OF_IMPL_24122005_1731 diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/end_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/end_impl.hpp index 5e311a28..9aab76c5 100644 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/end_impl.hpp +++ b/include/boost/fusion/sequence/adapted/std_pair/detail/end_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_24122005_1755) #define BOOST_FUSION_END_IMPL_24122005_1755 diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/is_sequence_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/is_sequence_impl.hpp index d36180f8..1c669a68 100644 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/is_sequence_impl.hpp +++ b/include/boost/fusion/sequence/adapted/std_pair/detail/is_sequence_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_27122005_1651) #define BOOST_FUSION_IS_SEQUENCE_IMPL_27122005_1651 diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/is_view_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/is_view_impl.hpp index f03fb7eb..94842bc0 100644 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/is_view_impl.hpp +++ b/include/boost/fusion/sequence/adapted/std_pair/detail/is_view_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_27042006_2219) #define BOOST_FUSION_IS_VIEW_IMPL_27042006_2219 diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/size_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/size_impl.hpp index 618408be..5f35bffd 100644 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/size_impl.hpp +++ b/include/boost/fusion/sequence/adapted/std_pair/detail/size_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_24122005_1759) #define BOOST_FUSION_SIZE_IMPL_24122005_1759 diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/value_at_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/value_at_impl.hpp index 5944ca09..16047ec9 100644 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/value_at_impl.hpp +++ b/include/boost/fusion/sequence/adapted/std_pair/detail/value_at_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_24122005_1917) #define BOOST_FUSION_VALUE_AT_IMPL_24122005_1917 diff --git a/include/boost/fusion/sequence/adapted/std_pair/std_pair_iterator.hpp b/include/boost/fusion/sequence/adapted/std_pair/std_pair_iterator.hpp index 799bd90d..4aa2daa2 100644 --- a/include/boost/fusion/sequence/adapted/std_pair/std_pair_iterator.hpp +++ b/include/boost/fusion/sequence/adapted/std_pair/std_pair_iterator.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_STD_PAIR_ITERATOR_09262005_0934) #define FUSION_STD_PAIR_ITERATOR_09262005_0934 diff --git a/include/boost/fusion/sequence/adapted/std_pair/tag_of.hpp b/include/boost/fusion/sequence/adapted/std_pair/tag_of.hpp index 98b5fa8c..3211efad 100644 --- a/include/boost/fusion/sequence/adapted/std_pair/tag_of.hpp +++ b/include/boost/fusion/sequence/adapted/std_pair/tag_of.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_TAG_OF_24122005_1722) #define BOOST_FUSION_TAG_OF_24122005_1722 diff --git a/include/boost/fusion/sequence/adapted/variant.hpp b/include/boost/fusion/sequence/adapted/variant.hpp index 53be7781..2443312d 100644 --- a/include/boost/fusion/sequence/adapted/variant.hpp +++ b/include/boost/fusion/sequence/adapted/variant.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_VARIANT_12112006_1614) #define BOOST_FUSION_VARIANT_12112006_1614 diff --git a/include/boost/fusion/sequence/adapted/variant/detail/begin_impl.hpp b/include/boost/fusion/sequence/adapted/variant/detail/begin_impl.hpp index fdf53755..dc9e2e7f 100644 --- a/include/boost/fusion/sequence/adapted/variant/detail/begin_impl.hpp +++ b/include/boost/fusion/sequence/adapted/variant/detail/begin_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_VARIANT_BEGIN_IMPL_12112006_2137) #define BOOST_FUSION_VARIANT_BEGIN_IMPL_12112006_2137 diff --git a/include/boost/fusion/sequence/adapted/variant/detail/category_of_impl.hpp b/include/boost/fusion/sequence/adapted/variant/detail/category_of_impl.hpp index 44db65fd..d81d9b3b 100644 --- a/include/boost/fusion/sequence/adapted/variant/detail/category_of_impl.hpp +++ b/include/boost/fusion/sequence/adapted/variant/detail/category_of_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_VARIANT_CATEGORY_OF_IMPL_13112006_0802) #define BOOST_FUSION_VARIANT_CATEGORY_OF_IMPL_13112006_0802 diff --git a/include/boost/fusion/sequence/adapted/variant/detail/end_impl.hpp b/include/boost/fusion/sequence/adapted/variant/detail/end_impl.hpp index 0414e7a9..622df47f 100644 --- a/include/boost/fusion/sequence/adapted/variant/detail/end_impl.hpp +++ b/include/boost/fusion/sequence/adapted/variant/detail/end_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_VARIANT_END_IMPL_12112006_2137) #define BOOST_FUSION_VARIANT_END_IMPL_12112006_2137 diff --git a/include/boost/fusion/sequence/adapted/variant/detail/is_sequence_impl.hpp b/include/boost/fusion/sequence/adapted/variant/detail/is_sequence_impl.hpp index 373ddd4a..132f88a1 100644 --- a/include/boost/fusion/sequence/adapted/variant/detail/is_sequence_impl.hpp +++ b/include/boost/fusion/sequence/adapted/variant/detail/is_sequence_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_VARIANT_IS_SEQUENCE_IMPL_13112006_0748) #define BOOST_FUSION_VARIANT_IS_SEQUENCE_IMPL_13112006_0748 diff --git a/include/boost/fusion/sequence/adapted/variant/detail/is_view_impl.hpp b/include/boost/fusion/sequence/adapted/variant/detail/is_view_impl.hpp index f17666da..d58dbd3c 100644 --- a/include/boost/fusion/sequence/adapted/variant/detail/is_view_impl.hpp +++ b/include/boost/fusion/sequence/adapted/variant/detail/is_view_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_VARIANT_IS_VIEW_IMPL_13112006_0749) #define BOOST_FUSION_VARIANT_IS_VIEW_IMPL_13112006_0749 diff --git a/include/boost/fusion/sequence/adapted/variant/detail/size_impl.hpp b/include/boost/fusion/sequence/adapted/variant/detail/size_impl.hpp index eb05f812..379bac32 100644 --- a/include/boost/fusion/sequence/adapted/variant/detail/size_impl.hpp +++ b/include/boost/fusion/sequence/adapted/variant/detail/size_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_VARIANT_SIZE_IMPL_12112006_2115) #define BOOST_FUSION_VARIANT_SIZE_IMPL_12112006_2115 diff --git a/include/boost/fusion/sequence/adapted/variant/tag_of.hpp b/include/boost/fusion/sequence/adapted/variant/tag_of.hpp index cd9dc2fc..3ec31460 100644 --- a/include/boost/fusion/sequence/adapted/variant/tag_of.hpp +++ b/include/boost/fusion/sequence/adapted/variant/tag_of.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_VARIANT_TAG_OF_12112006_1704) #define BOOST_FUSION_VARIANT_TAG_OF_12112006_1704 diff --git a/include/boost/fusion/sequence/adapted/variant/variant_iterator.hpp b/include/boost/fusion/sequence/adapted/variant/variant_iterator.hpp index 188166b2..0bdcf311 100644 --- a/include/boost/fusion/sequence/adapted/variant/variant_iterator.hpp +++ b/include/boost/fusion/sequence/adapted/variant/variant_iterator.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_VARIANT_ITERATOR_12112006_1617) #define BOOST_FUSION_VARIANT_ITERATOR_12112006_1617 diff --git a/include/boost/fusion/sequence/comparison.hpp b/include/boost/fusion/sequence/comparison.hpp index e4a6b5d7..50e72cb3 100644 --- a/include/boost/fusion/sequence/comparison.hpp +++ b/include/boost/fusion/sequence/comparison.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_SEQUENCE_COMPARISON_10022005_0615) #define FUSION_SEQUENCE_COMPARISON_10022005_0615 diff --git a/include/boost/fusion/sequence/comparison/detail/enable_comparison.hpp b/include/boost/fusion/sequence/comparison/detail/enable_comparison.hpp index aafe18d8..3e79277e 100644 --- a/include/boost/fusion/sequence/comparison/detail/enable_comparison.hpp +++ b/include/boost/fusion/sequence/comparison/detail/enable_comparison.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_ENABLE_COMPARISON_09232005_1958) #define FUSION_ENABLE_COMPARISON_09232005_1958 diff --git a/include/boost/fusion/sequence/comparison/detail/equal_to.hpp b/include/boost/fusion/sequence/comparison/detail/equal_to.hpp index 0b1f4df8..c4f91238 100644 --- a/include/boost/fusion/sequence/comparison/detail/equal_to.hpp +++ b/include/boost/fusion/sequence/comparison/detail/equal_to.hpp @@ -2,9 +2,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_EQUAL_TO_05052005_1142) #define FUSION_EQUAL_TO_05052005_1142 diff --git a/include/boost/fusion/sequence/comparison/detail/greater.hpp b/include/boost/fusion/sequence/comparison/detail/greater.hpp index 1f071b73..34cf1448 100644 --- a/include/boost/fusion/sequence/comparison/detail/greater.hpp +++ b/include/boost/fusion/sequence/comparison/detail/greater.hpp @@ -2,9 +2,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_GREATER_05052005_1142) #define FUSION_GREATER_05052005_1142 diff --git a/include/boost/fusion/sequence/comparison/detail/greater_equal.hpp b/include/boost/fusion/sequence/comparison/detail/greater_equal.hpp index 28bb7cc8..0cf4c388 100644 --- a/include/boost/fusion/sequence/comparison/detail/greater_equal.hpp +++ b/include/boost/fusion/sequence/comparison/detail/greater_equal.hpp @@ -2,9 +2,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_GREATER_EQUAL_05052005_1142) #define FUSION_GREATER_EQUAL_05052005_1142 diff --git a/include/boost/fusion/sequence/comparison/detail/less.hpp b/include/boost/fusion/sequence/comparison/detail/less.hpp index 15db31cb..3fc6429f 100644 --- a/include/boost/fusion/sequence/comparison/detail/less.hpp +++ b/include/boost/fusion/sequence/comparison/detail/less.hpp @@ -2,9 +2,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_LESS_05052005_1141) #define FUSION_LESS_05052005_1141 diff --git a/include/boost/fusion/sequence/comparison/detail/less_equal.hpp b/include/boost/fusion/sequence/comparison/detail/less_equal.hpp index 2eff087d..3d48ae5c 100644 --- a/include/boost/fusion/sequence/comparison/detail/less_equal.hpp +++ b/include/boost/fusion/sequence/comparison/detail/less_equal.hpp @@ -2,9 +2,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_LESS_EQUAL_05052005_1141) #define FUSION_LESS_EQUAL_05052005_1141 diff --git a/include/boost/fusion/sequence/comparison/detail/not_equal_to.hpp b/include/boost/fusion/sequence/comparison/detail/not_equal_to.hpp index 65c124c2..87911b6d 100644 --- a/include/boost/fusion/sequence/comparison/detail/not_equal_to.hpp +++ b/include/boost/fusion/sequence/comparison/detail/not_equal_to.hpp @@ -2,9 +2,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_NOT_EQUAL_TO_05052005_1141) #define FUSION_NOT_EQUAL_TO_05052005_1141 diff --git a/include/boost/fusion/sequence/comparison/equal_to.hpp b/include/boost/fusion/sequence/comparison/equal_to.hpp index 83d52dee..cea3c9c1 100644 --- a/include/boost/fusion/sequence/comparison/equal_to.hpp +++ b/include/boost/fusion/sequence/comparison/equal_to.hpp @@ -2,9 +2,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_EQUAL_TO_05052005_0431) #define FUSION_EQUAL_TO_05052005_0431 diff --git a/include/boost/fusion/sequence/comparison/greater.hpp b/include/boost/fusion/sequence/comparison/greater.hpp index dd57ebef..3ef215a1 100644 --- a/include/boost/fusion/sequence/comparison/greater.hpp +++ b/include/boost/fusion/sequence/comparison/greater.hpp @@ -2,9 +2,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_GREATER_05052005_0432) #define FUSION_GREATER_05052005_0432 diff --git a/include/boost/fusion/sequence/comparison/greater_equal.hpp b/include/boost/fusion/sequence/comparison/greater_equal.hpp index a0b9baef..df365c3a 100644 --- a/include/boost/fusion/sequence/comparison/greater_equal.hpp +++ b/include/boost/fusion/sequence/comparison/greater_equal.hpp @@ -2,9 +2,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_GREATER_EQUAL_05052005_0432) #define FUSION_GREATER_EQUAL_05052005_0432 diff --git a/include/boost/fusion/sequence/comparison/less.hpp b/include/boost/fusion/sequence/comparison/less.hpp index b5abddeb..4d3c086c 100644 --- a/include/boost/fusion/sequence/comparison/less.hpp +++ b/include/boost/fusion/sequence/comparison/less.hpp @@ -2,9 +2,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_LESS_05052005_0432) #define FUSION_LESS_05052005_0432 diff --git a/include/boost/fusion/sequence/comparison/less_equal.hpp b/include/boost/fusion/sequence/comparison/less_equal.hpp index 71d25328..0f5a953c 100644 --- a/include/boost/fusion/sequence/comparison/less_equal.hpp +++ b/include/boost/fusion/sequence/comparison/less_equal.hpp @@ -2,9 +2,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_LESS_EQUAL_05052005_0432) #define FUSION_LESS_EQUAL_05052005_0432 diff --git a/include/boost/fusion/sequence/comparison/not_equal_to.hpp b/include/boost/fusion/sequence/comparison/not_equal_to.hpp index 4fd87301..34d2cab6 100644 --- a/include/boost/fusion/sequence/comparison/not_equal_to.hpp +++ b/include/boost/fusion/sequence/comparison/not_equal_to.hpp @@ -2,9 +2,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_NOT_EQUAL_TO_05052005_0431) #define FUSION_NOT_EQUAL_TO_05052005_0431 diff --git a/include/boost/fusion/sequence/container.hpp b/include/boost/fusion/sequence/container.hpp index bd07e8c8..6a1047cc 100644 --- a/include/boost/fusion/sequence/container.hpp +++ b/include/boost/fusion/sequence/container.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_SEQUENCE_CLASS_10022005_0614) #define FUSION_SEQUENCE_CLASS_10022005_0614 diff --git a/include/boost/fusion/sequence/container/deque.hpp b/include/boost/fusion/sequence/container/deque.hpp index de5faba9..0c9614a9 100644 --- a/include/boost/fusion/sequence/container/deque.hpp +++ b/include/boost/fusion/sequence/container/deque.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_SEQUENCE_CONTAINER_DEQUE_24112006_2036) #define BOOST_FUSION_SEQUENCE_CONTAINER_DEQUE_24112006_2036 diff --git a/include/boost/fusion/sequence/container/deque/back_extended_deque.hpp b/include/boost/fusion/sequence/container/deque/back_extended_deque.hpp index f028dd1f..6310bb59 100644 --- a/include/boost/fusion/sequence/container/deque/back_extended_deque.hpp +++ b/include/boost/fusion/sequence/container/deque/back_extended_deque.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_BACK_EXTENDED_DEQUE_26112006_2209) #define BOOST_FUSION_BACK_EXTENDED_DEQUE_26112006_2209 diff --git a/include/boost/fusion/sequence/container/deque/deque.hpp b/include/boost/fusion/sequence/container/deque/deque.hpp index eb83f35e..ababdd4c 100644 --- a/include/boost/fusion/sequence/container/deque/deque.hpp +++ b/include/boost/fusion/sequence/container/deque/deque.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_DEQUE_26112006_1649) #define BOOST_FUSION_DEQUE_26112006_1649 diff --git a/include/boost/fusion/sequence/container/deque/deque_fwd.hpp b/include/boost/fusion/sequence/container/deque/deque_fwd.hpp index 9e5168a7..ce47bf62 100644 --- a/include/boost/fusion/sequence/container/deque/deque_fwd.hpp +++ b/include/boost/fusion/sequence/container/deque/deque_fwd.hpp @@ -2,9 +2,8 @@ Copyright (c) 2005-2007 Joel de Guzman Copyright (c) 2005-2007 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_DEQUE_FORWARD_02092007_0749) #define FUSION_DEQUE_FORWARD_02092007_0749 diff --git a/include/boost/fusion/sequence/container/deque/deque_iterator.hpp b/include/boost/fusion/sequence/container/deque/deque_iterator.hpp index deb80eb4..8fb6f009 100644 --- a/include/boost/fusion/sequence/container/deque/deque_iterator.hpp +++ b/include/boost/fusion/sequence/container/deque/deque_iterator.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_DEQUE_ITERATOR_26112006_2154) #define BOOST_FUSION_DEQUE_ITERATOR_26112006_2154 diff --git a/include/boost/fusion/sequence/container/deque/detail/at_impl.hpp b/include/boost/fusion/sequence/container/deque/detail/at_impl.hpp index 0b872d7b..7edf37f1 100644 --- a/include/boost/fusion/sequence/container/deque/detail/at_impl.hpp +++ b/include/boost/fusion/sequence/container/deque/detail/at_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_DEQUE_AT_IMPL_09122006_2017) #define BOOST_FUSION_DEQUE_AT_IMPL_09122006_2017 diff --git a/include/boost/fusion/sequence/container/deque/detail/begin_impl.hpp b/include/boost/fusion/sequence/container/deque/detail/begin_impl.hpp index a2ff2641..867cab8e 100644 --- a/include/boost/fusion/sequence/container/deque/detail/begin_impl.hpp +++ b/include/boost/fusion/sequence/container/deque/detail/begin_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_DEQUE_BEGIN_IMPL_09122006_2034) #define BOOST_FUSION_DEQUE_BEGIN_IMPL_09122006_2034 diff --git a/include/boost/fusion/sequence/container/deque/detail/deque_forward_ctor.hpp b/include/boost/fusion/sequence/container/deque/detail/deque_forward_ctor.hpp index ef25dcee..f79a02e5 100644 --- a/include/boost/fusion/sequence/container/deque/detail/deque_forward_ctor.hpp +++ b/include/boost/fusion/sequence/container/deque/detail/deque_forward_ctor.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_PP_IS_ITERATING) #if !defined(BOOST_FUSION_SEQUENCE_DEQUE_DETAIL_DEQUE_FORWARD_CTOR_04122006_2212) diff --git a/include/boost/fusion/sequence/container/deque/detail/deque_initial_size.hpp b/include/boost/fusion/sequence/container/deque/detail/deque_initial_size.hpp index 202a9f10..8fa56292 100644 --- a/include/boost/fusion/sequence/container/deque/detail/deque_initial_size.hpp +++ b/include/boost/fusion/sequence/container/deque/detail/deque_initial_size.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_DEQUE_DETAIL_DEQUE_INITIAL_SIZE_26112006_2139) #define BOOST_FUSION_DEQUE_DETAIL_DEQUE_INITIAL_SIZE_26112006_2139 diff --git a/include/boost/fusion/sequence/container/deque/detail/deque_keyed_values.hpp b/include/boost/fusion/sequence/container/deque/detail/deque_keyed_values.hpp index 47421f7c..26a76512 100644 --- a/include/boost/fusion/sequence/container/deque/detail/deque_keyed_values.hpp +++ b/include/boost/fusion/sequence/container/deque/detail/deque_keyed_values.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_DEQUE_DETAIL_DEQUE_KEYED_VALUES_26112006_1330) #define BOOST_FUSION_DEQUE_DETAIL_DEQUE_KEYED_VALUES_26112006_1330 diff --git a/include/boost/fusion/sequence/container/deque/detail/deque_keyed_values_call.hpp b/include/boost/fusion/sequence/container/deque/detail/deque_keyed_values_call.hpp index 7d1f1542..ab31c43c 100644 --- a/include/boost/fusion/sequence/container/deque/detail/deque_keyed_values_call.hpp +++ b/include/boost/fusion/sequence/container/deque/detail/deque_keyed_values_call.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_PP_IS_ITERATING) #if !defined(BOOST_FUSION_SEQUENCE_DEQUE_DETAIL_DEQUE_KEYED_VALUES_CALL_04122006_2211) diff --git a/include/boost/fusion/sequence/container/deque/detail/end_impl.hpp b/include/boost/fusion/sequence/container/deque/detail/end_impl.hpp index 1816ae6e..505dfdac 100644 --- a/include/boost/fusion/sequence/container/deque/detail/end_impl.hpp +++ b/include/boost/fusion/sequence/container/deque/detail/end_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_DEQUE_END_IMPL_09122006_2034) #define BOOST_FUSION_DEQUE_END_IMPL_09122006_2034 diff --git a/include/boost/fusion/sequence/container/deque/detail/keyed_element.hpp b/include/boost/fusion/sequence/container/deque/detail/keyed_element.hpp index 4244c529..4f032d6f 100644 --- a/include/boost/fusion/sequence/container/deque/detail/keyed_element.hpp +++ b/include/boost/fusion/sequence/container/deque/detail/keyed_element.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_DEQUE_DETAIL_KEYED_ELEMENT_26112006_1330) #define BOOST_FUSION_DEQUE_DETAIL_KEYED_ELEMENT_26112006_1330 diff --git a/include/boost/fusion/sequence/container/deque/detail/value_at_impl.hpp b/include/boost/fusion/sequence/container/deque/detail/value_at_impl.hpp index 3686fd0c..6c08231d 100644 --- a/include/boost/fusion/sequence/container/deque/detail/value_at_impl.hpp +++ b/include/boost/fusion/sequence/container/deque/detail/value_at_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_DEQUE_VALUE_AT_IMPL_08122006_0756) #define BOOST_FUSION_DEQUE_VALUE_AT_IMPL_08122006_0756 diff --git a/include/boost/fusion/sequence/container/deque/front_extended_deque.hpp b/include/boost/fusion/sequence/container/deque/front_extended_deque.hpp index b3a3bec6..b52508e7 100644 --- a/include/boost/fusion/sequence/container/deque/front_extended_deque.hpp +++ b/include/boost/fusion/sequence/container/deque/front_extended_deque.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_FRONT_EXTENDED_DEQUE_26112006_2209) #define BOOST_FUSION_FRONT_EXTENDED_DEQUE_26112006_2209 diff --git a/include/boost/fusion/sequence/container/deque/limits.hpp b/include/boost/fusion/sequence/container/deque/limits.hpp index f11c31b3..2262f17c 100644 --- a/include/boost/fusion/sequence/container/deque/limits.hpp +++ b/include/boost/fusion/sequence/container/deque/limits.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_DEQUE_LIMITS_26112006_1737) #define BOOST_FUSION_DEQUE_LIMITS_26112006_1737 diff --git a/include/boost/fusion/sequence/container/list.hpp b/include/boost/fusion/sequence/container/list.hpp index 77426691..47024b9c 100644 --- a/include/boost/fusion/sequence/container/list.hpp +++ b/include/boost/fusion/sequence/container/list.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_SEQUENCE_CLASS_LIST_10022005_0605) #define FUSION_SEQUENCE_CLASS_LIST_10022005_0605 diff --git a/include/boost/fusion/sequence/container/list/cons.hpp b/include/boost/fusion/sequence/container/list/cons.hpp index a44e0e23..877f2982 100644 --- a/include/boost/fusion/sequence/container/list/cons.hpp +++ b/include/boost/fusion/sequence/container/list/cons.hpp @@ -2,9 +2,8 @@ Copyright (c) 2005 Joel de Guzman Copyright (c) 2005 Eric Niebler - Use, modification and distribution is 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) + Distributed under the 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_CONS_07172005_0843) #define FUSION_CONS_07172005_0843 diff --git a/include/boost/fusion/sequence/container/list/cons_iterator.hpp b/include/boost/fusion/sequence/container/list/cons_iterator.hpp index af25fd1e..6455f04f 100644 --- a/include/boost/fusion/sequence/container/list/cons_iterator.hpp +++ b/include/boost/fusion/sequence/container/list/cons_iterator.hpp @@ -2,9 +2,8 @@ Copyright (c) 2005 Joel de Guzman Copyright (c) 2005 Eric Niebler - Use, modification and distribution is 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) + Distributed under the 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_CONS_ITERATOR_07172005_0849) #define FUSION_CONS_ITERATOR_07172005_0849 diff --git a/include/boost/fusion/sequence/container/list/detail/at_impl.hpp b/include/boost/fusion/sequence/container/list/detail/at_impl.hpp index aae026ad..54ba6bb8 100644 --- a/include/boost/fusion/sequence/container/list/detail/at_impl.hpp +++ b/include/boost/fusion/sequence/container/list/detail/at_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_AT_IMPL_07172005_0726) #define FUSION_AT_IMPL_07172005_0726 diff --git a/include/boost/fusion/sequence/container/list/detail/begin_impl.hpp b/include/boost/fusion/sequence/container/list/detail/begin_impl.hpp index 72384c93..a22c9a3d 100644 --- a/include/boost/fusion/sequence/container/list/detail/begin_impl.hpp +++ b/include/boost/fusion/sequence/container/list/detail/begin_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2005 Joel de Guzman Copyright (c) 2005 Eric Niebler - Use, modification and distribution is 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) + Distributed under the 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_BEGIN_IMPL_07172005_0824) #define FUSION_BEGIN_IMPL_07172005_0824 diff --git a/include/boost/fusion/sequence/container/list/detail/deref_impl.hpp b/include/boost/fusion/sequence/container/list/detail/deref_impl.hpp index d374a8c0..5292dced 100644 --- a/include/boost/fusion/sequence/container/list/detail/deref_impl.hpp +++ b/include/boost/fusion/sequence/container/list/detail/deref_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2005 Joel de Guzman Copyright (c) 2005 Eric Niebler - Use, modification and distribution is 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) + Distributed under the 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_DEREF_IMPL_07172005_0831) #define FUSION_DEREF_IMPL_07172005_0831 diff --git a/include/boost/fusion/sequence/container/list/detail/empty_impl.hpp b/include/boost/fusion/sequence/container/list/detail/empty_impl.hpp index 4615fd40..5c92c733 100644 --- a/include/boost/fusion/sequence/container/list/detail/empty_impl.hpp +++ b/include/boost/fusion/sequence/container/list/detail/empty_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2007 Tobias Schwinger - Use, modification and distribution is 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) + Distributed under the 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_SEQUENCE_EMPTY_IMPL_HPP_INCLUDED) #define BOOST_FUSION_SEQUENCE_EMPTY_IMPL_HPP_INCLUDED diff --git a/include/boost/fusion/sequence/container/list/detail/end_impl.hpp b/include/boost/fusion/sequence/container/list/detail/end_impl.hpp index 0aaeaac4..49dca855 100644 --- a/include/boost/fusion/sequence/container/list/detail/end_impl.hpp +++ b/include/boost/fusion/sequence/container/list/detail/end_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2005 Joel de Guzman Copyright (c) 2005 Eric Niebler - Use, modification and distribution is 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) + Distributed under the 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_END_IMPL_07172005_0828) #define FUSION_END_IMPL_07172005_0828 diff --git a/include/boost/fusion/sequence/container/list/detail/equal_to_impl.hpp b/include/boost/fusion/sequence/container/list/detail/equal_to_impl.hpp index 9c64a47f..11925880 100644 --- a/include/boost/fusion/sequence/container/list/detail/equal_to_impl.hpp +++ b/include/boost/fusion/sequence/container/list/detail/equal_to_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_EQUAL_TO_IMPL_09172005_1120) #define FUSION_EQUAL_TO_IMPL_09172005_1120 diff --git a/include/boost/fusion/sequence/container/list/detail/list_forward_ctor.hpp b/include/boost/fusion/sequence/container/list/detail/list_forward_ctor.hpp index 541b7513..7922f382 100644 --- a/include/boost/fusion/sequence/container/list/detail/list_forward_ctor.hpp +++ b/include/boost/fusion/sequence/container/list/detail/list_forward_ctor.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_PP_IS_ITERATING #if !defined(FUSION_LIST_FORWARD_CTOR_07172005_0113) diff --git a/include/boost/fusion/sequence/container/list/detail/list_to_cons.hpp b/include/boost/fusion/sequence/container/list/detail/list_to_cons.hpp index eba36539..fa5c7bb9 100644 --- a/include/boost/fusion/sequence/container/list/detail/list_to_cons.hpp +++ b/include/boost/fusion/sequence/container/list/detail/list_to_cons.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2005 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_LIST_TO_CONS_07172005_1041) #define FUSION_LIST_TO_CONS_07172005_1041 diff --git a/include/boost/fusion/sequence/container/list/detail/list_to_cons_call.hpp b/include/boost/fusion/sequence/container/list/detail/list_to_cons_call.hpp index d0cc1821..c8e63e95 100644 --- a/include/boost/fusion/sequence/container/list/detail/list_to_cons_call.hpp +++ b/include/boost/fusion/sequence/container/list/detail/list_to_cons_call.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_PP_IS_ITERATING #if !defined(FUSION_LIST_TO_CONS_CALL_07192005_0138) diff --git a/include/boost/fusion/sequence/container/list/detail/next_impl.hpp b/include/boost/fusion/sequence/container/list/detail/next_impl.hpp index 92e5c5bd..dafa83cc 100644 --- a/include/boost/fusion/sequence/container/list/detail/next_impl.hpp +++ b/include/boost/fusion/sequence/container/list/detail/next_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2005 Joel de Guzman Copyright (c) 2005 Eric Niebler - Use, modification and distribution is 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) + Distributed under the 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_NEXT_IMPL_07172005_0836) #define FUSION_NEXT_IMPL_07172005_0836 diff --git a/include/boost/fusion/sequence/container/list/detail/value_at_impl.hpp b/include/boost/fusion/sequence/container/list/detail/value_at_impl.hpp index 28fd7650..5f0ff166 100644 --- a/include/boost/fusion/sequence/container/list/detail/value_at_impl.hpp +++ b/include/boost/fusion/sequence/container/list/detail/value_at_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_VALUE_AT_IMPL_07172005_0952) #define FUSION_VALUE_AT_IMPL_07172005_0952 diff --git a/include/boost/fusion/sequence/container/list/detail/value_of_impl.hpp b/include/boost/fusion/sequence/container/list/detail/value_of_impl.hpp index b73c73b4..f8175c6d 100644 --- a/include/boost/fusion/sequence/container/list/detail/value_of_impl.hpp +++ b/include/boost/fusion/sequence/container/list/detail/value_of_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2005 Joel de Guzman Copyright (c) 2005 Eric Niebler - Use, modification and distribution is 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) + Distributed under the 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_VALUE_OF_IMPL_07172005_0838) #define FUSION_VALUE_OF_IMPL_07172005_0838 diff --git a/include/boost/fusion/sequence/container/list/limits.hpp b/include/boost/fusion/sequence/container/list/limits.hpp index 0d591098..20ff6dd2 100644 --- a/include/boost/fusion/sequence/container/list/limits.hpp +++ b/include/boost/fusion/sequence/container/list/limits.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_LIST_LIMITS_07172005_0112) #define FUSION_LIST_LIMITS_07172005_0112 diff --git a/include/boost/fusion/sequence/container/list/list.hpp b/include/boost/fusion/sequence/container/list/list.hpp index 67219fff..e34e648f 100644 --- a/include/boost/fusion/sequence/container/list/list.hpp +++ b/include/boost/fusion/sequence/container/list/list.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2005 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_LIST_07172005_1153) #define FUSION_LIST_07172005_1153 diff --git a/include/boost/fusion/sequence/container/list/list_fwd.hpp b/include/boost/fusion/sequence/container/list/list_fwd.hpp index 120f96bc..cfd4e370 100644 --- a/include/boost/fusion/sequence/container/list/list_fwd.hpp +++ b/include/boost/fusion/sequence/container/list/list_fwd.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2005 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_LIST_FORWARD_07172005_0224) #define FUSION_LIST_FORWARD_07172005_0224 diff --git a/include/boost/fusion/sequence/container/map.hpp b/include/boost/fusion/sequence/container/map.hpp index 72cd4790..100905cf 100644 --- a/include/boost/fusion/sequence/container/map.hpp +++ b/include/boost/fusion/sequence/container/map.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_SEQUENCE_CLASS_MAP_10022005_0606) #define FUSION_SEQUENCE_CLASS_MAP_10022005_0606 diff --git a/include/boost/fusion/sequence/container/map/detail/at_key_impl.hpp b/include/boost/fusion/sequence/container/map/detail/at_key_impl.hpp index 9fdd7817..8b0d70aa 100644 --- a/include/boost/fusion/sequence/container/map/detail/at_key_impl.hpp +++ b/include/boost/fusion/sequence/container/map/detail/at_key_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_AT_KEY_IMPL_05222005_0254) #define FUSION_AT_KEY_IMPL_05222005_0254 diff --git a/include/boost/fusion/sequence/container/map/detail/begin_impl.hpp b/include/boost/fusion/sequence/container/map/detail/begin_impl.hpp index c2c5fe7a..5fe25caf 100644 --- a/include/boost/fusion/sequence/container/map/detail/begin_impl.hpp +++ b/include/boost/fusion/sequence/container/map/detail/begin_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_BEGIN_IMPL_05222005_1108) #define FUSION_BEGIN_IMPL_05222005_1108 diff --git a/include/boost/fusion/sequence/container/map/detail/end_impl.hpp b/include/boost/fusion/sequence/container/map/detail/end_impl.hpp index 9778c502..0cafc92c 100644 --- a/include/boost/fusion/sequence/container/map/detail/end_impl.hpp +++ b/include/boost/fusion/sequence/container/map/detail/end_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_END_IMPL_05222005_1108) #define FUSION_END_IMPL_05222005_1108 diff --git a/include/boost/fusion/sequence/container/map/detail/lookup_key.hpp b/include/boost/fusion/sequence/container/map/detail/lookup_key.hpp index c4d037ec..17774362 100644 --- a/include/boost/fusion/sequence/container/map/detail/lookup_key.hpp +++ b/include/boost/fusion/sequence/container/map/detail/lookup_key.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_LOOKUP_KEY_07222005_1248) #define FUSION_LOOKUP_KEY_07222005_1248 diff --git a/include/boost/fusion/sequence/container/map/detail/map_forward_ctor.hpp b/include/boost/fusion/sequence/container/map/detail/map_forward_ctor.hpp index b641f31b..34b81830 100644 --- a/include/boost/fusion/sequence/container/map/detail/map_forward_ctor.hpp +++ b/include/boost/fusion/sequence/container/map/detail/map_forward_ctor.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_PP_IS_ITERATING #if !defined(FUSION_MAP_FORWARD_CTOR_07222005_0106) diff --git a/include/boost/fusion/sequence/container/map/detail/map_lookup.hpp b/include/boost/fusion/sequence/container/map/detail/map_lookup.hpp index 4557aa2d..62d23d8c 100644 --- a/include/boost/fusion/sequence/container/map/detail/map_lookup.hpp +++ b/include/boost/fusion/sequence/container/map/detail/map_lookup.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_PP_IS_ITERATING #if !defined(FUSION_MAP_LOOKUP_07212005_1118) diff --git a/include/boost/fusion/sequence/container/map/detail/value_at_key_impl.hpp b/include/boost/fusion/sequence/container/map/detail/value_at_key_impl.hpp index 5578de80..6c516462 100644 --- a/include/boost/fusion/sequence/container/map/detail/value_at_key_impl.hpp +++ b/include/boost/fusion/sequence/container/map/detail/value_at_key_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_VALUE_AT_KEY_IMPL_05222005_0325) #define FUSION_VALUE_AT_KEY_IMPL_05222005_0325 diff --git a/include/boost/fusion/sequence/container/map/limits.hpp b/include/boost/fusion/sequence/container/map/limits.hpp index c7859ba1..33cbc832 100644 --- a/include/boost/fusion/sequence/container/map/limits.hpp +++ b/include/boost/fusion/sequence/container/map/limits.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_MAP_LIMITS_07212005_1104) #define FUSION_MAP_LIMITS_07212005_1104 diff --git a/include/boost/fusion/sequence/container/map/map.hpp b/include/boost/fusion/sequence/container/map/map.hpp index 0a19d823..bf6a0fa8 100644 --- a/include/boost/fusion/sequence/container/map/map.hpp +++ b/include/boost/fusion/sequence/container/map/map.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2005 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_MAP_07212005_1106) #define FUSION_MAP_07212005_1106 diff --git a/include/boost/fusion/sequence/container/map/map_fwd.hpp b/include/boost/fusion/sequence/container/map/map_fwd.hpp index 2cbfe8a3..311dce5a 100644 --- a/include/boost/fusion/sequence/container/map/map_fwd.hpp +++ b/include/boost/fusion/sequence/container/map/map_fwd.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2005 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_MAP_FORWARD_07212005_1105) #define FUSION_MAP_FORWARD_07212005_1105 diff --git a/include/boost/fusion/sequence/container/set.hpp b/include/boost/fusion/sequence/container/set.hpp index 477f8ecf..24ec2c67 100644 --- a/include/boost/fusion/sequence/container/set.hpp +++ b/include/boost/fusion/sequence/container/set.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_SEQUENCE_CLASS_SET_10022005_0607) #define FUSION_SEQUENCE_CLASS_SET_10022005_0607 diff --git a/include/boost/fusion/sequence/container/set/detail/at_key_impl.hpp b/include/boost/fusion/sequence/container/set/detail/at_key_impl.hpp index 42609cf2..d0c1de00 100644 --- a/include/boost/fusion/sequence/container/set/detail/at_key_impl.hpp +++ b/include/boost/fusion/sequence/container/set/detail/at_key_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_AT_KEY_IMPL_09162005_1118) #define FUSION_AT_KEY_IMPL_09162005_1118 diff --git a/include/boost/fusion/sequence/container/set/detail/begin_impl.hpp b/include/boost/fusion/sequence/container/set/detail/begin_impl.hpp index 4535d617..9b42df72 100644 --- a/include/boost/fusion/sequence/container/set/detail/begin_impl.hpp +++ b/include/boost/fusion/sequence/container/set/detail/begin_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_BEGIN_IMPL_09162005_1120) #define FUSION_BEGIN_IMPL_09162005_1120 diff --git a/include/boost/fusion/sequence/container/set/detail/end_impl.hpp b/include/boost/fusion/sequence/container/set/detail/end_impl.hpp index 4e098a15..4df78a3f 100644 --- a/include/boost/fusion/sequence/container/set/detail/end_impl.hpp +++ b/include/boost/fusion/sequence/container/set/detail/end_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_END_IMPL_09162005_1121) #define FUSION_END_IMPL_09162005_1121 diff --git a/include/boost/fusion/sequence/container/set/detail/lookup_key.hpp b/include/boost/fusion/sequence/container/set/detail/lookup_key.hpp index 23dbfaf1..a1b9e8b9 100644 --- a/include/boost/fusion/sequence/container/set/detail/lookup_key.hpp +++ b/include/boost/fusion/sequence/container/set/detail/lookup_key.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_LOOKUP_KEY_09162005_1111) #define FUSION_LOOKUP_KEY_09162005_1111 diff --git a/include/boost/fusion/sequence/container/set/detail/set_forward_ctor.hpp b/include/boost/fusion/sequence/container/set/detail/set_forward_ctor.hpp index 76a89e3a..6eddd650 100644 --- a/include/boost/fusion/sequence/container/set/detail/set_forward_ctor.hpp +++ b/include/boost/fusion/sequence/container/set/detail/set_forward_ctor.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_PP_IS_ITERATING #if !defined(FUSION_SET_FORWARD_CTOR_09162005_1115) diff --git a/include/boost/fusion/sequence/container/set/detail/set_lookup.hpp b/include/boost/fusion/sequence/container/set/detail/set_lookup.hpp index 2ce15e1c..b6c59994 100644 --- a/include/boost/fusion/sequence/container/set/detail/set_lookup.hpp +++ b/include/boost/fusion/sequence/container/set/detail/set_lookup.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_PP_IS_ITERATING #if !defined(FUSION_SET_LOOKUP_09162005_1116) diff --git a/include/boost/fusion/sequence/container/set/detail/value_at_key_impl.hpp b/include/boost/fusion/sequence/container/set/detail/value_at_key_impl.hpp index 1755eb6d..40f68ba0 100644 --- a/include/boost/fusion/sequence/container/set/detail/value_at_key_impl.hpp +++ b/include/boost/fusion/sequence/container/set/detail/value_at_key_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_VALUE_AT_KEY_IMPL_09162005_1123) #define FUSION_VALUE_AT_KEY_IMPL_09162005_1123 diff --git a/include/boost/fusion/sequence/container/set/limits.hpp b/include/boost/fusion/sequence/container/set/limits.hpp index d278ac47..0b03b4dc 100644 --- a/include/boost/fusion/sequence/container/set/limits.hpp +++ b/include/boost/fusion/sequence/container/set/limits.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_SET_LIMITS_09162005_1103) #define FUSION_SET_LIMITS_09162005_1103 diff --git a/include/boost/fusion/sequence/container/set/set.hpp b/include/boost/fusion/sequence/container/set/set.hpp index 965e6e60..f5e7f152 100644 --- a/include/boost/fusion/sequence/container/set/set.hpp +++ b/include/boost/fusion/sequence/container/set/set.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2005 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_SET_09162005_1104) #define FUSION_SET_09162005_1104 diff --git a/include/boost/fusion/sequence/container/set/set_fwd.hpp b/include/boost/fusion/sequence/container/set/set_fwd.hpp index 610f27a7..38ca9d22 100644 --- a/include/boost/fusion/sequence/container/set/set_fwd.hpp +++ b/include/boost/fusion/sequence/container/set/set_fwd.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2005 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_SET_FORWARD_09162005_1102) #define FUSION_SET_FORWARD_09162005_1102 diff --git a/include/boost/fusion/sequence/container/vector.hpp b/include/boost/fusion/sequence/container/vector.hpp index 100fe118..dd7f4333 100644 --- a/include/boost/fusion/sequence/container/vector.hpp +++ b/include/boost/fusion/sequence/container/vector.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_SEQUENCE_CLASS_VECTOR_10022005_0602) #define FUSION_SEQUENCE_CLASS_VECTOR_10022005_0602 diff --git a/include/boost/fusion/sequence/container/vector/detail/advance_impl.hpp b/include/boost/fusion/sequence/container/vector/detail/advance_impl.hpp index 24dc4f2d..c2c97b18 100644 --- a/include/boost/fusion/sequence/container/vector/detail/advance_impl.hpp +++ b/include/boost/fusion/sequence/container/vector/detail/advance_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_ADVANCE_IMPL_09172005_1156) #define FUSION_ADVANCE_IMPL_09172005_1156 diff --git a/include/boost/fusion/sequence/container/vector/detail/at_impl.hpp b/include/boost/fusion/sequence/container/vector/detail/at_impl.hpp index b38119a1..1a00f428 100644 --- a/include/boost/fusion/sequence/container/vector/detail/at_impl.hpp +++ b/include/boost/fusion/sequence/container/vector/detail/at_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_AT_IMPL_05042005_0741) #define FUSION_AT_IMPL_05042005_0741 diff --git a/include/boost/fusion/sequence/container/vector/detail/begin_impl.hpp b/include/boost/fusion/sequence/container/vector/detail/begin_impl.hpp index b261968a..31d5643c 100644 --- a/include/boost/fusion/sequence/container/vector/detail/begin_impl.hpp +++ b/include/boost/fusion/sequence/container/vector/detail/begin_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_BEGIN_IMPL_05042005_1136) #define FUSION_BEGIN_IMPL_05042005_1136 diff --git a/include/boost/fusion/sequence/container/vector/detail/deref_impl.hpp b/include/boost/fusion/sequence/container/vector/detail/deref_impl.hpp index 25f0d5fe..bd9f3d06 100644 --- a/include/boost/fusion/sequence/container/vector/detail/deref_impl.hpp +++ b/include/boost/fusion/sequence/container/vector/detail/deref_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_DEREF_IMPL_05042005_1037) #define FUSION_DEREF_IMPL_05042005_1037 diff --git a/include/boost/fusion/sequence/container/vector/detail/distance_impl.hpp b/include/boost/fusion/sequence/container/vector/detail/distance_impl.hpp index bf383e10..9664d5c2 100644 --- a/include/boost/fusion/sequence/container/vector/detail/distance_impl.hpp +++ b/include/boost/fusion/sequence/container/vector/detail/distance_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_DISTANCE_IMPL_09172005_0751) #define FUSION_DISTANCE_IMPL_09172005_0751 diff --git a/include/boost/fusion/sequence/container/vector/detail/end_impl.hpp b/include/boost/fusion/sequence/container/vector/detail/end_impl.hpp index 0d760754..795cabaa 100644 --- a/include/boost/fusion/sequence/container/vector/detail/end_impl.hpp +++ b/include/boost/fusion/sequence/container/vector/detail/end_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_END_IMPL_05042005_1142) #define FUSION_END_IMPL_05042005_1142 diff --git a/include/boost/fusion/sequence/container/vector/detail/equal_to_impl.hpp b/include/boost/fusion/sequence/container/vector/detail/equal_to_impl.hpp index b4971b94..5ff81c61 100644 --- a/include/boost/fusion/sequence/container/vector/detail/equal_to_impl.hpp +++ b/include/boost/fusion/sequence/container/vector/detail/equal_to_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_EQUAL_TO_IMPL_05052005_1215) #define FUSION_EQUAL_TO_IMPL_05052005_1215 diff --git a/include/boost/fusion/sequence/container/vector/detail/next_impl.hpp b/include/boost/fusion/sequence/container/vector/detail/next_impl.hpp index acc7ecf7..1bbe16f1 100644 --- a/include/boost/fusion/sequence/container/vector/detail/next_impl.hpp +++ b/include/boost/fusion/sequence/container/vector/detail/next_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_NEXT_IMPL_05042005_1058) #define FUSION_NEXT_IMPL_05042005_1058 diff --git a/include/boost/fusion/sequence/container/vector/detail/prior_impl.hpp b/include/boost/fusion/sequence/container/vector/detail/prior_impl.hpp index cf6e80f5..3caaa590 100644 --- a/include/boost/fusion/sequence/container/vector/detail/prior_impl.hpp +++ b/include/boost/fusion/sequence/container/vector/detail/prior_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_PRIOR_IMPL_05042005_1145) #define FUSION_PRIOR_IMPL_05042005_1145 diff --git a/include/boost/fusion/sequence/container/vector/detail/value_at_impl.hpp b/include/boost/fusion/sequence/container/vector/detail/value_at_impl.hpp index 1910400a..0178054b 100644 --- a/include/boost/fusion/sequence/container/vector/detail/value_at_impl.hpp +++ b/include/boost/fusion/sequence/container/vector/detail/value_at_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_VALUE_AT_IMPL_05052005_0232) #define FUSION_VALUE_AT_IMPL_05052005_0232 diff --git a/include/boost/fusion/sequence/container/vector/detail/value_of_impl.hpp b/include/boost/fusion/sequence/container/vector/detail/value_of_impl.hpp index f37e0b5d..3a775fbb 100644 --- a/include/boost/fusion/sequence/container/vector/detail/value_of_impl.hpp +++ b/include/boost/fusion/sequence/container/vector/detail/value_of_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_VALUE_OF_IMPL_05052005_1128) #define FUSION_VALUE_OF_IMPL_05052005_1128 diff --git a/include/boost/fusion/sequence/container/vector/detail/vector_forward_ctor.hpp b/include/boost/fusion/sequence/container/vector/detail/vector_forward_ctor.hpp index dc5535f1..0dadc05d 100644 --- a/include/boost/fusion/sequence/container/vector/detail/vector_forward_ctor.hpp +++ b/include/boost/fusion/sequence/container/vector/detail/vector_forward_ctor.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_PP_IS_ITERATING #if !defined(FUSION_VECTOR_FORWARD_CTOR_07122005_1123) diff --git a/include/boost/fusion/sequence/container/vector/detail/vector_n.hpp b/include/boost/fusion/sequence/container/vector/detail/vector_n.hpp index bb4b6eac..d0d0f89b 100644 --- a/include/boost/fusion/sequence/container/vector/detail/vector_n.hpp +++ b/include/boost/fusion/sequence/container/vector/detail/vector_n.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ // No include guard. This file is meant to be included many times diff --git a/include/boost/fusion/sequence/container/vector/detail/vector_n_chooser.hpp b/include/boost/fusion/sequence/container/vector/detail/vector_n_chooser.hpp index 9d6724af..8f372b9b 100644 --- a/include/boost/fusion/sequence/container/vector/detail/vector_n_chooser.hpp +++ b/include/boost/fusion/sequence/container/vector/detail/vector_n_chooser.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_PP_IS_ITERATING #if !defined(FUSION_VECTOR_N_CHOOSER_07072005_1248) diff --git a/include/boost/fusion/sequence/container/vector/limits.hpp b/include/boost/fusion/sequence/container/vector/limits.hpp index 27af0fcf..0e7e3a03 100644 --- a/include/boost/fusion/sequence/container/vector/limits.hpp +++ b/include/boost/fusion/sequence/container/vector/limits.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_VECTOR_LIMITS_07072005_1246) #define FUSION_VECTOR_LIMITS_07072005_1246 diff --git a/include/boost/fusion/sequence/container/vector/vector.hpp b/include/boost/fusion/sequence/container/vector/vector.hpp index bf7ea597..a2fa9bc4 100644 --- a/include/boost/fusion/sequence/container/vector/vector.hpp +++ b/include/boost/fusion/sequence/container/vector/vector.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_VECTOR_07072005_1244) #define FUSION_VECTOR_07072005_1244 diff --git a/include/boost/fusion/sequence/container/vector/vector10.hpp b/include/boost/fusion/sequence/container/vector/vector10.hpp index da09e811..fa96ee56 100644 --- a/include/boost/fusion/sequence/container/vector/vector10.hpp +++ b/include/boost/fusion/sequence/container/vector/vector10.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_VECTOR10_05042005_0257) #define FUSION_VECTOR10_05042005_0257 diff --git a/include/boost/fusion/sequence/container/vector/vector20.hpp b/include/boost/fusion/sequence/container/vector/vector20.hpp index a1c3477c..63809dfb 100644 --- a/include/boost/fusion/sequence/container/vector/vector20.hpp +++ b/include/boost/fusion/sequence/container/vector/vector20.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_VECTOR20_05052005_0205) #define FUSION_VECTOR20_05052005_0205 diff --git a/include/boost/fusion/sequence/container/vector/vector30.hpp b/include/boost/fusion/sequence/container/vector/vector30.hpp index 4a40c82d..0c094ebd 100644 --- a/include/boost/fusion/sequence/container/vector/vector30.hpp +++ b/include/boost/fusion/sequence/container/vector/vector30.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_VECTOR30_05052005_0206) #define FUSION_VECTOR30_05052005_0206 diff --git a/include/boost/fusion/sequence/container/vector/vector40.hpp b/include/boost/fusion/sequence/container/vector/vector40.hpp index 9a1f8afc..ecb13b71 100644 --- a/include/boost/fusion/sequence/container/vector/vector40.hpp +++ b/include/boost/fusion/sequence/container/vector/vector40.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_VECTOR40_05052005_0208) #define FUSION_VECTOR40_05052005_0208 diff --git a/include/boost/fusion/sequence/container/vector/vector50.hpp b/include/boost/fusion/sequence/container/vector/vector50.hpp index 437a9ed2..f5109448 100644 --- a/include/boost/fusion/sequence/container/vector/vector50.hpp +++ b/include/boost/fusion/sequence/container/vector/vector50.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_VECTOR50_05052005_0207) #define FUSION_VECTOR50_05052005_0207 diff --git a/include/boost/fusion/sequence/container/vector/vector_fwd.hpp b/include/boost/fusion/sequence/container/vector/vector_fwd.hpp index cdd07d4f..8d1e23d6 100644 --- a/include/boost/fusion/sequence/container/vector/vector_fwd.hpp +++ b/include/boost/fusion/sequence/container/vector/vector_fwd.hpp @@ -2,9 +2,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_VECTOR_FORWARD_07072005_0125) #define FUSION_VECTOR_FORWARD_07072005_0125 diff --git a/include/boost/fusion/sequence/container/vector/vector_iterator.hpp b/include/boost/fusion/sequence/container/vector/vector_iterator.hpp index 4a1c1431..fee4f6b0 100644 --- a/include/boost/fusion/sequence/container/vector/vector_iterator.hpp +++ b/include/boost/fusion/sequence/container/vector/vector_iterator.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_VECTOR_ITERATOR_05042005_0635) #define FUSION_VECTOR_ITERATOR_05042005_0635 diff --git a/include/boost/fusion/sequence/conversion.hpp b/include/boost/fusion/sequence/conversion.hpp index 9105e839..e70cc88a 100644 --- a/include/boost/fusion/sequence/conversion.hpp +++ b/include/boost/fusion/sequence/conversion.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_SEQUENCE_CONVERSION_10022005_0622) #define FUSION_SEQUENCE_CONVERSION_10022005_0622 diff --git a/include/boost/fusion/sequence/conversion/as_deque.hpp b/include/boost/fusion/sequence/conversion/as_deque.hpp index 1774c13d..78ae1273 100644 --- a/include/boost/fusion/sequence/conversion/as_deque.hpp +++ b/include/boost/fusion/sequence/conversion/as_deque.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_AS_DEQUE_20061213_2207) #define FUSION_AS_DEQUE_20061213_2207 diff --git a/include/boost/fusion/sequence/conversion/as_list.hpp b/include/boost/fusion/sequence/conversion/as_list.hpp index 02a43c76..21b70bee 100644 --- a/include/boost/fusion/sequence/conversion/as_list.hpp +++ b/include/boost/fusion/sequence/conversion/as_list.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_AS_LIST_09232005_1215) #define FUSION_AS_LIST_09232005_1215 diff --git a/include/boost/fusion/sequence/conversion/as_map.hpp b/include/boost/fusion/sequence/conversion/as_map.hpp index 31b97a17..4195dc25 100644 --- a/include/boost/fusion/sequence/conversion/as_map.hpp +++ b/include/boost/fusion/sequence/conversion/as_map.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_AS_MAP_09232005_1340) #define FUSION_AS_MAP_09232005_1340 diff --git a/include/boost/fusion/sequence/conversion/as_set.hpp b/include/boost/fusion/sequence/conversion/as_set.hpp index b2cc3061..9d9c02df 100644 --- a/include/boost/fusion/sequence/conversion/as_set.hpp +++ b/include/boost/fusion/sequence/conversion/as_set.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_AS_SET_09232005_1341) #define FUSION_AS_SET_09232005_1341 diff --git a/include/boost/fusion/sequence/conversion/as_vector.hpp b/include/boost/fusion/sequence/conversion/as_vector.hpp index 077eb564..3e8cfab1 100644 --- a/include/boost/fusion/sequence/conversion/as_vector.hpp +++ b/include/boost/fusion/sequence/conversion/as_vector.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_AS_VECTOR_09222005_1104) #define FUSION_AS_VECTOR_09222005_1104 diff --git a/include/boost/fusion/sequence/conversion/detail/as_deque.hpp b/include/boost/fusion/sequence/conversion/detail/as_deque.hpp index 59861bf6..04e2a559 100644 --- a/include/boost/fusion/sequence/conversion/detail/as_deque.hpp +++ b/include/boost/fusion/sequence/conversion/detail/as_deque.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_PP_IS_ITERATING #if !defined(FUSION_AS_DEQUE_20061213_2210) diff --git a/include/boost/fusion/sequence/conversion/detail/as_map.hpp b/include/boost/fusion/sequence/conversion/detail/as_map.hpp index 480dbd1d..abfada36 100644 --- a/include/boost/fusion/sequence/conversion/detail/as_map.hpp +++ b/include/boost/fusion/sequence/conversion/detail/as_map.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_PP_IS_ITERATING #if !defined(FUSION_AS_MAP_0932005_1339) diff --git a/include/boost/fusion/sequence/conversion/detail/as_set.hpp b/include/boost/fusion/sequence/conversion/detail/as_set.hpp index cfdf660f..717d21ae 100644 --- a/include/boost/fusion/sequence/conversion/detail/as_set.hpp +++ b/include/boost/fusion/sequence/conversion/detail/as_set.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_PP_IS_ITERATING #if !defined(FUSION_AS_SET_0932005_1341) diff --git a/include/boost/fusion/sequence/conversion/detail/as_vector.hpp b/include/boost/fusion/sequence/conversion/detail/as_vector.hpp index abbca70c..493b42fe 100644 --- a/include/boost/fusion/sequence/conversion/detail/as_vector.hpp +++ b/include/boost/fusion/sequence/conversion/detail/as_vector.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_PP_IS_ITERATING #if !defined(FUSION_AS_VECTOR_09222005_0950) diff --git a/include/boost/fusion/sequence/conversion/detail/build_cons.hpp b/include/boost/fusion/sequence/conversion/detail/build_cons.hpp index 0391979d..4b08447f 100644 --- a/include/boost/fusion/sequence/conversion/detail/build_cons.hpp +++ b/include/boost/fusion/sequence/conversion/detail/build_cons.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_BUILD_CONS_09232005_1222) #define FUSION_BUILD_CONS_09232005_1222 diff --git a/include/boost/fusion/sequence/generation.hpp b/include/boost/fusion/sequence/generation.hpp index b06b7574..2afad632 100644 --- a/include/boost/fusion/sequence/generation.hpp +++ b/include/boost/fusion/sequence/generation.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_SEQUENCE_GENERATION_10022005_0615) #define FUSION_SEQUENCE_GENERATION_10022005_0615 diff --git a/include/boost/fusion/sequence/generation/cons_tie.hpp b/include/boost/fusion/sequence/generation/cons_tie.hpp index 668059ee..2b695d25 100644 --- a/include/boost/fusion/sequence/generation/cons_tie.hpp +++ b/include/boost/fusion/sequence/generation/cons_tie.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2005 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_CONS_TIE_07182005_0854) #define FUSION_CONS_TIE_07182005_0854 diff --git a/include/boost/fusion/sequence/generation/deque_tie.hpp b/include/boost/fusion/sequence/generation/deque_tie.hpp index 95598afa..77478c03 100644 --- a/include/boost/fusion/sequence/generation/deque_tie.hpp +++ b/include/boost/fusion/sequence/generation/deque_tie.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_PP_IS_ITERATING #if !defined(FUSION_DEQUE_TIE_07192005_1242) diff --git a/include/boost/fusion/sequence/generation/ignore.hpp b/include/boost/fusion/sequence/generation/ignore.hpp index 0ea553e1..c363a203 100644 --- a/include/boost/fusion/sequence/generation/ignore.hpp +++ b/include/boost/fusion/sequence/generation/ignore.hpp @@ -3,9 +3,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_IGNORE_07192005_0329) #define FUSION_IGNORE_07192005_0329 diff --git a/include/boost/fusion/sequence/generation/list_tie.hpp b/include/boost/fusion/sequence/generation/list_tie.hpp index ef09e131..56fb6823 100644 --- a/include/boost/fusion/sequence/generation/list_tie.hpp +++ b/include/boost/fusion/sequence/generation/list_tie.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_PP_IS_ITERATING #if !defined(FUSION_LIST_TIE_07192005_0109) diff --git a/include/boost/fusion/sequence/generation/make_cons.hpp b/include/boost/fusion/sequence/generation/make_cons.hpp index 779af7b8..704b35e2 100644 --- a/include/boost/fusion/sequence/generation/make_cons.hpp +++ b/include/boost/fusion/sequence/generation/make_cons.hpp @@ -2,9 +2,8 @@ Copyright (c) 2005 Joel de Guzman Copyright (c) 2005 Eric Niebler - Use, modification and distribution is 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) + Distributed under the 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_MAKE_CONS_07172005_0918) #define FUSION_MAKE_CONS_07172005_0918 diff --git a/include/boost/fusion/sequence/generation/make_deque.hpp b/include/boost/fusion/sequence/generation/make_deque.hpp index 3c89aac2..4c8544c2 100644 --- a/include/boost/fusion/sequence/generation/make_deque.hpp +++ b/include/boost/fusion/sequence/generation/make_deque.hpp @@ -2,16 +2,14 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_PP_IS_ITERATING #if !defined(FUSION_MAKE_DEQUE_07162005_0243) diff --git a/include/boost/fusion/sequence/generation/make_list.hpp b/include/boost/fusion/sequence/generation/make_list.hpp index 0ec08442..a37a2367 100644 --- a/include/boost/fusion/sequence/generation/make_list.hpp +++ b/include/boost/fusion/sequence/generation/make_list.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_PP_IS_ITERATING #if !defined(FUSION_MAKE_LIST_07192005_1239) diff --git a/include/boost/fusion/sequence/generation/make_map.hpp b/include/boost/fusion/sequence/generation/make_map.hpp index c97ec700..885cea2b 100644 --- a/include/boost/fusion/sequence/generation/make_map.hpp +++ b/include/boost/fusion/sequence/generation/make_map.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_PP_IS_ITERATING #if !defined(FUSION_MAKE_MAP_07222005_1247) diff --git a/include/boost/fusion/sequence/generation/make_set.hpp b/include/boost/fusion/sequence/generation/make_set.hpp index d9924818..7f56159c 100644 --- a/include/boost/fusion/sequence/generation/make_set.hpp +++ b/include/boost/fusion/sequence/generation/make_set.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_PP_IS_ITERATING #if !defined(FUSION_MAKE_SET_09162005_1125) diff --git a/include/boost/fusion/sequence/generation/make_vector.hpp b/include/boost/fusion/sequence/generation/make_vector.hpp index ff5a0611..2dc292fd 100644 --- a/include/boost/fusion/sequence/generation/make_vector.hpp +++ b/include/boost/fusion/sequence/generation/make_vector.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_PP_IS_ITERATING #if !defined(FUSION_MAKE_VECTOR_07162005_0243) diff --git a/include/boost/fusion/sequence/generation/map_tie.hpp b/include/boost/fusion/sequence/generation/map_tie.hpp index 8275e06c..f05a793d 100644 --- a/include/boost/fusion/sequence/generation/map_tie.hpp +++ b/include/boost/fusion/sequence/generation/map_tie.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_PP_IS_ITERATING #if !defined(FUSION_MAP_TIE_20060814_1116) diff --git a/include/boost/fusion/sequence/generation/pair_tie.hpp b/include/boost/fusion/sequence/generation/pair_tie.hpp index ebadfdf8..09437a26 100644 --- a/include/boost/fusion/sequence/generation/pair_tie.hpp +++ b/include/boost/fusion/sequence/generation/pair_tie.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_PAIR_TIE_20060812_2058) #define BOOST_FUSION_PAIR_TIE_20060812_2058 diff --git a/include/boost/fusion/sequence/generation/vector_tie.hpp b/include/boost/fusion/sequence/generation/vector_tie.hpp index c16dc5ef..b8cfe527 100644 --- a/include/boost/fusion/sequence/generation/vector_tie.hpp +++ b/include/boost/fusion/sequence/generation/vector_tie.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_PP_IS_ITERATING #if !defined(FUSION_VECTOR_TIE_07192005_1242) diff --git a/include/boost/fusion/sequence/intrinsic.hpp b/include/boost/fusion/sequence/intrinsic.hpp index 60bc6e81..59aaf9ff 100644 --- a/include/boost/fusion/sequence/intrinsic.hpp +++ b/include/boost/fusion/sequence/intrinsic.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_SEQUENCE_INTRINSIC_10022005_0618) #define FUSION_SEQUENCE_INTRINSIC_10022005_0618 diff --git a/include/boost/fusion/sequence/intrinsic/at.hpp b/include/boost/fusion/sequence/intrinsic/at.hpp index 029135db..4524ace5 100644 --- a/include/boost/fusion/sequence/intrinsic/at.hpp +++ b/include/boost/fusion/sequence/intrinsic/at.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_AT_05042005_0722) #define FUSION_AT_05042005_0722 diff --git a/include/boost/fusion/sequence/intrinsic/at_key.hpp b/include/boost/fusion/sequence/intrinsic/at_key.hpp index fc29c615..849ff294 100644 --- a/include/boost/fusion/sequence/intrinsic/at_key.hpp +++ b/include/boost/fusion/sequence/intrinsic/at_key.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_20060304_1755) #define BOOST_FUSION_AT_KEY_20060304_1755 diff --git a/include/boost/fusion/sequence/intrinsic/back.hpp b/include/boost/fusion/sequence/intrinsic/back.hpp index e2760bc0..1f3567f9 100644 --- a/include/boost/fusion/sequence/intrinsic/back.hpp +++ b/include/boost/fusion/sequence/intrinsic/back.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_BACK_09162005_0350) #define FUSION_BACK_09162005_0350 diff --git a/include/boost/fusion/sequence/intrinsic/begin.hpp b/include/boost/fusion/sequence/intrinsic/begin.hpp index eb342866..715ef9e1 100644 --- a/include/boost/fusion/sequence/intrinsic/begin.hpp +++ b/include/boost/fusion/sequence/intrinsic/begin.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_BEGIN_04052005_1132) #define FUSION_BEGIN_04052005_1132 diff --git a/include/boost/fusion/sequence/intrinsic/empty.hpp b/include/boost/fusion/sequence/intrinsic/empty.hpp index 9013cf01..2390a49b 100644 --- a/include/boost/fusion/sequence/intrinsic/empty.hpp +++ b/include/boost/fusion/sequence/intrinsic/empty.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_EMPTY_09162005_0335) #define FUSION_EMPTY_09162005_0335 diff --git a/include/boost/fusion/sequence/intrinsic/end.hpp b/include/boost/fusion/sequence/intrinsic/end.hpp index 6d655550..04232f12 100644 --- a/include/boost/fusion/sequence/intrinsic/end.hpp +++ b/include/boost/fusion/sequence/intrinsic/end.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_END_04052005_1141) #define FUSION_END_04052005_1141 diff --git a/include/boost/fusion/sequence/intrinsic/ext_/segments.hpp b/include/boost/fusion/sequence/intrinsic/ext_/segments.hpp index 1d4fd220..58f148f2 100755 --- a/include/boost/fusion/sequence/intrinsic/ext_/segments.hpp +++ b/include/boost/fusion/sequence/intrinsic/ext_/segments.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2006 Eric Niebler - Use, modification and distribution is 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) + Distributed under the 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_SEGMENTS_04052005_1141) #define FUSION_SEGMENTS_04052005_1141 diff --git a/include/boost/fusion/sequence/intrinsic/ext_/size_s.hpp b/include/boost/fusion/sequence/intrinsic/ext_/size_s.hpp index 4fbb58d1..b2603fc5 100755 --- a/include/boost/fusion/sequence/intrinsic/ext_/size_s.hpp +++ b/include/boost/fusion/sequence/intrinsic/ext_/size_s.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2006 Eric Niebler - Use, modification and distribution is 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) + Distributed under the 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_SIZE_S_08112006_1141) #define FUSION_SIZE_S_08112006_1141 diff --git a/include/boost/fusion/sequence/intrinsic/front.hpp b/include/boost/fusion/sequence/intrinsic/front.hpp index 9ec99599..bb79cfa9 100644 --- a/include/boost/fusion/sequence/intrinsic/front.hpp +++ b/include/boost/fusion/sequence/intrinsic/front.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_FRONT_09162005_0343) #define FUSION_FRONT_09162005_0343 diff --git a/include/boost/fusion/sequence/intrinsic/has_key.hpp b/include/boost/fusion/sequence/intrinsic/has_key.hpp index dc0335e9..4c6a3e07 100644 --- a/include/boost/fusion/sequence/intrinsic/has_key.hpp +++ b/include/boost/fusion/sequence/intrinsic/has_key.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_HAS_KEY_09232005_1454) #define FUSION_HAS_KEY_09232005_1454 diff --git a/include/boost/fusion/sequence/intrinsic/mpl.hpp b/include/boost/fusion/sequence/intrinsic/mpl.hpp index 30bd2473..9d5bb609 100644 --- a/include/boost/fusion/sequence/intrinsic/mpl.hpp +++ b/include/boost/fusion/sequence/intrinsic/mpl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_SEQUENCE_INTRINSIC_MPL_10022005_1641) #define FUSION_SEQUENCE_INTRINSIC_MPL_10022005_1641 diff --git a/include/boost/fusion/sequence/intrinsic/mpl/at.hpp b/include/boost/fusion/sequence/intrinsic/mpl/at.hpp index b4146c4b..a164bb32 100644 --- a/include/boost/fusion/sequence/intrinsic/mpl/at.hpp +++ b/include/boost/fusion/sequence/intrinsic/mpl/at.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_AT_10022005_1616) #define FUSION_AT_10022005_1616 diff --git a/include/boost/fusion/sequence/intrinsic/mpl/back.hpp b/include/boost/fusion/sequence/intrinsic/mpl/back.hpp index ae06a7ce..1f5197e2 100644 --- a/include/boost/fusion/sequence/intrinsic/mpl/back.hpp +++ b/include/boost/fusion/sequence/intrinsic/mpl/back.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_BACK_10022005_1620) #define FUSION_BACK_10022005_1620 diff --git a/include/boost/fusion/sequence/intrinsic/mpl/begin.hpp b/include/boost/fusion/sequence/intrinsic/mpl/begin.hpp index e5a1aba6..6d344d75 100644 --- a/include/boost/fusion/sequence/intrinsic/mpl/begin.hpp +++ b/include/boost/fusion/sequence/intrinsic/mpl/begin.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_BEGIN_10022005_1620) #define FUSION_BEGIN_10022005_1620 diff --git a/include/boost/fusion/sequence/intrinsic/mpl/clear.hpp b/include/boost/fusion/sequence/intrinsic/mpl/clear.hpp index 68b86bb8..0f2d492b 100644 --- a/include/boost/fusion/sequence/intrinsic/mpl/clear.hpp +++ b/include/boost/fusion/sequence/intrinsic/mpl/clear.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_CLEAR_10022005_1817) #define FUSION_CLEAR_10022005_1817 diff --git a/include/boost/fusion/sequence/intrinsic/mpl/detail/as.hpp b/include/boost/fusion/sequence/intrinsic/mpl/detail/as.hpp index 77857c12..1537e549 100644 --- a/include/boost/fusion/sequence/intrinsic/mpl/detail/as.hpp +++ b/include/boost/fusion/sequence/intrinsic/mpl/detail/as.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_AS_10022005_1442) #define FUSION_AS_10022005_1442 diff --git a/include/boost/fusion/sequence/intrinsic/mpl/detail/clear.hpp b/include/boost/fusion/sequence/intrinsic/mpl/detail/clear.hpp index fc2a1154..28807cc7 100644 --- a/include/boost/fusion/sequence/intrinsic/mpl/detail/clear.hpp +++ b/include/boost/fusion/sequence/intrinsic/mpl/detail/clear.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_CLEAR_10022005_1442) #define FUSION_CLEAR_10022005_1442 diff --git a/include/boost/fusion/sequence/intrinsic/mpl/empty.hpp b/include/boost/fusion/sequence/intrinsic/mpl/empty.hpp index 8f00c24e..a0e27d66 100644 --- a/include/boost/fusion/sequence/intrinsic/mpl/empty.hpp +++ b/include/boost/fusion/sequence/intrinsic/mpl/empty.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_EMPTY_10022005_1619) #define FUSION_EMPTY_10022005_1619 diff --git a/include/boost/fusion/sequence/intrinsic/mpl/end.hpp b/include/boost/fusion/sequence/intrinsic/mpl/end.hpp index 979f659a..7d84a81b 100644 --- a/include/boost/fusion/sequence/intrinsic/mpl/end.hpp +++ b/include/boost/fusion/sequence/intrinsic/mpl/end.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_END_10022005_1619) #define FUSION_END_10022005_1619 diff --git a/include/boost/fusion/sequence/intrinsic/mpl/erase.hpp b/include/boost/fusion/sequence/intrinsic/mpl/erase.hpp index f10ab843..0ee650e0 100644 --- a/include/boost/fusion/sequence/intrinsic/mpl/erase.hpp +++ b/include/boost/fusion/sequence/intrinsic/mpl/erase.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_ERASE_10022005_1835) #define FUSION_ERASE_10022005_1835 diff --git a/include/boost/fusion/sequence/intrinsic/mpl/erase_key.hpp b/include/boost/fusion/sequence/intrinsic/mpl/erase_key.hpp index a47d0916..6c8ba6cf 100644 --- a/include/boost/fusion/sequence/intrinsic/mpl/erase_key.hpp +++ b/include/boost/fusion/sequence/intrinsic/mpl/erase_key.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_ERASE_KEY_10022005_1907) #define FUSION_ERASE_KEY_10022005_1907 diff --git a/include/boost/fusion/sequence/intrinsic/mpl/front.hpp b/include/boost/fusion/sequence/intrinsic/mpl/front.hpp index e503cadb..97a26f73 100644 --- a/include/boost/fusion/sequence/intrinsic/mpl/front.hpp +++ b/include/boost/fusion/sequence/intrinsic/mpl/front.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_FRONT_10022005_1618) #define FUSION_FRONT_10022005_1618 diff --git a/include/boost/fusion/sequence/intrinsic/mpl/has_key.hpp b/include/boost/fusion/sequence/intrinsic/mpl/has_key.hpp index 593f5492..beac7c64 100644 --- a/include/boost/fusion/sequence/intrinsic/mpl/has_key.hpp +++ b/include/boost/fusion/sequence/intrinsic/mpl/has_key.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_HAS_KEY_10022005_1617) #define FUSION_HAS_KEY_10022005_1617 diff --git a/include/boost/fusion/sequence/intrinsic/mpl/insert.hpp b/include/boost/fusion/sequence/intrinsic/mpl/insert.hpp index 677c00c6..7df943a5 100644 --- a/include/boost/fusion/sequence/intrinsic/mpl/insert.hpp +++ b/include/boost/fusion/sequence/intrinsic/mpl/insert.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_INSERT_10022005_1837) #define FUSION_INSERT_10022005_1837 diff --git a/include/boost/fusion/sequence/intrinsic/mpl/insert_range.hpp b/include/boost/fusion/sequence/intrinsic/mpl/insert_range.hpp index ad85d8d9..1c7abc89 100644 --- a/include/boost/fusion/sequence/intrinsic/mpl/insert_range.hpp +++ b/include/boost/fusion/sequence/intrinsic/mpl/insert_range.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_INSERT_RANGE_10022005_1838) #define FUSION_INSERT_RANGE_10022005_1838 diff --git a/include/boost/fusion/sequence/intrinsic/mpl/pop_back.hpp b/include/boost/fusion/sequence/intrinsic/mpl/pop_back.hpp index c3f22cd8..94dbba3a 100644 --- a/include/boost/fusion/sequence/intrinsic/mpl/pop_back.hpp +++ b/include/boost/fusion/sequence/intrinsic/mpl/pop_back.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_POP_BACK_10022005_1801) #define FUSION_POP_BACK_10022005_1801 diff --git a/include/boost/fusion/sequence/intrinsic/mpl/pop_front.hpp b/include/boost/fusion/sequence/intrinsic/mpl/pop_front.hpp index 1f4f6739..957a673e 100644 --- a/include/boost/fusion/sequence/intrinsic/mpl/pop_front.hpp +++ b/include/boost/fusion/sequence/intrinsic/mpl/pop_front.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_POP_FRONT_10022005_1800) #define FUSION_POP_FRONT_10022005_1800 diff --git a/include/boost/fusion/sequence/intrinsic/mpl/push_back.hpp b/include/boost/fusion/sequence/intrinsic/mpl/push_back.hpp index 6d635691..e828af9e 100644 --- a/include/boost/fusion/sequence/intrinsic/mpl/push_back.hpp +++ b/include/boost/fusion/sequence/intrinsic/mpl/push_back.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_PUSH_BACK_10022005_1647) #define FUSION_PUSH_BACK_10022005_1647 diff --git a/include/boost/fusion/sequence/intrinsic/mpl/push_front.hpp b/include/boost/fusion/sequence/intrinsic/mpl/push_front.hpp index fb435502..00431af2 100644 --- a/include/boost/fusion/sequence/intrinsic/mpl/push_front.hpp +++ b/include/boost/fusion/sequence/intrinsic/mpl/push_front.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_PUSH_FRONT_10022005_1720) #define FUSION_PUSH_FRONT_10022005_1720 diff --git a/include/boost/fusion/sequence/intrinsic/mpl/size.hpp b/include/boost/fusion/sequence/intrinsic/mpl/size.hpp index 0147a65d..2c724281 100644 --- a/include/boost/fusion/sequence/intrinsic/mpl/size.hpp +++ b/include/boost/fusion/sequence/intrinsic/mpl/size.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_SIZE_10022005_1617) #define FUSION_SIZE_10022005_1617 diff --git a/include/boost/fusion/sequence/intrinsic/size.hpp b/include/boost/fusion/sequence/intrinsic/size.hpp index 231e2f74..c94f9ec0 100644 --- a/include/boost/fusion/sequence/intrinsic/size.hpp +++ b/include/boost/fusion/sequence/intrinsic/size.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_SIZE_05052005_0214) #define FUSION_SIZE_05052005_0214 diff --git a/include/boost/fusion/sequence/intrinsic/value_at.hpp b/include/boost/fusion/sequence/intrinsic/value_at.hpp index bc73a162..d0868155 100644 --- a/include/boost/fusion/sequence/intrinsic/value_at.hpp +++ b/include/boost/fusion/sequence/intrinsic/value_at.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_VALUE_AT_05052005_0229) #define FUSION_VALUE_AT_05052005_0229 diff --git a/include/boost/fusion/sequence/intrinsic/value_at_key.hpp b/include/boost/fusion/sequence/intrinsic/value_at_key.hpp index 84c1cdeb..dbef3e89 100644 --- a/include/boost/fusion/sequence/intrinsic/value_at_key.hpp +++ b/include/boost/fusion/sequence/intrinsic/value_at_key.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_VALUE_AT_KEY_05052005_0229) #define FUSION_VALUE_AT_KEY_05052005_0229 diff --git a/include/boost/fusion/sequence/io.hpp b/include/boost/fusion/sequence/io.hpp index 5547f15c..080bae38 100644 --- a/include/boost/fusion/sequence/io.hpp +++ b/include/boost/fusion/sequence/io.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_SEQUENCE_IO_10032005_0836) #define FUSION_SEQUENCE_IO_10032005_0836 diff --git a/include/boost/fusion/sequence/io/detail/in.hpp b/include/boost/fusion/sequence/io/detail/in.hpp index 3bf67dcb..93d63791 100644 --- a/include/boost/fusion/sequence/io/detail/in.hpp +++ b/include/boost/fusion/sequence/io/detail/in.hpp @@ -3,9 +3,8 @@ Copyright (c) 1999-2003 Jeremiah Willcock Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_IN_05052005_0121) #define FUSION_IN_05052005_0121 diff --git a/include/boost/fusion/sequence/io/detail/manip.hpp b/include/boost/fusion/sequence/io/detail/manip.hpp index e951e35c..382eb32f 100644 --- a/include/boost/fusion/sequence/io/detail/manip.hpp +++ b/include/boost/fusion/sequence/io/detail/manip.hpp @@ -3,9 +3,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_MANIP_05052005_1200) #define FUSION_MANIP_05052005_1200 diff --git a/include/boost/fusion/sequence/io/detail/out.hpp b/include/boost/fusion/sequence/io/detail/out.hpp index 1865c5d3..bd74e20a 100644 --- a/include/boost/fusion/sequence/io/detail/out.hpp +++ b/include/boost/fusion/sequence/io/detail/out.hpp @@ -3,9 +3,8 @@ Copyright (c) 1999-2003 Jeremiah Willcock Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_OUT_05052005_0121) #define FUSION_OUT_05052005_0121 diff --git a/include/boost/fusion/sequence/io/in.hpp b/include/boost/fusion/sequence/io/in.hpp index 2a946e3d..5ce51ffb 100644 --- a/include/boost/fusion/sequence/io/in.hpp +++ b/include/boost/fusion/sequence/io/in.hpp @@ -3,9 +3,8 @@ Copyright (c) 1999-2003 Jeremiah Willcock Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_IN_05042005_0120) #define BOOST_IN_05042005_0120 diff --git a/include/boost/fusion/sequence/io/out.hpp b/include/boost/fusion/sequence/io/out.hpp index 2c8cea2d..48098e57 100644 --- a/include/boost/fusion/sequence/io/out.hpp +++ b/include/boost/fusion/sequence/io/out.hpp @@ -3,9 +3,8 @@ Copyright (c) 1999-2003 Jeremiah Willcock Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_OUT_05042005_0120) #define BOOST_OUT_05042005_0120 diff --git a/include/boost/fusion/sequence/sequence_facade.hpp b/include/boost/fusion/sequence/sequence_facade.hpp index 69e3daf5..af6faf56 100644 --- a/include/boost/fusion/sequence/sequence_facade.hpp +++ b/include/boost/fusion/sequence/sequence_facade.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_SEQUENCE_FACADE_09252006_1044) #define FUSION_SEQUENCE_FACADE_09252006_1044 diff --git a/include/boost/fusion/sequence/view.hpp b/include/boost/fusion/sequence/view.hpp index 977c4529..712a9ac5 100644 --- a/include/boost/fusion/sequence/view.hpp +++ b/include/boost/fusion/sequence/view.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_SEQUENCE_VIEW_10022005_0620) #define FUSION_SEQUENCE_VIEW_10022005_0620 diff --git a/include/boost/fusion/sequence/view/ext_/multiple_view.hpp b/include/boost/fusion/sequence/view/ext_/multiple_view.hpp index 2297aa7f..e34b1d62 100755 --- a/include/boost/fusion/sequence/view/ext_/multiple_view.hpp +++ b/include/boost/fusion/sequence/view/ext_/multiple_view.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Eric Niebler - Use, modification and distribution is 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) + Distributed under the 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 FUSION_MULTIPLE_VIEW_05052005_0335 #define FUSION_MULTIPLE_VIEW_05052005_0335 diff --git a/include/boost/fusion/sequence/view/filter_view.hpp b/include/boost/fusion/sequence/view/filter_view.hpp index c5416662..d8fb4936 100644 --- a/include/boost/fusion/sequence/view/filter_view.hpp +++ b/include/boost/fusion/sequence/view/filter_view.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_SEQUENCE_VIEW_FILTER_VIEW_10022005_0608) #define FUSION_SEQUENCE_VIEW_FILTER_VIEW_10022005_0608 diff --git a/include/boost/fusion/sequence/view/filter_view/detail/begin_impl.hpp b/include/boost/fusion/sequence/view/filter_view/detail/begin_impl.hpp index 42999deb..2ffe7bd0 100644 --- a/include/boost/fusion/sequence/view/filter_view/detail/begin_impl.hpp +++ b/include/boost/fusion/sequence/view/filter_view/detail/begin_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_BEGIN_IMPL_05062005_0903) #define FUSION_BEGIN_IMPL_05062005_0903 diff --git a/include/boost/fusion/sequence/view/filter_view/detail/deref_impl.hpp b/include/boost/fusion/sequence/view/filter_view/detail/deref_impl.hpp index fd46bf86..3e6447c5 100644 --- a/include/boost/fusion/sequence/view/filter_view/detail/deref_impl.hpp +++ b/include/boost/fusion/sequence/view/filter_view/detail/deref_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_DEREF_IMPL_05062005_0905) #define FUSION_DEREF_IMPL_05062005_0905 diff --git a/include/boost/fusion/sequence/view/filter_view/detail/end_impl.hpp b/include/boost/fusion/sequence/view/filter_view/detail/end_impl.hpp index bdaed67d..677004d4 100644 --- a/include/boost/fusion/sequence/view/filter_view/detail/end_impl.hpp +++ b/include/boost/fusion/sequence/view/filter_view/detail/end_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_END_IMPL_05062005_0906) #define FUSION_END_IMPL_05062005_0906 diff --git a/include/boost/fusion/sequence/view/filter_view/detail/equal_to_impl.hpp b/include/boost/fusion/sequence/view/filter_view/detail/equal_to_impl.hpp index 33e92555..5d7b2932 100644 --- a/include/boost/fusion/sequence/view/filter_view/detail/equal_to_impl.hpp +++ b/include/boost/fusion/sequence/view/filter_view/detail/equal_to_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_EQUAL_TO_IMPL_02012005_2133) #define BOOST_FUSION_EQUAL_TO_IMPL_02012005_2133 diff --git a/include/boost/fusion/sequence/view/filter_view/detail/next_impl.hpp b/include/boost/fusion/sequence/view/filter_view/detail/next_impl.hpp index 3b35f9c6..8423dfe1 100644 --- a/include/boost/fusion/sequence/view/filter_view/detail/next_impl.hpp +++ b/include/boost/fusion/sequence/view/filter_view/detail/next_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_NEXT_IMPL_06052005_0900) #define FUSION_NEXT_IMPL_06052005_0900 diff --git a/include/boost/fusion/sequence/view/filter_view/detail/size_impl.hpp b/include/boost/fusion/sequence/view/filter_view/detail/size_impl.hpp index 55b91d36..1c5a0aca 100644 --- a/include/boost/fusion/sequence/view/filter_view/detail/size_impl.hpp +++ b/include/boost/fusion/sequence/view/filter_view/detail/size_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_SIZE_IMPL_09232005_1058) #define FUSION_SIZE_IMPL_09232005_1058 diff --git a/include/boost/fusion/sequence/view/filter_view/detail/value_of_impl.hpp b/include/boost/fusion/sequence/view/filter_view/detail/value_of_impl.hpp index 4114dd9f..f9188f6f 100644 --- a/include/boost/fusion/sequence/view/filter_view/detail/value_of_impl.hpp +++ b/include/boost/fusion/sequence/view/filter_view/detail/value_of_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_VALUE_OF_IMPL_05062005_0857) #define FUSION_VALUE_OF_IMPL_05062005_0857 diff --git a/include/boost/fusion/sequence/view/filter_view/filter_view.hpp b/include/boost/fusion/sequence/view/filter_view/filter_view.hpp index 69e0b80f..e09ec97f 100644 --- a/include/boost/fusion/sequence/view/filter_view/filter_view.hpp +++ b/include/boost/fusion/sequence/view/filter_view/filter_view.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_SEQUENCE_FILTER_VIEW_HPP) #define FUSION_SEQUENCE_FILTER_VIEW_HPP diff --git a/include/boost/fusion/sequence/view/filter_view/filter_view_iterator.hpp b/include/boost/fusion/sequence/view/filter_view/filter_view_iterator.hpp index bf6a9aec..aaf1d6e0 100644 --- a/include/boost/fusion/sequence/view/filter_view/filter_view_iterator.hpp +++ b/include/boost/fusion/sequence/view/filter_view/filter_view_iterator.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_FILTER_VIEW_ITERATOR_05062005_0849) #define FUSION_FILTER_VIEW_ITERATOR_05062005_0849 diff --git a/include/boost/fusion/sequence/view/iterator_range.hpp b/include/boost/fusion/sequence/view/iterator_range.hpp index 15fab150..16485eb4 100644 --- a/include/boost/fusion/sequence/view/iterator_range.hpp +++ b/include/boost/fusion/sequence/view/iterator_range.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_SEQUENCE_VIEW_ITERATOR_RANGE_10022005_0610) #define FUSION_SEQUENCE_VIEW_ITERATOR_RANGE_10022005_0610 diff --git a/include/boost/fusion/sequence/view/iterator_range/detail/begin_impl.hpp b/include/boost/fusion/sequence/view/iterator_range/detail/begin_impl.hpp index 8cde61be..32341369 100644 --- a/include/boost/fusion/sequence/view/iterator_range/detail/begin_impl.hpp +++ b/include/boost/fusion/sequence/view/iterator_range/detail/begin_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_BEGIN_IMPL_05062005_1226) #define FUSION_BEGIN_IMPL_05062005_1226 diff --git a/include/boost/fusion/sequence/view/iterator_range/detail/end_impl.hpp b/include/boost/fusion/sequence/view/iterator_range/detail/end_impl.hpp index dfd1ee2e..dacbe191 100644 --- a/include/boost/fusion/sequence/view/iterator_range/detail/end_impl.hpp +++ b/include/boost/fusion/sequence/view/iterator_range/detail/end_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_END_IMPL_05062005_1226) #define FUSION_END_IMPL_05062005_1226 diff --git a/include/boost/fusion/sequence/view/iterator_range/iterator_range.hpp b/include/boost/fusion/sequence/view/iterator_range/iterator_range.hpp index 87635f79..5fc009f2 100644 --- a/include/boost/fusion/sequence/view/iterator_range/iterator_range.hpp +++ b/include/boost/fusion/sequence/view/iterator_range/iterator_range.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_ITERATOR_RANGE_05062005_1224) #define FUSION_ITERATOR_RANGE_05062005_1224 diff --git a/include/boost/fusion/sequence/view/joint_view.hpp b/include/boost/fusion/sequence/view/joint_view.hpp index 64c22604..6d9209a8 100644 --- a/include/boost/fusion/sequence/view/joint_view.hpp +++ b/include/boost/fusion/sequence/view/joint_view.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_SEQUENCE_VIEW_JOINT_VIEW_10022005_0610) #define FUSION_SEQUENCE_VIEW_JOINT_VIEW_10022005_0610 diff --git a/include/boost/fusion/sequence/view/joint_view/detail/begin_impl.hpp b/include/boost/fusion/sequence/view/joint_view/detail/begin_impl.hpp index 83bc970e..e2b0281e 100644 --- a/include/boost/fusion/sequence/view/joint_view/detail/begin_impl.hpp +++ b/include/boost/fusion/sequence/view/joint_view/detail/begin_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_BEGIN_IMPL_07162005_0115) #define FUSION_BEGIN_IMPL_07162005_0115 diff --git a/include/boost/fusion/sequence/view/joint_view/detail/deref_impl.hpp b/include/boost/fusion/sequence/view/joint_view/detail/deref_impl.hpp index 2e927b23..7eb47184 100644 --- a/include/boost/fusion/sequence/view/joint_view/detail/deref_impl.hpp +++ b/include/boost/fusion/sequence/view/joint_view/detail/deref_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_DEREF_IMPL_07162005_0137) #define FUSION_DEREF_IMPL_07162005_0137 diff --git a/include/boost/fusion/sequence/view/joint_view/detail/end_impl.hpp b/include/boost/fusion/sequence/view/joint_view/detail/end_impl.hpp index b39a56b2..5bdeb02e 100644 --- a/include/boost/fusion/sequence/view/joint_view/detail/end_impl.hpp +++ b/include/boost/fusion/sequence/view/joint_view/detail/end_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_END_IMPL_07162005_0128) #define FUSION_END_IMPL_07162005_0128 diff --git a/include/boost/fusion/sequence/view/joint_view/detail/next_impl.hpp b/include/boost/fusion/sequence/view/joint_view/detail/next_impl.hpp index 1f6d78f6..80d3580d 100644 --- a/include/boost/fusion/sequence/view/joint_view/detail/next_impl.hpp +++ b/include/boost/fusion/sequence/view/joint_view/detail/next_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_NEXT_IMPL_07162005_0136) #define FUSION_NEXT_IMPL_07162005_0136 diff --git a/include/boost/fusion/sequence/view/joint_view/detail/value_of_impl.hpp b/include/boost/fusion/sequence/view/joint_view/detail/value_of_impl.hpp index 68cb053d..53afe1c9 100644 --- a/include/boost/fusion/sequence/view/joint_view/detail/value_of_impl.hpp +++ b/include/boost/fusion/sequence/view/joint_view/detail/value_of_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_VALUE_IMPL_07162005_0132) #define FUSION_VALUE_IMPL_07162005_0132 diff --git a/include/boost/fusion/sequence/view/joint_view/joint_view.hpp b/include/boost/fusion/sequence/view/joint_view/joint_view.hpp index 40abc41c..d0c48200 100644 --- a/include/boost/fusion/sequence/view/joint_view/joint_view.hpp +++ b/include/boost/fusion/sequence/view/joint_view/joint_view.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_JOINT_VIEW_07162005_0140) #define FUSION_JOINT_VIEW_07162005_0140 diff --git a/include/boost/fusion/sequence/view/joint_view/joint_view_iterator.hpp b/include/boost/fusion/sequence/view/joint_view/joint_view_iterator.hpp index ca93e418..0bdfae07 100644 --- a/include/boost/fusion/sequence/view/joint_view/joint_view_iterator.hpp +++ b/include/boost/fusion/sequence/view/joint_view/joint_view_iterator.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_JOINT_VIEW_ITERATOR_07162005_0140) #define FUSION_JOINT_VIEW_ITERATOR_07162005_0140 diff --git a/include/boost/fusion/sequence/view/reverse_view.hpp b/include/boost/fusion/sequence/view/reverse_view.hpp index cf782dac..6aa499e3 100644 --- a/include/boost/fusion/sequence/view/reverse_view.hpp +++ b/include/boost/fusion/sequence/view/reverse_view.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_SEQUENCE_VIEW_REVERSE_VIEW_10022005_0612) #define FUSION_SEQUENCE_VIEW_REVERSE_VIEW_10022005_0612 diff --git a/include/boost/fusion/sequence/view/reverse_view/detail/advance_impl.hpp b/include/boost/fusion/sequence/view/reverse_view/detail/advance_impl.hpp index 4508c9db..8785881e 100644 --- a/include/boost/fusion/sequence/view/reverse_view/detail/advance_impl.hpp +++ b/include/boost/fusion/sequence/view/reverse_view/detail/advance_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_ADVANCE_IMPL_14122005_2015) #define FUSION_ADVANCE_IMPL_14122005_2015 diff --git a/include/boost/fusion/sequence/view/reverse_view/detail/begin_impl.hpp b/include/boost/fusion/sequence/view/reverse_view/detail/begin_impl.hpp index 77ec5aac..b7968f56 100644 --- a/include/boost/fusion/sequence/view/reverse_view/detail/begin_impl.hpp +++ b/include/boost/fusion/sequence/view/reverse_view/detail/begin_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_BEGIN_IMPL_07202005_0849) #define FUSION_BEGIN_IMPL_07202005_0849 diff --git a/include/boost/fusion/sequence/view/reverse_view/detail/deref_impl.hpp b/include/boost/fusion/sequence/view/reverse_view/detail/deref_impl.hpp index f6dc07c4..97cb8915 100644 --- a/include/boost/fusion/sequence/view/reverse_view/detail/deref_impl.hpp +++ b/include/boost/fusion/sequence/view/reverse_view/detail/deref_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_DEREF_IMPL_07202005_0851) #define FUSION_DEREF_IMPL_07202005_0851 diff --git a/include/boost/fusion/sequence/view/reverse_view/detail/distance_impl.hpp b/include/boost/fusion/sequence/view/reverse_view/detail/distance_impl.hpp index b6db99cd..5edc7499 100644 --- a/include/boost/fusion/sequence/view/reverse_view/detail/distance_impl.hpp +++ b/include/boost/fusion/sequence/view/reverse_view/detail/distance_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_DISTANCE_IMPL_14122005_2104) #define FUSION_DISTANCE_IMPL_14122005_2104 diff --git a/include/boost/fusion/sequence/view/reverse_view/detail/end_impl.hpp b/include/boost/fusion/sequence/view/reverse_view/detail/end_impl.hpp index 39e28dd0..916e49d0 100644 --- a/include/boost/fusion/sequence/view/reverse_view/detail/end_impl.hpp +++ b/include/boost/fusion/sequence/view/reverse_view/detail/end_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_END_IMPL_07202005_0851) #define FUSION_END_IMPL_07202005_0851 diff --git a/include/boost/fusion/sequence/view/reverse_view/detail/next_impl.hpp b/include/boost/fusion/sequence/view/reverse_view/detail/next_impl.hpp index 3e075ce5..c036510c 100644 --- a/include/boost/fusion/sequence/view/reverse_view/detail/next_impl.hpp +++ b/include/boost/fusion/sequence/view/reverse_view/detail/next_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_NEXT_IMPL_07202005_0856) #define FUSION_NEXT_IMPL_07202005_0856 diff --git a/include/boost/fusion/sequence/view/reverse_view/detail/prior_impl.hpp b/include/boost/fusion/sequence/view/reverse_view/detail/prior_impl.hpp index 3c9d63c3..317054fc 100644 --- a/include/boost/fusion/sequence/view/reverse_view/detail/prior_impl.hpp +++ b/include/boost/fusion/sequence/view/reverse_view/detail/prior_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_PRIOR_IMPL_07202005_0857) #define FUSION_PRIOR_IMPL_07202005_0857 diff --git a/include/boost/fusion/sequence/view/reverse_view/detail/value_of_impl.hpp b/include/boost/fusion/sequence/view/reverse_view/detail/value_of_impl.hpp index 1d8f93a0..bf9b2ade 100644 --- a/include/boost/fusion/sequence/view/reverse_view/detail/value_of_impl.hpp +++ b/include/boost/fusion/sequence/view/reverse_view/detail/value_of_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_VALUE_OF_IMPL_07202005_0900) #define FUSION_VALUE_OF_IMPL_07202005_0900 diff --git a/include/boost/fusion/sequence/view/reverse_view/reverse_view.hpp b/include/boost/fusion/sequence/view/reverse_view/reverse_view.hpp index e8fb92a8..6e6f4c09 100644 --- a/include/boost/fusion/sequence/view/reverse_view/reverse_view.hpp +++ b/include/boost/fusion/sequence/view/reverse_view/reverse_view.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_REVERSE_VIEW_07202005_0836) #define FUSION_REVERSE_VIEW_07202005_0836 diff --git a/include/boost/fusion/sequence/view/reverse_view/reverse_view_iterator.hpp b/include/boost/fusion/sequence/view/reverse_view/reverse_view_iterator.hpp index 6f09d1cb..5f44b8b5 100644 --- a/include/boost/fusion/sequence/view/reverse_view/reverse_view_iterator.hpp +++ b/include/boost/fusion/sequence/view/reverse_view/reverse_view_iterator.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_REVERSE_VIEW_ITERATOR_07202005_0835) #define FUSION_REVERSE_VIEW_ITERATOR_07202005_0835 diff --git a/include/boost/fusion/sequence/view/single_view.hpp b/include/boost/fusion/sequence/view/single_view.hpp index 65410a36..e4a59476 100644 --- a/include/boost/fusion/sequence/view/single_view.hpp +++ b/include/boost/fusion/sequence/view/single_view.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_SINGLE_VIEW_03192006_2216) #define FUSION_SINGLE_VIEW_03192006_2216 diff --git a/include/boost/fusion/sequence/view/single_view/detail/begin_impl.hpp b/include/boost/fusion/sequence/view/single_view/detail/begin_impl.hpp index 18ca8104..395992be 100644 --- a/include/boost/fusion/sequence/view/single_view/detail/begin_impl.hpp +++ b/include/boost/fusion/sequence/view/single_view/detail/begin_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_BEGIN_IMPL_05052005_0305) #define FUSION_BEGIN_IMPL_05052005_0305 diff --git a/include/boost/fusion/sequence/view/single_view/detail/deref_impl.hpp b/include/boost/fusion/sequence/view/single_view/detail/deref_impl.hpp index d46bccef..355cf6ac 100644 --- a/include/boost/fusion/sequence/view/single_view/detail/deref_impl.hpp +++ b/include/boost/fusion/sequence/view/single_view/detail/deref_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_DEREF_IMPL_05052005_0258) #define FUSION_DEREF_IMPL_05052005_0258 diff --git a/include/boost/fusion/sequence/view/single_view/detail/end_impl.hpp b/include/boost/fusion/sequence/view/single_view/detail/end_impl.hpp index 576985c5..d239c242 100644 --- a/include/boost/fusion/sequence/view/single_view/detail/end_impl.hpp +++ b/include/boost/fusion/sequence/view/single_view/detail/end_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_END_IMPL_05052005_0332) #define FUSION_END_IMPL_05052005_0332 diff --git a/include/boost/fusion/sequence/view/single_view/detail/next_impl.hpp b/include/boost/fusion/sequence/view/single_view/detail/next_impl.hpp index 02b823e5..c9cdafdf 100644 --- a/include/boost/fusion/sequence/view/single_view/detail/next_impl.hpp +++ b/include/boost/fusion/sequence/view/single_view/detail/next_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_NEXT_IMPL_05052005_0331) #define FUSION_NEXT_IMPL_05052005_0331 diff --git a/include/boost/fusion/sequence/view/single_view/detail/value_of_impl.hpp b/include/boost/fusion/sequence/view/single_view/detail/value_of_impl.hpp index 05c97afc..f975eb14 100644 --- a/include/boost/fusion/sequence/view/single_view/detail/value_of_impl.hpp +++ b/include/boost/fusion/sequence/view/single_view/detail/value_of_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_VALUE_IMPL_05052005_0324) #define FUSION_VALUE_IMPL_05052005_0324 diff --git a/include/boost/fusion/sequence/view/single_view/single_view.hpp b/include/boost/fusion/sequence/view/single_view/single_view.hpp index 4584905d..31b68e20 100644 --- a/include/boost/fusion/sequence/view/single_view/single_view.hpp +++ b/include/boost/fusion/sequence/view/single_view/single_view.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_SINGLE_VIEW_05052005_0335) #define FUSION_SINGLE_VIEW_05052005_0335 diff --git a/include/boost/fusion/sequence/view/single_view/single_view_iterator.hpp b/include/boost/fusion/sequence/view/single_view/single_view_iterator.hpp index 67492749..68155d37 100644 --- a/include/boost/fusion/sequence/view/single_view/single_view_iterator.hpp +++ b/include/boost/fusion/sequence/view/single_view/single_view_iterator.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_SINGLE_VIEW_ITERATOR_05052005_0340) #define FUSION_SINGLE_VIEW_ITERATOR_05052005_0340 diff --git a/include/boost/fusion/sequence/view/transform_view.hpp b/include/boost/fusion/sequence/view/transform_view.hpp index 62ef8a10..714f8784 100644 --- a/include/boost/fusion/sequence/view/transform_view.hpp +++ b/include/boost/fusion/sequence/view/transform_view.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_SEQUENCE_VIEW_TRANSFORM_VIEW_10022005_0612) #define FUSION_SEQUENCE_VIEW_TRANSFORM_VIEW_10022005_0612 diff --git a/include/boost/fusion/sequence/view/transform_view/detail/advance_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/advance_impl.hpp index 9a1cf14d..6b323484 100644 --- a/include/boost/fusion/sequence/view/transform_view/detail/advance_impl.hpp +++ b/include/boost/fusion/sequence/view/transform_view/detail/advance_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_ADVANCE_IMPL_13122005_1906) #define FUSION_ADVANCE_IMPL_13122005_1906 diff --git a/include/boost/fusion/sequence/view/transform_view/detail/apply_transform_result.hpp b/include/boost/fusion/sequence/view/transform_view/detail/apply_transform_result.hpp index 3ff0b8ad..38267c62 100644 --- a/include/boost/fusion/sequence/view/transform_view/detail/apply_transform_result.hpp +++ b/include/boost/fusion/sequence/view/transform_view/detail/apply_transform_result.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_APPLY_TRANSFORM_RESULT_02092006_1936) #define FUSION_APPLY_TRANSFORM_RESULT_02092006_1936 diff --git a/include/boost/fusion/sequence/view/transform_view/detail/at_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/at_impl.hpp index 3d935c26..eb48cfa0 100644 --- a/include/boost/fusion/sequence/view/transform_view/detail/at_impl.hpp +++ b/include/boost/fusion/sequence/view/transform_view/detail/at_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_20061029_1946) #define BOOST_FUSION_AT_IMPL_20061029_1946 diff --git a/include/boost/fusion/sequence/view/transform_view/detail/begin_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/begin_impl.hpp index 94f7b5f6..b5f4bc29 100644 --- a/include/boost/fusion/sequence/view/transform_view/detail/begin_impl.hpp +++ b/include/boost/fusion/sequence/view/transform_view/detail/begin_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_BEGIN_IMPL_07162005_1031) #define FUSION_BEGIN_IMPL_07162005_1031 diff --git a/include/boost/fusion/sequence/view/transform_view/detail/deref_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/deref_impl.hpp index 5d3b5281..0d3b8fc7 100644 --- a/include/boost/fusion/sequence/view/transform_view/detail/deref_impl.hpp +++ b/include/boost/fusion/sequence/view/transform_view/detail/deref_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_DEREF_IMPL_07162005_1026) #define FUSION_DEREF_IMPL_07162005_1026 diff --git a/include/boost/fusion/sequence/view/transform_view/detail/distance_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/distance_impl.hpp index cf20b593..8f327de9 100644 --- a/include/boost/fusion/sequence/view/transform_view/detail/distance_impl.hpp +++ b/include/boost/fusion/sequence/view/transform_view/detail/distance_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_DISTANCE_IMPL_13122005_2139) #define FUSION_DISTANCE_IMPL_13122005_2139 diff --git a/include/boost/fusion/sequence/view/transform_view/detail/end_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/end_impl.hpp index 3b2d4af0..a689d933 100644 --- a/include/boost/fusion/sequence/view/transform_view/detail/end_impl.hpp +++ b/include/boost/fusion/sequence/view/transform_view/detail/end_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_END_IMPL_07162005_1028) #define FUSION_END_IMPL_07162005_1028 diff --git a/include/boost/fusion/sequence/view/transform_view/detail/equal_to_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/equal_to_impl.hpp index 8daa68cc..063a00ed 100644 --- a/include/boost/fusion/sequence/view/transform_view/detail/equal_to_impl.hpp +++ b/include/boost/fusion/sequence/view/transform_view/detail/equal_to_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_TRANSFORM_VIEW_ITERATOR_20070127_0957) #define BOOST_FUSION_TRANSFORM_VIEW_ITERATOR_20070127_0957 diff --git a/include/boost/fusion/sequence/view/transform_view/detail/next_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/next_impl.hpp index 9823569b..4d6ec743 100644 --- a/include/boost/fusion/sequence/view/transform_view/detail/next_impl.hpp +++ b/include/boost/fusion/sequence/view/transform_view/detail/next_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_NEXT_IMPL_07162005_1029) #define FUSION_NEXT_IMPL_07162005_1029 diff --git a/include/boost/fusion/sequence/view/transform_view/detail/prior_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/prior_impl.hpp index d53a28e0..f7d49966 100644 --- a/include/boost/fusion/sequence/view/transform_view/detail/prior_impl.hpp +++ b/include/boost/fusion/sequence/view/transform_view/detail/prior_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_PREV_IMPL_13122005_2110) #define FUSION_PREV_IMPL_13122005_2110 diff --git a/include/boost/fusion/sequence/view/transform_view/detail/value_at_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/value_at_impl.hpp index b0e682f9..cc5bbf46 100644 --- a/include/boost/fusion/sequence/view/transform_view/detail/value_at_impl.hpp +++ b/include/boost/fusion/sequence/view/transform_view/detail/value_at_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_20061101_0745) #define BOOST_FUSION_VALUE_AT_IMPL_20061101_0745 diff --git a/include/boost/fusion/sequence/view/transform_view/detail/value_of_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/value_of_impl.hpp index e95aa105..28e9942c 100644 --- a/include/boost/fusion/sequence/view/transform_view/detail/value_of_impl.hpp +++ b/include/boost/fusion/sequence/view/transform_view/detail/value_of_impl.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_VALUE_OF_IMPL_07162005_1030) #define FUSION_VALUE_OF_IMPL_07162005_1030 diff --git a/include/boost/fusion/sequence/view/transform_view/transform_view.hpp b/include/boost/fusion/sequence/view/transform_view/transform_view.hpp index 7a62ffe0..853bdf61 100644 --- a/include/boost/fusion/sequence/view/transform_view/transform_view.hpp +++ b/include/boost/fusion/sequence/view/transform_view/transform_view.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_TRANSFORM_VIEW_07162005_1037) #define FUSION_TRANSFORM_VIEW_07162005_1037 diff --git a/include/boost/fusion/sequence/view/transform_view/transform_view_fwd.hpp b/include/boost/fusion/sequence/view/transform_view/transform_view_fwd.hpp index 324d2dd9..7dca304a 100644 --- a/include/boost/fusion/sequence/view/transform_view/transform_view_fwd.hpp +++ b/include/boost/fusion/sequence/view/transform_view/transform_view_fwd.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_TRANSFORM_VIEW_FORWARD_01052006_1839) #define FUSION_TRANSFORM_VIEW_FORWARD_01052006_1839 diff --git a/include/boost/fusion/sequence/view/transform_view/transform_view_iterator.hpp b/include/boost/fusion/sequence/view/transform_view/transform_view_iterator.hpp index f313c36a..4d63f7e0 100644 --- a/include/boost/fusion/sequence/view/transform_view/transform_view_iterator.hpp +++ b/include/boost/fusion/sequence/view/transform_view/transform_view_iterator.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_TRANSFORM_VIEW_ITERATOR_07162005_1033) #define FUSION_TRANSFORM_VIEW_ITERATOR_07162005_1033 diff --git a/include/boost/fusion/sequence/view/zip_view.hpp b/include/boost/fusion/sequence/view/zip_view.hpp index c2acf665..74f71421 100644 --- a/include/boost/fusion/sequence/view/zip_view.hpp +++ b/include/boost/fusion/sequence/view/zip_view.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_ZIP_VIEW_23012006_0811) #define FUSION_ZIP_VIEW_23012006_0811 diff --git a/include/boost/fusion/sequence/view/zip_view/detail/advance_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/advance_impl.hpp index 4a423604..f1f784f7 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/advance_impl.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/advance_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_ADVANCE_IMPL_20061024_2021) #define FUSION_ADVANCE_IMPL_20061024_2021 diff --git a/include/boost/fusion/sequence/view/zip_view/detail/at_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/at_impl.hpp index cdcc22a6..ff16e9bd 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/at_impl.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/at_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_AT_IMPL_20060124_1933) #define FUSION_AT_IMPL_20060124_1933 diff --git a/include/boost/fusion/sequence/view/zip_view/detail/begin_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/begin_impl.hpp index 9ba435b7..744052c7 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/begin_impl.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/begin_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_BEGIN_IMPL_20060123_2147) #define FUSION_BEGIN_IMPL_20060123_2147 diff --git a/include/boost/fusion/sequence/view/zip_view/detail/deref_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/deref_impl.hpp index fcab17c4..0d263e25 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/deref_impl.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/deref_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_DEREF_IMPL_20061024_1959) #define FUSION_DEREF_IMPL_20061024_1959 diff --git a/include/boost/fusion/sequence/view/zip_view/detail/distance_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/distance_impl.hpp index e1505a9e..61447278 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/distance_impl.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/distance_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_DISTANCE_IMPL_20060124_2033) #define FUSION_DISTANCE_IMPL_20060124_2033 diff --git a/include/boost/fusion/sequence/view/zip_view/detail/end_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/end_impl.hpp index 95735da8..40c05f89 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/end_impl.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/end_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_END_IMPL_20060123_2208) #define FUSION_END_IMPL_20060123_2208 diff --git a/include/boost/fusion/sequence/view/zip_view/detail/equal_to_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/equal_to_impl.hpp index 10643609..7def2030 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/equal_to_impl.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/equal_to_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_EQUAL_TO_IMPL_20060128_1423) #define FUSION_EQUAL_TO_IMPL_20060128_1423 diff --git a/include/boost/fusion/sequence/view/zip_view/detail/next_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/next_impl.hpp index 45d618fb..b2fb781f 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/next_impl.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/next_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_NEXT_IMPL_20060124_2006) #define FUSION_NEXT_IMPL_20060124_2006 diff --git a/include/boost/fusion/sequence/view/zip_view/detail/prior_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/prior_impl.hpp index 35187f48..9c8b8146 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/prior_impl.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/prior_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_PRIOR_IMPL_20060124_2006) #define FUSION_PRIOR_IMPL_20060124_2006 diff --git a/include/boost/fusion/sequence/view/zip_view/detail/size_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/size_impl.hpp index d6d576f2..aeb6d5e3 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/size_impl.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/size_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_SIZE_IMPL_20060124_0800) #define FUSION_SIZE_IMPL_20060124_0800 diff --git a/include/boost/fusion/sequence/view/zip_view/detail/strictest_traversal.hpp b/include/boost/fusion/sequence/view/zip_view/detail/strictest_traversal.hpp index 594d3c3b..33ff347e 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/strictest_traversal.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/strictest_traversal.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_STRICTEST_TRAVERSAL_20060123_2101) #define FUSION_STRICTEST_TRAVERSAL_20060123_2101 diff --git a/include/boost/fusion/sequence/view/zip_view/detail/value_at_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/value_at_impl.hpp index cf2bf5d9..d0f2f44d 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/value_at_impl.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/value_at_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_VALUE_AT_IMPL_20060124_2129) #define FUSION_VALUE_AT_IMPL_20060124_2129 diff --git a/include/boost/fusion/sequence/view/zip_view/detail/value_of_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/value_of_impl.hpp index 46ed7330..7f55d8fa 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/value_of_impl.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/value_of_impl.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_VALUE_OF_IMPL_20060124_2147) #define FUSION_VALUE_OF_IMPL_20060124_2147 diff --git a/include/boost/fusion/sequence/view/zip_view/zip_view.hpp b/include/boost/fusion/sequence/view/zip_view/zip_view.hpp index ef9d6a8c..2d1892b1 100644 --- a/include/boost/fusion/sequence/view/zip_view/zip_view.hpp +++ b/include/boost/fusion/sequence/view/zip_view/zip_view.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_ZIP_VIEW_23012006_0813) #define FUSION_ZIP_VIEW_23012006_0813 diff --git a/include/boost/fusion/sequence/view/zip_view/zip_view_iterator.hpp b/include/boost/fusion/sequence/view/zip_view/zip_view_iterator.hpp index 4048005a..d4ebcc58 100644 --- a/include/boost/fusion/sequence/view/zip_view/zip_view_iterator.hpp +++ b/include/boost/fusion/sequence/view/zip_view/zip_view_iterator.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_ZIP_VIEW_ITERATOR_23012006_0814) #define FUSION_ZIP_VIEW_ITERATOR_23012006_0814 diff --git a/include/boost/fusion/sequence/view/zip_view/zip_view_iterator_fwd.hpp b/include/boost/fusion/sequence/view/zip_view/zip_view_iterator_fwd.hpp index 974e931a..6e8bf3f2 100644 --- a/include/boost/fusion/sequence/view/zip_view/zip_view_iterator_fwd.hpp +++ b/include/boost/fusion/sequence/view/zip_view/zip_view_iterator_fwd.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_ZIP_VIEW_ITERATOR_FWD) #define FUSION_ZIP_VIEW_ITERATOR_FWD diff --git a/include/boost/fusion/support.hpp b/include/boost/fusion/support.hpp index c95540a5..ba652d7d 100644 --- a/include/boost/fusion/support.hpp +++ b/include/boost/fusion/support.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_SUPPORT_10022005_0545) #define FUSION_SUPPORT_10022005_0545 diff --git a/include/boost/fusion/support/category_of.hpp b/include/boost/fusion/support/category_of.hpp index 73503955..4d38fb64 100644 --- a/include/boost/fusion/support/category_of.hpp +++ b/include/boost/fusion/support/category_of.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_CATEGORY_OF_07202005_0308) #define FUSION_CATEGORY_OF_07202005_0308 diff --git a/include/boost/fusion/support/detail/access.hpp b/include/boost/fusion/support/detail/access.hpp index e4449d3a..0508e50f 100644 --- a/include/boost/fusion/support/detail/access.hpp +++ b/include/boost/fusion/support/detail/access.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_ACCESS_04182005_0737) #define FUSION_ACCESS_04182005_0737 diff --git a/include/boost/fusion/support/detail/as_fusion_element.hpp b/include/boost/fusion/support/detail/as_fusion_element.hpp index 74fa53f5..78e4b631 100644 --- a/include/boost/fusion/support/detail/as_fusion_element.hpp +++ b/include/boost/fusion/support/detail/as_fusion_element.hpp @@ -2,9 +2,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_AS_FUSION_ELEMENT_05052005_0338) #define FUSION_AS_FUSION_ELEMENT_05052005_0338 diff --git a/include/boost/fusion/support/detail/category_of.hpp b/include/boost/fusion/support/detail/category_of.hpp index 78f474f2..04102cfd 100644 --- a/include/boost/fusion/support/detail/category_of.hpp +++ b/include/boost/fusion/support/detail/category_of.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_CATEGORY_OF_07212005_1025) #define FUSION_CATEGORY_OF_07212005_1025 diff --git a/include/boost/fusion/support/detail/compiler_config.hpp b/include/boost/fusion/support/detail/compiler_config.hpp index 8d90f27a..3859ef78 100644 --- a/include/boost/fusion/support/detail/compiler_config.hpp +++ b/include/boost/fusion/support/detail/compiler_config.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_COMPILER_CONFIG_01052006_1200) #define FUSION_COMPILER_CONFIG_01052006_1200 diff --git a/include/boost/fusion/support/detail/is_mpl_sequence.hpp b/include/boost/fusion/support/detail/is_mpl_sequence.hpp index 749d2f87..eeb8f916 100644 --- a/include/boost/fusion/support/detail/is_mpl_sequence.hpp +++ b/include/boost/fusion/support/detail/is_mpl_sequence.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_DETAIL_IS_MPL_SEQUENCE_29122006_1105) #define FUSION_DETAIL_IS_MPL_SEQUENCE_29122006_1105 diff --git a/include/boost/fusion/support/detail/is_view.hpp b/include/boost/fusion/support/detail/is_view.hpp index 489c27f9..5fa2f241 100644 --- a/include/boost/fusion/support/detail/is_view.hpp +++ b/include/boost/fusion/support/detail/is_view.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_IS_VIEW_03202006_0018) #define FUSION_IS_VIEW_03202006_0018 diff --git a/include/boost/fusion/support/detail/mpl_iterator_category.hpp b/include/boost/fusion/support/detail/mpl_iterator_category.hpp index 771c08a8..37a7fe94 100644 --- a/include/boost/fusion/support/detail/mpl_iterator_category.hpp +++ b/include/boost/fusion/support/detail/mpl_iterator_category.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_MPL_ITERATOR_CATEGORY_07212005_0923) #define FUSION_MPL_ITERATOR_CATEGORY_07212005_0923 diff --git a/include/boost/fusion/support/detail/unknown_key.hpp b/include/boost/fusion/support/detail/unknown_key.hpp index 11c53eb4..48ffcc2b 100644 --- a/include/boost/fusion/support/detail/unknown_key.hpp +++ b/include/boost/fusion/support/detail/unknown_key.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_UNKNOWN_KEY_09242005_1219) #define FUSION_UNKNOWN_KEY_09242005_1219 diff --git a/include/boost/fusion/support/ext_/is_segmented.hpp b/include/boost/fusion/support/ext_/is_segmented.hpp index eb6b9e93..38def075 100755 --- a/include/boost/fusion/support/ext_/is_segmented.hpp +++ b/include/boost/fusion/support/ext_/is_segmented.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2006 Eric Niebler - Use, modification and distribution is 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) + Distributed under the 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_IS_SEGMENTED_03202006_0015) #define FUSION_IS_SEGMENTED_03202006_0015 diff --git a/include/boost/fusion/support/is_iterator.hpp b/include/boost/fusion/support/is_iterator.hpp index 63020a4b..9e775f4e 100644 --- a/include/boost/fusion/support/is_iterator.hpp +++ b/include/boost/fusion/support/is_iterator.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_IS_ITERATOR_05062005_1219) #define FUSION_IS_ITERATOR_05062005_1219 diff --git a/include/boost/fusion/support/is_sequence.hpp b/include/boost/fusion/support/is_sequence.hpp index b13af130..84dc2ec1 100644 --- a/include/boost/fusion/support/is_sequence.hpp +++ b/include/boost/fusion/support/is_sequence.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_IS_SEQUENCE_05052005_1002) #define FUSION_IS_SEQUENCE_05052005_1002 diff --git a/include/boost/fusion/support/is_view.hpp b/include/boost/fusion/support/is_view.hpp index 3f97049d..a89291d1 100644 --- a/include/boost/fusion/support/is_view.hpp +++ b/include/boost/fusion/support/is_view.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_IS_VIEW_03202006_0015) #define FUSION_IS_VIEW_03202006_0015 diff --git a/include/boost/fusion/support/iterator_base.hpp b/include/boost/fusion/support/iterator_base.hpp index aa5e99ee..39d05c40 100644 --- a/include/boost/fusion/support/iterator_base.hpp +++ b/include/boost/fusion/support/iterator_base.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_ITERATOR_BASE_05042005_1008) #define FUSION_ITERATOR_BASE_05042005_1008 diff --git a/include/boost/fusion/support/pair.hpp b/include/boost/fusion/support/pair.hpp index 8cbc841d..67758071 100644 --- a/include/boost/fusion/support/pair.hpp +++ b/include/boost/fusion/support/pair.hpp @@ -2,9 +2,8 @@ Copyright (c) 2005 Joel de Guzman Copyright (c) 2006 Tobias Schwinger - Use, modification and distribution is 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) + Distributed under the 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_PAIR_07222005_1203) #define FUSION_PAIR_07222005_1203 diff --git a/include/boost/fusion/support/sequence_base.hpp b/include/boost/fusion/support/sequence_base.hpp index 9d5c558f..1a82848d 100644 --- a/include/boost/fusion/support/sequence_base.hpp +++ b/include/boost/fusion/support/sequence_base.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2007 Tobias Schwinger - Use, modification and distribution is 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) + Distributed under the 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_SEQUENCE_BASE_04182005_0737) #define FUSION_SEQUENCE_BASE_04182005_0737 diff --git a/include/boost/fusion/support/tag_of.hpp b/include/boost/fusion/support/tag_of.hpp index 33a954c0..ce8e0aeb 100644 --- a/include/boost/fusion/support/tag_of.hpp +++ b/include/boost/fusion/support/tag_of.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_TAG_OF_09232005_0845) #define FUSION_TAG_OF_09232005_0845 diff --git a/include/boost/fusion/support/tag_of_fwd.hpp b/include/boost/fusion/support/tag_of_fwd.hpp index 991c2576..053cacaf 100644 --- a/include/boost/fusion/support/tag_of_fwd.hpp +++ b/include/boost/fusion/support/tag_of_fwd.hpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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_TAG_OF_FWD_31122005_1445) #define BOOST_FUSION_TAG_OF_FWD_31122005_1445 diff --git a/include/boost/fusion/tuple.hpp b/include/boost/fusion/tuple.hpp index 3df7adef..c4b56b9e 100644 --- a/include/boost/fusion/tuple.hpp +++ b/include/boost/fusion/tuple.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_TUPLE_10032005_0806) #define FUSION_TUPLE_10032005_0806 diff --git a/include/boost/fusion/tuple/detail/tuple_forward_ctor.hpp b/include/boost/fusion/tuple/detail/tuple_forward_ctor.hpp index e69db42e..2ff20a2a 100644 --- a/include/boost/fusion/tuple/detail/tuple_forward_ctor.hpp +++ b/include/boost/fusion/tuple/detail/tuple_forward_ctor.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_PP_IS_ITERATING #if !defined(FUSION_TUPLE_FORWARD_CTOR_10032005_0815) diff --git a/include/boost/fusion/tuple/make_tuple.hpp b/include/boost/fusion/tuple/make_tuple.hpp index c6e58fc0..32fd912e 100644 --- a/include/boost/fusion/tuple/make_tuple.hpp +++ b/include/boost/fusion/tuple/make_tuple.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_PP_IS_ITERATING #if !defined(FUSION_MAKE_TUPLE_10032005_0843) diff --git a/include/boost/fusion/tuple/tuple.hpp b/include/boost/fusion/tuple/tuple.hpp index 1e3d9cca..a32e6b3e 100644 --- a/include/boost/fusion/tuple/tuple.hpp +++ b/include/boost/fusion/tuple/tuple.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2005 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_TUPLE_10032005_0810) #define FUSION_TUPLE_10032005_0810 diff --git a/include/boost/fusion/tuple/tuple_fwd.hpp b/include/boost/fusion/tuple/tuple_fwd.hpp index 272ce536..f3e660e5 100644 --- a/include/boost/fusion/tuple/tuple_fwd.hpp +++ b/include/boost/fusion/tuple/tuple_fwd.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2005 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_TUPLE_FORWARD_10032005_0956) #define FUSION_TUPLE_FORWARD_10032005_0956 diff --git a/include/boost/fusion/tuple/tuple_tie.hpp b/include/boost/fusion/tuple/tuple_tie.hpp index 2c5ed4cc..b6c21eff 100644 --- a/include/boost/fusion/tuple/tuple_tie.hpp +++ b/include/boost/fusion/tuple/tuple_tie.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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_PP_IS_ITERATING #if !defined(FUSION_TUPLE_TIE_10032005_0846) diff --git a/test/algorithm/all.cpp b/test/algorithm/all.cpp index 8cc75586..31fff013 100644 --- a/test/algorithm/all.cpp +++ b/test/algorithm/all.cpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/algorithm/any.cpp b/test/algorithm/any.cpp index 5b7ab2ed..2c437f7b 100644 --- a/test/algorithm/any.cpp +++ b/test/algorithm/any.cpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005 Eric Niebler - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/algorithm/clear.cpp b/test/algorithm/clear.cpp index 830e3821..309f3e28 100644 --- a/test/algorithm/clear.cpp +++ b/test/algorithm/clear.cpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/algorithm/count.cpp b/test/algorithm/count.cpp index 718427c2..ae6ccde6 100644 --- a/test/algorithm/count.cpp +++ b/test/algorithm/count.cpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005 Eric Niebler - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/algorithm/count_if.cpp b/test/algorithm/count_if.cpp index 3130cdc4..fa686fc2 100644 --- a/test/algorithm/count_if.cpp +++ b/test/algorithm/count_if.cpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005 Eric Niebler - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/algorithm/erase.cpp b/test/algorithm/erase.cpp index 97520964..efe7dcfe 100644 --- a/test/algorithm/erase.cpp +++ b/test/algorithm/erase.cpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/algorithm/erase_key.cpp b/test/algorithm/erase_key.cpp index 1540ff6e..d940714c 100644 --- a/test/algorithm/erase_key.cpp +++ b/test/algorithm/erase_key.cpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/algorithm/ext_/find_if_s.cpp b/test/algorithm/ext_/find_if_s.cpp index 8f5484ad..d57876e2 100755 --- a/test/algorithm/ext_/find_if_s.cpp +++ b/test/algorithm/ext_/find_if_s.cpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/algorithm/ext_/for_each_s.cpp b/test/algorithm/ext_/for_each_s.cpp index b0e28f7a..6758872c 100755 --- a/test/algorithm/ext_/for_each_s.cpp +++ b/test/algorithm/ext_/for_each_s.cpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman, Eric Niebler - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/algorithm/filter.cpp b/test/algorithm/filter.cpp index 196e37b8..21c93ed0 100644 --- a/test/algorithm/filter.cpp +++ b/test/algorithm/filter.cpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/algorithm/filter_if.cpp b/test/algorithm/filter_if.cpp index b8b80735..681d2bbd 100644 --- a/test/algorithm/filter_if.cpp +++ b/test/algorithm/filter_if.cpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/algorithm/find.cpp b/test/algorithm/find.cpp index 3bf4d1b3..1b913a73 100644 --- a/test/algorithm/find.cpp +++ b/test/algorithm/find.cpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/algorithm/find_if.cpp b/test/algorithm/find_if.cpp index 18e262b2..93c694cb 100644 --- a/test/algorithm/find_if.cpp +++ b/test/algorithm/find_if.cpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/algorithm/fold.cpp b/test/algorithm/fold.cpp index 61dc3e91..228204f1 100644 --- a/test/algorithm/fold.cpp +++ b/test/algorithm/fold.cpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/algorithm/for_each.cpp b/test/algorithm/for_each.cpp index 26a9831d..18ebbda9 100644 --- a/test/algorithm/for_each.cpp +++ b/test/algorithm/for_each.cpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/algorithm/insert.cpp b/test/algorithm/insert.cpp index da3858ad..8780636f 100644 --- a/test/algorithm/insert.cpp +++ b/test/algorithm/insert.cpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/algorithm/insert_range.cpp b/test/algorithm/insert_range.cpp index 030d194c..0aef1e81 100644 --- a/test/algorithm/insert_range.cpp +++ b/test/algorithm/insert_range.cpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/algorithm/join.cpp b/test/algorithm/join.cpp index 9a5ec800..39709c50 100644 --- a/test/algorithm/join.cpp +++ b/test/algorithm/join.cpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/algorithm/none.cpp b/test/algorithm/none.cpp index 00d355be..2e879cb9 100644 --- a/test/algorithm/none.cpp +++ b/test/algorithm/none.cpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/algorithm/pop_back.cpp b/test/algorithm/pop_back.cpp index 7f2b3438..5f9ebaf4 100644 --- a/test/algorithm/pop_back.cpp +++ b/test/algorithm/pop_back.cpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/algorithm/pop_front.cpp b/test/algorithm/pop_front.cpp index 0daea5cd..8e87a959 100644 --- a/test/algorithm/pop_front.cpp +++ b/test/algorithm/pop_front.cpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/algorithm/push_back.cpp b/test/algorithm/push_back.cpp index b2b1386a..94e013a3 100644 --- a/test/algorithm/push_back.cpp +++ b/test/algorithm/push_back.cpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/algorithm/push_front.cpp b/test/algorithm/push_front.cpp index c2c4dc70..dabdbf77 100644 --- a/test/algorithm/push_front.cpp +++ b/test/algorithm/push_front.cpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/algorithm/remove.cpp b/test/algorithm/remove.cpp index cdc69ff3..a0f20ba0 100644 --- a/test/algorithm/remove.cpp +++ b/test/algorithm/remove.cpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/algorithm/remove_if.cpp b/test/algorithm/remove_if.cpp index 8268e7f9..ee4ca848 100644 --- a/test/algorithm/remove_if.cpp +++ b/test/algorithm/remove_if.cpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/algorithm/replace.cpp b/test/algorithm/replace.cpp index afdbae0c..3ccf13b1 100644 --- a/test/algorithm/replace.cpp +++ b/test/algorithm/replace.cpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/algorithm/replace_if.cpp b/test/algorithm/replace_if.cpp index f2760b0e..01b2df8a 100644 --- a/test/algorithm/replace_if.cpp +++ b/test/algorithm/replace_if.cpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/algorithm/reverse.cpp b/test/algorithm/reverse.cpp index a2bbcacf..598edac0 100644 --- a/test/algorithm/reverse.cpp +++ b/test/algorithm/reverse.cpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/algorithm/transform.cpp b/test/algorithm/transform.cpp index e0cfdf34..c11bf258 100644 --- a/test/algorithm/transform.cpp +++ b/test/algorithm/transform.cpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/algorithm/zip.cpp b/test/algorithm/zip.cpp index bc403a53..eb60ba17 100644 --- a/test/algorithm/zip.cpp +++ b/test/algorithm/zip.cpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/algorithm/zip2.cpp b/test/algorithm/zip2.cpp index f7efbb7c..0823af0e 100644 --- a/test/algorithm/zip2.cpp +++ b/test/algorithm/zip2.cpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/array.cpp b/test/sequence/array.cpp index b9144baa..3a776d52 100644 --- a/test/sequence/array.cpp +++ b/test/sequence/array.cpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/as_list.cpp b/test/sequence/as_list.cpp index d21da3c4..aa45d469 100644 --- a/test/sequence/as_list.cpp +++ b/test/sequence/as_list.cpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/as_map.cpp b/test/sequence/as_map.cpp index 5b4fa6d7..b1b336fb 100644 --- a/test/sequence/as_map.cpp +++ b/test/sequence/as_map.cpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/as_set.cpp b/test/sequence/as_set.cpp index 2a093d9d..40488f32 100644 --- a/test/sequence/as_set.cpp +++ b/test/sequence/as_set.cpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/as_vector.cpp b/test/sequence/as_vector.cpp index 8360e2e0..b5c3425e 100644 --- a/test/sequence/as_vector.cpp +++ b/test/sequence/as_vector.cpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/back_extended_deque.cpp b/test/sequence/back_extended_deque.cpp index 2bd5b47c..f58dfdc6 100644 --- a/test/sequence/back_extended_deque.cpp +++ b/test/sequence/back_extended_deque.cpp @@ -3,9 +3,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/boost_tuple.cpp b/test/sequence/boost_tuple.cpp index 9fc93985..522686fd 100644 --- a/test/sequence/boost_tuple.cpp +++ b/test/sequence/boost_tuple.cpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/comparison.hpp b/test/sequence/comparison.hpp index b7378c66..429c93c6 100644 --- a/test/sequence/comparison.hpp +++ b/test/sequence/comparison.hpp @@ -2,9 +2,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/cons.cpp b/test/sequence/cons.cpp index 22a150f2..644ced5c 100644 --- a/test/sequence/cons.cpp +++ b/test/sequence/cons.cpp @@ -2,9 +2,8 @@ Copyright (c) 2005 Joel de Guzman Copyright (c) 2005 Eric Niebler - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/construction.hpp b/test/sequence/construction.hpp index 1b2c2aaf..a35e9d89 100644 --- a/test/sequence/construction.hpp +++ b/test/sequence/construction.hpp @@ -2,9 +2,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/copy.hpp b/test/sequence/copy.hpp index b29ea3a5..f47a0bca 100644 --- a/test/sequence/copy.hpp +++ b/test/sequence/copy.hpp @@ -2,13 +2,18 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 #if !defined(FUSION_AT) #define FUSION_AT at_c @@ -37,6 +42,24 @@ foo(int i) return boost::fusion::FUSION_MAKE(i, i+1, i+2, i+3); } +void test_mpl() +{ + using namespace boost::fusion; + + typedef FUSION_SEQUENCE seq; + + typedef + boost::mpl::insert_range< + boost::mpl::vector<> + , boost::mpl::end< boost::mpl::vector<> >::type + , seq + >::type + sequence; + + typedef boost::mpl::equal > equal; + BOOST_STATIC_ASSERT(equal::value); +} + void test() { @@ -67,7 +90,9 @@ test() BOOST_TEST(i==1); BOOST_TEST(c=='a'); BOOST_TEST(d>5.4 && d<5.6); - + // returning a tuple with conversion foo(2); + + test_mpl(); } diff --git a/test/sequence/deque_comparison.cpp b/test/sequence/deque_comparison.cpp index 156e82d8..2c6db999 100644 --- a/test/sequence/deque_comparison.cpp +++ b/test/sequence/deque_comparison.cpp @@ -3,9 +3,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/deque_construction.cpp b/test/sequence/deque_construction.cpp index 08e8d2f2..7ec3caff 100644 --- a/test/sequence/deque_construction.cpp +++ b/test/sequence/deque_construction.cpp @@ -3,9 +3,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/deque_copy.cpp b/test/sequence/deque_copy.cpp index 03401efd..6d3ee13f 100644 --- a/test/sequence/deque_copy.cpp +++ b/test/sequence/deque_copy.cpp @@ -3,9 +3,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/deque_iterator.cpp b/test/sequence/deque_iterator.cpp index be9137a0..414b94c5 100644 --- a/test/sequence/deque_iterator.cpp +++ b/test/sequence/deque_iterator.cpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/deque_make.cpp b/test/sequence/deque_make.cpp index 624446a3..dfdc681d 100644 --- a/test/sequence/deque_make.cpp +++ b/test/sequence/deque_make.cpp @@ -3,9 +3,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/deque_misc.cpp b/test/sequence/deque_misc.cpp index 91a75afa..01784c1e 100644 --- a/test/sequence/deque_misc.cpp +++ b/test/sequence/deque_misc.cpp @@ -3,9 +3,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/deque_mutate.cpp b/test/sequence/deque_mutate.cpp index 516a4b4d..8b56aeac 100644 --- a/test/sequence/deque_mutate.cpp +++ b/test/sequence/deque_mutate.cpp @@ -3,9 +3,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/deque_tie.cpp b/test/sequence/deque_tie.cpp index 42c2404f..2afb519f 100644 --- a/test/sequence/deque_tie.cpp +++ b/test/sequence/deque_tie.cpp @@ -3,9 +3,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/deque_value_at.cpp b/test/sequence/deque_value_at.cpp index a444118b..4a0a9ab3 100644 --- a/test/sequence/deque_value_at.cpp +++ b/test/sequence/deque_value_at.cpp @@ -3,9 +3,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/ext_/iterator_range_s.cpp b/test/sequence/ext_/iterator_range_s.cpp index ddbfd682..4f6ead43 100755 --- a/test/sequence/ext_/iterator_range_s.cpp +++ b/test/sequence/ext_/iterator_range_s.cpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/filter_view.cpp b/test/sequence/filter_view.cpp index 4d54166e..28dbb8a0 100644 --- a/test/sequence/filter_view.cpp +++ b/test/sequence/filter_view.cpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/front_extended_deque.cpp b/test/sequence/front_extended_deque.cpp index 51618d49..2afa6190 100644 --- a/test/sequence/front_extended_deque.cpp +++ b/test/sequence/front_extended_deque.cpp @@ -3,9 +3,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/io.cpp b/test/sequence/io.cpp index 3b101a53..3629ea39 100644 --- a/test/sequence/io.cpp +++ b/test/sequence/io.cpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (C) 1999-2003 Jaakko Järvi - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/iterator.hpp b/test/sequence/iterator.hpp index 629f9bfc..118bb347 100644 --- a/test/sequence/iterator.hpp +++ b/test/sequence/iterator.hpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/iterator_range.cpp b/test/sequence/iterator_range.cpp index dd1131be..1abaf0d5 100644 --- a/test/sequence/iterator_range.cpp +++ b/test/sequence/iterator_range.cpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/joint_view.cpp b/test/sequence/joint_view.cpp index 3457f076..eb108df1 100644 --- a/test/sequence/joint_view.cpp +++ b/test/sequence/joint_view.cpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/list_comparison.cpp b/test/sequence/list_comparison.cpp index 402bf704..19094687 100644 --- a/test/sequence/list_comparison.cpp +++ b/test/sequence/list_comparison.cpp @@ -2,9 +2,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/list_construction.cpp b/test/sequence/list_construction.cpp index fb412f16..83d748be 100644 --- a/test/sequence/list_construction.cpp +++ b/test/sequence/list_construction.cpp @@ -2,9 +2,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/list_copy.cpp b/test/sequence/list_copy.cpp index 673b1c42..68ae042f 100644 --- a/test/sequence/list_copy.cpp +++ b/test/sequence/list_copy.cpp @@ -2,9 +2,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/list_iterator.cpp b/test/sequence/list_iterator.cpp index 20e04383..515a6e0f 100644 --- a/test/sequence/list_iterator.cpp +++ b/test/sequence/list_iterator.cpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/list_make.cpp b/test/sequence/list_make.cpp index 03919708..55833b64 100644 --- a/test/sequence/list_make.cpp +++ b/test/sequence/list_make.cpp @@ -2,9 +2,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/list_misc.cpp b/test/sequence/list_misc.cpp index f113ed0d..c5ff71ca 100644 --- a/test/sequence/list_misc.cpp +++ b/test/sequence/list_misc.cpp @@ -2,9 +2,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/list_mutate.cpp b/test/sequence/list_mutate.cpp index fac31fb5..abfc9a3e 100644 --- a/test/sequence/list_mutate.cpp +++ b/test/sequence/list_mutate.cpp @@ -2,9 +2,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/list_tie.cpp b/test/sequence/list_tie.cpp index 950b75a7..e227edee 100644 --- a/test/sequence/list_tie.cpp +++ b/test/sequence/list_tie.cpp @@ -2,9 +2,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/list_value_at.cpp b/test/sequence/list_value_at.cpp index 47347d69..9bd3de69 100644 --- a/test/sequence/list_value_at.cpp +++ b/test/sequence/list_value_at.cpp @@ -2,9 +2,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/make.hpp b/test/sequence/make.hpp index f23f26a2..c6494474 100644 --- a/test/sequence/make.hpp +++ b/test/sequence/make.hpp @@ -2,9 +2,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/make_list.cpp b/test/sequence/make_list.cpp index 03919708..55833b64 100644 --- a/test/sequence/make_list.cpp +++ b/test/sequence/make_list.cpp @@ -2,9 +2,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/make_vector.cpp b/test/sequence/make_vector.cpp index ff80e84c..ffd06489 100644 --- a/test/sequence/make_vector.cpp +++ b/test/sequence/make_vector.cpp @@ -2,9 +2,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/map.cpp b/test/sequence/map.cpp index bef6880c..b170158d 100644 --- a/test/sequence/map.cpp +++ b/test/sequence/map.cpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/misc.hpp b/test/sequence/misc.hpp index 279c91ee..01ee773d 100644 --- a/test/sequence/misc.hpp +++ b/test/sequence/misc.hpp @@ -2,9 +2,8 @@ Copyright (C) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/mutate.hpp b/test/sequence/mutate.hpp index c713b349..d50d84d0 100644 --- a/test/sequence/mutate.hpp +++ b/test/sequence/mutate.hpp @@ -2,9 +2,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/reverse_view.cpp b/test/sequence/reverse_view.cpp index 50b445b7..3cc2bf91 100644 --- a/test/sequence/reverse_view.cpp +++ b/test/sequence/reverse_view.cpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/set.cpp b/test/sequence/set.cpp index 08c86833..c658380e 100644 --- a/test/sequence/set.cpp +++ b/test/sequence/set.cpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/single_view.cpp b/test/sequence/single_view.cpp index 6aec1d8b..fd1d1341 100644 --- a/test/sequence/single_view.cpp +++ b/test/sequence/single_view.cpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/std_pair.cpp b/test/sequence/std_pair.cpp index 2f8536a2..d0434821 100644 --- a/test/sequence/std_pair.cpp +++ b/test/sequence/std_pair.cpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/tie.hpp b/test/sequence/tie.hpp index 0e086e2d..6097ef8e 100644 --- a/test/sequence/tie.hpp +++ b/test/sequence/tie.hpp @@ -2,9 +2,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/transform_view.cpp b/test/sequence/transform_view.cpp index d89b439a..f8375a92 100644 --- a/test/sequence/transform_view.cpp +++ b/test/sequence/transform_view.cpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/tuple_comparison.cpp b/test/sequence/tuple_comparison.cpp index 3a98b28a..fde2ad47 100644 --- a/test/sequence/tuple_comparison.cpp +++ b/test/sequence/tuple_comparison.cpp @@ -2,9 +2,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/tuple_construction.cpp b/test/sequence/tuple_construction.cpp index 888a5cd4..0d357002 100644 --- a/test/sequence/tuple_construction.cpp +++ b/test/sequence/tuple_construction.cpp @@ -2,9 +2,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/tuple_copy.cpp b/test/sequence/tuple_copy.cpp index fc9a100a..9a4d80e1 100644 --- a/test/sequence/tuple_copy.cpp +++ b/test/sequence/tuple_copy.cpp @@ -2,9 +2,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/tuple_element.cpp b/test/sequence/tuple_element.cpp index cf61f953..496fd6e1 100644 --- a/test/sequence/tuple_element.cpp +++ b/test/sequence/tuple_element.cpp @@ -2,9 +2,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/tuple_make.cpp b/test/sequence/tuple_make.cpp index e8dcbbfb..77ff412f 100644 --- a/test/sequence/tuple_make.cpp +++ b/test/sequence/tuple_make.cpp @@ -2,9 +2,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/tuple_misc.cpp b/test/sequence/tuple_misc.cpp index 1f04095e..704ebd3a 100644 --- a/test/sequence/tuple_misc.cpp +++ b/test/sequence/tuple_misc.cpp @@ -2,9 +2,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/tuple_mutate.cpp b/test/sequence/tuple_mutate.cpp index ba72edbc..8770b520 100644 --- a/test/sequence/tuple_mutate.cpp +++ b/test/sequence/tuple_mutate.cpp @@ -2,9 +2,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/tuple_tie.cpp b/test/sequence/tuple_tie.cpp index 85c69d96..e91c47a3 100644 --- a/test/sequence/tuple_tie.cpp +++ b/test/sequence/tuple_tie.cpp @@ -2,9 +2,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/value_at.hpp b/test/sequence/value_at.hpp index f17c7f35..d655f13e 100644 --- a/test/sequence/value_at.hpp +++ b/test/sequence/value_at.hpp @@ -2,9 +2,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/variant.cpp b/test/sequence/variant.cpp index 45c08557..b4feee13 100644 --- a/test/sequence/variant.cpp +++ b/test/sequence/variant.cpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/vector_comparison.cpp b/test/sequence/vector_comparison.cpp index ef8e750e..0a7ae781 100644 --- a/test/sequence/vector_comparison.cpp +++ b/test/sequence/vector_comparison.cpp @@ -2,9 +2,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/vector_construction.cpp b/test/sequence/vector_construction.cpp index cabec110..4f1eaa02 100644 --- a/test/sequence/vector_construction.cpp +++ b/test/sequence/vector_construction.cpp @@ -2,9 +2,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/vector_copy.cpp b/test/sequence/vector_copy.cpp index 997ad089..e554a768 100644 --- a/test/sequence/vector_copy.cpp +++ b/test/sequence/vector_copy.cpp @@ -2,9 +2,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/vector_iterator.cpp b/test/sequence/vector_iterator.cpp index a04f642e..662466fa 100644 --- a/test/sequence/vector_iterator.cpp +++ b/test/sequence/vector_iterator.cpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/vector_make.cpp b/test/sequence/vector_make.cpp index ff80e84c..ffd06489 100644 --- a/test/sequence/vector_make.cpp +++ b/test/sequence/vector_make.cpp @@ -2,9 +2,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/vector_misc.cpp b/test/sequence/vector_misc.cpp index c40b5b62..e2a22fb7 100644 --- a/test/sequence/vector_misc.cpp +++ b/test/sequence/vector_misc.cpp @@ -2,9 +2,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/vector_mutate.cpp b/test/sequence/vector_mutate.cpp index 151c32c5..60a410b7 100644 --- a/test/sequence/vector_mutate.cpp +++ b/test/sequence/vector_mutate.cpp @@ -2,9 +2,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/vector_n.cpp b/test/sequence/vector_n.cpp index 4c02a2a3..e7ff4ad3 100644 --- a/test/sequence/vector_n.cpp +++ b/test/sequence/vector_n.cpp @@ -1,9 +1,8 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/vector_tie.cpp b/test/sequence/vector_tie.cpp index 272421dc..348e235c 100644 --- a/test/sequence/vector_tie.cpp +++ b/test/sequence/vector_tie.cpp @@ -2,9 +2,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/vector_value_at.cpp b/test/sequence/vector_value_at.cpp index 97859bcd..e4aa9ac4 100644 --- a/test/sequence/vector_value_at.cpp +++ b/test/sequence/vector_value_at.cpp @@ -2,9 +2,8 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/zip_view.cpp b/test/sequence/zip_view.cpp index e4b3fa9a..485760cd 100644 --- a/test/sequence/zip_view.cpp +++ b/test/sequence/zip_view.cpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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 diff --git a/test/sequence/zip_view2.cpp b/test/sequence/zip_view2.cpp index b4054c38..c8c42e1e 100644 --- a/test/sequence/zip_view2.cpp +++ b/test/sequence/zip_view2.cpp @@ -2,9 +2,8 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - Use, modification and distribution is 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) + Distributed under the 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 From fad42340adc45d7863b37c746870b7d65cd59882 Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Tue, 6 Mar 2007 21:26:54 +0000 Subject: [PATCH 105/234] zip ignore capabilities [SVN r37149] --- test/Jamfile | 1 + test/sequence/zip_view_ignore.cpp | 58 +++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 test/sequence/zip_view_ignore.cpp diff --git a/test/Jamfile b/test/Jamfile index 44faad7d..88c225c8 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -102,6 +102,7 @@ import testing ; [ run sequence/vector_value_at.cpp : : : : ] [ run sequence/zip_view.cpp : : : : ] [ run sequence/zip_view2.cpp : : : : ] + [ run sequence/zip_view_ignore.cpp : : : : ] [ run sequence/deduce_sequence.cpp : : : : ] [ run functional/fused.cpp : : : : ] [ run functional/fused_function_object.cpp : : : : ] diff --git a/test/sequence/zip_view_ignore.cpp b/test/sequence/zip_view_ignore.cpp new file mode 100644 index 00000000..5eb3bf39 --- /dev/null +++ b/test/sequence/zip_view_ignore.cpp @@ -0,0 +1,58 @@ +/*============================================================================= + Copyright (c) 2001-2007 Joel de Guzman + Copyright (c) 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) +==============================================================================*/ +#include +#include +#include +#include +#include +#include + +#include +#include + +int main() +{ + using namespace boost::fusion; + { + typedef vector2 int_vector; + typedef vector2 char_vector; + typedef vector seqs_type; + typedef zip_view view; + + int_vector iv(1,2); + char_vector cv('a','b'); + seqs_type seq(iv, unused, cv); + view v(seq); + + BOOST_TEST(at_c<0>(front(v)) == 1); + BOOST_TEST(at_c<2>(front(v)) == 'a'); + BOOST_TEST(at_c<0>(back(v)) == 2); + BOOST_TEST(at_c<2>(back(v)) == 'b'); + + typedef result_of::begin::type first_iterator; + typedef result_of::value_of::type first_element; + + typedef result_of::at_c::type e0; + typedef result_of::at_c::type e2; + BOOST_MPL_ASSERT((boost::is_same)); + BOOST_MPL_ASSERT((boost::is_same)); + + BOOST_TEST(size(front(v)) == 3); + + typedef result_of::value_at_c::type first_value_at; + typedef result_of::value_at_c::type v0; + typedef result_of::value_at_c::type v2; + + BOOST_MPL_ASSERT((boost::is_same)); + BOOST_MPL_ASSERT((boost::is_same)); + + BOOST_TEST(at_c<0>(at_c<0>(v)) == 1); + BOOST_TEST(at_c<2>(at_c<0>(v)) == 'a'); + } + return boost::report_errors(); +} From d1cc519a4412ee8e350f73b15bb4ef353f9b0664 Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Tue, 6 Mar 2007 21:37:26 +0000 Subject: [PATCH 106/234] unused entries in zip [SVN r37150] --- .../sequence/view/zip_view/detail/at_impl.hpp | 14 ++++- .../view/zip_view/detail/begin_impl.hpp | 12 +++- .../view/zip_view/detail/deref_impl.hpp | 13 +++- .../view/zip_view/detail/end_impl.hpp | 24 ++++++- .../view/zip_view/detail/next_impl.hpp | 13 +++- .../view/zip_view/detail/prior_impl.hpp | 13 +++- .../view/zip_view/detail/value_at_impl.hpp | 8 ++- .../view/zip_view/detail/value_of_impl.hpp | 8 ++- .../sequence/view/zip_view/zip_view.hpp | 7 ++- include/boost/fusion/support.hpp | 1 + include/boost/fusion/support/unused.hpp | 62 +++++++++++++++++++ 11 files changed, 163 insertions(+), 12 deletions(-) create mode 100644 include/boost/fusion/support/unused.hpp diff --git a/include/boost/fusion/sequence/view/zip_view/detail/at_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/at_impl.hpp index ff16e9bd..353fb5eb 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/at_impl.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/at_impl.hpp @@ -15,6 +15,11 @@ #include #include #include +#include +#include +#include +#include + namespace boost { namespace fusion { @@ -27,7 +32,9 @@ namespace boost { namespace fusion { template struct result - : result_of::at::type, N> + : mpl::eval_if, + mpl::identity, + result_of::at::type, N> > { BOOST_MPL_ASSERT((is_reference)); }; @@ -45,6 +52,11 @@ namespace boost { namespace fusion { return fusion::at(seq); } + + unused_type operator()(unused_type const&) const + { + return unused_type(); + } }; } diff --git a/include/boost/fusion/sequence/view/zip_view/detail/begin_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/begin_impl.hpp index 744052c7..37ed2a8d 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/begin_impl.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/begin_impl.hpp @@ -13,7 +13,11 @@ #include #include #include +#include #include +#include +#include +#include namespace boost { namespace fusion { @@ -25,7 +29,9 @@ namespace boost { namespace fusion { { template struct result - : result_of::begin::type> + : mpl::eval_if, + mpl::identity, + result_of::begin::type> > { BOOST_MPL_ASSERT((is_reference)); }; @@ -44,6 +50,10 @@ namespace boost { namespace fusion { return fusion::begin(seq); } + unused_type operator()(unused_type const&) const + { + return unused_type(); + } }; } diff --git a/include/boost/fusion/sequence/view/zip_view/detail/deref_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/deref_impl.hpp index 0d263e25..ee7399fc 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/deref_impl.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/deref_impl.hpp @@ -12,6 +12,10 @@ #include #include #include +#include +#include +#include +#include namespace boost { namespace fusion { @@ -23,7 +27,9 @@ namespace boost { namespace fusion { { template struct result - : result_of::deref + : mpl::eval_if, + mpl::identity, + result_of::deref > {}; template @@ -32,6 +38,11 @@ namespace boost { namespace fusion { { return fusion::deref(it); } + + unused_type operator()(unused_type const&) const + { + return unused_type(); + } }; } diff --git a/include/boost/fusion/sequence/view/zip_view/detail/end_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/end_impl.hpp index 40c05f89..9f4b66cc 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/end_impl.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/end_impl.hpp @@ -20,21 +20,34 @@ #include #include +#include +#include +#include + namespace boost { namespace fusion { struct zip_view_tag; namespace detail { + template + struct get_endpoint + { + typedef typename remove_reference::type Seq; + typedef typename result_of::begin::type begin; + typedef typename result_of::advance::type type; + }; + template struct endpoints { template struct result + : mpl::eval_if, + mpl::identity, + get_endpoint > { - typedef typename remove_reference::type Seq; - typedef typename result_of::begin::type begin; - typedef typename result_of::advance::type type; + BOOST_MPL_ASSERT((is_reference)); }; template @@ -50,6 +63,11 @@ namespace boost { namespace fusion { { return fusion::advance(fusion::begin(seq)); } + + unused_type operator()(unused_type const&) const + { + return unused_type(); + } }; } diff --git a/include/boost/fusion/sequence/view/zip_view/detail/next_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/next_impl.hpp index b2fb781f..b5b6e60d 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/next_impl.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/next_impl.hpp @@ -11,6 +11,10 @@ #include #include #include +#include +#include +#include +#include namespace boost { namespace fusion { @@ -22,7 +26,9 @@ namespace boost { namespace fusion { { template struct result - : result_of::next + : mpl::eval_if, + mpl::identity, + result_of::next > {}; template @@ -31,6 +37,11 @@ namespace boost { namespace fusion { { return fusion::next(it); } + + unused_type operator()(unused_type const&) const + { + return unused_type(); + } }; } diff --git a/include/boost/fusion/sequence/view/zip_view/detail/prior_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/prior_impl.hpp index 9c8b8146..c174e0cc 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/prior_impl.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/prior_impl.hpp @@ -11,6 +11,10 @@ #include #include #include +#include +#include +#include +#include namespace boost { namespace fusion { @@ -22,7 +26,9 @@ namespace boost { namespace fusion { { template struct result - : result_of::prior + : mpl::eval_if, + mpl::identity, + result_of::prior > {}; template @@ -31,6 +37,11 @@ namespace boost { namespace fusion { { return fusion::prior(it); } + + unused_type operator()(unused_type const&) const + { + return unused_type(); + } }; } diff --git a/include/boost/fusion/sequence/view/zip_view/detail/value_at_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/value_at_impl.hpp index d0f2f44d..1fb298ec 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/value_at_impl.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/value_at_impl.hpp @@ -12,6 +12,10 @@ #include #include #include +#include +#include +#include +#include namespace boost { namespace fusion { @@ -24,7 +28,9 @@ namespace boost { namespace fusion { { template struct result - : result_of::value_at::type, N> + : mpl::eval_if, + mpl::identity, + result_of::value_at::type, N> > {}; }; } diff --git a/include/boost/fusion/sequence/view/zip_view/detail/value_of_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/value_of_impl.hpp index 7f55d8fa..e8237ec1 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/value_of_impl.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/value_of_impl.hpp @@ -12,6 +12,10 @@ #include #include #include +#include +#include +#include +#include namespace boost { namespace fusion { @@ -23,7 +27,9 @@ namespace boost { namespace fusion { { template struct result - : result_of::value_of + : mpl::eval_if, + mpl::identity, + result_of::value_of > {}; }; } diff --git a/include/boost/fusion/sequence/view/zip_view/zip_view.hpp b/include/boost/fusion/sequence/view/zip_view/zip_view.hpp index 2d1892b1..f3bc5cd9 100644 --- a/include/boost/fusion/sequence/view/zip_view/zip_view.hpp +++ b/include/boost/fusion/sequence/view/zip_view/zip_view.hpp @@ -9,6 +9,7 @@ #define FUSION_ZIP_VIEW_23012006_0813 #include +#include #include #include #include @@ -21,6 +22,7 @@ #include #include #include +#include #include #include @@ -73,13 +75,14 @@ namespace boost { namespace fusion { template struct zip_view : sequence_base< zip_view > { + typedef typename result_of::remove::type real_sequences; BOOST_MPL_ASSERT((detail::all_references)); - typedef typename detail::strictest_traversal::type category; + typedef typename detail::strictest_traversal::type category; typedef zip_view_tag fusion_tag; typedef fusion_sequence_tag tag; // this gets picked up by MPL typedef mpl::true_ is_view; typedef typename fusion::result_of::as_vector::type sequences; - typedef typename detail::min_size::type size; + typedef typename detail::min_size::type size; zip_view( const Sequences& seqs) diff --git a/include/boost/fusion/support.hpp b/include/boost/fusion/support.hpp index ba652d7d..012ee107 100644 --- a/include/boost/fusion/support.hpp +++ b/include/boost/fusion/support.hpp @@ -17,5 +17,6 @@ #include #include #include +#include #endif diff --git a/include/boost/fusion/support/unused.hpp b/include/boost/fusion/support/unused.hpp new file mode 100644 index 00000000..dc2014ec --- /dev/null +++ b/include/boost/fusion/support/unused.hpp @@ -0,0 +1,62 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Distributed under the 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_SUPPORT_UNUSED_20070305_1038) +#define BOOST_FUSION_SUPPORT_UNUSED_20070305_1038 + +#include +#if defined(BOOST_MSVC) +# pragma warning(push) +# pragma warning(disable: 4522) // multiple assignment operators specified warning +#endif + +namespace boost { namespace fusion { + struct unused_type + { + unused_type() + { + } + + template + unused_type(T const&) + { + } + + template + unused_type const& + operator=(T const&) const + { + return *this; + } + + template + unused_type& + operator=(T const&) + { + return *this; + } + + unused_type const& + operator=(unused_type const&) const + { + return *this; + } + + unused_type& + operator=(unused_type const&) + { + return *this; + } + }; + + unused_type const unused = unused_type(); +}} + +#if defined(BOOST_MSVC) +# pragma warning(pop) +#endif + +#endif From 74724c32dd76dd46add430f75e7c032320633202 Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Tue, 6 Mar 2007 21:51:06 +0000 Subject: [PATCH 107/234] testing the zip algorithm with unused arg [SVN r37151] --- test/Jamfile | 1 + test/algorithm/zip_ignore.cpp | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 test/algorithm/zip_ignore.cpp diff --git a/test/Jamfile b/test/Jamfile index 88c225c8..4c50e0a4 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -41,6 +41,7 @@ import testing ; [ run algorithm/join.cpp : : : : ] [ run algorithm/zip.cpp : : : : ] [ run algorithm/zip2.cpp : : : : ] + [ run algorithm/zip_ignore.cpp : : : : ] [ run sequence/as_list.cpp : : : : ] [ run sequence/as_map.cpp : : : : ] diff --git a/test/algorithm/zip_ignore.cpp b/test/algorithm/zip_ignore.cpp new file mode 100644 index 00000000..cd71ed44 --- /dev/null +++ b/test/algorithm/zip_ignore.cpp @@ -0,0 +1,28 @@ +/*============================================================================= + Copyright (c) 2001-2007 Joel de Guzman + Copyright (c) 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) +==============================================================================*/ +#include +#include +#include +#include +#include +#include + +int main() +{ + using namespace boost::fusion; + { + vector iv(1,2); + vector cv('a', 'b'); + BOOST_TEST(at_c<0>(at_c<0>(zip(iv, unused, cv))) == 1); + BOOST_TEST(at_c<2>(at_c<0>(zip(iv, unused, cv))) == 'a'); + + BOOST_TEST(at_c<0>(at_c<1>(zip(iv, unused, cv))) == 2); + BOOST_TEST(at_c<2>(at_c<1>(zip(iv, unused, cv))) == 'b'); + } + return boost::report_errors(); +} From 8f51212782eb702ba2d64f4b7a4a64864b29964c Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Fri, 16 Mar 2007 14:49:48 +0000 Subject: [PATCH 108/234] fix missing include [SVN r37199] --- include/boost/fusion/sequence/io/in.hpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/boost/fusion/sequence/io/in.hpp b/include/boost/fusion/sequence/io/in.hpp index 5ce51ffb..039190eb 100644 --- a/include/boost/fusion/sequence/io/in.hpp +++ b/include/boost/fusion/sequence/io/in.hpp @@ -3,7 +3,7 @@ Copyright (c) 1999-2003 Jeremiah Willcock Copyright (c) 2001-2006 Joel de Guzman - 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_IN_05042005_0120) @@ -11,7 +11,7 @@ #include #include -#include +#include namespace boost { namespace fusion { @@ -22,7 +22,7 @@ namespace boost { namespace fusion detail::read_sequence(is, seq); return is; } - + namespace operators { template From 41b16b8717ade01bf19cd25227b850a858b3cc98 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Fri, 16 Mar 2007 15:10:55 +0000 Subject: [PATCH 109/234] iterator_range can't be more than a forward sequence, until we implement more intrinsics [SVN r37200] --- .../fusion/sequence/view/iterator_range/iterator_range.hpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/include/boost/fusion/sequence/view/iterator_range/iterator_range.hpp b/include/boost/fusion/sequence/view/iterator_range/iterator_range.hpp index 5fc009f2..dd9eae8f 100644 --- a/include/boost/fusion/sequence/view/iterator_range/iterator_range.hpp +++ b/include/boost/fusion/sequence/view/iterator_range/iterator_range.hpp @@ -31,7 +31,9 @@ namespace boost { namespace fusion typedef typename result_of::distance::type size; typedef mpl::true_ is_view; - typedef typename traits::category_of::type category; + typedef forward_traversal_tag category; + // typedef typename traits::category_of::type category; + // TODO: make it work - tosh iterator_range(First const& first, Last const& last) : first(convert_iterator::call(first)) From 798ebd7593c91c825bada665147deef4815d65f7 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Fri, 16 Mar 2007 15:14:46 +0000 Subject: [PATCH 110/234] updates hopelessly outdated version (from pre-CVS era of fusion/functional) [SVN r37201] --- example/cookbook/do_the_bind.cpp | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/example/cookbook/do_the_bind.cpp b/example/cookbook/do_the_bind.cpp index a391fa62..1967e956 100644 --- a/example/cookbook/do_the_bind.cpp +++ b/example/cookbook/do_the_bind.cpp @@ -22,10 +22,10 @@ form. ==============================================================================*/ -#include -#include -#include -#include +#include +#include +#include +#include #include #include @@ -49,6 +49,7 @@ namespace impl { namespace fusion = boost::fusion; + namespace traits = boost::fusion::traits; namespace result_of = boost::fusion::result_of; namespace mpl = boost::mpl; using mpl::placeholders::_; @@ -103,7 +104,9 @@ namespace impl // returned by bind template class fused_bound_function { - BindArgs fsq_bind_args; + typedef typename traits::deduce_sequence::type bound_args; + + bound_args fsq_bind_args; public: fused_bound_function(BindArgs const & bind_args) @@ -113,15 +116,15 @@ namespace impl template ::value && - !! mpl::count_if >::value) > + !! mpl::count_if >::value) > struct result { }; template struct result - : result_of::invoke< typename result_of::front::type, + : result_of::invoke< typename result_of::front::type, typename result_of::transform< - typename result_of::pop_front::type, + typename result_of::pop_front::type, argument_transform const >::type > @@ -147,8 +150,8 @@ namespace impl { // We have to transform the arguments so they are held by-value // in the returned function. - typedef fusion::unfused_generic< fused_bound_function< - typename fusion::storable_arguments::type > > type; + typedef fusion::unfused_generic< + fused_bound_function > type; }; template From e82ddaed3896c42c63987da98f916f13a6af5e12 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Mon, 19 Mar 2007 18:13:24 +0000 Subject: [PATCH 111/234] support for sequences weaker than Forward Sequence [SVN r37230] --- .../zip_view/detail/strictest_traversal.hpp | 33 +++++++++---------- .../sequence/view/zip_view/zip_view.hpp | 15 +++++++-- 2 files changed, 28 insertions(+), 20 deletions(-) diff --git a/include/boost/fusion/sequence/view/zip_view/detail/strictest_traversal.hpp b/include/boost/fusion/sequence/view/zip_view/detail/strictest_traversal.hpp index 33ff347e..b6c43fa9 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/strictest_traversal.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/strictest_traversal.hpp @@ -15,7 +15,7 @@ #include #include #include -#include +#include namespace boost { namespace fusion { @@ -25,6 +25,19 @@ namespace boost { namespace fusion { namespace detail { + template::value> + struct stricter_traversal + { + typedef Tag1 type; + }; + + template + struct stricter_traversal + { + typedef Tag2 type; + }; + template struct strictest_traversal_impl { @@ -32,23 +45,7 @@ namespace boost { namespace fusion { typedef typename traits::category_of< typename remove_reference::type>::type tag2; - typedef typename mpl::or_< - is_same, - is_same >::type - has_forward_traversal; - - typedef typename mpl::or_< - is_same, - is_same >::type - has_bidirectional_traversal; - - typedef typename mpl::if_< - has_forward_traversal, - forward_traversal_tag, - typename mpl::if_< - has_bidirectional_traversal, - bidirectional_traversal_tag, - random_access_traversal_tag>::type>::type type; + typedef typename stricter_traversal::type type; }; template diff --git a/include/boost/fusion/sequence/view/zip_view/zip_view.hpp b/include/boost/fusion/sequence/view/zip_view/zip_view.hpp index f3bc5cd9..9668abed 100644 --- a/include/boost/fusion/sequence/view/zip_view/zip_view.hpp +++ b/include/boost/fusion/sequence/view/zip_view/zip_view.hpp @@ -47,10 +47,21 @@ namespace boost { namespace fusion { struct seq_ref_size { - template + template::type, + bool HasSize = traits::is_forward::value + > struct result - : result_of::size::type> + : result_of::size {}; + + static int const int_max = static_cast( + static_cast(~0) >> 1); + + template + struct result + : mpl::int_ + {}; }; struct poly_min From 324923acc2b68a4f381d8a11fb9b98a41ab7e45c Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Mon, 19 Mar 2007 18:16:21 +0000 Subject: [PATCH 112/234] changes is_convertible [SVN r37231] --- include/boost/fusion/functional/invocation/invoke.hpp | 5 +---- .../fusion/functional/invocation/invoke_function_object.hpp | 6 +----- .../boost/fusion/functional/invocation/invoke_procedure.hpp | 6 +----- 3 files changed, 3 insertions(+), 14 deletions(-) diff --git a/include/boost/fusion/functional/invocation/invoke.hpp b/include/boost/fusion/functional/invocation/invoke.hpp index 61e09b39..4e156d20 100644 --- a/include/boost/fusion/functional/invocation/invoke.hpp +++ b/include/boost/fusion/functional/invocation/invoke.hpp @@ -82,10 +82,7 @@ namespace boost { namespace fusion int N = result_of::size::value, bool CBI = ft::is_callable_builtin::value, bool MFP = ft::is_member_function_pointer::value, - bool RandomAccess = boost::is_convertible< - typename traits::category_of::type, - fusion::random_access_traversal_tag - >::value + bool RandomAccess = traits::is_random_access::value > struct invoke_impl { diff --git a/include/boost/fusion/functional/invocation/invoke_function_object.hpp b/include/boost/fusion/functional/invocation/invoke_function_object.hpp index 92908b99..b4372b23 100644 --- a/include/boost/fusion/functional/invocation/invoke_function_object.hpp +++ b/include/boost/fusion/functional/invocation/invoke_function_object.hpp @@ -19,7 +19,6 @@ #include -#include #include #include @@ -53,10 +52,7 @@ namespace boost { namespace fusion template< class Function, class Sequence, int N = result_of::size::value, - bool RandomAccess = boost::is_convertible< - typename traits::category_of::type, - fusion::random_access_traversal_tag - >::value + bool RandomAccess = traits::is_random_access::value > struct invoke_function_object_impl { diff --git a/include/boost/fusion/functional/invocation/invoke_procedure.hpp b/include/boost/fusion/functional/invocation/invoke_procedure.hpp index db0b029e..3e68f276 100644 --- a/include/boost/fusion/functional/invocation/invoke_procedure.hpp +++ b/include/boost/fusion/functional/invocation/invoke_procedure.hpp @@ -31,7 +31,6 @@ #include -#include #include #include @@ -72,10 +71,7 @@ namespace boost { namespace fusion int N = result_of::size::value, bool CBI = ft::is_callable_builtin::value, bool MFP = ft::is_member_function_pointer::value, - bool RandomAccess = boost::is_convertible< - typename traits::category_of::type, - fusion::random_access_traversal_tag - >::value + bool RandomAccess = traits::is_random_access::value > struct invoke_procedure_impl { From 29a57477e07b7192617f5346feb157da255bff99 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Mon, 19 Mar 2007 19:03:41 +0000 Subject: [PATCH 113/234] adds intrinsics to support the concept of the underlying sequence [SVN r37232] --- .../view/iterator_range/detail/at_impl.hpp | 44 +++++++++++++++++++ .../iterator_range/detail/value_at_impl.hpp | 38 ++++++++++++++++ .../view/iterator_range/iterator_range.hpp | 6 +-- 3 files changed, 85 insertions(+), 3 deletions(-) create mode 100644 include/boost/fusion/sequence/view/iterator_range/detail/at_impl.hpp create mode 100644 include/boost/fusion/sequence/view/iterator_range/detail/value_at_impl.hpp diff --git a/include/boost/fusion/sequence/view/iterator_range/detail/at_impl.hpp b/include/boost/fusion/sequence/view/iterator_range/detail/at_impl.hpp new file mode 100644 index 00000000..5f882aaa --- /dev/null +++ b/include/boost/fusion/sequence/view/iterator_range/detail/at_impl.hpp @@ -0,0 +1,44 @@ +/*============================================================================= + Copyright (c) 2007 Tobias Schwinger + + Distributed under the 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_ITERATOR_RANGE_AT_IMPL_HPP_INCLUDED) +#define BOOST_FUSION_ITERATOR_RANGE_AT_IMPL_HPP_INCLUDED + +#include +#include + +namespace boost { namespace fusion +{ + struct iterator_range_tag; + + namespace extension + { + template + struct at_impl; + + template <> + struct at_impl + { + template + struct apply + { + typedef typename Seq::begin_type begin_type; + typedef typename result_of::advance::type pos; + typedef typename result_of::deref::type type; + + static type + call(Seq& s) + { + return * advance(s.first); + } + }; + }; + } +}} + +#endif + diff --git a/include/boost/fusion/sequence/view/iterator_range/detail/value_at_impl.hpp b/include/boost/fusion/sequence/view/iterator_range/detail/value_at_impl.hpp new file mode 100644 index 00000000..b6fe8881 --- /dev/null +++ b/include/boost/fusion/sequence/view/iterator_range/detail/value_at_impl.hpp @@ -0,0 +1,38 @@ +/*============================================================================= + Copyright (c) 2007 Tobias Schwinger + + Distributed under the 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_ITERATOR_RANGE_VALUE_AT_IMPL_HPP_INCLUDED) +#define BOOST_FUSION_ITERATOR_RANGE_VALUE_AT_IMPL_HPP_INCLUDED + +#include +#include + +namespace boost { namespace fusion +{ + struct iterator_range_tag; + + namespace extension + { + template + struct value_at_impl; + + template <> + struct value_at_impl + { + template + struct apply + { + typedef typename Seq::begin_type begin_type; + typedef typename result_of::advance::type pos; + typedef typename result_of::value_of::type type; + }; + }; + } +}} + +#endif + diff --git a/include/boost/fusion/sequence/view/iterator_range/iterator_range.hpp b/include/boost/fusion/sequence/view/iterator_range/iterator_range.hpp index dd9eae8f..dee6c00a 100644 --- a/include/boost/fusion/sequence/view/iterator_range/iterator_range.hpp +++ b/include/boost/fusion/sequence/view/iterator_range/iterator_range.hpp @@ -12,6 +12,8 @@ #include #include #include +#include +#include #include #include #include @@ -31,9 +33,7 @@ namespace boost { namespace fusion typedef typename result_of::distance::type size; typedef mpl::true_ is_view; - typedef forward_traversal_tag category; - // typedef typename traits::category_of::type category; - // TODO: make it work - tosh + typedef typename traits::category_of::type category; iterator_range(First const& first, Last const& last) : first(convert_iterator::call(first)) From fd64eec23d5952bca457ea52f2ccd61eda166138 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Mon, 19 Mar 2007 21:03:35 +0000 Subject: [PATCH 114/234] adds repetitive_view [SVN r37233] --- .../fusion/sequence/view/repetitive_view.hpp | 15 ++++ .../repetitive_view/detail/begin_impl.hpp | 49 ++++++++++ .../repetitive_view/detail/deref_impl.hpp | 44 +++++++++ .../view/repetitive_view/detail/end_impl.hpp | 49 ++++++++++ .../view/repetitive_view/detail/next_impl.hpp | 90 +++++++++++++++++++ .../repetitive_view/detail/value_of_impl.hpp | 34 +++++++ .../view/repetitive_view/repetitive_view.hpp | 48 ++++++++++ .../repetitive_view/repetitive_view_fwd.hpp | 19 ++++ .../repetitive_view_iterator.hpp | 50 +++++++++++ 9 files changed, 398 insertions(+) create mode 100644 include/boost/fusion/sequence/view/repetitive_view.hpp create mode 100644 include/boost/fusion/sequence/view/repetitive_view/detail/begin_impl.hpp create mode 100644 include/boost/fusion/sequence/view/repetitive_view/detail/deref_impl.hpp create mode 100644 include/boost/fusion/sequence/view/repetitive_view/detail/end_impl.hpp create mode 100644 include/boost/fusion/sequence/view/repetitive_view/detail/next_impl.hpp create mode 100644 include/boost/fusion/sequence/view/repetitive_view/detail/value_of_impl.hpp create mode 100644 include/boost/fusion/sequence/view/repetitive_view/repetitive_view.hpp create mode 100644 include/boost/fusion/sequence/view/repetitive_view/repetitive_view_fwd.hpp create mode 100644 include/boost/fusion/sequence/view/repetitive_view/repetitive_view_iterator.hpp diff --git a/include/boost/fusion/sequence/view/repetitive_view.hpp b/include/boost/fusion/sequence/view/repetitive_view.hpp new file mode 100644 index 00000000..8940174b --- /dev/null +++ b/include/boost/fusion/sequence/view/repetitive_view.hpp @@ -0,0 +1,15 @@ +/*============================================================================= + Copyright (c) 2007 Tobias Schwinger + + Distributed under the 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_REPETITIVE_VIEW_HPP_INCLUDED) +#define BOOST_FUSION_REPETITIVE_VIEW_HPP_INCLUDED + +#include +#include + +#endif + diff --git a/include/boost/fusion/sequence/view/repetitive_view/detail/begin_impl.hpp b/include/boost/fusion/sequence/view/repetitive_view/detail/begin_impl.hpp new file mode 100644 index 00000000..b5c4c29a --- /dev/null +++ b/include/boost/fusion/sequence/view/repetitive_view/detail/begin_impl.hpp @@ -0,0 +1,49 @@ +/*============================================================================= + Copyright (c) 2007 Tobias Schwinger + + Distributed under the 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_REPETITIVE_VIEW_BEGIN_IMPL_HPP_INCLUDED) +#define BOOST_FUSION_REPETITIVE_VIEW_BEGIN_IMPL_HPP_INCLUDED + +#include +#include + +namespace boost { namespace fusion +{ + struct repetitive_view_tag; + + template + struct repetitive_view_iterator; + + namespace extension + { + template + struct begin_impl; + + template<> + struct begin_impl + { + template + struct apply + { + typedef typename View::sequence_type sequence_type; + + typedef repetitive_view_iterator::type > type; + + static type call(View const& v) + { + return type(v.seq); + } + }; + }; + + } + +}} + +#endif + diff --git a/include/boost/fusion/sequence/view/repetitive_view/detail/deref_impl.hpp b/include/boost/fusion/sequence/view/repetitive_view/detail/deref_impl.hpp new file mode 100644 index 00000000..2c0caf80 --- /dev/null +++ b/include/boost/fusion/sequence/view/repetitive_view/detail/deref_impl.hpp @@ -0,0 +1,44 @@ +/*============================================================================= + Copyright (c) 2007 Tobias Schwinger + + Distributed under the 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_REPETITIVE_VIEW_DEREF_IMPL_HPP_INCLUDED) +#define BOOST_FUSION_REPETITIVE_VIEW_DEREF_IMPL_HPP_INCLUDED + +#include + +namespace boost { namespace fusion +{ + struct repetitive_view_iterator_tag; + + namespace extension + { + template + struct deref_impl; + + template<> + struct deref_impl + { + template + struct apply + { + typedef typename + result_of::deref::type + type; + + static type call(Iterator const& i) + { + return *i.pos; + } + }; + }; + + } + +}} + +#endif + diff --git a/include/boost/fusion/sequence/view/repetitive_view/detail/end_impl.hpp b/include/boost/fusion/sequence/view/repetitive_view/detail/end_impl.hpp new file mode 100644 index 00000000..00ac0874 --- /dev/null +++ b/include/boost/fusion/sequence/view/repetitive_view/detail/end_impl.hpp @@ -0,0 +1,49 @@ +/*============================================================================= + Copyright (c) 2007 Tobias Schwinger + + Distributed under the 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_REPETITIVE_VIEW_END_IMPL_HPP_INCLUDED) +#define BOOST_FUSION_REPETITIVE_VIEW_END_IMPL_HPP_INCLUDED + +#include +#include + +namespace boost { namespace fusion +{ + struct repetitive_view_tag; + + template + struct repetitive_view_iterator; + + namespace extension + { + template + struct end_impl; + + template<> + struct end_impl + { + template + struct apply + { + typedef typename View::sequence_type sequence_type; + + typedef repetitive_view_iterator::type > type; + + static type call(View const& v) + { + return type(v.seq,end(v.seq)); + } + }; + }; + + } + +}} + +#endif + diff --git a/include/boost/fusion/sequence/view/repetitive_view/detail/next_impl.hpp b/include/boost/fusion/sequence/view/repetitive_view/detail/next_impl.hpp new file mode 100644 index 00000000..b629cb01 --- /dev/null +++ b/include/boost/fusion/sequence/view/repetitive_view/detail/next_impl.hpp @@ -0,0 +1,90 @@ +/*============================================================================= + Copyright (c) 2007 Tobias Schwinger + + Distributed under the 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_REPETITIVE_VIEW_NEXT_IMPL_HPP_INCLUDED) +#define BOOST_FUSION_REPETITIVE_VIEW_NEXT_IMPL_HPP_INCLUDED + +#include +#include + +namespace boost { namespace fusion +{ + struct repetitive_view_iterator_tag; + + template + struct repetitive_view_iterator; + + namespace extension + { + template + struct next_impl; + + template <> + struct next_impl + { + template::type>::value > + struct apply_nonempty // + { + // advanvce to next position + + typedef repetitive_view_iterator< + typename Iterator::sequence_type, + typename result_of::next::type + > + type; + + static type call(Iterator const& i) + { + return type(i.seq, next(i.pos)); + } + }; + template + struct apply_nonempty + { + // reset to beginning + + typedef repetitive_view_iterator< + typename Iterator::sequence_type, + typename Iterator::first_type + > + type; + + static type call(Iterator const& i) + { + return type(i.seq); + } + }; + + template ::value > + struct apply // + : apply_nonempty + { }; + + template + struct apply + { + // eps^n = eps + + typedef Iterator type; + + static type call(Iterator const& i) + { + return type(i); + } + }; + }; + } +}} + +#endif + diff --git a/include/boost/fusion/sequence/view/repetitive_view/detail/value_of_impl.hpp b/include/boost/fusion/sequence/view/repetitive_view/detail/value_of_impl.hpp new file mode 100644 index 00000000..bf5f2f06 --- /dev/null +++ b/include/boost/fusion/sequence/view/repetitive_view/detail/value_of_impl.hpp @@ -0,0 +1,34 @@ +/*============================================================================= + Copyright (c) 2007 Tobias Schwinger + + Distributed under the 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_REPETITIVE_VIEW_VALUE_OF_IMPL_HPP_INCLUDED) +#define BOOST_FUSION_REPETITIVE_VIEW_VALUE_OF_IMPL_HPP_INCLUDED + +#include + +namespace boost { namespace fusion +{ + struct repetitive_view_iterator_tag; + + namespace extension + { + template + struct value_of_impl; + + template<> + struct value_of_impl + { + template + struct apply + : result_of::value_of + { }; + }; + } +}} + +#endif + diff --git a/include/boost/fusion/sequence/view/repetitive_view/repetitive_view.hpp b/include/boost/fusion/sequence/view/repetitive_view/repetitive_view.hpp new file mode 100644 index 00000000..2e06fd80 --- /dev/null +++ b/include/boost/fusion/sequence/view/repetitive_view/repetitive_view.hpp @@ -0,0 +1,48 @@ +/*============================================================================= + Copyright (c) 2007 Tobias Schwinger + + Distributed under the 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_REPETITIVE_REPETITIVE_VIEW_VIEW_HPP_INCLUDED) +#define BOOST_FUSION_REPETITIVE_VIEW_REPETITIVE_VIEW_HPP_INCLUDED + +#include +#include + +#include +#include + +#include +#include + + +namespace boost { namespace fusion +{ + struct repetitive_view_tag; + struct fusion_sequence_tag; + + template struct repetitive_view + : sequence_base< repetitive_view > + { + typedef repetitive_view_tag fusion_tag; + typedef fusion_sequence_tag tag; // this gets picked up by MPL + typedef mpl::true_ is_view; + + typedef single_pass_traversal_tag category; + + typedef typename boost::remove_reference::type sequence_type; + typedef typename + mpl::if_, Sequence, sequence_type&>::type + stored_seq_type; + + repetitive_view(Sequence& seq) + : seq(seq) {} + + stored_seq_type seq; + }; + +}} + +#endif diff --git a/include/boost/fusion/sequence/view/repetitive_view/repetitive_view_fwd.hpp b/include/boost/fusion/sequence/view/repetitive_view/repetitive_view_fwd.hpp new file mode 100644 index 00000000..24e146c0 --- /dev/null +++ b/include/boost/fusion/sequence/view/repetitive_view/repetitive_view_fwd.hpp @@ -0,0 +1,19 @@ +/*============================================================================= + Copyright (c) 2007 Tobias Schwinger + + Distributed under the 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_REPETITIVE_VIEW_FWD_HPP_INCLUDED) +#define BOOST_FUSION_REPETITIVE_VIEW_FWD_HPP_INCLUDED + +namespace boost { namespace fusion +{ + struct repetitive_view_tag; + + template struct repetitive_view; +}} + +#endif + diff --git a/include/boost/fusion/sequence/view/repetitive_view/repetitive_view_iterator.hpp b/include/boost/fusion/sequence/view/repetitive_view/repetitive_view_iterator.hpp new file mode 100644 index 00000000..6b2a9a5e --- /dev/null +++ b/include/boost/fusion/sequence/view/repetitive_view/repetitive_view_iterator.hpp @@ -0,0 +1,50 @@ +/*============================================================================= + Copyright (c) 2007 Tobias Schwinger + + Distributed under the 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_REPETITIVE_VIEW_ITERATOR_HPP_INCLUDED) +#define BOOST_FUSION_REPETITIVE_VIEW_HPP_ITERATOR_INCLUDED + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct repetitive_view_iterator_tag; + + template::type> + struct repetitive_view_iterator + : iterator_base< repetitive_view_iterator > + { + typedef repetitive_view_iterator_tag fusion_tag; + + typedef Sequence sequence_type; + typedef typename convert_iterator::type pos_type; + typedef typename convert_iterator::type>::type first_type; + 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)) {} + + repetitive_view_iterator(Sequence& seq, pos_type const& pos) + : seq(seq), pos(pos) {} + + Sequence& seq; + pos_type pos; + + }; +}} + +#endif + From c2275cefdb311ad73e9daa54bb57af75b7325810 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Tue, 20 Mar 2007 13:02:26 +0000 Subject: [PATCH 115/234] updated todo [SVN r37240] --- todo.txt | 121 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 120 insertions(+), 1 deletion(-) diff --git a/todo.txt b/todo.txt index f6946d57..d75a448f 100644 --- a/todo.txt +++ b/todo.txt @@ -1,7 +1,126 @@ -* Consider object equivalent of functions and algorithms (so you can do transform(iterators, deref()) with needing to put together a wrapper for deref). +* Consider object equivalent of functions and algorithms (so you can do + transform(iterators, deref()) with needing to put together a wrapper for deref). + * Consider segmented sequence / algorithm support + * Consider utility element_ref::type thats consts and refs as appropriate + * Improved motivation section + * Expand details of view concept + * Examples, examples, examples + * look at lambda stuff + +* The error messages when e.g. the function is not set as const are difficult + to decipher. e.g. transform(s, f) <<- where f has a non-const operator() + +* mpl, fusion, container type preserving operations incompatible + -- shall we consider container-type preserving variations of the + functions/algorithms? + +* map_tie is implemented. It seems not yet documented? + +* multi_set, multi_map? + +* why is insert_range not spelled insert_sequence ? + +* Document the new fusion extension mechanisms + ->iterator_facade + ->sequence_facade + +* David A: + Wouldn't extension be a lot easier if iterator_base and sequence_base + took (optional) 2nd arguments that specify the tag? Then you wouldn't + need that whole dance that enables tag dispatching (right?) + +* David A: is_iterator isn't documented? + JDG: There is no is_iterator ;) There is is_fusion_iterator, but it should + probably be placed in detail. + +* for_each takes the function object by reference to const, so you have to + const qualify operator() and make the data members mutable so you can change + them anyway. + Eric N: IMO, this is a bug in Fusion. There should be an overload of for_each + that takes a function object by non-const reference. Stateful predicates should + be supported, and Fusion should be explicit about where and when predicates + are copied, so that the state doesn't get messed up. + +* Make Boost.parameters library's ArgumentPacks a conforming fusion sequence + +* Optimize container performance with typeof / compiler defect typeof. In particular + improve the performance of the prototype deque implementation. + +* Deque docs if we decide we like it + +* Rewrite the whole extension docs section. More formal docs of extension point, + example to use the various facade types, rather than hand coding everything. + +* zip optimization - Zip is rather compiler heavy, try and reduce the likelihood + of compilers like msvc7 hitting internal compiler limits + +* Document the unused support added to zip for Hartmut. + +* Rationalize support/unused.hpp and the ignore stuff needed for tie etc. + +========================================================== + +From the fusion review (please mark all done items): + +The following comments refer to issues that the library authors should +address prior to merging the library into CVS: + +* Documentation: Many of the reviewers stated that they would like to + see more tutorial documentation that demonstrates not only what the + particular constructs in Fusion do, but also how they are expected + to be used. A reasonably concise motivating example has been + requested. It has already been pointed out that Fusion is used for + some other boost libraries. A well-developed and self-contained + case study of when and how to use Fusion would be greatly + appreciated. The relationship between this library and the current + Boost.Tuple library, as well as Boost.Mpl, should be discussed. The + reference documentation is quite thorough and detailed comments + regarding them have already been addressed by the authors. However + the notion of "views" requires greater documentation. The + examples in the algorithm sections currently do little more than + demonstrate the syntax by which they can be called. Examples that + more specifically express intent would be a notable + improvement. (see for example Matt Austern's "Generic Programming + and the STL"). In general the documentation would benefit from + copy-editing. + +* Several commented on the use of the name "pair" for the fusion type + that has typedefs for two types but only contains the second type. + Although the typedefs and member names are consistent with the + std::pair object, the name "pair" is confusing. The + compile-time/run-time hybrid nature of this library makes it + difficult to find perfect metaphors for constructs in the library. + In this case, it seems better to find a term for this template (and + the concept that it models) that more directly states its purpose. + The name "tag_of" would also benefit from renaming. + +* The behavior of Fusion functions in the face of argument-dependent + lookup (ADL) is not well specified. This should be made + explicit in the reference documentation. + +The following comments refer to issues that, while not mandatory, +deserve consideration: + +* The library name "Fusion", though not arbitrary, says little about + the library's purpose. There is precedent for this within boost, + however. A name change is not mandatory for the + library's acceptance, but it would be worth while for the authors to + consider a more telling name. + +* The mechanism for extending Fusion with new containers and iterators + is complex and involves implementing a number of components, + especially regarding iterators. An adaptation layer that is + analogous to the Boost.Iterator library would be a fine addition to + Fusion. + +* It would be beneficial to supply Boost.Serialization support for the + Fusion container types. I am sure, as mentioned, that the authors + of this library would accept a volunteer to implement this + functionality. + From 19ded670acd666c2864d84e11dcf379fbda8a5be Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Tue, 20 Mar 2007 16:07:52 +0000 Subject: [PATCH 116/234] removed obsolete include [SVN r37241] --- include/boost/fusion/sequence.hpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/include/boost/fusion/sequence.hpp b/include/boost/fusion/sequence.hpp index e72ee21a..9a794c2e 100644 --- a/include/boost/fusion/sequence.hpp +++ b/include/boost/fusion/sequence.hpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_SEQUENCE_10022005_0559) @@ -16,6 +16,5 @@ #include #include #include -#include #endif From d879cfcb972958464444b9805ce5903810b14938 Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Tue, 20 Mar 2007 21:04:30 +0000 Subject: [PATCH 117/234] added some additional todo notes [SVN r37247] --- todo.txt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/todo.txt b/todo.txt index d75a448f..75bfc73c 100644 --- a/todo.txt +++ b/todo.txt @@ -113,12 +113,19 @@ deserve consideration: library's acceptance, but it would be worth while for the authors to consider a more telling name. + Dan - I like the name Fusion, and there is precendent for less direct + library names like Spirit and Xpressive in Boost. (And Boost is not + exactly an explicit name either). + * The mechanism for extending Fusion with new containers and iterators is complex and involves implementing a number of components, especially regarding iterators. An adaptation layer that is analogous to the Boost.Iterator library would be a fine addition to Fusion. + Dan - Joel added iterator and container adapters, still to be documented + as part of the improved extension docs to be done by me. + * It would be beneficial to supply Boost.Serialization support for the Fusion container types. I am sure, as mentioned, that the authors of this library would accept a volunteer to implement this From f8d675d38d7f73ca0a59236071057b39832c7050 Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Tue, 20 Mar 2007 21:33:12 +0000 Subject: [PATCH 118/234] added some simple tests for map_tie [SVN r37248] --- test/Jamfile | 1 + test/sequence/map_tie.cpp | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 test/sequence/map_tie.cpp diff --git a/test/Jamfile b/test/Jamfile index 4c50e0a4..58635536 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -76,6 +76,7 @@ import testing ; [ run sequence/make_list.cpp : : : : ] [ run sequence/make_vector.cpp : : : : ] [ run sequence/map.cpp : : : : ] + [ run sequence/map_tie.cpp : : : : ] [ run sequence/reverse_view.cpp : : : : ] [ run sequence/set.cpp : : : : ] [ run sequence/single_view.cpp : : : : ] diff --git a/test/sequence/map_tie.cpp b/test/sequence/map_tie.cpp new file mode 100644 index 00000000..aef31c51 --- /dev/null +++ b/test/sequence/map_tie.cpp @@ -0,0 +1,35 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 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) +==============================================================================*/ +#include + +#include +#include + +struct key_zero; +struct key_one; + +int main() +{ + using namespace boost::fusion; + { + int number = 101; + char letter = 'a'; + BOOST_TEST(at_key(map_tie(number, letter)) == 101); + BOOST_TEST(at_key(map_tie(number, letter)) == 'a'); + + BOOST_TEST(&at_key(map_tie(number, letter)) == &number); + BOOST_TEST(&at_key(map_tie(number, letter)) == &letter); + + at_key(map_tie(number, letter)) = 202; + at_key(map_tie(number, letter)) = 'b'; + + BOOST_TEST(number == 202); + BOOST_TEST(letter == 'b'); + } + return boost::report_errors(); +} From 05ea6cfab96123a92392bfb7d40e34254ec29a3a Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Tue, 20 Mar 2007 23:43:06 +0000 Subject: [PATCH 119/234] added entry [SVN r37249] --- todo.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/todo.txt b/todo.txt index 75bfc73c..ce74206b 100644 --- a/todo.txt +++ b/todo.txt @@ -64,6 +64,9 @@ * Rationalize support/unused.hpp and the ignore stuff needed for tie etc. +* Why do we need to set FUSION_MAX_VECTOR_SIZE when we set + FUSION_MAX_MAP_SIZE? + ========================================================== From the fusion review (please mark all done items): From 1a1b40925b3df5e383cec254adb658dec59b6e86 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Wed, 21 Mar 2007 18:41:35 +0000 Subject: [PATCH 120/234] adds repetitive_view test [SVN r37257] --- test/Jamfile | 1 + test/sequence/repetitive_view.cpp | 53 +++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 test/sequence/repetitive_view.cpp diff --git a/test/Jamfile b/test/Jamfile index 58635536..c916c1b7 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -105,6 +105,7 @@ import testing ; [ run sequence/zip_view.cpp : : : : ] [ run sequence/zip_view2.cpp : : : : ] [ run sequence/zip_view_ignore.cpp : : : : ] + [ run sequence/repetitive_view.cpp : : : : ] [ run sequence/deduce_sequence.cpp : : : : ] [ run functional/fused.cpp : : : : ] [ run functional/fused_function_object.cpp : : : : ] diff --git a/test/sequence/repetitive_view.cpp b/test/sequence/repetitive_view.cpp new file mode 100644 index 00000000..0a2c01d9 --- /dev/null +++ b/test/sequence/repetitive_view.cpp @@ -0,0 +1,53 @@ +/*============================================================================= + Copyright (c) 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 + +struct check_equal +{ + template + void operator()(LHS const& lhs, RHS const& rhs) const + { + BOOST_TEST(( boost::is_same::value )); + BOOST_TEST(( lhs == rhs )); + } +}; + +int main() +{ + using namespace boost::fusion; + + typedef boost::fusion::vector seq_t; + seq_t seq(1,2l,3.0f,4.0); + + typedef repetitive_view view_t; + view_t view(seq); + + typedef joint_view seq_twice_t; + typedef joint_view seq_repeated_t; + seq_twice_t seq_twice(seq,seq); + seq_repeated_t seq_repeated(seq,seq_twice); + + for_each(zip(view,seq_repeated), make_fused_procedure(check_equal())); + + return boost::report_errors(); +} + From 0c3a766ee81bfdd5a6119630f85cd802bcae58ae Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Wed, 21 Mar 2007 19:31:13 +0000 Subject: [PATCH 121/234] mo' to do [SVN r37258] --- todo.txt | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/todo.txt b/todo.txt index ce74206b..b3e2e41e 100644 --- a/todo.txt +++ b/todo.txt @@ -20,6 +20,9 @@ -- shall we consider container-type preserving variations of the functions/algorithms? + How about making joint_view Concept preserving? This way push/pop/front/back + will return a view of the same Concept. - tosh + * map_tie is implemented. It seems not yet documented? * multi_set, multi_map? @@ -67,6 +70,26 @@ * Why do we need to set FUSION_MAX_VECTOR_SIZE when we set FUSION_MAX_MAP_SIZE? +tosh: + +* Document Incrementable / Single Pass Concepts +* Provide infinity-aware default implementation for Incrementable Sequences + + Thoughts: It would probably be cleaner to have infinity conceptually + orthogonal so there can be infinite Bidi/RA/Assoc Sequences. + OTOH it complicates things in way that might not be worth it... + +* Document new Concept-preserving semantics of iterator_range +* Document forgotten Concept preserving semantics of zip_view + +* Implement always_view/always with repetitive_view > + semantics - using repetitive_view will for this purpose will be way + too much overhead. + +? Functional wrappers for intrinsics/algorithms. + +* Rewrite functional benchmark + ========================================================== From the fusion review (please mark all done items): From ae0b09292e4b28066c858d49a1226dcb6911989f Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Thu, 22 Mar 2007 19:21:29 +0000 Subject: [PATCH 122/234] fixes ambiguity in tag_of specialization [SVN r37260] --- .../fusion/sequence/adapted/mpl/tag_of.hpp | 29 ------------------- include/boost/fusion/support/tag_of.hpp | 13 +++++---- 2 files changed, 7 insertions(+), 35 deletions(-) delete mode 100644 include/boost/fusion/sequence/adapted/mpl/tag_of.hpp diff --git a/include/boost/fusion/sequence/adapted/mpl/tag_of.hpp b/include/boost/fusion/sequence/adapted/mpl/tag_of.hpp deleted file mode 100644 index 756d94f6..00000000 --- a/include/boost/fusion/sequence/adapted/mpl/tag_of.hpp +++ /dev/null @@ -1,29 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 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_TAG_OF_31122005_1153) -#define BOOST_FUSION_TAG_OF_31122005_1153 - -#include -#include -#include - -namespace boost { namespace fusion -{ - struct mpl_sequence_tag; - - namespace traits - { - template - struct tag_of >::type> - { - typedef mpl_sequence_tag type; - }; - } -}} - -#endif diff --git a/include/boost/fusion/support/tag_of.hpp b/include/boost/fusion/support/tag_of.hpp index ce8e0aeb..c7cfbb76 100644 --- a/include/boost/fusion/support/tag_of.hpp +++ b/include/boost/fusion/support/tag_of.hpp @@ -12,7 +12,9 @@ #include #include #include +#include #include +#include #include namespace boost @@ -38,6 +40,7 @@ namespace boost namespace boost { namespace fusion { struct non_fusion_tag; + struct mpl_sequence_tag; namespace detail { @@ -48,9 +51,10 @@ namespace boost { namespace fusion { template struct tag_of - { - typedef non_fusion_tag type; - }; + : mpl::if_< detail::is_mpl_sequence, + mpl::identity, + mpl::identity >::type + { }; template struct tag_of >::type> @@ -73,9 +77,6 @@ namespace boost { namespace fusion template struct tag_of >; - template - struct tag_of >::type>; - template struct tag_of >; } From 85801896c40fb886f915ec97d4ae486209b48925 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Thu, 22 Mar 2007 21:18:00 +0000 Subject: [PATCH 123/234] mo' to do [SVN r37263] --- todo.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/todo.txt b/todo.txt index b3e2e41e..d04ae545 100644 --- a/todo.txt +++ b/todo.txt @@ -1,6 +1,8 @@ * Consider object equivalent of functions and algorithms (so you can do transform(iterators, deref()) with needing to put together a wrapper for deref). +* Make algorithms work with mutable data + * Consider segmented sequence / algorithm support * Consider utility element_ref::type thats consts and refs as appropriate From 4904567639d3690e81f035410ad923e030a1835a Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Thu, 22 Mar 2007 22:43:09 +0000 Subject: [PATCH 124/234] added documentation for map_tie [SVN r37266] --- doc/fusion.qbk | 1 + doc/sequences.qbk | 100 ++++++++++++++++++++++++++++++++++++++++++++++ todo.txt | 2 +- 3 files changed, 102 insertions(+), 1 deletion(-) diff --git a/doc/fusion.qbk b/doc/fusion.qbk index c8d97fcf..ea880d8d 100644 --- a/doc/fusion.qbk +++ b/doc/fusion.qbk @@ -161,6 +161,7 @@ [def __make_vector__ [link fusion.sequences.generation.functions.make_vector `make_vector`]] [def __result_of_make_vector__ [link fusion.sequences.generation.metafunctions.make_vector `result_of::make_vector`]] [def __vector_tie__ [link fusion.sequences.generation.functions.vector_tie `vector_tie`]] +[def __map_tie__ [link fusion.sequences.generation.functions.vector_tie `map_tie`]] [def __result_of_vector_tie__ [link fusion.sequences.generation.metafunctions.vector_tie `result_of::vector_tie`]] [def __make_vector__ [link fusion.sequences.generation.functions.make_vector `make_vector`]] [def __result_of_make_vector__ [link fusion.sequences.generation.metafunctions.make_vector `result_of::make_vector`]] diff --git a/doc/sequences.qbk b/doc/sequences.qbk index 3abeca63..99dec662 100644 --- a/doc/sequences.qbk +++ b/doc/sequences.qbk @@ -2604,6 +2604,7 @@ succeeding sections document the various /tier/ flavors. * __list_tie__ * __vector_tie__ +* __map_tie__ Example: @@ -2730,6 +2731,57 @@ default. Example: [endsect] +[section map_tie] + +[heading Description] + +Constructs a tie using a __map__ sequence. + +[heading Synopsis] + + template + __map__<__pair__, __pair__,... __pair__ > + map_tie(D0& d0, D1& d1... DN& dN); + +The variadic function accepts `0` to `FUSION_MAX_MAP_SIZE` elements, +where `FUSION_MAX_MAP_SIZE` is a user definable predefined maximum that +defaults to `10`, and a corresponding number of key types. +You may define the preprocessor constant `FUSION_MAX_MAP_SIZE` before +including any Fusion header to change the default. Example: + + #define FUSION_MAX_MAP_SIZE 20 + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`K0, K1,... KN`] [Any type][The key types associated with each of the `x1,x2,...,xN` values]] + [[`x0, x1,... xN`] [Instances of `T0, T1,... TN`] [The arguments to `map_tie`]] +] + +[heading Expression Semantics] + + map_tie(x0, x1,... xN); + +[*Return type]: __map__<__pair__, __pair__,... __pair__ > + +[*Semantics]: Create a __map__ of references from `x0, x1,... xN` with keys `K0, K1,... KN` + +[heading Header] + + #include + +[heading Example] + + struct int_key; + struct double_key; + ... + int i = 123; + double d = 123.456; + map_tie(i, d) + +[endsect] + [endsect] [section MetaFunctions] @@ -3051,6 +3103,54 @@ default. Example: [endsect] +[section map_tie] + +[heading Description] + +Returns the result type of __map_tie__. + +[heading Synopsis] + + template + struct map_tie; + +The variadic function accepts `0` to `FUSION_MAX_MAP_SIZE` elements, +where `FUSION_MAX_MAP_SIZE` is a user definable predefined maximum that +defaults to `10`. You may define the preprocessor constant +`FUSION_MAX_MAP_SIZE` before including any Fusion header to change the +default. Example: + + #define FUSION_MAX_MAP_SIZE 20 + +[heading Parameters] + +[table + [[Parameter] [Requirement] [Description]] + [[`K0, K1,... KN`] [Any type] [The key types for `map_tie`]] + [[`D0, D1,... DN`] [Any type] [The arguments types for `map_tie`]] +] + +[heading Expression Semantics] + + result_of::map_tie::type; + +[*Return type]: __map__<__pair__, __pair__,... __pair__ > + +[*Semantics]: Create a __map__ of references from `D0, D1,... DN` with keys `K0, K1,... KN` + +[heading Header] + + #include + +[heading Example] + + struct int_key; + struct double_key; + ... + result_of::map_tie::type + +[endsect] + [endsect] [endsect] diff --git a/todo.txt b/todo.txt index d04ae545..913c5609 100644 --- a/todo.txt +++ b/todo.txt @@ -25,7 +25,7 @@ How about making joint_view Concept preserving? This way push/pop/front/back will return a view of the same Concept. - tosh -* map_tie is implemented. It seems not yet documented? +* map_tie is implemented. It seems not yet documented? - Dan: done now! * multi_set, multi_map? From f98528a2af54b0472eb78614fc560c4f44e8e122 Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Thu, 22 Mar 2007 22:45:27 +0000 Subject: [PATCH 125/234] using the correct PP constant for map_tie [SVN r37267] --- include/boost/fusion/sequence/generation/map_tie.hpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/include/boost/fusion/sequence/generation/map_tie.hpp b/include/boost/fusion/sequence/generation/map_tie.hpp index f05a793d..523a22d4 100644 --- a/include/boost/fusion/sequence/generation/map_tie.hpp +++ b/include/boost/fusion/sequence/generation/map_tie.hpp @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -26,9 +27,9 @@ namespace boost { namespace fusion { template < BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( - FUSION_MAX_VECTOR_SIZE, typename K, void_) + FUSION_MAX_MAP_SIZE, typename K, void_) , BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( - FUSION_MAX_VECTOR_SIZE, typename D, void_) + FUSION_MAX_MAP_SIZE, typename D, void_) , typename Extra = void_ > struct map_tie; @@ -55,7 +56,7 @@ namespace boost { namespace fusion fusion::pair_tie(BOOST_PP_CAT(_, n)) \ #define BOOST_PP_FILENAME_1 -#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) +#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_MAP_SIZE) #include BOOST_PP_ITERATE() #undef BOOST_FUSION_PAIR From 5d935861c695cf58d440c780c5ec5d0cb7575bc1 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Sat, 24 Mar 2007 23:48:35 +0000 Subject: [PATCH 126/234] added todo item [SVN r37280] --- todo.txt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/todo.txt b/todo.txt index 913c5609..deab678a 100644 --- a/todo.txt +++ b/todo.txt @@ -15,6 +15,9 @@ * look at lambda stuff +* Complete the fusion/include/ directory containing a flat list of + include files for all the modules and components. + * The error messages when e.g. the function is not set as const are difficult to decipher. e.g. transform(s, f) <<- where f has a non-const operator() @@ -70,7 +73,7 @@ * Rationalize support/unused.hpp and the ignore stuff needed for tie etc. * Why do we need to set FUSION_MAX_VECTOR_SIZE when we set - FUSION_MAX_MAP_SIZE? + FUSION_MAX_MAP_SIZE? Setting FUSION_MAX_MAP_SIZE should be enough. tosh: From db545933b5867cc3dea17f7f6f44b48dec797618 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Mon, 26 Mar 2007 18:05:18 +0000 Subject: [PATCH 127/234] removes dependency to deleted adapted/mpl/tag_of.hpp [SVN r37288] --- include/boost/fusion/sequence/adapted/mpl.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/fusion/sequence/adapted/mpl.hpp b/include/boost/fusion/sequence/adapted/mpl.hpp index a7954ed8..643a587c 100644 --- a/include/boost/fusion/sequence/adapted/mpl.hpp +++ b/include/boost/fusion/sequence/adapted/mpl.hpp @@ -8,7 +8,7 @@ #if !defined(BOOST_FUSION_MPL_31122005_1152) #define BOOST_FUSION_MPL_31122005_1152 -#include +#include #include #include #include From 20e0ffc46132d9c10dc560dba21129044ca956bf Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Mon, 26 Mar 2007 19:54:26 +0000 Subject: [PATCH 128/234] hides effect of VC7.1 workaround [SVN r37291] --- test/functional/unfused_typed.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/test/functional/unfused_typed.cpp b/test/functional/unfused_typed.cpp index 10d3561a..f2444f21 100644 --- a/test/functional/unfused_typed.cpp +++ b/test/functional/unfused_typed.cpp @@ -99,6 +99,12 @@ void result_type_tests() BOOST_TEST(( is_same< boost::result_of< test_func_3(long &, int, char) >::type, long >::value )); } +#if defined(BOOST_MSVC) && BOOST_MSVC < 1400 +# define BOOST_TEST_NO_VC71(cond) (void)((cond)?0:1) +#else +# define BOOST_TEST_NO_VC71(cond) BOOST_TEST(cond) +#endif + int main() { result_type_tests(); @@ -117,7 +123,7 @@ int main() BOOST_TEST(unfused_func_c_ref() == 0); long lvalue = 1; - BOOST_TEST(unfused_func(lvalue) == 100); + BOOST_TEST_NO_VC71(unfused_func(lvalue) == 100); BOOST_TEST(lvalue == 1 + 1*sizeof(lvalue)); BOOST_TEST(unfused_func_ref(lvalue) == 100); BOOST_TEST(lvalue == 1 + 2*sizeof(lvalue)); @@ -129,7 +135,7 @@ int main() BOOST_TEST(lvalue == 1 + 5*sizeof(lvalue)); static const long expected = 2*sizeof(int) + 7*sizeof(char); - BOOST_TEST(unfused_func(lvalue,2,'\007') == 100 + expected); + BOOST_TEST_NO_VC71(unfused_func(lvalue,2,'\007') == 100 + expected); BOOST_TEST(lvalue == 1 + 6*sizeof(lvalue)); BOOST_TEST(unfused_func_ref(lvalue,2,'\007') == 100 + expected); BOOST_TEST(lvalue == 1 + 7*sizeof(lvalue)); From ddf3aaed17fe6a0b1b611072a5d4a36e9d4eae72 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Mon, 26 Mar 2007 19:56:08 +0000 Subject: [PATCH 129/234] adds VC7.1 portability note, changes [tip ...] to [blurb __tip__ ...] [SVN r37292] --- doc/functional.qbk | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/doc/functional.qbk b/doc/functional.qbk index ad715a9b..4953ac75 100644 --- a/doc/functional.qbk +++ b/doc/functional.qbk @@ -721,7 +721,7 @@ __random_access_sequence__ of references that is passed to the target function. Non-const __lvalue__ arguments are transported as references to non-const, otherwise references to const are used. -[tip Detecting mutable LValues on a per-argument basis is currently a +[blurb __tip__ Detecting mutable LValues on a per-argument basis is currently a compile time expensive operation (see __the_forwarding_problem__ for details). Therefore, there are two, lightweight and more restricted variants of this class template, __unfused_lvalue_args__ and __unfused_rvalue_args__.] @@ -1045,9 +1045,13 @@ reference. Const qualification is preserved and propagated appropriately the target function object is const - or, in case the target function object is held by value, the adapter is const). -[tip If the type sequence passed to this template contains non-reference -elements, the element is copied only once - the call operator's signature -is optimized automatically to avoid by-value parameters.] +[blurb __note__ For Microsoft Visual C++ 7.1 (Visual Studio 2003) the detection +of the Function Object's const qualification easily causes an internal error. +Therefore the adapter is always treated as if it was const. ] + +[blurb __tip__ If the type sequence passed to this template contains +non-reference elements, the element is copied only once - the call operator's +signature is optimized automatically to avoid by-value parameters.] [heading Header] #include From ddf9cb743a1691e064db1abd0a7a87ced81ee680 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Mon, 26 Mar 2007 19:58:44 +0000 Subject: [PATCH 130/234] updates VC7.1 workaround [SVN r37293] --- include/boost/fusion/functional/adapter/unfused_typed.hpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/include/boost/fusion/functional/adapter/unfused_typed.hpp b/include/boost/fusion/functional/adapter/unfused_typed.hpp index 28a1e7fc..b276f390 100644 --- a/include/boost/fusion/functional/adapter/unfused_typed.hpp +++ b/include/boost/fusion/functional/adapter/unfused_typed.hpp @@ -174,8 +174,7 @@ namespace boost { namespace fusion return static_cast(this)->fnc_transformed(arg); } -#if !BOOST_WORKAROUND(BOOST_MSVC, < 1400) \ - || BOOST_FUSION_UNFUSED_TYPED_MAX_ARITY <= 4 +#if !BOOST_WORKAROUND(BOOST_MSVC, < 1400) inline typename Function::template result::type operator()(BOOST_PP_ENUM(N,M,arg_vector_t)) { From 6002bc9bb4d1c219994d3dc459bf201352567e89 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Mon, 2 Apr 2007 03:31:13 +0000 Subject: [PATCH 131/234] added struct wrapping facilities to make it very easy to make any struct a conforming fusion sequence [SVN r37328] --- include/boost/fusion/sequence/adapted/mpl.hpp | 3 +- .../fusion/sequence/adapted/std_pair.hpp | 65 ++++++++-- .../adapted/std_pair/Attic/tag_of.hpp | 29 ----- .../boost/fusion/sequence/adapted/struct.hpp | 20 ++++ .../Attic => struct/detail}/at_impl.hpp | 50 ++++---- .../Attic => struct/detail}/begin_impl.hpp | 18 +-- .../detail}/category_of_impl.hpp | 10 +- .../Attic => struct/detail}/end_impl.hpp | 18 +-- .../detail}/is_sequence_impl.hpp | 10 +- .../Attic => struct/detail}/is_view_impl.hpp | 8 +- .../Attic => struct/detail}/size_impl.hpp | 16 ++- .../Attic => struct/detail}/value_at_impl.hpp | 28 +++-- .../struct_iterator.hpp} | 111 +++++++++--------- 13 files changed, 214 insertions(+), 172 deletions(-) delete mode 100644 include/boost/fusion/sequence/adapted/std_pair/Attic/tag_of.hpp create mode 100644 include/boost/fusion/sequence/adapted/struct.hpp rename include/boost/fusion/sequence/adapted/{std_pair/detail/Attic => struct/detail}/at_impl.hpp (57%) rename include/boost/fusion/sequence/adapted/{std_pair/detail/Attic => struct/detail}/begin_impl.hpp (74%) rename include/boost/fusion/sequence/adapted/{std_pair/detail/Attic => struct/detail}/category_of_impl.hpp (86%) rename include/boost/fusion/sequence/adapted/{std_pair/detail/Attic => struct/detail}/end_impl.hpp (74%) rename include/boost/fusion/sequence/adapted/{std_pair/detail/Attic => struct/detail}/is_sequence_impl.hpp (85%) rename include/boost/fusion/sequence/adapted/{std_pair/detail/Attic => struct/detail}/is_view_impl.hpp (86%) rename include/boost/fusion/sequence/adapted/{std_pair/detail/Attic => struct/detail}/size_impl.hpp (71%) rename include/boost/fusion/sequence/adapted/{std_pair/detail/Attic => struct/detail}/value_at_impl.hpp (65%) rename include/boost/fusion/sequence/adapted/{std_pair/Attic/std_pair_iterator.hpp => struct/struct_iterator.hpp} (51%) diff --git a/include/boost/fusion/sequence/adapted/mpl.hpp b/include/boost/fusion/sequence/adapted/mpl.hpp index 643a587c..94f4967a 100644 --- a/include/boost/fusion/sequence/adapted/mpl.hpp +++ b/include/boost/fusion/sequence/adapted/mpl.hpp @@ -2,13 +2,12 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - 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_MPL_31122005_1152) #define BOOST_FUSION_MPL_31122005_1152 -#include #include #include #include diff --git a/include/boost/fusion/sequence/adapted/std_pair.hpp b/include/boost/fusion/sequence/adapted/std_pair.hpp index d4ba0b68..0b755a0b 100644 --- a/include/boost/fusion/sequence/adapted/std_pair.hpp +++ b/include/boost/fusion/sequence/adapted/std_pair.hpp @@ -2,20 +2,65 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - 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_STD_PAIR_24122005_1744) #define BOOST_FUSION_STD_PAIR_24122005_1744 -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct struct_tag; + + namespace traits + { + template + struct tag_of > + { + typedef struct_tag type; + }; + } + + namespace extension + { + template + struct struct_member; + + template + struct struct_size; + + template + struct struct_member, 0> + { + typedef T1 type; + + static type& call(std::pair& pair) + { + return pair.first; + } + }; + + template + struct struct_member, 1> + { + typedef T2 type; + + static type& call(std::pair& pair) + { + return pair.second; + } + }; + + template + struct struct_size > : mpl::int_<2> + { + }; + } +}} #endif diff --git a/include/boost/fusion/sequence/adapted/std_pair/Attic/tag_of.hpp b/include/boost/fusion/sequence/adapted/std_pair/Attic/tag_of.hpp deleted file mode 100644 index 3211efad..00000000 --- a/include/boost/fusion/sequence/adapted/std_pair/Attic/tag_of.hpp +++ /dev/null @@ -1,29 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 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_TAG_OF_24122005_1722) -#define BOOST_FUSION_TAG_OF_24122005_1722 - -#include - -#include - -namespace boost { namespace fusion { - - struct std_pair_tag; - - namespace traits - { - template - struct tag_of > - { - typedef std_pair_tag type; - }; - } -}} - -#endif diff --git a/include/boost/fusion/sequence/adapted/struct.hpp b/include/boost/fusion/sequence/adapted/struct.hpp new file mode 100644 index 00000000..1b52fd7c --- /dev/null +++ b/include/boost/fusion/sequence/adapted/struct.hpp @@ -0,0 +1,20 @@ +/*============================================================================= + Copyright (c) 2001-2006 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_STRUCT_24122005_1744) +#define BOOST_FUSION_STD_STRUCT_24122005_1744 + +#include +#include +#include +#include +#include +#include +#include +#include + +#endif diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/at_impl.hpp b/include/boost/fusion/sequence/adapted/struct/detail/at_impl.hpp similarity index 57% rename from include/boost/fusion/sequence/adapted/std_pair/detail/Attic/at_impl.hpp rename to include/boost/fusion/sequence/adapted/struct/detail/at_impl.hpp index 2f26fa68..809902ae 100644 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/at_impl.hpp +++ b/include/boost/fusion/sequence/adapted/struct/detail/at_impl.hpp @@ -2,40 +2,43 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - 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_AT_IMPL_24122005_1807) #define BOOST_FUSION_AT_IMPL_24122005_1807 -#include -#include -#include #include +#include +#include -namespace boost { namespace fusion { - - struct std_pair_tag; +namespace boost { namespace fusion +{ + struct struct_tag; namespace extension { template struct at_impl; + template + struct struct_member; + + template + struct struct_size; + template <> - struct at_impl + struct at_impl { template - struct apply + struct apply { static int const n_value = N::value; - BOOST_STATIC_ASSERT((n_value >= 0 && n_value < 2)); + BOOST_MPL_ASSERT_RELATION( + n_value, <=, extension::struct_size::value); + typedef typename - mpl::if_c< - (n_value == 0) - , typename Sequence::first_type - , typename Sequence::second_type - > + extension::struct_member element; typedef typename @@ -46,22 +49,11 @@ namespace boost { namespace fusion { >::type type; - template - static RT get(Sequence& p, mpl::int_<0>) - { - return p.first; - } - - template - static RT get(Sequence& p, mpl::int_<1>) - { - return p.second; - } - static type - call(Sequence& p) + call(Sequence& seq) { - return get(p, N()); + return extension:: + struct_member::call(seq); } }; }; diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/begin_impl.hpp b/include/boost/fusion/sequence/adapted/struct/detail/begin_impl.hpp similarity index 74% rename from include/boost/fusion/sequence/adapted/std_pair/detail/Attic/begin_impl.hpp rename to include/boost/fusion/sequence/adapted/struct/detail/begin_impl.hpp index 1b77b7a7..14817726 100644 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/begin_impl.hpp +++ b/include/boost/fusion/sequence/adapted/struct/detail/begin_impl.hpp @@ -2,17 +2,17 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - 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_BEGIN_IMPL_24122005_1752) #define BOOST_FUSION_BEGIN_IMPL_24122005_1752 -#include +#include -namespace boost { namespace fusion { - - struct std_pair_tag; +namespace boost { namespace fusion +{ + struct struct_tag; namespace extension { @@ -20,13 +20,13 @@ namespace boost { namespace fusion { struct begin_impl; template <> - struct begin_impl + struct begin_impl { template - struct apply + struct apply { - typedef std_pair_iterator type; - + typedef struct_iterator type; + static type call(Sequence& v) { diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/category_of_impl.hpp b/include/boost/fusion/sequence/adapted/struct/detail/category_of_impl.hpp similarity index 86% rename from include/boost/fusion/sequence/adapted/std_pair/detail/Attic/category_of_impl.hpp rename to include/boost/fusion/sequence/adapted/struct/detail/category_of_impl.hpp index f207c1c7..9e7f9df4 100644 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/category_of_impl.hpp +++ b/include/boost/fusion/sequence/adapted/struct/detail/category_of_impl.hpp @@ -2,7 +2,7 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - 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_CATEGORY_OF_IMPL_24122005_1731) @@ -10,9 +10,9 @@ #include -namespace boost { namespace fusion { - - struct std_pair_tag; +namespace boost { namespace fusion +{ + struct struct_tag; struct random_access_traversal_tag; namespace extension @@ -21,7 +21,7 @@ namespace boost { namespace fusion { struct category_of_impl; template<> - struct category_of_impl + struct category_of_impl { template struct apply diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/end_impl.hpp b/include/boost/fusion/sequence/adapted/struct/detail/end_impl.hpp similarity index 74% rename from include/boost/fusion/sequence/adapted/std_pair/detail/Attic/end_impl.hpp rename to include/boost/fusion/sequence/adapted/struct/detail/end_impl.hpp index 9aab76c5..91830cea 100644 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/end_impl.hpp +++ b/include/boost/fusion/sequence/adapted/struct/detail/end_impl.hpp @@ -2,17 +2,17 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - 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_END_IMPL_24122005_1755) #define BOOST_FUSION_END_IMPL_24122005_1755 -#include +#include -namespace boost { namespace fusion { - - struct std_pair_tag; +namespace boost { namespace fusion +{ + struct struct_tag; namespace extension { @@ -20,13 +20,13 @@ namespace boost { namespace fusion { struct end_impl; template <> - struct end_impl + struct end_impl { template - struct apply + struct apply { - typedef std_pair_iterator type; - + typedef struct_iterator type; + static type call(Sequence& v) { diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/is_sequence_impl.hpp b/include/boost/fusion/sequence/adapted/struct/detail/is_sequence_impl.hpp similarity index 85% rename from include/boost/fusion/sequence/adapted/std_pair/detail/Attic/is_sequence_impl.hpp rename to include/boost/fusion/sequence/adapted/struct/detail/is_sequence_impl.hpp index 1c669a68..f81e9fb6 100644 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/is_sequence_impl.hpp +++ b/include/boost/fusion/sequence/adapted/struct/detail/is_sequence_impl.hpp @@ -2,7 +2,7 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - 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_IS_SEQUENCE_IMPL_27122005_1651) @@ -10,9 +10,9 @@ #include -namespace boost { namespace fusion { - - struct std_pair_tag; +namespace boost { namespace fusion +{ + struct struct_tag; namespace extension { @@ -20,7 +20,7 @@ namespace boost { namespace fusion { struct is_sequence_impl; template<> - struct is_sequence_impl + struct is_sequence_impl { template struct apply : mpl::true_ {}; diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/is_view_impl.hpp b/include/boost/fusion/sequence/adapted/struct/detail/is_view_impl.hpp similarity index 86% rename from include/boost/fusion/sequence/adapted/std_pair/detail/Attic/is_view_impl.hpp rename to include/boost/fusion/sequence/adapted/struct/detail/is_view_impl.hpp index 94842bc0..da6f380b 100644 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/is_view_impl.hpp +++ b/include/boost/fusion/sequence/adapted/struct/detail/is_view_impl.hpp @@ -2,7 +2,7 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - 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_IS_VIEW_IMPL_27042006_2219) @@ -10,9 +10,9 @@ #include -namespace boost { namespace fusion +namespace boost { namespace fusion { - struct std_pair_tag; + struct struct_tag; namespace extension { @@ -20,7 +20,7 @@ namespace boost { namespace fusion struct is_view_impl; template<> - struct is_view_impl + struct is_view_impl { template struct apply : mpl::false_ diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/size_impl.hpp b/include/boost/fusion/sequence/adapted/struct/detail/size_impl.hpp similarity index 71% rename from include/boost/fusion/sequence/adapted/std_pair/detail/Attic/size_impl.hpp rename to include/boost/fusion/sequence/adapted/struct/detail/size_impl.hpp index 5f35bffd..12ec14ba 100644 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/size_impl.hpp +++ b/include/boost/fusion/sequence/adapted/struct/detail/size_impl.hpp @@ -2,7 +2,7 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - 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_SIZE_IMPL_24122005_1759) @@ -10,9 +10,15 @@ #include -namespace boost { namespace fusion { +namespace boost { namespace fusion +{ + namespace extension + { + template + struct struct_size; + } - struct std_pair_tag; + struct struct_tag; namespace extension { @@ -20,10 +26,10 @@ namespace boost { namespace fusion { struct size_impl; template <> - struct size_impl + struct size_impl { template - struct apply : mpl::int_<2> {}; + struct apply : extension::struct_size {}; }; } }} diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/value_at_impl.hpp b/include/boost/fusion/sequence/adapted/struct/detail/value_at_impl.hpp similarity index 65% rename from include/boost/fusion/sequence/adapted/std_pair/detail/Attic/value_at_impl.hpp rename to include/boost/fusion/sequence/adapted/struct/detail/value_at_impl.hpp index 16047ec9..8f5d97a0 100644 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/Attic/value_at_impl.hpp +++ b/include/boost/fusion/sequence/adapted/struct/detail/value_at_impl.hpp @@ -2,7 +2,7 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - 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_VALUE_AT_IMPL_24122005_1917) @@ -11,29 +11,33 @@ #include #include -namespace boost { namespace fusion { - - struct std_pair_tag; +namespace boost { namespace fusion +{ + struct struct_tag; namespace extension { template struct value_at_impl; + template + struct struct_member; + + template + struct struct_size; + template <> - struct value_at_impl + struct value_at_impl { template - struct apply + struct apply { static int const n_value = N::value; - BOOST_STATIC_ASSERT((n_value >= 0 && n_value < 2)); + BOOST_MPL_ASSERT_RELATION( + n_value, <=, extension::struct_size::value); + typedef typename - mpl::if_c< - (n_value == 0) - , typename Sequence::first_type - , typename Sequence::second_type - >::type + extension::struct_member::type type; }; }; diff --git a/include/boost/fusion/sequence/adapted/std_pair/Attic/std_pair_iterator.hpp b/include/boost/fusion/sequence/adapted/struct/struct_iterator.hpp similarity index 51% rename from include/boost/fusion/sequence/adapted/std_pair/Attic/std_pair_iterator.hpp rename to include/boost/fusion/sequence/adapted/struct/struct_iterator.hpp index 4aa2daa2..0684deaf 100644 --- a/include/boost/fusion/sequence/adapted/std_pair/Attic/std_pair_iterator.hpp +++ b/include/boost/fusion/sequence/adapted/struct/struct_iterator.hpp @@ -1,14 +1,17 @@ /*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2001-2007 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden - 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(FUSION_STD_PAIR_ITERATOR_09262005_0934) -#define FUSION_STD_PAIR_ITERATOR_09262005_0934 +#if !defined(FUSION_STRUCT_ITERATOR_APRIL_2_2007_1008AM) +#define FUSION_STRUCT_ITERATOR_APRIL_2_2007_1008AM #include #include +#include +#include #include #include #include @@ -18,69 +21,71 @@ namespace boost { namespace fusion { - struct random_access_traversal_tag; - - template - struct std_pair_iterator - : iterator_facade, random_access_traversal_tag> + namespace extension { - BOOST_MPL_ASSERT_RELATION(N_, >=, 0); - BOOST_MPL_ASSERT_RELATION(N_, <=, 2); + template + struct struct_member; - typedef mpl::int_ index; - typedef Pair_ pair_type; + template + struct struct_size; - std_pair_iterator(Pair_& pair) - : pair(pair) {} - Pair_& pair; - - template - struct value_of; - - template - struct value_of > - : mpl::identity {}; - - template - struct value_of > - : mpl::identity {}; - - template - struct deref; - - template - struct deref > + template + struct struct_member { typedef typename - mpl::if_< - is_const - , typename Pair::first_type const& - , typename Pair::first_type& - >::type + add_const::type>::type type; - static type - call(std_pair_iterator const& iter) + static type& + call(Struct const& struct_) { - return iter.pair.first; + return struct_member::call( + const_cast(struct_)); } }; - template - struct deref > + template + struct struct_size + : struct_size + {}; + } + + struct random_access_traversal_tag; + + template + struct struct_iterator + : iterator_facade, random_access_traversal_tag> + { + BOOST_MPL_ASSERT_RELATION(N_, >=, 0); + BOOST_MPL_ASSERT_RELATION(N_, <=, extension::struct_size::value); + + typedef mpl::int_ index; + typedef Struct struct_type; + + struct_iterator(Struct& struct_) + : struct_(struct_) {} + Struct& struct_; + + template + struct value_of + : extension::struct_member + { + }; + + template + struct deref { typedef typename - mpl::if_< - is_const - , typename Pair::second_type const& - , typename Pair::second_type& + add_reference< + typename extension::struct_member::type >::type type; static type - call(std_pair_iterator const& iter) + call(Iterator const& iter) { - return iter.pair.second; + return extension::struct_member:: + call(iter.struct_); } }; @@ -88,13 +93,13 @@ namespace boost { namespace fusion struct advance { typedef typename Iterator::index index; - typedef typename Iterator::pair_type pair_type; - typedef std_pair_iterator type; + typedef typename Iterator::struct_type struct_type; + typedef struct_iterator type; static type call(Iterator const& iter) { - return type(iter.pair); + return type(iter.struct_); } }; @@ -110,7 +115,7 @@ namespace boost { namespace fusion typedef typename mpl::minus< typename I2::index, typename I1::index - >::type + >::type type; static type From 5423cde1f1137d7f546e81f733b7273135d01240 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Mon, 2 Apr 2007 03:52:41 +0000 Subject: [PATCH 132/234] updates [SVN r37329] --- .../sequence/adapted/struct/extension.hpp | 44 +++++++++++++++++++ .../adapted/struct/struct_iterator.hpp | 31 +------------ 2 files changed, 45 insertions(+), 30 deletions(-) create mode 100644 include/boost/fusion/sequence/adapted/struct/extension.hpp diff --git a/include/boost/fusion/sequence/adapted/struct/extension.hpp b/include/boost/fusion/sequence/adapted/struct/extension.hpp new file mode 100644 index 00000000..f0af1baa --- /dev/null +++ b/include/boost/fusion/sequence/adapted/struct/extension.hpp @@ -0,0 +1,44 @@ +/*============================================================================= + Copyright (c) 2001-2007 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_STRUCT_EXTENSION_APRIL_2_2007_1008AM) +#define FUSION_STRUCT_EXTENSION_APRIL_2_2007_1008AM + +#include + +namespace boost { namespace fusion { namespace extension +{ + template + struct struct_member; + + template + struct struct_size; + + template + struct struct_member + { + typedef typename + add_const::type>::type + type; + + static type& + call(Struct const& struct_) + { + return struct_member::call( + const_cast(struct_)); + } + }; + + template + struct struct_size + : struct_size + {}; +}}} + +#endif + + diff --git a/include/boost/fusion/sequence/adapted/struct/struct_iterator.hpp b/include/boost/fusion/sequence/adapted/struct/struct_iterator.hpp index 0684deaf..b00251bb 100644 --- a/include/boost/fusion/sequence/adapted/struct/struct_iterator.hpp +++ b/include/boost/fusion/sequence/adapted/struct/struct_iterator.hpp @@ -9,9 +9,9 @@ #define FUSION_STRUCT_ITERATOR_APRIL_2_2007_1008AM #include +#include #include #include -#include #include #include #include @@ -21,35 +21,6 @@ namespace boost { namespace fusion { - namespace extension - { - template - struct struct_member; - - template - struct struct_size; - - template - struct struct_member - { - typedef typename - add_const::type>::type - type; - - static type& - call(Struct const& struct_) - { - return struct_member::call( - const_cast(struct_)); - } - }; - - template - struct struct_size - : struct_size - {}; - } - struct random_access_traversal_tag; template From bf05751f9ed28c8e1d0569c4b7763adb3da15b8d Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Mon, 2 Apr 2007 04:34:24 +0000 Subject: [PATCH 133/234] added BOOST_SPIRIT_ADAPT_STRUCT macro [SVN r37331] --- .../boost/fusion/sequence/adapted/struct.hpp | 3 + .../sequence/adapted/struct/adapt_struct.hpp | 75 +++++++++++++ test/Jamfile | 4 +- test/sequence/adapt_struct.cpp | 106 ++++++++++++++++++ 4 files changed, 187 insertions(+), 1 deletion(-) create mode 100644 include/boost/fusion/sequence/adapted/struct/adapt_struct.hpp create mode 100644 test/sequence/adapt_struct.cpp diff --git a/include/boost/fusion/sequence/adapted/struct.hpp b/include/boost/fusion/sequence/adapted/struct.hpp index 1b52fd7c..f4aed34e 100644 --- a/include/boost/fusion/sequence/adapted/struct.hpp +++ b/include/boost/fusion/sequence/adapted/struct.hpp @@ -8,6 +8,9 @@ #if !defined(BOOST_FUSION_STRUCT_24122005_1744) #define BOOST_FUSION_STD_STRUCT_24122005_1744 +#include +#include +#include #include #include #include diff --git a/include/boost/fusion/sequence/adapted/struct/adapt_struct.hpp b/include/boost/fusion/sequence/adapted/struct/adapt_struct.hpp new file mode 100644 index 00000000..3afea18c --- /dev/null +++ b/include/boost/fusion/sequence/adapted/struct/adapt_struct.hpp @@ -0,0 +1,75 @@ +/*============================================================================= + Copyright (c) 2001-2007 Joel de Guzman + + Distributed under the 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_ADAPT_STRUCT_APRIL_2_2007_1158AM) +#define BOOST_FUSION_ADAPT_STRUCT_APRIL_2_2007_1158AM + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define BOOST_SPIRIT_ADAPT_STRUCT(name, bseq) \ + BOOST_SPIRIT_ADAPT_STRUCT_I( \ + name, BOOST_PP_CAT(BOOST_SPIRIT_ADAPT_STRUCT_X bseq, 0)) \ + /***/ + +#define BOOST_SPIRIT_ADAPT_STRUCT_X(x, y) ((x, y)) BOOST_SPIRIT_ADAPT_STRUCT_Y +#define BOOST_SPIRIT_ADAPT_STRUCT_Y(x, y) ((x, y)) BOOST_SPIRIT_ADAPT_STRUCT_X +#define BOOST_SPIRIT_ADAPT_STRUCT_X0 +#define BOOST_SPIRIT_ADAPT_STRUCT_Y0 + +// BOOST_SPIRIT_ADAPT_STRUCT_I generates the overarching structure and uses +// SEQ_FOR_EACH_I to generate the "linear" substructures. +// Thanks to Paul Mensonides for the PP macro help + +#define BOOST_SPIRIT_ADAPT_STRUCT_I(name, seq) \ + namespace boost { namespace fusion { namespace traits \ + { \ + template <> \ + struct tag_of \ + { \ + typedef struct_tag type; \ + }; \ + }}} \ + namespace boost { namespace fusion { namespace extension \ + { \ + template <> \ + struct struct_size : mpl::int_ {}; \ + BOOST_PP_SEQ_FOR_EACH_I(BOOST_SPIRIT_ADAPT_STRUCT_C, name, seq) \ + }}} \ + /***/ + +#define BOOST_SPIRIT_ADAPT_STRUCT_C(r, name, i, xy) \ + template <> \ + struct struct_member \ + { \ + typedef BOOST_PP_TUPLE_ELEM(2, 0, xy) type; \ + static type& call(name& struct_) \ + { \ + return struct_.BOOST_PP_TUPLE_ELEM(2, 1, xy); \ + }; \ + }; \ + /***/ + +#endif diff --git a/test/Jamfile b/test/Jamfile index c916c1b7..5e388632 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -107,6 +107,8 @@ import testing ; [ run sequence/zip_view_ignore.cpp : : : : ] [ run sequence/repetitive_view.cpp : : : : ] [ run sequence/deduce_sequence.cpp : : : : ] + [ run sequence/adapt_struct.cpp : : : : ] + [ run functional/fused.cpp : : : : ] [ run functional/fused_function_object.cpp : : : : ] [ run functional/fused_procedure.cpp : : : : ] @@ -125,7 +127,7 @@ import testing ; [ run functional/invoke_procedure.cpp : : : : ] # [ compile-fail xxx.cpp : : : : ] - + ; } diff --git a/test/sequence/adapt_struct.cpp b/test/sequence/adapt_struct.cpp new file mode 100644 index 00000000..91104b31 --- /dev/null +++ b/test/sequence/adapt_struct.cpp @@ -0,0 +1,106 @@ +/*============================================================================= + Copyright (c) 2001-2007 Joel de Guzman + + Distributed under the 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 + +namespace ns +{ + struct point + { + int x; + int y; + }; +} + +BOOST_SPIRIT_ADAPT_STRUCT( + ns::point, + (int, x) + (int, y) +) + +int +main() +{ + using namespace boost::fusion; + using namespace boost; + using namespace std; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + + { + BOOST_MPL_ASSERT_NOT((traits::is_view)); + ns::point p = {123, 456}; + + std::cout << at_c<0>(p) << std::endl; + std::cout << at_c<1>(p) << std::endl; + std::cout << p << std::endl; + BOOST_TEST(p == make_vector(123, 456)); + + at_c<0>(p) = 6; + at_c<1>(p) = 9; + BOOST_TEST(p == make_vector(6, 9)); + + BOOST_STATIC_ASSERT(result_of::size::value == 2); + BOOST_STATIC_ASSERT(!result_of::empty::value); + + BOOST_TEST(front(p) == 6); + BOOST_TEST(back(p) == 9); + } + + { + fusion::vector v1(4, 2); + ns::point v2 = {5, 3}; + fusion::vector v3(5, 4); + BOOST_TEST(v1 < v2); + BOOST_TEST(v1 <= v2); + BOOST_TEST(v2 > v1); + BOOST_TEST(v2 >= v1); + BOOST_TEST(v2 < v3); + BOOST_TEST(v2 <= v3); + BOOST_TEST(v3 > v2); + BOOST_TEST(v3 >= v2); + } + + { + // conversion from ns::point to vector + ns::point p = {5, 3}; + fusion::vector v(p); + v = p; + } + + { + // conversion from ns::point to list + ns::point p = {5, 3}; + fusion::list l(p); + l = p; + } + + return boost::report_errors(); +} + From 5e9e7f31a45187a2ec4a0b2f5add9c7b7b833a04 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Mon, 2 Apr 2007 05:13:25 +0000 Subject: [PATCH 134/234] wrong library, FUSION, not SPIRIT [SVN r37332] --- .../sequence/adapted/struct/adapt_struct.hpp | 22 +++++++++---------- test/sequence/adapt_struct.cpp | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/include/boost/fusion/sequence/adapted/struct/adapt_struct.hpp b/include/boost/fusion/sequence/adapted/struct/adapt_struct.hpp index 3afea18c..38d03edb 100644 --- a/include/boost/fusion/sequence/adapted/struct/adapt_struct.hpp +++ b/include/boost/fusion/sequence/adapted/struct/adapt_struct.hpp @@ -29,21 +29,21 @@ #include #include -#define BOOST_SPIRIT_ADAPT_STRUCT(name, bseq) \ - BOOST_SPIRIT_ADAPT_STRUCT_I( \ - name, BOOST_PP_CAT(BOOST_SPIRIT_ADAPT_STRUCT_X bseq, 0)) \ +#define BOOST_FUSION_ADAPT_STRUCT(name, bseq) \ + BOOST_FUSION_ADAPT_STRUCT_I( \ + name, BOOST_PP_CAT(BOOST_FUSION_ADAPT_STRUCT_X bseq, 0)) \ /***/ -#define BOOST_SPIRIT_ADAPT_STRUCT_X(x, y) ((x, y)) BOOST_SPIRIT_ADAPT_STRUCT_Y -#define BOOST_SPIRIT_ADAPT_STRUCT_Y(x, y) ((x, y)) BOOST_SPIRIT_ADAPT_STRUCT_X -#define BOOST_SPIRIT_ADAPT_STRUCT_X0 -#define BOOST_SPIRIT_ADAPT_STRUCT_Y0 +#define BOOST_FUSION_ADAPT_STRUCT_X(x, y) ((x, y)) BOOST_FUSION_ADAPT_STRUCT_Y +#define BOOST_FUSION_ADAPT_STRUCT_Y(x, y) ((x, y)) BOOST_FUSION_ADAPT_STRUCT_X +#define BOOST_FUSION_ADAPT_STRUCT_X0 +#define BOOST_FUSION_ADAPT_STRUCT_Y0 -// BOOST_SPIRIT_ADAPT_STRUCT_I generates the overarching structure and uses +// BOOST_FUSION_ADAPT_STRUCT_I generates the overarching structure and uses // SEQ_FOR_EACH_I to generate the "linear" substructures. // Thanks to Paul Mensonides for the PP macro help -#define BOOST_SPIRIT_ADAPT_STRUCT_I(name, seq) \ +#define BOOST_FUSION_ADAPT_STRUCT_I(name, seq) \ namespace boost { namespace fusion { namespace traits \ { \ template <> \ @@ -56,11 +56,11 @@ { \ template <> \ struct struct_size : mpl::int_ {}; \ - BOOST_PP_SEQ_FOR_EACH_I(BOOST_SPIRIT_ADAPT_STRUCT_C, name, seq) \ + BOOST_PP_SEQ_FOR_EACH_I(BOOST_FUSION_ADAPT_STRUCT_C, name, seq) \ }}} \ /***/ -#define BOOST_SPIRIT_ADAPT_STRUCT_C(r, name, i, xy) \ +#define BOOST_FUSION_ADAPT_STRUCT_C(r, name, i, xy) \ template <> \ struct struct_member \ { \ diff --git a/test/sequence/adapt_struct.cpp b/test/sequence/adapt_struct.cpp index 91104b31..114b8862 100644 --- a/test/sequence/adapt_struct.cpp +++ b/test/sequence/adapt_struct.cpp @@ -36,7 +36,7 @@ namespace ns }; } -BOOST_SPIRIT_ADAPT_STRUCT( +BOOST_FUSION_ADAPT_STRUCT( ns::point, (int, x) (int, y) From 0913d82b4326e567ba91504fb37e792d4301cab1 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Mon, 2 Apr 2007 12:41:10 +0000 Subject: [PATCH 135/234] forgot to commit. [SVN r37336] --- include/boost/fusion/include/adapt_struct.hpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 include/boost/fusion/include/adapt_struct.hpp diff --git a/include/boost/fusion/include/adapt_struct.hpp b/include/boost/fusion/include/adapt_struct.hpp new file mode 100644 index 00000000..2fab5de7 --- /dev/null +++ b/include/boost/fusion/include/adapt_struct.hpp @@ -0,0 +1,12 @@ +/*============================================================================= + Copyright (c) 2001-2007 Joel de Guzman + + Distributed under the 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_INCLUDE_ADAPT_STRUCT) +#define FUSION_INCLUDE_ADAPT_STRUCT + +#include + +#endif From 6a01312869d6b2c6e7bf987308cb6f7d9aa56d34 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Mon, 2 Apr 2007 13:20:16 +0000 Subject: [PATCH 136/234] workaround for VC7.1 getting confused with optional and variant boost::get functions [SVN r37337] --- .../adapted/variant/variant_iterator.hpp | 28 +++++++++++++++---- 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/include/boost/fusion/sequence/adapted/variant/variant_iterator.hpp b/include/boost/fusion/sequence/adapted/variant/variant_iterator.hpp index 0bdcf311..9372002c 100644 --- a/include/boost/fusion/sequence/adapted/variant/variant_iterator.hpp +++ b/include/boost/fusion/sequence/adapted/variant/variant_iterator.hpp @@ -2,7 +2,7 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - 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_VARIANT_ITERATOR_12112006_1617) @@ -19,8 +19,9 @@ #include #include #include +#include -namespace boost { namespace fusion +namespace boost { namespace fusion { struct forward_traversal_tag; @@ -39,7 +40,7 @@ namespace boost { namespace fusion struct next { typedef variant_iterator< - typename Iterator::variant_type, + typename Iterator::variant_type, typename mpl::next::type> type; static type @@ -73,18 +74,32 @@ namespace boost { namespace fusion template struct deref { - typedef typename + typedef typename mpl::eval_if< is_const , add_const::type> , mpl::deref - >::type + >::type value_type; - typedef typename + typedef typename add_reference::type type; +#if BOOST_WORKAROUND(BOOST_MSVC, < 1400) +// for some unknown reason (compiler bug) VC7.1 gets confused with +// variant and optional get functions. + static type + call(Iterator const & it) + { + boost::detail::variant::get_visitor v; + typedef typename mpl::deref::type type; + if (type* result = it.var_.apply_visitor(v)) + return *result; + it.var_ = type(); // prime the variant + return *it.var_.apply_visitor(v); // no-throw! + } +#else static type call(Iterator const & it) { @@ -94,6 +109,7 @@ namespace boost { namespace fusion it.var_ = type(); // prime the variant return *boost::get(&it.var_); // no-throw! } +#endif }; }; }} From d19c24a886de1d71f115629f265636c8f5807e93 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Mon, 2 Apr 2007 15:43:37 +0000 Subject: [PATCH 137/234] functional module [SVN r37338] --- doc/changelog.qbk | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/changelog.qbk b/doc/changelog.qbk index 9add2b34..23d17406 100644 --- a/doc/changelog.qbk +++ b/doc/changelog.qbk @@ -4,5 +4,6 @@ This section summarizes significant changes to the Fusion library. * Sep 27, 2006: Added `boost::tuple` support. * Nov 17, 2006: Added `boost::variant` support. +* Feb 15, 2007: Added functional module. -[endsect] \ No newline at end of file +[endsect] From 67525cf4ab4c6407e668400617c4f37ed40b3f47 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Mon, 2 Apr 2007 15:45:59 +0000 Subject: [PATCH 138/234] fixes typos: at<0>(... [SVN r37339] --- doc/sequences.qbk | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/doc/sequences.qbk b/doc/sequences.qbk index 99dec662..b0b3072b 100644 --- a/doc/sequences.qbk +++ b/doc/sequences.qbk @@ -200,7 +200,7 @@ __bidirectional_sequence__ [variablelist Notation [[`s`] [A Random Access Sequence]] [[`S`] [A Random Access Sequence type]] - [[`N`] [An integral constant]] + [[`N`] [An __mpl_integral_constant__]] [[`o`] [An arbitrary object]] [[`e`] [A Sequence element]] ] @@ -491,7 +491,7 @@ time). The runtime cost of access to each element is peculiarly constant [[`car`] [An arbitrary data]] [[`cdr`] [Another `cons` list]] [[`s`] [A __forward_sequence__]] - [[`N`] [An Integral Constant]] + [[`N`] [An __mpl_integral_constant__]] ] [heading Expression Semantics] @@ -519,8 +519,8 @@ constant (see __recursive_inline__).] [heading Example] cons > l(12, cons(5.5f)); - std::cout << __at__<0>(l) << std::endl; - std::cout << __at__<1>(l) << std::endl; + std::cout << __at_c__<0>(l) << std::endl; + std::cout << __at_c__<1>(l) << std::endl; [endsect] @@ -576,7 +576,7 @@ including any Fusion header to change the default. Example: [[`l`] [An instance of `list`]] [[`e0`...`en`] [Heterogeneous values]] [[`s`] [A __forward_sequence__]] - [[`N`] [An Integral Constant]] + [[`N`] [An __mpl_integral_constant__]] ] [heading Expression Semantics] @@ -602,8 +602,8 @@ constant (see __recursive_inline__).] [heading Example] list l(12, 5.5f); - std::cout << __at__<0>(l) << std::endl; - std::cout << __at__<1>(l) << std::endl; + std::cout << __at_c__<0>(l) << std::endl; + std::cout << __at_c__<1>(l) << std::endl; [endsect] @@ -1678,7 +1678,7 @@ Returns the N-th element from the beginning of the sequence. [table [[Parameter] [Requirement] [Description]] [[`seq`] [Model of __random_access_sequence__] [The sequence we wish to investigate.]] - [[`N`] [An __mpl__ integral constant] [An index from the beginning of the + [[`N`] [An __mpl_integral_constant__] [An index from the beginning of the sequence.]] ] From 33b2d3b7500c4b8425e747c472c956d78b6a2818 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Mon, 2 Apr 2007 15:49:35 +0000 Subject: [PATCH 139/234] changes phrasing (minor) [SVN r37340] --- doc/functional.qbk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/functional.qbk b/doc/functional.qbk index 4953ac75..222aebee 100644 --- a/doc/functional.qbk +++ b/doc/functional.qbk @@ -469,7 +469,7 @@ reference. Const qualification is preserved and propagated appropriately target function object that is const or, if the target function object is held by value, the adapter is const - these semantics have nothing to do with the const qualification of a member function, which is referring -to the type of object pointed to by [^this], which is specified with the +to the type of object pointed to by [^this] that is specified with the first element in the sequence passed to the adapter). If the target function is a pointer to a class members, the corresponding @@ -544,7 +544,7 @@ reference. Const qualification is preserved and propagated appropriately target function object that is const or, if the target function object is held by value, the adapter is const - these semantics have nothing to do with the const qualification of a member function, which is referring -to the type of object pointed to by [^this], which is specified with the +to the type of object pointed to by [^this] that is specified with the first element in the sequence passed to the adapter). If the target function is a pointer to a members function, the corresponding From 8da8ce2c61ff62e413c5aac9a6961b18b084506d Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Mon, 2 Apr 2007 15:50:23 +0000 Subject: [PATCH 140/234] updates link to boost::shared_ptr [SVN r37341] --- doc/fusion.qbk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/fusion.qbk b/doc/fusion.qbk index ea880d8d..0a0cf9e5 100644 --- a/doc/fusion.qbk +++ b/doc/fusion.qbk @@ -41,7 +41,7 @@ [def __boost_result_of__ [@http://www.boost.org/libs/utility/utility.htm#result_of Boost.ResultOf]] [def __boost_result_of_call__ [@http://www.boost.org/libs/utility/utility.htm#result_of `boost::result_of`]] [def __boost_enable_if__ [@http://www.boost.org/libs/utility/enable_if.html Boost.EnableIf utility]] -[def __boost_shared_ptr_call__ [@http://www.boost.org/libs/smart_ptr/smart_ptr.hpp `boost::shared_ptr`]] +[def __boost_shared_ptr_call__ [@http://www.boost.org/libs/smart_ptr/shared_ptr.htm `boost::shared_ptr`]] [def __std_pair_doc__ [@http://www.sgi.com/tech/stl/pair.html `std::pair`]] [def __std_plus_doc__ [@http://www.sgi.com/tech/stl/plus.html `std::plus`]] [def __std_minus_doc__ [@http://www.sgi.com/tech/stl/minus.html `std::minus`]] From 02005e075f5492007ed72e93da930b6d3f01dcab Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Tue, 3 Apr 2007 06:17:56 +0000 Subject: [PATCH 141/234] more flat includes [SVN r37342] --- include/boost/fusion/include/any.hpp | 12 ++++++++++++ include/boost/fusion/include/begin.hpp | 12 ++++++++++++ include/boost/fusion/include/end.hpp | 12 ++++++++++++ include/boost/fusion/include/make_cons.hpp | 12 ++++++++++++ 4 files changed, 48 insertions(+) create mode 100644 include/boost/fusion/include/any.hpp create mode 100644 include/boost/fusion/include/begin.hpp create mode 100644 include/boost/fusion/include/end.hpp create mode 100644 include/boost/fusion/include/make_cons.hpp diff --git a/include/boost/fusion/include/any.hpp b/include/boost/fusion/include/any.hpp new file mode 100644 index 00000000..e5c73060 --- /dev/null +++ b/include/boost/fusion/include/any.hpp @@ -0,0 +1,12 @@ +/*============================================================================= + Copyright (c) 2001-2007 Joel de Guzman + + Distributed under the 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_INCLUDE_ANY) +#define FUSION_INCLUDE_ANY + +#include + +#endif diff --git a/include/boost/fusion/include/begin.hpp b/include/boost/fusion/include/begin.hpp new file mode 100644 index 00000000..53361fb2 --- /dev/null +++ b/include/boost/fusion/include/begin.hpp @@ -0,0 +1,12 @@ +/*============================================================================= + Copyright (c) 2001-2007 Joel de Guzman + + Distributed under the 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_INCLUDE_BEGIN) +#define FUSION_INCLUDE_BEGIN + +#include + +#endif diff --git a/include/boost/fusion/include/end.hpp b/include/boost/fusion/include/end.hpp new file mode 100644 index 00000000..60be1a98 --- /dev/null +++ b/include/boost/fusion/include/end.hpp @@ -0,0 +1,12 @@ +/*============================================================================= + Copyright (c) 2001-2007 Joel de Guzman + + Distributed under the 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_INCLUDE_BEGIN) +#define FUSION_INCLUDE_BEGIN + +#include + +#endif diff --git a/include/boost/fusion/include/make_cons.hpp b/include/boost/fusion/include/make_cons.hpp new file mode 100644 index 00000000..a0181953 --- /dev/null +++ b/include/boost/fusion/include/make_cons.hpp @@ -0,0 +1,12 @@ +/*============================================================================= + Copyright (c) 2001-2007 Joel de Guzman + + Distributed under the 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_INCLUDE_MAKE_CONS) +#define FUSION_INCLUDE_MAKE_CONS + +#include + +#endif From bf4de4d0af02c307594688ce069fc201408da70e Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Tue, 10 Apr 2007 22:27:41 +0000 Subject: [PATCH 142/234] typo fix [SVN r37413] --- doc/sequences.qbk | 694 +++++++++++++++++++++++----------------------- 1 file changed, 347 insertions(+), 347 deletions(-) diff --git a/doc/sequences.qbk b/doc/sequences.qbk index b0b3072b..26270ee1 100644 --- a/doc/sequences.qbk +++ b/doc/sequences.qbk @@ -1,11 +1,11 @@ [section Sequences] -Like __mpl__, the Sequence is a fundamental concept in Fusion. A Sequence -may or may not actually store or contain data. __containers__ are sequences -that hold data. __views__, on the other hand, are sequences that do not -store any data. Instead, they are proxies that impart an alternative -presentation over another sequence. All models of Sequence have an -associated __iterator__ type that can be used to iterate through the +Like __mpl__, the Sequence is a fundamental concept in Fusion. A Sequence +may or may not actually store or contain data. __containers__ are sequences +that hold data. __views__, on the other hand, are sequences that do not +store any data. Instead, they are proxies that impart an alternative +presentation over another sequence. All models of Sequence have an +associated __iterator__ type that can be used to iterate through the Sequence's elements. [heading Header] @@ -14,31 +14,31 @@ Sequence's elements. [section Concepts] -Fusion Sequences are organized into a hierarchy of concepts. +Fusion Sequences are organized into a hierarchy of concepts. [heading Traversal] -Fusion's sequence traversal related concepts parallel Fusion's -__iterator_concepts__. __forward_sequence__ is the most basic concept. -__bidirectional_sequence__ is a refinement of __forward_sequence__. -__random_access_sequence__ is a refinement of __bidirectional_sequence__. +Fusion's sequence traversal related concepts parallel Fusion's +__iterator_concepts__. __forward_sequence__ is the most basic concept. +__bidirectional_sequence__ is a refinement of __forward_sequence__. +__random_access_sequence__ is a refinement of __bidirectional_sequence__. These concepts pertain to sequence traversal. [heading Associativity] -The __associative_sequence__ concept is orthogonal to traversal. An Associative +The __associative_sequence__ concept is orthogonal to traversal. An Associative Sequence allows efficient retrieval of elements based on keys. [section Forward Sequence] [heading Description] -A Forward Sequence is a Sequence whose elements are arranged in a definite -order. The ordering is guaranteed not to change from iteration to -iteration. The requirement of a definite ordering allows the definition of -element-by-element equality (if the container's element type is Equality -Comparable) and of lexicographical ordering (if the container's element -type is LessThan Comparable). +A Forward Sequence is a Sequence whose elements are arranged in a definite +order. The ordering is guaranteed not to change from iteration to +iteration. The requirement of a definite ordering allows the definition of +element-by-element equality (if the container's element type is Equality +Comparable) and of lexicographical ordering (if the container's element +type is LessThan Comparable). [variablelist Notation [[`s`] [A Forward Sequence]] @@ -61,9 +61,9 @@ For any Forward Sequence the following expressions must be valid: Convertible to bool.] [] [Constant]] [[`__front__(s)`] [Any type] [] [Constant]] [[`__front__(s) = o`] [Any type] [`s` is mutable and - `e = o`, where `e` - is the first element - in the sequence, is + `e = o`, where `e` + is the first element + in the sequence, is a valid expression.] [Constant]] ] @@ -85,8 +85,8 @@ For any Forward Sequence the following expressions must be valid: [[`__begin__(s)`] [An iterator to the first element of the sequence; see __begin__.]] [[`__end__(s)`] [A past-the-end iterator to the sequence; see __end__.]] [[`__size__(s)`] [The size of the sequence; see __size__.]] - [[`__empty__(s)`] [A boolean Integral Constant `c` such that - `c::value == true` if and only if the sequence + [[`__empty__(s)`] [A boolean Integral Constant `c` such that + `c::value == true` if and only if the sequence is empty; see __empty__.]] [[`__front__(s)`] [The first element in the sequence; see __front__.]] ] @@ -96,10 +96,10 @@ For any Forward Sequence the following expressions must be valid: For any Forward Sequence s the following invariants always hold: * `[__begin__(s), __end__(s))` is always a valid range. -* An __algorithm__ that iterates through the range `[__begin__(s), __end__(s))` +* 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. -* Two different iterations through `s` will access its elements in +* Two different iterations through `s` will access its elements in the same order. [heading Models] @@ -124,7 +124,7 @@ For any Forward Sequence s the following invariants always hold: [heading Description] -A Bidirectional Sequence is a __forward_sequence__ whose iterators model +A Bidirectional Sequence is a __forward_sequence__ whose iterators model __bidirectional_iterator__. [heading Refinement of] @@ -140,7 +140,7 @@ __forward_sequence__ [heading Valid Expressions] -In addition to the requirements defined in __forward_sequence__, for any +In addition to the requirements defined in __forward_sequence__, for any Bidirectional Sequence the following must be met: [table @@ -149,15 +149,15 @@ Bidirectional Sequence the following must be met: [[`__end__(s)`] [__bidirectional_iterator__] [] [Constant]] [[`__back__(s)`] [Any type] [] [Constant]] [[`__back__(s) = o`] [Any type] [`s` is mutable and - `e = o`, where `e` - is the first element - in the sequence, is + `e = o`, where `e` + is the first element + in the sequence, is a valid expression.] [Constant]] ] [heading Result Type Expressions] -[table +[table [[Expression] [Compile Time Complexity]] [[`__result_of_begin__::type`] [Amortized constant time]] [[`__result_of_end__::type`] [Amortized constant time]] @@ -166,10 +166,10 @@ Bidirectional Sequence the following must be met: [heading Expression Semantics] -The semantics of an expression are defined only where they differ from, or +The semantics of an expression are defined only where they differ from, or are not defined in __forward_sequence__. -[table +[table [[Expression] [Semantics]] [[`__back__(s)`] [The last element in the sequence; see __back__.]] ] @@ -189,9 +189,9 @@ are not defined in __forward_sequence__. [heading Description] -A Random Access Sequence is a __bidirectional_sequence__ whose iterators -model __random_access_iterator__. It guarantees constant time access to -arbitrary sequence elements. +A Random Access Sequence is a __bidirectional_sequence__ whose iterators +model __random_access_iterator__. It guarantees constant time access to +arbitrary sequence elements. [heading Refinement of] @@ -207,7 +207,7 @@ __bidirectional_sequence__ [heading Valid Expressions] -In addition to the requirements defined in __bidirectional_sequence__, for +In addition to the requirements defined in __bidirectional_sequence__, for any Random Access Sequence the following must be met: [table @@ -216,15 +216,15 @@ any Random Access Sequence the following must be met: [[`__end__(s)`] [__random_access_iterator__] [] [Constant]] [[`__at__(s)`] [Any type] [] [Constant]] [[`__at__(s) = o`] [Any type] [`s` is mutable and - `e = o`, where `e` - is the first element - in the sequence, is + `e = o`, where `e` + is the first element + in the sequence, is a valid expression.] [Constant]] ] [heading Result Type Expressions] -[table +[table [[Expression] [Compile Time Complexity]] [[`__result_of_begin__::type`] [Amortized constant time]] [[`__result_of_end__::type`] [Amortized constant time]] @@ -232,18 +232,18 @@ any Random Access Sequence the following must be met: [[`__result_of_value_at__::type`] [Amortized constant time]] ] -[blurb __note__ `__result_of_at__` returns the actual type returned by -`__at__(s)`. In most cases, this is a reference. Hence, there is no way to -know the exact element type using `__result_of_at__`.The element at `N` -may actually be a reference to begin with. For this purpose, you can use +[blurb __note__ `__result_of_at__` returns the actual type returned by +`__at__(s)`. In most cases, this is a reference. Hence, there is no way to +know the exact element type using `__result_of_at__`.The element at `N` +may actually be a reference to begin with. For this purpose, you can use `__result_of_value_at__`.] [heading Expression Semantics] -The semantics of an expression are defined only where they differ from, or +The semantics of an expression are defined only where they differ from, or are not defined in __bidirectional_sequence__. -[table +[table [[Expression] [Semantics]] [[`__at__(s)`] [The Nth element from the beginning of the sequence; see __at__.]] ] @@ -263,14 +263,14 @@ are not defined in __bidirectional_sequence__. [heading Description] -An Associative Sequence allows efficient retrieval of elements based on keys. -Like associative sequences in __mpl__, and unlike associative containers in -__stl__, Fusion associative sequences have no implied ordering relation. -Instead, type identity is used to impose an equivalence relation on keys, and -the order in which sequence elements are traversed during iteration is left -unspecified. In addition, unlike __stl__, Associative Sequences have mutable -iterators. This is due to the fact that there is no associated ordering relation -and the runtime value of the keys themselves do not have any effect on the +An Associative Sequence allows efficient retrieval of elements based on keys. +Like associative sequences in __mpl__, and unlike associative containers in +__stl__, Fusion associative sequences have no implied ordering relation. +Instead, type identity is used to impose an equivalence relation on keys, and +the order in which sequence elements are traversed during iteration is left +unspecified. In addition, unlike __stl__, Associative Sequences have mutable +iterators. This is due to the fact that there is no associated ordering relation +and the runtime value of the keys themselves do not have any effect on the associativity of the sequence. @@ -292,36 +292,36 @@ For any Associative Sequence the following expressions must be valid: Convertible to bool.] [] [Constant]] [[`__at_key__(s)`] [Any type] [] [Constant]] [[`__at_key__(s) = o`] [Any type] [`s` is mutable and - `e = o`, where `e` - is the first element - in the sequence, is + `e = o`, where `e` + is the first element + in the sequence, is a valid expression.] [Constant]] ] [heading Result Type Expressions] -[table +[table [[Expression] [Compile Time Complexity]] [[`__result_of_has_key__::type`] [Amortized constant time]] [[`__result_of_at_key__::type`] [Amortized constant time]] [[`__result_of_value_at_key__::type`] [Amortized constant time]] ] -[blurb __note__ `__result_of_at_key__` returns the actual type returned -by `__at_key__(s)`. In most cases, this is a reference. Hence, there is no -way to know the exact element type using `__result_of_at_key__`.The -element at `K` may actually be a reference to begin with. For this purpose, +[blurb __note__ `__result_of_at_key__` returns the actual type returned +by `__at_key__(s)`. In most cases, this is a reference. Hence, there is no +way to know the exact element type using `__result_of_at_key__`.The +element at `K` may actually be a reference to begin with. For this purpose, you can use `__result_of_value_at_key__`.] [heading Expression Semantics] -[table +[table [[Expression] [Semantics]] - [[`__has_key__(s)`] [A boolean Integral Constant `c` such that - `c::value == true` if and only if there is - one or more elements with the key `k` in `s`; + [[`__has_key__(s)`] [A boolean Integral Constant `c` such that + `c::value == true` if and only if there is + one or more elements with the key `k` in `s`; see __has_key__.]] - [[`__at_key__(s)`] [The element associated with the key + [[`__at_key__(s)`] [The element associated with the key `K` in the sequence `s`; see __at__.]] ] @@ -336,7 +336,7 @@ you can use `__result_of_value_at_key__`.] [section Containers] -Fusion provides a few predefined sequences out of the box. These +Fusion provides a few predefined sequences out of the box. These /containers/ actually hold heterogenously typed data; unlike __views__. These containers are more or less counterparts of those in __stl__. @@ -348,9 +348,9 @@ __views__. These containers are more or less counterparts of those in __stl__. [heading Description] -`vector` is a __random_access_sequence__ of heterogenous typed -data structured as a simple `struct` where each element is held -as a member variable. `vector` is the simplest of the Fusion +`vector` is a __random_access_sequence__ of heterogenous typed +data structured as a simple `struct` where each element is held +as a member variable. `vector` is the simplest of the Fusion sequence container, and in many cases the most efficient. [heading Header] @@ -374,15 +374,15 @@ sequence container, and in many cases the most efficient. template struct vector1; - + template struct vector2; - + template struct vector3; - + ... - + template struct vectorN; @@ -401,13 +401,13 @@ The numbered form accepts the exact number of elements. Example: vector3 -The variadic form accepts `0` to `FUSION_MAX_VECTOR_SIZE` elements, where -`FUSION_MAX_VECTOR_SIZE` is a user definable predefined maximum that +The variadic form accepts `0` to `FUSION_MAX_VECTOR_SIZE` elements, where +`FUSION_MAX_VECTOR_SIZE` is a user definable predefined maximum that defaults to `10`. Example: vector -You may define the preprocessor constant `FUSION_MAX_VECTOR_SIZE` before +You may define the preprocessor constant `FUSION_MAX_VECTOR_SIZE` before including any Fusion header to change the default. Example: #define FUSION_MAX_VECTOR_SIZE 20 @@ -432,7 +432,7 @@ including any Fusion header to change the default. Example: [heading Expression Semantics] -Semantics of an expression is defined only where it differs from, or is not +Semantics of an expression is defined only where it differs from, or is not defined in __random_access_sequence__. [table @@ -455,12 +455,12 @@ defined in __random_access_sequence__. [heading Description] -`cons` is a simple __forward_sequence__. It is a lisp style recursive list -structure where `car` is the /head/ and `cdr` is the /tail/: usually -another cons structure or `nil`: the empty list. Fusion's __list__ is built -on top of this more primitive data structure. It is more efficient than -__vector__ when the target sequence is constructed piecemeal (a data at a -time). The runtime cost of access to each element is peculiarly constant +`cons` is a simple __forward_sequence__. It is a lisp style recursive list +structure where `car` is the /head/ and `cdr` is the /tail/: usually +another cons structure or `nil`: the empty list. Fusion's __list__ is built +on top of this more primitive data structure. It is more efficient than +__vector__ when the target sequence is constructed piecemeal (a data at a +time). The runtime cost of access to each element is peculiarly constant (see __recursive_inline__). [heading Header] @@ -496,7 +496,7 @@ time). The runtime cost of access to each element is peculiarly constant [heading Expression Semantics] -Semantics of an expression is defined only where it differs from, or is not +Semantics of an expression is defined only where it differs from, or is not defined in __forward_sequence__. [table @@ -510,10 +510,10 @@ defined in __forward_sequence__. [[`__at__(l)`] [The Nth element from the beginning of the sequence; see __at__.]] ] -[blurb __note__ `__at__(l)` is provided for convenience and compatibility -with the original __tuple__ library, despite `cons` being a -__forward_sequence__ only (`at` is supposed to be a -__random_access_sequence__ requirement). The runtime complexity of __at__ is +[blurb __note__ `__at__(l)` is provided for convenience and compatibility +with the original __tuple__ library, despite `cons` being a +__forward_sequence__ only (`at` is supposed to be a +__random_access_sequence__ requirement). The runtime complexity of __at__ is constant (see __recursive_inline__).] [heading Example] @@ -528,9 +528,9 @@ constant (see __recursive_inline__).] [heading Description] -`list` is a __forward_sequence__ of heterogenous typed data built on top of -__cons__. It is more efficient than __vector__ when the target sequence is -constructed piecemeal (a data at a time). The runtime cost of access to +`list` is a __forward_sequence__ of heterogenous typed data built on top of +__cons__. It is more efficient than __vector__ when the target sequence is +constructed piecemeal (a data at a time). The runtime cost of access to each element is peculiarly constant (see __recursive_inline__). [heading Header] @@ -549,17 +549,17 @@ each element is peculiarly constant (see __recursive_inline__). > struct list; -The variadic class interface accepts `0` to `FUSION_MAX_LIST_SIZE` -elements, where `FUSION_MAX_LIST_SIZE` is a user definable predefined +The variadic class interface accepts `0` to `FUSION_MAX_LIST_SIZE` +elements, where `FUSION_MAX_LIST_SIZE` is a user definable predefined maximum that defaults to `10`. Example: list -You may define the preprocessor constant `FUSION_MAX_LIST_SIZE` before +You may define the preprocessor constant `FUSION_MAX_LIST_SIZE` before including any Fusion header to change the default. Example: #define FUSION_MAX_LIST_SIZE 20 - + [heading Template parameters] [table @@ -581,7 +581,7 @@ including any Fusion header to change the default. Example: [heading Expression Semantics] -Semantics of an expression is defined only where it differs from, or is not +Semantics of an expression is defined only where it differs from, or is not defined in __forward_sequence__. [table @@ -593,10 +593,10 @@ defined in __forward_sequence__. [[`__at__(l)`] [The Nth element from the beginning of the sequence; see __at__.]] ] -[blurb __note__ `__at__(l)` is provided for convenience and compatibility -with the original __tuple__ library, despite `list` being a -__forward_sequence__ only (__at__ is supposed to be a -__random_access_sequence__ requirement). The runtime complexity of __at__ is +[blurb __note__ `__at__(l)` is provided for convenience and compatibility +with the original __tuple__ library, despite `list` being a +__forward_sequence__ only (__at__ is supposed to be a +__random_access_sequence__ requirement). The runtime complexity of __at__ is constant (see __recursive_inline__).] [heading Example] @@ -611,10 +611,10 @@ constant (see __recursive_inline__).] [heading Description] -set is an __associative_sequence__ of heteregenous typed data elements. -Type identity is used to impose an equivalence relation on keys. The -element's type is its key. A set may contain at most one element for each -key. Membership testing and element key lookup has constant runtime +set is an __associative_sequence__ of heteregenous typed data elements. +Type identity is used to impose an equivalence relation on keys. The +element's type is its key. A set may contain at most one element for each +key. Membership testing and element key lookup has constant runtime complexity (see __overloaded_functions__). [heading Header] @@ -632,13 +632,13 @@ complexity (see __overloaded_functions__). > struct set; -The variadic class interface accepts `0` to `FUSION_MAX_SET_SIZE` elements, -where `FUSION_MAX_SET_SIZE` is a user definable predefined maximum that +The variadic class interface accepts `0` to `FUSION_MAX_SET_SIZE` elements, +where `FUSION_MAX_SET_SIZE` is a user definable predefined maximum that defaults to `10`. Example: set -You may define the preprocessor constant `FUSION_MAX_SET_SIZE` before +You may define the preprocessor constant `FUSION_MAX_SET_SIZE` before including any Fusion header to change the default. Example: #define FUSION_MAX_SET_SIZE 20 @@ -664,7 +664,7 @@ including any Fusion header to change the default. Example: [heading Expression Semantics] -Semantics of an expression is defined only where it differs from, or is not +Semantics of an expression is defined only where it differs from, or is not defined in __random_access_sequence__ and __associative_sequence__. [table @@ -689,11 +689,11 @@ defined in __random_access_sequence__ and __associative_sequence__. [heading Description] -map is an __associative_sequence__ of heteregenous typed data elements. -Each element is a key/data pair (see __fusion_pair__) where the key has no -data (type only). Type identity is used to impose an equivalence relation -on keys. A map may contain at most one element for each key. Membership -testing and element key lookup has constant runtime complexity (see +map is an __associative_sequence__ of heteregenous typed data elements. +Each element is a key/data pair (see __fusion_pair__) where the key has no +data (type only). Type identity is used to impose an equivalence relation +on keys. A map may contain at most one element for each key. Membership +testing and element key lookup has constant runtime complexity (see __overloaded_functions__). [heading Header] @@ -711,13 +711,13 @@ __overloaded_functions__). > struct map; -The variadic class interface accepts `0` to `FUSION_MAX_MAP_SIZE` elements, -where `FUSION_MAX_MAP_SIZE` is a user definable predefined maximum that +The variadic class interface accepts `0` to `FUSION_MAX_MAP_SIZE` elements, +where `FUSION_MAX_MAP_SIZE` is a user definable predefined maximum that defaults to `10`. Example: map<__pair__, __pair__, __pair__ > -You may define the preprocessor constant `FUSION_MAX_MAP_SIZE` before +You may define the preprocessor constant `FUSION_MAX_MAP_SIZE` before including any Fusion header to change the default. Example: #define FUSION_MAX_MAP_SIZE 20 @@ -743,7 +743,7 @@ including any Fusion header to change the default. Example: [heading Expression Semantics] -Semantics of an expression is defined only where it differs from, or is not +Semantics of an expression is defined only where it differs from, or is not defined in __random_access_sequence__ and __associative_sequence__. [table @@ -758,15 +758,15 @@ defined in __random_access_sequence__ and __associative_sequence__. typedef map< __pair__ - , __pair__ > + , __pair__ > map_type; - + map_type m( __fusion_make_pair__('X') , __fusion_make_pair__("Men")); - - std::cout << __at__(m) << std::endl; - std::cout << __at__(m) << std::endl; + + std::cout << __at_key__(m) << std::endl; + std::cout << __at_key__(m) << std::endl; [endsect] @@ -774,12 +774,12 @@ defined in __random_access_sequence__ and __associative_sequence__. [section Views] -Views are sequences that do not actually contain data, but instead impart -an alternative presentation over the data from one or more underlying -sequences. Views are proxies. They provide an efficient yet purely -functional way to work on potentially expensive sequence operations. Views -are inherently lazy. Their elements are only computed on demand only when -the elements of the underlying sequence(s) are actually accessed. Views' +Views are sequences that do not actually contain data, but instead impart +an alternative presentation over the data from one or more underlying +sequences. Views are proxies. They provide an efficient yet purely +functional way to work on potentially expensive sequence operations. Views +are inherently lazy. Their elements are only computed on demand only when +the elements of the underlying sequence(s) are actually accessed. Views' lazy nature make them very cheap to copy and be passed around by value. [heading Header] @@ -818,7 +818,7 @@ lazy nature make them very cheap to copy and be passed around by value. [heading Expression Semantics] -Semantics of an expression is defined only where it differs from, or is not +Semantics of an expression is defined only where it differs from, or is not defined in __forward_sequence__. [table @@ -839,9 +839,9 @@ defined in __forward_sequence__. [heading Description] -`filter_view` is a view into a subset of its underlying sequence's elements -satisfying a given predicate (an __mpl__ metafunction). The `filter_view` -presents only those elements for which its predicate evaluates to +`filter_view` is a view into a subset of its underlying sequence's elements +satisfying a given predicate (an __mpl__ metafunction). The `filter_view` +presents only those elements for which its predicate evaluates to `mpl::true_`. [heading Header] @@ -858,7 +858,7 @@ presents only those elements for which its predicate evaluates to [table [[Parameter] [Description] [Default]] [[`Sequence`] [A __forward_sequence__] []] - [[`Pred`] [Unary Metafunction + [[`Pred`] [Unary Metafunction returning an `mpl::bool_`] []] ] @@ -874,7 +874,7 @@ presents only those elements for which its predicate evaluates to [heading Expression Semantics] -Semantics of an expression is defined only where it differs from, or is not +Semantics of an expression is defined only where it differs from, or is not defined in __forward_sequence__. [table @@ -902,7 +902,7 @@ defined in __forward_sequence__. [heading Description] -`iterator_range` presents a sub-range of its underlying sequence delimited +`iterator_range` presents a sub-range of its underlying sequence delimited by a pair of iterators. [heading Header] @@ -935,7 +935,7 @@ by a pair of iterators. [heading Expression Semantics] -Semantics of an expression is defined only where it differs from, or is not +Semantics of an expression is defined only where it differs from, or is not defined in __forward_sequence__. [table @@ -1000,7 +1000,7 @@ defined in __forward_sequence__. [heading Expression Semantics] -Semantics of an expression is defined only where it differs from, or is not +Semantics of an expression is defined only where it differs from, or is not defined in __forward_sequence__. [table @@ -1057,7 +1057,7 @@ is constructed from a __sequence__ of references to the component __sequence__s. [heading Expression Semantics] -Semantics of an expression is defined only where it differs from, or is not +Semantics of an expression is defined only where it differs from, or is not defined in __forward_sequence__. [table @@ -1079,9 +1079,9 @@ defined in __forward_sequence__. [section transform_view] -`transform_view` presents a transformed view of its underlying sequence -given a unary __poly_func_obj__. The `transform_view` inherits the -traversal characteristics (see __traversal_concept__) of its underlying +`transform_view` presents a transformed view of its underlying sequence +given a unary __poly_func_obj__. The `transform_view` inherits the +traversal characteristics (see __traversal_concept__) of its underlying sequence. [heading Header] @@ -1112,8 +1112,8 @@ sequence. [heading Model of] -* __forward_sequence__, __bidirectional_sequence__ or -__random_access_sequence__ depending on the traversal characteristics (see +* __forward_sequence__, __bidirectional_sequence__ or +__random_access_sequence__ depending on the traversal characteristics (see __traversal_concept__) of its underlying sequence. [variablelist Notation @@ -1129,16 +1129,16 @@ __traversal_concept__) of its underlying sequence. [heading Expression Semantics] -Semantics of an expression is defined only where it differs from, or is not -defined in __forward_sequence__, __bidirectional_sequence__ or -__random_access_sequence__ depending on the traversal characteristics (see +Semantics of an expression is defined only where it differs from, or is not +defined in __forward_sequence__, __bidirectional_sequence__ or +__random_access_sequence__ depending on the traversal characteristics (see __traversal_concept__) of its underlying sequence. [table [[Expression] [Semantics]] - [[`UTV(s, f)`] [Creates a unary `transform_view` given sequence, + [[`UTV(s, f)`] [Creates a unary `transform_view` given sequence, `s` and unary __poly_func_obj__, `f`.]] - [[`BTV(s1, s2, f)`] [Creates a binary `transform_view` given sequences, `s1` and `s2` + [[`BTV(s1, s2, f)`] [Creates a binary `transform_view` given sequences, `s1` and `s2` and unary __poly_func_obj__, `f`.]] [[`TV(tv)`] [Copy constructs a `transform_view` from another `transform_view`, `tv`.]] [[`tv = tv2`] [Assigns to a `transform_view`, `tv`, from another `transform_view`, `tv2`.]] @@ -1153,7 +1153,7 @@ __traversal_concept__) of its underlying sequence. { typedef T type; }; - + template T operator()(T x) const { @@ -1171,7 +1171,7 @@ __traversal_concept__) of its underlying sequence. [section reverse_view] -`reverse_view` presents a reversed view of underlying sequence. The first +`reverse_view` presents a reversed view of underlying sequence. The first element will be its last and the last element will be its first. [heading Header] @@ -1202,7 +1202,7 @@ element will be its last and the last element will be its first. [heading Expression Semantics] -Semantics of an expression is defined only where it differs from, or is not +Semantics of an expression is defined only where it differs from, or is not defined in __bidirectional_sequence__. [table @@ -1226,13 +1226,13 @@ defined in __bidirectional_sequence__. [section Adapted] -Fusion provides a couple of adapters for other sequences such as -`std::pair`, __mpl__ sequences, and `boost::array`. These adapters are -written using Fusion's non-intrusive __extension__ mechanism. If you wish -to use these sequences with fusion, simply include the necessary files and -they will be regarded as first-class, fully conforming fusion sequences -[footnote Fusion sequences may also be adapted as fully conforming __mpl__ -sequences (see __intrinsics__). That way, we can have 2-way adaptation to +Fusion provides a couple of adapters for other sequences such as +`std::pair`, __mpl__ sequences, and `boost::array`. These adapters are +written using Fusion's non-intrusive __extension__ mechanism. If you wish +to use these sequences with fusion, simply include the necessary files and +they will be regarded as first-class, fully conforming fusion sequences +[footnote Fusion sequences may also be adapted as fully conforming __mpl__ +sequences (see __intrinsics__). That way, we can have 2-way adaptation to and from __mpl__ and Fusion]. [heading Header] @@ -1241,7 +1241,7 @@ and from __mpl__ and Fusion]. [section std::pair] -This module provides adapters for `std::pair`. Including the module header +This module provides adapters for `std::pair`. Including the module header makes `std::pair` a fully conforming __random_access_sequence__. [heading Header] @@ -1267,7 +1267,7 @@ __std_pair_doc__, __tr1_tuple_pair__ [section mpl sequence] -This module provides adapters for __mpl__ sequences. Including the module +This module provides adapters for __mpl__ sequences. Including the module header makes all __mpl__ sequences fully conforming fusion sequences. [heading Header] @@ -1286,7 +1286,7 @@ header makes all __mpl__ sequences fully conforming fusion sequences. fusion::vector2 v(vec_c); std::cout << __at_c__<0>(v) << std::endl; std::cout << __at_c__<1>(v) << std::endl; - + v = mpl::vector_c(); std::cout << __at_c__<0>(v) << std::endl; std::cout << __at_c__<1>(v) << std::endl; @@ -1299,7 +1299,7 @@ __mpl__ [section boost::array] -This module provides adapters for `boost::array`. Including the module +This module provides adapters for `boost::array`. Including the module header makes `boost::array` a fully conforming __random_access_sequence__. [heading Header] @@ -1327,7 +1327,7 @@ __boost_array_library__ [endsect] [section boost::tuple] -This module provides adapters for `boost::tuple`. Including the module +This module provides adapters for `boost::tuple`. Including the module header makes `boost::tuple` a fully conforming __forward_sequence__. [heading Header] @@ -1351,7 +1351,7 @@ __boost_tuple_library__ [endsect] [section boost::variant] -This module provides adapters for `boost::variant`. Including the module +This module provides adapters for `boost::variant`. Including the module header makes `boost::variant` a fully conforming __forward_sequence__. The variant acts as a sequence of the types that can be contained in the variant. Accessing types not currently stored int the variant will lead to the variant @@ -1382,11 +1382,11 @@ __boost_variant_library__ [section Intrinsics] -Intrinsics form the essential interface of Fusion __sequence__s. __stl__ -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__[footnote In practice, many of intrinsic functions +Intrinsics form the essential interface of Fusion __sequence__s. __stl__ +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__[footnote In practice, many of intrinsic functions have default implementations that will work in majority of cases]. [heading Header] @@ -1422,8 +1422,8 @@ Returns an iterator pointing to the first element in the sequence. begin(seq); -[*Return type]: __forward_iterator__ if `seq` is a __forward_sequence__ -else, __bidirectional_iterator__ if `seq` is a __bidirectional_sequence__ +[*Return type]: __forward_iterator__ if `seq` is a __forward_sequence__ +else, __bidirectional_iterator__ if `seq` is a __bidirectional_sequence__ else, __random_access_iterator__ if `seq` is a __random_access_sequence__. [*Semantics]: Returns an iterator pointing to the first element in the sequence. @@ -1466,11 +1466,11 @@ Returns an iterator pointing to one element past the end of the sequence. end(seq); -[*Return type]: __forward_iterator__ if `seq` is a __forward_sequence__ -else, __bidirectional_iterator__ if `seq` is a __bidirectional_sequence__ +[*Return type]: __forward_iterator__ if `seq` is a __forward_sequence__ +else, __bidirectional_iterator__ if `seq` is a __bidirectional_sequence__ else, __random_access_iterator__ if `seq` is a __random_access_sequence__. -[*Semantics]: Returns an iterator pointing to one element past the end of +[*Semantics]: Returns an iterator pointing to one element past the end of the sequence. [heading Header] @@ -1488,7 +1488,7 @@ the sequence. [heading Description] -Returns a type convertible to `bool` that evaluates to `true` if the +Returns a type convertible to `bool` that evaluates to `true` if the sequence is empty, else, evaluates to `false`. [heading Synopsis] @@ -1510,7 +1510,7 @@ sequence is empty, else, evaluates to `false`. [*Return type]: Convertible to `bool`. -[*Semantics]: Evaluates to `true` if the sequence is empty, else, evaluates +[*Semantics]: Evaluates to `true` if the sequence is empty, else, evaluates to `false`. [heading Header] @@ -1551,9 +1551,9 @@ Returns the first element in the sequence. front(seq); -[*Return type]: Returns a reference to the first element in the sequence -`seq` if `seq` is mutable and `e = o`, where `e` is the first element in -the sequence, is a valid expression. Else, returns a type convertable to +[*Return type]: Returns a reference to the first element in the sequence +`seq` if `seq` is mutable and `e = o`, where `e` is the first element in +the sequence, is a valid expression. Else, returns a type convertable to the first element in the sequence. [*Precondition]: `__empty__(seq) == false` @@ -1598,9 +1598,9 @@ Returns the last element in the sequence. back(seq); -[*Return type]: Returns a reference to the last element in the sequence -`seq` if `seq` is mutable and `e = o`, where `e` is the last element in the -sequence, is a valid expression. Else, returns a type convertable to the +[*Return type]: Returns a reference to the last element in the sequence +`seq` if `seq` is mutable and `e = o`, where `e` is the last element in the +sequence, is a valid expression. Else, returns a type convertable to the last element in the sequence. [*Precondition]: `__empty__(seq) == false` @@ -1622,7 +1622,7 @@ last element in the sequence. [heading Description] -Returns a type convertible to `int` that evaluates the number of elements +Returns a type convertible to `int` that evaluates the number of elements in the sequence. [heading Synopsis] @@ -1678,7 +1678,7 @@ Returns the N-th element from the beginning of the sequence. [table [[Parameter] [Requirement] [Description]] [[`seq`] [Model of __random_access_sequence__] [The sequence we wish to investigate.]] - [[`N`] [An __mpl_integral_constant__] [An index from the beginning of the + [[`N`] [An __mpl_integral_constant__] [An index from the beginning of the sequence.]] ] @@ -1686,10 +1686,10 @@ Returns the N-th element from the beginning of the sequence. at(seq); -[*Return type]: Returns a reference to the N-th element from the beginning -of the sequence `seq` if `seq` is mutable and `e = o`, where `e` is the N-th -element from the beginning of the sequence, is a valid expression. Else, -returns a type convertable to the N-th element from the beginning of the +[*Return type]: Returns a reference to the N-th element from the beginning +of the sequence `seq` if `seq` is mutable and `e = o`, where `e` is the N-th +element from the beginning of the sequence, is a valid expression. Else, +returns a type convertable to the N-th element from the beginning of the sequence. [*Precondition]: `0 <= N::value < __size__(s)` @@ -1730,7 +1730,7 @@ Returns the N-th element from the beginning of the sequence. [table [[Parameter] [Requirement] [Description]] [[`seq`] [Model of __random_access_sequence__] [The sequence we wish to investigate.]] - [[`N`] [An integral constant] [An index from the beginning of the + [[`N`] [An integral constant] [An index from the beginning of the sequence.]] ] @@ -1738,10 +1738,10 @@ Returns the N-th element from the beginning of the sequence. at_c(seq); -[*Return type]: Returns a reference to the N-th element from the beginning -of the sequence `seq` if `seq` is mutable and `e = o`, where `e` is the N-th -element from the beginning of the sequence, is a valid expression. Else, -returns a type convertable to the N-th element from the beginning of the +[*Return type]: Returns a reference to the N-th element from the beginning +of the sequence `seq` if `seq` is mutable and `e = o`, where `e` is the N-th +element from the beginning of the sequence, is a valid expression. Else, +returns a type convertable to the N-th element from the beginning of the sequence. [*Precondition]: `0 <= N < __size__(s)` @@ -1765,8 +1765,8 @@ sequence. [heading Description] -Returns a type convertible to `bool` that evaluates to `true` if the -sequence contains an element associated with a Key, else, evaluates to +Returns a type convertible to `bool` that evaluates to `true` if the +sequence contains an element associated with a Key, else, evaluates to `false`. [heading Synopsis] @@ -1789,7 +1789,7 @@ sequence contains an element associated with a Key, else, evaluates to [*Return type]: Convertible to `bool`. -[*Semantics]: Evaluates to `true` if the sequence contains an element +[*Semantics]: Evaluates to `true` if the sequence contains an element associated with Key, else, evaluates to `false`. [heading Header] @@ -1831,9 +1831,9 @@ Returns the element associated with a Key from the sequence. at_key(seq); -[*Return type]: Returns a reference to the element associated with Key from -the sequence `seq` if `seq` is mutable and `e = o`, where `e` is the -element associated with Key, is a valid expression. Else, returns a type +[*Return type]: Returns a reference to the element associated with Key from +the sequence `seq` if `seq` is mutable and `e = o`, where `e` is the +element associated with Key, is a valid expression. Else, returns a type convertable to the element associated with Key. [*Precondition]: `has_key(seq) == true` @@ -1875,7 +1875,7 @@ Returns the result type of __begin__. [heading Expression Semantics] result_of::begin::type -[*Return type]: An iterator modelling the same traversal concept as `Seq`. +[*Return type]: An iterator modelling the same traversal concept as `Seq`. [*Semantics]: Returns the type of an iterator to the first element of `Seq`. @@ -2063,7 +2063,7 @@ Returns the result type of __size__. [heading Description] -Returns the result type of __at__[footnote __result_of_at__ reflects the +Returns the result type of __at__[footnote __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__]. @@ -2103,9 +2103,9 @@ the actual element type, use __result_of_value_at__]. [heading Description] -Returns the result type of __at_c__[footnote __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 +Returns the result type of __at_c__[footnote __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__]. [heading Synopsis] @@ -2254,9 +2254,9 @@ Returns the result type of __has_key__. [heading Description] -Returns the result type of __at_key__[footnote __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 +Returns the result type of __at_key__[footnote __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__]. [heading Synopsis] @@ -2315,7 +2315,7 @@ Returns the actual element type associated with a Key from the __sequence__. [*Return type]: Any type. -[*Semantics]: Returns the actual element type associated with key type +[*Semantics]: Returns the actual element type associated with key type `Key` in `Seq`. [heading Header] @@ -2333,15 +2333,15 @@ Returns the actual element type associated with a Key from the __sequence__. [section Generation] -These are the functions that you can use to generate various forms of -__containers__ from elemental values. +These are the functions that you can use to generate various forms of +__containers__ from elemental values. [heading Header] #include [section Functions] - + [section make_list] [heading Description] @@ -2354,9 +2354,9 @@ Create a __list__ from one or more values. typename __result_of_make_list__::type make_list(T0 const& x0, T1 const& x1... TN const& xN); -The variadic function accepts `0` to `FUSION_MAX_LIST_SIZE` elements, where -`FUSION_MAX_LIST_SIZE` is a user definable predefined maximum that defaults -to `10`. You may define the preprocessor constant `FUSION_MAX_LIST_SIZE` +The variadic function accepts `0` to `FUSION_MAX_LIST_SIZE` elements, where +`FUSION_MAX_LIST_SIZE` is a user definable predefined maximum that defaults +to `10`. You may define the preprocessor constant `FUSION_MAX_LIST_SIZE` before including any Fusion header to change the default. Example: #define FUSION_MAX_LIST_SIZE 20 @@ -2384,7 +2384,7 @@ before including any Fusion header to change the default. Example: make_list(123, "hello", 12.5) -[heading See also] +[heading See also] __note_boost_ref__ @@ -2394,7 +2394,7 @@ __note_boost_ref__ [heading Description] -Create a __cons__ from `car` (/head/) and optional `cdr` (/tail/). +Create a __cons__ from `car` (/head/) and optional `cdr` (/tail/). [heading Synopsis] @@ -2421,7 +2421,7 @@ Create a __cons__ from `car` (/head/) and optional `cdr` (/tail/). [*Return type]: __result_of_make_cons__`::type` or __result_of_make_cons__`::type` -[*Semantics]: Create a __cons__ from `car` (/head/) and optional `cdr` (/tail/). +[*Semantics]: Create a __cons__ from `car` (/head/) and optional `cdr` (/tail/). [heading Header] @@ -2431,7 +2431,7 @@ __result_of_make_cons__`::type` make_cons('x', make_cons(123)) -[heading See also] +[heading See also] __note_boost_ref__ @@ -2449,10 +2449,10 @@ Create a __vector__ from one or more values. typename __result_of_make_vector__::type make_vector(T0 const& x0, T1 const& x1... TN const& xN); -The variadic function accepts `0` to `FUSION_MAX_VECTOR_SIZE` elements, -where `FUSION_MAX_VECTOR_SIZE` is a user definable predefined maximum that -defaults to `10`. You may define the preprocessor constant -`FUSION_MAX_VECTOR_SIZE` before including any Fusion header to change the +The variadic function accepts `0` to `FUSION_MAX_VECTOR_SIZE` elements, +where `FUSION_MAX_VECTOR_SIZE` is a user definable predefined maximum that +defaults to `10`. You may define the preprocessor constant +`FUSION_MAX_VECTOR_SIZE` before including any Fusion header to change the default. Example: #define FUSION_MAX_VECTOR_SIZE 20 @@ -2480,7 +2480,7 @@ default. Example: make_vector(123, "hello", 12.5) -[heading See also] +[heading See also] __note_boost_ref__ @@ -2498,11 +2498,11 @@ Create a __set__ from one or more values. typename __result_of_make_set__::type make_set(T0 const& x0, T1 const& x1... TN const& xN); -The variadic function accepts `0` to `FUSION_MAX_VECTOR_SIZE`[footnote +The variadic function accepts `0` to `FUSION_MAX_VECTOR_SIZE`[footnote `set` is implemented in terms of the vector. That is why we reuse -`FUSION_MAX_VECTOR_SIZE`] elements, where `FUSION_MAX_VECTOR_SIZE` is a user -definable predefined maximum that defaults to `10`. You may define the -preprocessor constant `FUSION_MAX_VECTOR_SIZE` before including any Fusion +`FUSION_MAX_VECTOR_SIZE`] elements, where `FUSION_MAX_VECTOR_SIZE` is a user +definable predefined maximum that defaults to `10`. You may define the +preprocessor constant `FUSION_MAX_VECTOR_SIZE` before including any Fusion header to change the default. Example: #define FUSION_MAX_VECTOR_SIZE 20 @@ -2532,7 +2532,7 @@ header to change the default. Example: make_set(123, "hello", 12.5) -[heading See also] +[heading See also] __note_boost_ref__ @@ -2542,7 +2542,7 @@ __note_boost_ref__ [heading Description] -Create a __map__ from one or more key/data pairs. +Create a __map__ from one or more key/data pairs. [heading Synopsis] @@ -2552,11 +2552,11 @@ Create a __map__ from one or more key/data pairs. typename __result_of_make_map__::type make_map(T0 const& x0, T1 const& x1... TN const& xN); -The variadic function accepts `0` to `FUSION_MAX_VECTOR_SIZE`[footnote +The variadic function accepts `0` to `FUSION_MAX_VECTOR_SIZE`[footnote `map` is implemented in terms of the vector. That is why we reuse -`FUSION_MAX_VECTOR_SIZE`] elements, where `FUSION_MAX_VECTOR_SIZE` is a user -definable predefined maximum that defaults to `10`. You may define the -preprocessor constant `FUSION_MAX_VECTOR_SIZE` before including any Fusion +`FUSION_MAX_VECTOR_SIZE`] elements, where `FUSION_MAX_VECTOR_SIZE` is a user +definable predefined maximum that defaults to `10`. You may define the +preprocessor constant `FUSION_MAX_VECTOR_SIZE` before including any Fusion header to change the default. Example: #define FUSION_MAX_VECTOR_SIZE 20 @@ -2575,7 +2575,7 @@ header to change the default. Example: [*Return type]: __result_of_make_map__`::type` -[*Semantics]: Create a __map__ from `K0, K1,... KN` keys and +[*Semantics]: Create a __map__ from `K0, K1,... KN` keys and `x0, x1,... xN` data. [*Precondition]: There may be no duplicate key types. @@ -2590,7 +2590,7 @@ header to change the default. Example: __fusion_make_pair__('X') , __fusion_make_pair__("Men")) -[heading See also] +[heading See also] __note_boost_ref__, __fusion_pair__ @@ -2598,8 +2598,8 @@ __note_boost_ref__, __fusion_pair__ [section Tiers] -Tiers are sequences, where all elements are non-const reference types. They -are constructed with a call to a couple of /tie/ function templates. The +Tiers are sequences, where all elements are non-const reference types. They +are constructed with a call to a couple of /tie/ function templates. The succeeding sections document the various /tier/ flavors. * __list_tie__ @@ -2608,29 +2608,29 @@ succeeding sections document the various /tier/ flavors. Example: - int i; char c; double d; + int i; char c; double d; ... __vector_tie__(i, c, a); The __vector_tie__ function creates a __vector__ of type -`__vector__`. The same result could be achieved with the call +`__vector__`. The same result could be achieved with the call __make_vector__(__boost_ref_call__(i), __boost_ref_call__(c), __boost_ref_call__(a)) [footnote see __boost_ref__ for details about `ref`]. A /tie/ can be used to 'unpack' another tuple into variables. E.g.: - int i; char c; double d; + int i; char c; double d; __vector_tie__(i, c, d) = __make_vector__(1,'a', 5.5); std::cout << i << " " << c << " " << d; -This code prints 1 a 5.5 to the standard output stream. A sequence -unpacking operation like this is found for example in ML and Python. It is +This code prints 1 a 5.5 to the standard output stream. A sequence +unpacking operation like this is found for example in ML and Python. It is convenient when calling functions which return sequences. [heading Ignore] -There is also an object called /ignore/ which allows you to ignore an -element assigned by a sequence. The idea is that a function may return a +There is also an object called /ignore/ which allows you to ignore an +element assigned by a sequence. The idea is that a function may return a sequence, only part of which you are interested in. For example: char c; @@ -2650,9 +2650,9 @@ Constructs a tie using a __list__ sequence. __list__ list_tie(T0& x0, T1& x1... TN& xN); -The variadic function accepts `0` to `FUSION_MAX_LIST_SIZE` elements, where -`FUSION_MAX_LIST_SIZE` is a user definable predefined maximum that defaults -to `10`. You may define the preprocessor constant `FUSION_MAX_LIST_SIZE` +The variadic function accepts `0` to `FUSION_MAX_LIST_SIZE` elements, where +`FUSION_MAX_LIST_SIZE` is a user definable predefined maximum that defaults +to `10`. You may define the preprocessor constant `FUSION_MAX_LIST_SIZE` before including any Fusion header to change the default. Example: #define FUSION_MAX_LIST_SIZE 20 @@ -2696,10 +2696,10 @@ Constructs a tie using a __vector__ sequence. __vector__ vector_tie(T0& x0, T1& x1... TN& xN); -The variadic function accepts `0` to `FUSION_MAX_VECTOR_SIZE` elements, -where `FUSION_MAX_VECTOR_SIZE` is a user definable predefined maximum that -defaults to `10`. You may define the preprocessor constant -`FUSION_MAX_VECTOR_SIZE` before including any Fusion header to change the +The variadic function accepts `0` to `FUSION_MAX_VECTOR_SIZE` elements, +where `FUSION_MAX_VECTOR_SIZE` is a user definable predefined maximum that +defaults to `10`. You may define the preprocessor constant +`FUSION_MAX_VECTOR_SIZE` before including any Fusion header to change the default. Example: #define FUSION_MAX_VECTOR_SIZE 20 @@ -2743,10 +2743,10 @@ Constructs a tie using a __map__ sequence. __map__<__pair__, __pair__,... __pair__ > map_tie(D0& d0, D1& d1... DN& dN); -The variadic function accepts `0` to `FUSION_MAX_MAP_SIZE` elements, -where `FUSION_MAX_MAP_SIZE` is a user definable predefined maximum that -defaults to `10`, and a corresponding number of key types. -You may define the preprocessor constant `FUSION_MAX_MAP_SIZE` before +The variadic function accepts `0` to `FUSION_MAX_MAP_SIZE` elements, +where `FUSION_MAX_MAP_SIZE` is a user definable predefined maximum that +defaults to `10`, and a corresponding number of key types. +You may define the preprocessor constant `FUSION_MAX_MAP_SIZE` before including any Fusion header to change the default. Example: #define FUSION_MAX_MAP_SIZE 20 @@ -2785,7 +2785,7 @@ including any Fusion header to change the default. Example: [endsect] [section MetaFunctions] - + [section make_list] [heading Description] @@ -2797,9 +2797,9 @@ Returns the result type of __make_list__. template struct make_list; -The variadic function accepts `0` to `FUSION_MAX_LIST_SIZE` elements, where -`FUSION_MAX_LIST_SIZE` is a user definable predefined maximum that defaults -to `10`. You may define the preprocessor constant `FUSION_MAX_LIST_SIZE` +The variadic function accepts `0` to `FUSION_MAX_LIST_SIZE` elements, where +`FUSION_MAX_LIST_SIZE` is a user definable predefined maximum that defaults +to `10`. You may define the preprocessor constant `FUSION_MAX_LIST_SIZE` before including any Fusion header to change the default. Example: #define FUSION_MAX_LIST_SIZE 20 @@ -2815,7 +2815,7 @@ before including any Fusion header to change the default. Example: result_of::make_list::type -[*Return type]: A __list__ with elements of types converted following the +[*Return type]: A __list__ with elements of types converted following the rules for __element_conversion__. [*Semantics]: Create a __list__ from `T0, T1,... TN`. @@ -2834,7 +2834,7 @@ rules for __element_conversion__. [heading Description] -Returns the result type of __make_cons__. +Returns the result type of __make_cons__. [heading Synopsis] @@ -2853,10 +2853,10 @@ Returns the result type of __make_cons__. result_of::make_cons::type -[*Return type]: A __cons__ with head element, `Car`, of type converted +[*Return type]: A __cons__ with head element, `Car`, of type converted following the rules for __element_conversion__, and tail, `Cdr`. -[*Semantics]: Create a __cons__ from `Car` (/head/) and optional `Cdr` (/tail/). +[*Semantics]: Create a __cons__ from `Car` (/head/) and optional `Cdr` (/tail/). [heading Header] @@ -2879,10 +2879,10 @@ Returns the result type of __make_vector__. template struct make_vector; -The variadic function accepts `0` to `FUSION_MAX_VECTOR_SIZE` elements, -where `FUSION_MAX_VECTOR_SIZE` is a user definable predefined maximum that -defaults to `10`. You may define the preprocessor constant -`FUSION_MAX_VECTOR_SIZE` before including any Fusion header to change the +The variadic function accepts `0` to `FUSION_MAX_VECTOR_SIZE` elements, +where `FUSION_MAX_VECTOR_SIZE` is a user definable predefined maximum that +defaults to `10`. You may define the preprocessor constant +`FUSION_MAX_VECTOR_SIZE` before including any Fusion header to change the default. Example: #define FUSION_MAX_VECTOR_SIZE 20 @@ -2898,7 +2898,7 @@ default. Example: result_of::make_vector::type -[*Return type]: A __vector__ with elements of types converted following the +[*Return type]: A __vector__ with elements of types converted following the rules for __element_conversion__. [*Semantics]: Create a __vector__ from `T0, T1,... TN`. @@ -2924,11 +2924,11 @@ Returns the result type of __make_set__. template struct make_set; -The variadic function accepts `0` to `FUSION_MAX_VECTOR_SIZE`[footnote +The variadic function accepts `0` to `FUSION_MAX_VECTOR_SIZE`[footnote `set` is implemented in terms of the vector. That is why we reuse -`FUSION_MAX_VECTOR_SIZE`] elements, where `FUSION_MAX_VECTOR_SIZE` is a user -definable predefined maximum that defaults to `10`. You may define the -preprocessor constant `FUSION_MAX_VECTOR_SIZE` before including any Fusion +`FUSION_MAX_VECTOR_SIZE`] elements, where `FUSION_MAX_VECTOR_SIZE` is a user +definable predefined maximum that defaults to `10`. You may define the +preprocessor constant `FUSION_MAX_VECTOR_SIZE` before including any Fusion header to change the default. Example: #define FUSION_MAX_VECTOR_SIZE 20 @@ -2944,7 +2944,7 @@ header to change the default. Example: result_of::make_set::type -[*Return type]: A __set__ with elements of types converted following the +[*Return type]: A __set__ with elements of types converted following the rules for __element_conversion__. [*Semantics]: Create a __set__ from `T0, T1,... TN`. @@ -2974,11 +2974,11 @@ Returns the result type of __make_map__. , typename T0, typename T1,... typename TN> struct make_map; -The variadic function accepts `0` to `FUSION_MAX_VECTOR_SIZE`[footnote +The variadic function accepts `0` to `FUSION_MAX_VECTOR_SIZE`[footnote `map` is implemented in terms of the vector. That is why we reuse -`FUSION_MAX_VECTOR_SIZE`] elements, where `FUSION_MAX_VECTOR_SIZE` is a user -definable predefined maximum that defaults to `10`. You may define the -preprocessor constant `FUSION_MAX_VECTOR_SIZE` before including any Fusion +`FUSION_MAX_VECTOR_SIZE`] elements, where `FUSION_MAX_VECTOR_SIZE` is a user +definable predefined maximum that defaults to `10`. You may define the +preprocessor constant `FUSION_MAX_VECTOR_SIZE` before including any Fusion header to change the default. Example: #define FUSION_MAX_VECTOR_SIZE 20 @@ -2997,7 +2997,7 @@ header to change the default. Example: [*Return type]: __result_of_make_map__`::type` -[*Semantics]: A __map__ with __fusion_pair__ elements where the +[*Semantics]: A __map__ with __fusion_pair__ elements where the `second_type` is converted following the rules for __element_conversion__. [*Precondition]: There may be no duplicate key types. @@ -3010,7 +3010,7 @@ header to change the default. Example: result_of::make_map::type -[heading See also] +[heading See also] __fusion_pair__ @@ -3027,9 +3027,9 @@ Returns the result type of __list_tie__. template struct list_tie; -The variadic function accepts `0` to `FUSION_MAX_LIST_SIZE` elements, where -`FUSION_MAX_LIST_SIZE` is a user definable predefined maximum that defaults -to `10`. You may define the preprocessor constant `FUSION_MAX_LIST_SIZE` +The variadic function accepts `0` to `FUSION_MAX_LIST_SIZE` elements, where +`FUSION_MAX_LIST_SIZE` is a user definable predefined maximum that defaults +to `10`. You may define the preprocessor constant `FUSION_MAX_LIST_SIZE` before including any Fusion header to change the default. Example: #define FUSION_MAX_LIST_SIZE 20 @@ -3070,10 +3070,10 @@ Returns the result type of __vector_tie__. template struct vector_tie; -The variadic function accepts `0` to `FUSION_MAX_VECTOR_SIZE` elements, -where `FUSION_MAX_VECTOR_SIZE` is a user definable predefined maximum that -defaults to `10`. You may define the preprocessor constant -`FUSION_MAX_VECTOR_SIZE` before including any Fusion header to change the +The variadic function accepts `0` to `FUSION_MAX_VECTOR_SIZE` elements, +where `FUSION_MAX_VECTOR_SIZE` is a user definable predefined maximum that +defaults to `10`. You may define the preprocessor constant +`FUSION_MAX_VECTOR_SIZE` before including any Fusion header to change the default. Example: #define FUSION_MAX_VECTOR_SIZE 20 @@ -3114,10 +3114,10 @@ Returns the result type of __map_tie__. template struct map_tie; -The variadic function accepts `0` to `FUSION_MAX_MAP_SIZE` elements, -where `FUSION_MAX_MAP_SIZE` is a user definable predefined maximum that -defaults to `10`. You may define the preprocessor constant -`FUSION_MAX_MAP_SIZE` before including any Fusion header to change the +The variadic function accepts `0` to `FUSION_MAX_MAP_SIZE` elements, +where `FUSION_MAX_MAP_SIZE` is a user definable predefined maximum that +defaults to `10`. You may define the preprocessor constant +`FUSION_MAX_MAP_SIZE` before including any Fusion header to change the default. Example: #define FUSION_MAX_MAP_SIZE 20 @@ -3157,7 +3157,7 @@ default. Example: [section Conversion] -All fusion sequences can be converted to one of the __containers__ types +All fusion sequences can be converted to one of the __containers__ types using one of these conversion functions. [heading Header] @@ -3245,7 +3245,7 @@ Convert a fusion sequence to a __vector__. [heading Example] as_vector(__make_list__('x', 123, "hello")) - + [endsect] [section as_set] @@ -3322,7 +3322,7 @@ Convert a fusion sequence to a __map__. [*Semantics]: Convert a fusion sequence, `seq`, to a __map__. -[*Precondition]: The elements of the sequence are assumed to be +[*Precondition]: The elements of the sequence are assumed to be __fusion_pair__s. There may be no duplicate __fusion_pair__ key types. [heading Header] @@ -3363,7 +3363,7 @@ Returns the result type of __as_list__. result_of::as_list::type; -[*Return type]: A __list__ with same elements as the input sequence, +[*Return type]: A __list__ with same elements as the input sequence, `Sequence`. [*Semantics]: Convert a fusion sequence, `Sequence`, to a __list__. @@ -3400,7 +3400,7 @@ Returns the result type of __as_vector__. result_of::as_vector::type; -[*Return type]: A __vector__ with same elements as the input sequence, +[*Return type]: A __vector__ with same elements as the input sequence, `Sequence`. [*Semantics]: Convert a fusion sequence, `Sequence`, to a __vector__. @@ -3412,7 +3412,7 @@ Returns the result type of __as_vector__. [heading Example] result_of::as_vector<__list__ >::type - + [endsect] [section as_set] @@ -3437,7 +3437,7 @@ Returns the result type of __as_set__. result_of::as_set::type; -[*Return type]: A __set__ with same elements as the input sequence, +[*Return type]: A __set__ with same elements as the input sequence, `Sequence`. [*Semantics]: Convert a fusion sequence, `Sequence`, to a __set__. @@ -3476,12 +3476,12 @@ Returns the result type of __as_map__. result_of::as_map::type; -[*Return type]: A __map__ with same elements as the input sequence, +[*Return type]: A __map__ with same elements as the input sequence, `Sequence`. [*Semantics]: Convert a fusion sequence, `Sequence`, to a __map__. -[*Precondition]: The elements of the sequence are assumed to be +[*Precondition]: The elements of the sequence are assumed to be __fusion_pair__s. There may be no duplicate __fusion_pair__ key types. [heading Header] @@ -3502,24 +3502,24 @@ __fusion_pair__s. There may be no duplicate __fusion_pair__ key types. [section Operators] -These operators, like the __algorithms__, work generically on all Fusion -sequences. All conforming Fusion sequences automatically get these -operators for free. +These operators, like the __algorithms__, work generically on all Fusion +sequences. All conforming Fusion sequences automatically get these +operators for free. [section I/O] -The I/O operators: `<<` and `>>` work generically on all Fusion sequences. -The global `operator<<` has been overloaded for generic output streams such -that __sequence__s are output by recursively calling `operator<<` for each -element. Analogously, the global `operator>>` has been overloaded to -extract __sequence__s from generic input streams by recursively calling +The I/O operators: `<<` and `>>` work generically on all Fusion sequences. +The global `operator<<` has been overloaded for generic output streams such +that __sequence__s are output by recursively calling `operator<<` for each +element. Analogously, the global `operator>>` has been overloaded to +extract __sequence__s from generic input streams by recursively calling `operator>>` for each element. -The default delimiter between the elements is space, and the __sequence__ +The default delimiter between the elements is space, and the __sequence__ is enclosed in parenthesis. For Example: __vector__ a(1.0f, 2, std::string("Howdy folks!"); - cout << a; + cout << a; outputs the __vector__ as: (1.0 2 Howdy folks!) @@ -3531,7 +3531,7 @@ The library defines three manipulators for changing the default behavior: [[`tuple_delimiter(arg)`] [Defines the delimiter character between elements.]] ] -The argument to `tuple_open`, `tuple_close` and `tuple_delimiter` may be a +The argument to `tuple_open`, `tuple_close` and `tuple_delimiter` may be a `char`, `wchar_t`, a C-string, or a wide C-string. Example: @@ -3540,7 +3540,7 @@ Example: outputs the same __vector__, `a` as: [1.0, 2, Howdy folks!] -The same manipulators work with `operator>>` and `istream` as well. Suppose +The same manipulators work with `operator>>` and `istream` as well. Suppose the `std::cin` stream contains the following data: (1 2 3) [4:5] @@ -3556,9 +3556,9 @@ The code: reads the data into the __vector__s `i` and `j`. -Note that extracting __sequence__s with `std::string` or C-style string -elements does not generally work, since the streamed __sequence__ -representation may not be unambiguously parseable. +Note that extracting __sequence__s with `std::string` or C-style string +elements does not generally work, since the streamed __sequence__ +representation may not be unambiguously parseable. [heading Header] @@ -3645,9 +3645,9 @@ Write a __sequence__ to an output stream. [section Comparison] -The Comparison operators: `==`, `!=`, `<`, `<=`, `>=` and `>=` work +The Comparison operators: `==`, `!=`, `<`, `<=`, `>=` and `>=` work generically on all Fusion sequences. Comparison operators are "short- -circuited": elementary comparisons start from the first elements and are +circuited": elementary comparisons start from the first elements and are performed only until the result is clear. [heading Header] @@ -3679,19 +3679,19 @@ Compare two sequences for equality. [*Return type]: `bool` -[*Requirements]: +[*Requirements]: -For each element, `e1`, in sequence `a`, and for each element, `e2`, in -sequence `b`, `a == b` is a valid expression returning a type that is +For each element, `e1`, in sequence `a`, and for each element, `e2`, in +sequence `b`, `a == b` is a valid expression returning a type that is convertible to bool. -An attempt to compare two Sequences of different lengths results in a +An attempt to compare two Sequences of different lengths results in a compile time error. -[*Semantics]: +[*Semantics]: -For each element, `e1`, in sequence `a`, and for each element, `e2`, in -sequence `b`, `e1 == e2` returns true. For any 2 zero length __sequence__s, +For each element, `e1`, in sequence `a`, and for each element, `e2`, in +sequence `b`, `e1 == e2` returns true. For any 2 zero length __sequence__s, e and f, e == f returns true. [heading Header] @@ -3729,16 +3729,16 @@ Compare two sequences for inequality. [*Return type]: `bool` -[*Requirements]: +[*Requirements]: -For each element, `e1`, in sequence `a`, and for each element, `e2`, in -sequence `b`, `a == b` is a valid expression returning a type that is +For each element, `e1`, in sequence `a`, and for each element, `e2`, in +sequence `b`, `a == b` is a valid expression returning a type that is convertible to bool. -An attempt to compare two Sequences of different lengths results in a +An attempt to compare two Sequences of different lengths results in a compile time error. -[*Semantics]: +[*Semantics]: Returns !(a == b). @@ -3779,13 +3779,13 @@ Lexicographically compare two sequences. [*Return type]: `bool` -[*Requirements]: +[*Requirements]: -For each element, `e1`, in sequence `a`, and for each element, `e2`, in -sequence `b`, `a < b` is a valid expression returning a type that is +For each element, `e1`, in sequence `a`, and for each element, `e2`, in +sequence `b`, `a < b` is a valid expression returning a type that is convertible to bool. -An attempt to compare two Sequences of different lengths results in a +An attempt to compare two Sequences of different lengths results in a compile time error. [*Semantics]: Returns the lexicographical comparison of between `a` and `b`. @@ -3827,13 +3827,13 @@ Lexicographically compare two sequences. [*Return type]: `bool` -[*Requirements]: +[*Requirements]: -For each element, `e1`, in sequence `a`, and for each element, `e2`, in -sequence `b`, `a < b` is a valid expression returning a type that is +For each element, `e1`, in sequence `a`, and for each element, `e2`, in +sequence `b`, `a < b` is a valid expression returning a type that is convertible to bool. -An attempt to compare two Sequences of different lengths results in a +An attempt to compare two Sequences of different lengths results in a compile time error. [*Semantics]: Returns !(b < a). @@ -3875,13 +3875,13 @@ Lexicographically compare two sequences. [*Return type]: `bool` -[*Requirements]: +[*Requirements]: -For each element, `e1`, in sequence `a`, and for each element, `e2`, in -sequence `b`, `a < b` is a valid expression returning a type that is +For each element, `e1`, in sequence `a`, and for each element, `e2`, in +sequence `b`, `a < b` is a valid expression returning a type that is convertible to bool. -An attempt to compare two Sequences of different lengths results in a +An attempt to compare two Sequences of different lengths results in a compile time error. [*Semantics]: Returns b < a. @@ -3923,13 +3923,13 @@ Lexicographically compare two sequences. [*Return type]: `bool` -[*Requirements]: +[*Requirements]: -For each element, `e1`, in sequence `a`, and for each element, `e2`, in -sequence `b`, `a < b` is a valid expression returning a type that is +For each element, `e1`, in sequence `a`, and for each element, `e2`, in +sequence `b`, `a < b` is a valid expression returning a type that is convertible to bool. -An attempt to compare two Sequences of different lengths results in a +An attempt to compare two Sequences of different lengths results in a compile time error. [*Semantics]: Returns !(a < b). From bf4c542d5d493ccf0356010b742205a9bab79f44 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Sat, 14 Apr 2007 08:27:24 +0000 Subject: [PATCH 143/234] more flat includes [SVN r37436] --- include/boost/fusion/include/make_vector.hpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 include/boost/fusion/include/make_vector.hpp diff --git a/include/boost/fusion/include/make_vector.hpp b/include/boost/fusion/include/make_vector.hpp new file mode 100644 index 00000000..d2a90cb4 --- /dev/null +++ b/include/boost/fusion/include/make_vector.hpp @@ -0,0 +1,12 @@ +/*============================================================================= + Copyright (c) 2001-2007 Joel de Guzman + + Distributed under the 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_INCLUDE_MAKE_VECTOR) +#define FUSION_INCLUDE_MAKE_VECTOR + +#include + +#endif From d87b6aaf57cda05cfee6977d93bd69bf1ae66a84 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Fri, 20 Apr 2007 03:45:36 +0000 Subject: [PATCH 144/234] fixed bug where first element is convertible from input sequence [SVN r37475] --- .../container/vector/detail/vector_n.hpp | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/include/boost/fusion/sequence/container/vector/detail/vector_n.hpp b/include/boost/fusion/sequence/container/vector/detail/vector_n.hpp index d0d0f89b..01981ab3 100644 --- a/include/boost/fusion/sequence/container/vector/detail/vector_n.hpp +++ b/include/boost/fusion/sequence/container/vector/detail/vector_n.hpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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) ==============================================================================*/ // No include guard. This file is meant to be included many times @@ -46,7 +46,7 @@ BOOST_PP_ENUM_BINARY_PARAMS( N, typename detail::call_param::type _)) : BOOST_PP_ENUM(N, FUSION_MEMBER_INIT, _) {} - + BOOST_PP_CAT(vector_data, N)( BOOST_PP_CAT(vector_data, N) const& other) : BOOST_PP_ENUM(N, FUSION_COPY_INIT, _) {} @@ -75,7 +75,7 @@ struct BOOST_PP_CAT(vector, N) : BOOST_PP_CAT(vector_data, N)< BOOST_PP_CAT(vector, N) - , BOOST_PP_ENUM_PARAMS(N, T)> + , BOOST_PP_ENUM_PARAMS(N, T)> { typedef BOOST_PP_CAT(vector, N) this_type; typedef BOOST_PP_CAT(vector_data, N) base_type; @@ -85,7 +85,7 @@ typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_ size; - + BOOST_PP_CAT(vector, N)() {} #if (N == 1) @@ -104,7 +104,10 @@ template BOOST_PP_CAT(vector, N)( Sequence const& seq - , typename disable_if >::type* dummy = 0) +#if (N == 1) + , typename disable_if >::type* dummy = 0 +#endif + ) : base_type(base_type::init_from_sequence(seq)) {} template @@ -125,18 +128,18 @@ BOOST_PP_REPEAT(N, FUSION_DEREF_MEMBER_ASSIGN, _) return *this; } - + BOOST_PP_REPEAT(N, FUSION_AT_IMPL, _) template - typename add_reference::type>::type + typename add_reference::type>::type at_impl(I i) { return this->at_impl(mpl::int_()); } template - typename add_reference::type>::type>::type + typename add_reference::type>::type>::type at_impl(I i) const { return this->at_impl(mpl::int_()); From 11a0b0accea50d39ac04d9dd8edeaddc0b305517 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Sun, 22 Apr 2007 06:40:33 +0000 Subject: [PATCH 145/234] more flat includes [SVN r37479] --- include/boost/fusion/include/for_each.hpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 include/boost/fusion/include/for_each.hpp diff --git a/include/boost/fusion/include/for_each.hpp b/include/boost/fusion/include/for_each.hpp new file mode 100644 index 00000000..b20578e5 --- /dev/null +++ b/include/boost/fusion/include/for_each.hpp @@ -0,0 +1,12 @@ +/*============================================================================= + Copyright (c) 2001-2007 Joel de Guzman + + Distributed under the 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_INCLUDE_FOR_EACH) +#define FUSION_INCLUDE_FOR_EACH + +#include + +#endif From a7ca680c0fea637ba02a48dd38e457e22e0d4597 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Sun, 22 Apr 2007 08:06:36 +0000 Subject: [PATCH 146/234] mpl.hpp header now includes 2 way mapping to and from mpl and fusion #include #include [SVN r37484] --- include/boost/fusion/include/mpl.hpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/boost/fusion/include/mpl.hpp b/include/boost/fusion/include/mpl.hpp index 36b5f763..5e3f906d 100644 --- a/include/boost/fusion/include/mpl.hpp +++ b/include/boost/fusion/include/mpl.hpp @@ -1,12 +1,13 @@ /*============================================================================= Copyright (c) 2001-2007 Joel de Guzman - 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(FUSION_INCLUDE_MPL) #define FUSION_INCLUDE_MPL #include +#include #endif From 1a1fe819dc558c222fc888a75dc11ce832ae6ebf Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Sun, 22 Apr 2007 10:09:38 +0000 Subject: [PATCH 147/234] more flat includes [SVN r37487] --- include/boost/fusion/include/variant.hpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 include/boost/fusion/include/variant.hpp diff --git a/include/boost/fusion/include/variant.hpp b/include/boost/fusion/include/variant.hpp new file mode 100644 index 00000000..824b8a6a --- /dev/null +++ b/include/boost/fusion/include/variant.hpp @@ -0,0 +1,12 @@ +/*============================================================================= + Copyright (c) 2001-2007 Joel de Guzman + + Distributed under the 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_INCLUDE_VARIANT) +#define FUSION_INCLUDE_VARIANT + +#include + +#endif From 4c4e91a3cee5cc10f78f04faf5e3b8aa1e955c40 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Sun, 22 Apr 2007 23:20:21 +0000 Subject: [PATCH 148/234] more flat includes [SVN r37490] --- include/boost/fusion/include/filter_if.hpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 include/boost/fusion/include/filter_if.hpp diff --git a/include/boost/fusion/include/filter_if.hpp b/include/boost/fusion/include/filter_if.hpp new file mode 100644 index 00000000..31fdec5d --- /dev/null +++ b/include/boost/fusion/include/filter_if.hpp @@ -0,0 +1,12 @@ +/*============================================================================= + Copyright (c) 2001-2007 Joel de Guzman + + Distributed under the 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_INCLUDE_FILTER_IF) +#define FUSION_INCLUDE_FILTER_IF + +#include + +#endif From 416b82b14ac69c813479c46e0edb8ce83998582f Mon Sep 17 00:00:00 2001 From: Eric Niebler Date: Sat, 28 Apr 2007 21:22:55 +0000 Subject: [PATCH 149/234] some changes for conceptgcc-4.3 [SVN r37529] --- .../boost/fusion/algorithm/transformation/insert.hpp | 2 +- .../fusion/algorithm/transformation/push_back.hpp | 2 +- .../fusion/algorithm/transformation/push_front.hpp | 2 +- .../fusion/sequence/view/ext_/segmented_iterator.hpp | 12 ++++++------ 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/include/boost/fusion/algorithm/transformation/insert.hpp b/include/boost/fusion/algorithm/transformation/insert.hpp index 5b676538..ebe06f14 100644 --- a/include/boost/fusion/algorithm/transformation/insert.hpp +++ b/include/boost/fusion/algorithm/transformation/insert.hpp @@ -30,7 +30,7 @@ namespace boost { namespace fusion typedef iterator_range left_type; typedef iterator_range right_type; - typedef single_view single_view; + typedef fusion::single_view single_view; typedef joint_view left_insert_type; typedef joint_view type; }; diff --git a/include/boost/fusion/algorithm/transformation/push_back.hpp b/include/boost/fusion/algorithm/transformation/push_back.hpp index c33b5da8..98f63702 100644 --- a/include/boost/fusion/algorithm/transformation/push_back.hpp +++ b/include/boost/fusion/algorithm/transformation/push_back.hpp @@ -18,7 +18,7 @@ namespace boost { namespace fusion template struct push_back { - typedef single_view::type> single_view; + typedef fusion::single_view::type> single_view; typedef joint_view type; }; } diff --git a/include/boost/fusion/algorithm/transformation/push_front.hpp b/include/boost/fusion/algorithm/transformation/push_front.hpp index b8ea8261..526e28f1 100644 --- a/include/boost/fusion/algorithm/transformation/push_front.hpp +++ b/include/boost/fusion/algorithm/transformation/push_front.hpp @@ -18,7 +18,7 @@ namespace boost { namespace fusion template struct push_front { - typedef single_view::type> single_view; + typedef fusion::single_view::type> single_view; typedef joint_view type; }; } diff --git a/include/boost/fusion/sequence/view/ext_/segmented_iterator.hpp b/include/boost/fusion/sequence/view/ext_/segmented_iterator.hpp index acde578c..2f6c1f74 100755 --- a/include/boost/fusion/sequence/view/ext_/segmented_iterator.hpp +++ b/include/boost/fusion/sequence/view/ext_/segmented_iterator.hpp @@ -78,16 +78,16 @@ namespace boost { namespace fusion explicit segmented_range(Sequence &sequence_) : sequence(sequence_type(sequence_)) - , where(fusion::begin(sequence)) + , where_(fusion::begin(sequence)) {} - segmented_range(sequence_type sequence_, iterator_type const &where_) + segmented_range(sequence_type sequence_, iterator_type const &wh) : sequence(sequence_) - , where(where_) + , where_(wh) {} sequence_type sequence; - iterator_type where; + iterator_type where_; }; } @@ -139,7 +139,7 @@ namespace boost { namespace fusion typedef typename Sequence::iterator_type type; static type call(Sequence &seq) { - return seq.where; + return seq.where_; } }; }; @@ -175,7 +175,7 @@ namespace boost { namespace fusion static type call(segmented_range const &rng) { - return type(rng.sequence, fusion::next(rng.where)); + return type(rng.sequence, fusion::next(rng.where_)); } }; From da82119dd3f56094f48a7872b9146963412be3cc Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Sun, 29 Apr 2007 16:18:01 +0000 Subject: [PATCH 150/234] more flat includes [SVN r37534] --- include/boost/fusion/include/vector_tie.hpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 include/boost/fusion/include/vector_tie.hpp diff --git a/include/boost/fusion/include/vector_tie.hpp b/include/boost/fusion/include/vector_tie.hpp new file mode 100644 index 00000000..35f4abed --- /dev/null +++ b/include/boost/fusion/include/vector_tie.hpp @@ -0,0 +1,12 @@ +/*============================================================================= + Copyright (c) 2001-2007 Joel de Guzman + + Distributed under the 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_INCLUDE_VECTOR_TIE) +#define FUSION_INCLUDE_VECTOR_TIE + +#include + +#endif From 77c04b0e57c43bc822bfd05dba26687eda754190 Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Tue, 1 May 2007 20:56:32 +0000 Subject: [PATCH 151/234] swap implementation [SVN r37552] --- .../boost/fusion/sequence/intrinsic/swap.hpp | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 include/boost/fusion/sequence/intrinsic/swap.hpp diff --git a/include/boost/fusion/sequence/intrinsic/swap.hpp b/include/boost/fusion/sequence/intrinsic/swap.hpp new file mode 100644 index 00000000..448ed16b --- /dev/null +++ b/include/boost/fusion/sequence/intrinsic/swap.hpp @@ -0,0 +1,59 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 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_SWAP_20070501_1956) +#define BOOST_FUSION_SWAP_20070501_1956 + +#include + +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion { + namespace result_of + { + template + struct swap + { + typedef void type; + }; + } + + namespace detail + { + struct swap + { + template + struct result + { + typedef void type; + }; + + template + void operator()(Elem& e) const + { + using std::swap; + swap(front(e), back(e)); + } + }; + } + + template + typename enable_if, traits::is_sequence >, void>::type + swap(Seq1& lhs, Seq2& rhs) + { + typedef vector references; + for_each(zip_view(references(lhs, rhs)), detail::swap()); + } +}} + +#endif From a1b7949dce0ae5de1d7ede510dd92d88381083d2 Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Tue, 1 May 2007 20:57:15 +0000 Subject: [PATCH 152/234] tests for swap [SVN r37553] --- test/Jamfile | 1 + test/sequence/swap.cpp | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 test/sequence/swap.cpp diff --git a/test/Jamfile b/test/Jamfile index 5e388632..e7547a45 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -125,6 +125,7 @@ import testing ; [ run functional/invoke.cpp : : : : ] [ run functional/invoke_function_object.cpp : : : : ] [ run functional/invoke_procedure.cpp : : : : ] + [ run sequence/swap.cpp : : : : ] # [ compile-fail xxx.cpp : : : : ] diff --git a/test/sequence/swap.cpp b/test/sequence/swap.cpp new file mode 100644 index 00000000..f9573d52 --- /dev/null +++ b/test/sequence/swap.cpp @@ -0,0 +1,35 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 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) +==============================================================================*/ +#include +#include +#include +#include +#include + +#include + +#include + +#include + +int main() +{ + namespace fusion = boost::fusion; + { + typedef fusion::vector, char> test_vector; + BOOST_MPL_ASSERT((boost::is_same::type>)); + + test_vector v1(std::vector(1, 101), 'a'), v2(std::vector(1, 202), 'b'); + + fusion::swap(v1, v2); + + BOOST_TEST(v1 == fusion::make_vector(std::vector(1, 202), 'b')); + BOOST_TEST(v2 == fusion::make_vector(std::vector(1, 101), 'a')); + } + return boost::report_errors(); +} From 73d47b726775c625d5bf9b108df48cdc1850ccd9 Mon Sep 17 00:00:00 2001 From: Hartmut Kaiser Date: Wed, 2 May 2007 18:14:22 +0000 Subject: [PATCH 153/234] Added file [SVN r37562] --- include/boost/fusion/include/io.hpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 include/boost/fusion/include/io.hpp diff --git a/include/boost/fusion/include/io.hpp b/include/boost/fusion/include/io.hpp new file mode 100644 index 00000000..d84fdf35 --- /dev/null +++ b/include/boost/fusion/include/io.hpp @@ -0,0 +1,12 @@ +/*============================================================================= + Copyright (c) 2001-2007 Hartmut Kaiser + + Distributed under the 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_INCLUDE_IO) +#define FUSION_INCLUDE_IO + +#include + +#endif From bb27fc1089f663c6c46605ed0c3ef822c48e3b7d Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Wed, 2 May 2007 22:47:23 +0000 Subject: [PATCH 154/234] fusion swap documentation [SVN r37570] --- doc/sequences.qbk | 69 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 68 insertions(+), 1 deletion(-) diff --git a/doc/sequences.qbk b/doc/sequences.qbk index 26270ee1..2c553f7c 100644 --- a/doc/sequences.qbk +++ b/doc/sequences.qbk @@ -1382,7 +1382,7 @@ __boost_variant_library__ [section Intrinsics] -Intrinsics form the essential interface of Fusion __sequence__s. __stl__ +Intrinsics form the essential interface of every Fusion __sequence__. __stl__ 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 @@ -1851,6 +1851,44 @@ convertable to the element associated with Key. [endsect] +[section swap] + +[heading Description] + +Performs an element by element swap of the elements in 2 sequences. + +[heading Synopsis] + template + void swap(Seq1& seq1, Seq2& seq2); + +[heading Parameters] + +[table + [[Parameters] [Requirement] [Description]] + [[`seq1`, `seq2`] [Models of __forward_sequence__][The sequences whos elements we wish to swap.]] +] + +[heading Expression Semantics] + + swap(seq1, seq2); + +[*Return type]: `void` + +[*Precondition]: `__size__(seq1) == __size__(seq2)` + +[*Semantics]: Calls `swap(a1, b1)` for corresponding elements in `seq1` and `seq2`. + +[heading Header] + #include + +[heading Example] + __vector__ v1(1, "hello"), v2(2, "world"); + swap(v1, v2); + assert(v1 == __make_vector__(2, "world")); + assert(v2 == __make_vector__(1, "hello")); + +[endsect] + [endsect] [section Metafunctions] @@ -2327,6 +2365,35 @@ Returns the actual element type associated with a Key from the __sequence__. [endsect] +[section swap] + +[heading Description] +Returns the return type of swap. + +[heading Synopsis] + template + struct swap + { + typedef void type; + }; + +[table Parameters + [[Parameters] [Requirement] [Description]] + [[`Seq1`, `Seq2`][Models of __forward_sequence__][The sequences being swapped]] +] + +[heading Expression Semantics] + result_of::swap::type + +[*Return type]: `void`. + +[*Semantics]: Always returns `void`. + +[heading Header] + #include + +[endsect] + [endsect] [endsect] From 8b2e69c76404d818a2229103dfffc126f80725f9 Mon Sep 17 00:00:00 2001 From: Hartmut Kaiser Date: Sun, 6 May 2007 19:18:27 +0000 Subject: [PATCH 155/234] Added file. [SVN r37604] --- include/boost/fusion/include/value_at.hpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 include/boost/fusion/include/value_at.hpp diff --git a/include/boost/fusion/include/value_at.hpp b/include/boost/fusion/include/value_at.hpp new file mode 100644 index 00000000..da5745d9 --- /dev/null +++ b/include/boost/fusion/include/value_at.hpp @@ -0,0 +1,12 @@ +/*============================================================================= + Copyright (c) 2001-2007 Hartmut Kaiser + + Distributed under the 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_INCLUDE_VALUE_AT) +#define FUSION_INCLUDE_VALUE_AT + +#include + +#endif From f8bb69dc9a54e18bfc66fd445e84b139bf189964 Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Tue, 8 May 2007 22:14:58 +0000 Subject: [PATCH 156/234] adding struct associative adaptor [SVN r37638] --- .../adapted/struct/adapt_assoc_struct.hpp | 94 +++++++++++++++++++ .../adapted/struct/detail/at_key_impl.hpp | 54 +++++++++++ .../adapted/struct/detail/has_key_impl.hpp | 40 ++++++++ .../struct/detail/value_at_key_impl.hpp | 39 ++++++++ .../sequence/adapted/struct/extension.hpp | 24 +++++ 5 files changed, 251 insertions(+) create mode 100644 include/boost/fusion/sequence/adapted/struct/adapt_assoc_struct.hpp create mode 100644 include/boost/fusion/sequence/adapted/struct/detail/at_key_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/struct/detail/has_key_impl.hpp create mode 100644 include/boost/fusion/sequence/adapted/struct/detail/value_at_key_impl.hpp diff --git a/include/boost/fusion/sequence/adapted/struct/adapt_assoc_struct.hpp b/include/boost/fusion/sequence/adapted/struct/adapt_assoc_struct.hpp new file mode 100644 index 00000000..44357c00 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/struct/adapt_assoc_struct.hpp @@ -0,0 +1,94 @@ +/*============================================================================= + Copyright (c) 2001-2007 Joel de Guzman + Copyright (c) 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_ADAPT_ASSOC_STRUCT_20070508_2207) +#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_20070508_2207 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion { namespace extension { + template + struct struct_assoc_member; +}}} + + +#define BOOST_FUSION_ADAPT_ASSOC_STRUCT(name, bseq) \ + BOOST_FUSION_ADAPT_ASSOC_STRUCT_I( \ + name, BOOST_PP_CAT(BOOST_FUSION_ADAPT_ASSOC_STRUCT_X bseq, 0)) \ + /***/ + +#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_X(x, y, z) ((x, y, z)) BOOST_FUSION_ADAPT_ASSOC_STRUCT_Y +#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_Y(x, y, z) ((x, y, z)) BOOST_FUSION_ADAPT_ASSOC_STRUCT_X +#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_X0 +#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_Y0 + +// BOOST_FUSION_ADAPT_ASSOC_STRUCT_I generates the overarching structure and uses +// SEQ_FOR_EACH_I to generate the "linear" substructures. +// Thanks to Paul Mensonides for the PP macro help + +#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_I(name, seq) \ + namespace boost { namespace fusion { namespace traits \ + { \ + template <> \ + struct tag_of \ + { \ + typedef struct_tag type; \ + }; \ + }}} \ + namespace boost { namespace fusion { namespace extension \ + { \ + template <> \ + struct struct_size : mpl::int_ {}; \ + BOOST_PP_SEQ_FOR_EACH_I(BOOST_FUSION_ADAPT_ASSOC_STRUCT_C, name, seq) \ + }}} \ + /***/ + +#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_C(r, name, i, xy) \ + template <> \ + struct struct_member \ + { \ + typedef BOOST_PP_TUPLE_ELEM(3, 0, xy) type; \ + static type& call(name& struct_) \ + { \ + return struct_.BOOST_PP_TUPLE_ELEM(3, 1, xy); \ + }; \ + }; \ + template<> \ + struct struct_assoc_member \ + { \ + typedef BOOST_PP_TUPLE_ELEM(3, 0, xy) type; \ + static type& call(name& struct_) \ + { \ + return struct_.BOOST_PP_TUPLE_ELEM(3, 1, xy); \ + }; \ + }; + /***/ + +#endif diff --git a/include/boost/fusion/sequence/adapted/struct/detail/at_key_impl.hpp b/include/boost/fusion/sequence/adapted/struct/detail/at_key_impl.hpp new file mode 100644 index 00000000..4ce0fce9 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/struct/detail/at_key_impl.hpp @@ -0,0 +1,54 @@ +/*============================================================================= + Copyright (c) 2001-2007 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_20070508_2248) +#define BOOST_FUSION_AT_KEY_IMPL_20070508_2248 + +#include + +namespace boost { namespace fusion +{ + struct struct_tag; + + namespace extension + { + template + struct at_key_impl; + + template + struct struct_assoc_member; + + template <> + struct at_key_impl + { + template + struct apply + { + typedef typename + extension::struct_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:: + struct_assoc_member::call(seq); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/struct/detail/has_key_impl.hpp b/include/boost/fusion/sequence/adapted/struct/detail/has_key_impl.hpp new file mode 100644 index 00000000..8972f5df --- /dev/null +++ b/include/boost/fusion/sequence/adapted/struct/detail/has_key_impl.hpp @@ -0,0 +1,40 @@ +/*============================================================================= + Copyright (c) 2001-2007 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_20070508_2231) +#define BOOST_FUSION_HAS_KEY_IMPL_20070508_2231 + +#include +#include + +namespace boost { namespace fusion { + + struct struct_tag; + + namespace extension + { + struct no_such_member; + + template + struct has_key_impl; + + template + struct struct_assoc_member; + + template<> + struct has_key_impl + { + template + struct apply + : mpl::not_::type> > + { + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/struct/detail/value_at_key_impl.hpp b/include/boost/fusion/sequence/adapted/struct/detail/value_at_key_impl.hpp new file mode 100644 index 00000000..b1b3dcfb --- /dev/null +++ b/include/boost/fusion/sequence/adapted/struct/detail/value_at_key_impl.hpp @@ -0,0 +1,39 @@ +/*============================================================================= + Copyright (c) 2001-2007 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_20070508_2300) +#define BOOST_FUSION_VALUE_AT_KEY_IMPL_20070508_2300 + +#include + +namespace boost { namespace fusion +{ + struct struct_tag; + + namespace extension + { + template + struct value_at_key_impl; + + template + struct struct_assoc_member; + + template <> + struct value_at_key_impl + { + template + struct apply + { + typedef typename + extension::struct_assoc_member::type + type; + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/sequence/adapted/struct/extension.hpp b/include/boost/fusion/sequence/adapted/struct/extension.hpp index f0af1baa..c5516ae5 100644 --- a/include/boost/fusion/sequence/adapted/struct/extension.hpp +++ b/include/boost/fusion/sequence/adapted/struct/extension.hpp @@ -37,6 +37,30 @@ namespace boost { namespace fusion { namespace extension struct struct_size : struct_size {}; + + struct no_such_member; + + template + struct struct_assoc_member + { + typedef no_such_member type; + }; + + template + struct struct_assoc_member + { + typedef typename + add_const::type>::type + type; + + static type& + call(Struct const& struct_) + { + return struct_member::call( + const_cast(struct_)); + } + }; + }}} #endif From dfcadb449bbc0dc7a14a89a1ca196e2d1d7c0ad0 Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Tue, 8 May 2007 22:16:09 +0000 Subject: [PATCH 157/234] tests for assoc struct adaptor [SVN r37639] --- test/Jamfile | 1 + test/sequence/adapt_assoc_struct.cpp | 131 +++++++++++++++++++++++++++ 2 files changed, 132 insertions(+) create mode 100644 test/sequence/adapt_assoc_struct.cpp diff --git a/test/Jamfile b/test/Jamfile index e7547a45..38dcd59f 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -108,6 +108,7 @@ import testing ; [ run sequence/repetitive_view.cpp : : : : ] [ run sequence/deduce_sequence.cpp : : : : ] [ run sequence/adapt_struct.cpp : : : : ] + [ run sequence/adapt_assoc_struct.cpp : : : : ] [ run functional/fused.cpp : : : : ] [ run functional/fused_function_object.cpp : : : : ] diff --git a/test/sequence/adapt_assoc_struct.cpp b/test/sequence/adapt_assoc_struct.cpp new file mode 100644 index 00000000..926294a6 --- /dev/null +++ b/test/sequence/adapt_assoc_struct.cpp @@ -0,0 +1,131 @@ +/*============================================================================= + Copyright (c) 2001-2007 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) +==============================================================================*/ +#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 ns +{ + struct x_member; + struct y_member; + struct z_member; + + struct point + { + int x; + int y; + }; +} + +BOOST_FUSION_ADAPT_ASSOC_STRUCT( + ns::point, + (int, x, ns::x_member) + (int, y, ns::y_member) +) + +int +main() +{ + using namespace boost::fusion; + using namespace boost; + using namespace std; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + + { + BOOST_MPL_ASSERT_NOT((traits::is_view)); + ns::point p = {123, 456}; + + std::cout << at_c<0>(p) << std::endl; + std::cout << at_c<1>(p) << std::endl; + std::cout << p << std::endl; + BOOST_TEST(p == make_vector(123, 456)); + + at_c<0>(p) = 6; + at_c<1>(p) = 9; + BOOST_TEST(p == make_vector(6, 9)); + + BOOST_STATIC_ASSERT(result_of::size::value == 2); + BOOST_STATIC_ASSERT(!result_of::empty::value); + + BOOST_TEST(front(p) == 6); + BOOST_TEST(back(p) == 9); + } + + { + fusion::vector v1(4, 2); + ns::point v2 = {5, 3}; + fusion::vector v3(5, 4); + BOOST_TEST(v1 < v2); + BOOST_TEST(v1 <= v2); + BOOST_TEST(v2 > v1); + BOOST_TEST(v2 >= v1); + BOOST_TEST(v2 < v3); + BOOST_TEST(v2 <= v3); + BOOST_TEST(v3 > v2); + BOOST_TEST(v3 >= v2); + } + + { + // conversion from ns::point to vector + ns::point p = {5, 3}; + fusion::vector v(p); + v = p; + } + + { + // conversion from ns::point to list + ns::point p = {5, 3}; + fusion::list l(p); + l = p; + } + + { + // assoc stuff + BOOST_MPL_ASSERT((fusion::result_of::has_key)); + BOOST_MPL_ASSERT((fusion::result_of::has_key)); + BOOST_MPL_ASSERT((mpl::not_ >)); + + BOOST_MPL_ASSERT((is_same::type, int>)); + BOOST_MPL_ASSERT((is_same::type, int>)); + + ns::point p = {5, 3}; + + BOOST_TEST(at_key(p) == 5); + BOOST_TEST(at_key(p) == 3); + } + + return boost::report_errors(); +} + From f2f3b2cf1e929b841bf92a532ce1b6a37b963db1 Mon Sep 17 00:00:00 2001 From: Hartmut Kaiser Date: Wed, 16 May 2007 16:10:58 +0000 Subject: [PATCH 158/234] Adding file... [SVN r37701] --- include/boost/fusion/include/deref.hpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 include/boost/fusion/include/deref.hpp diff --git a/include/boost/fusion/include/deref.hpp b/include/boost/fusion/include/deref.hpp new file mode 100644 index 00000000..9c831f79 --- /dev/null +++ b/include/boost/fusion/include/deref.hpp @@ -0,0 +1,12 @@ +/*============================================================================= + Copyright (c) 2001-2007 Joel de Guzman + + Distributed under the 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_INCLUDE_DEREF) +#define FUSION_INCLUDE_DEREF + +#include + +#endif From 5ec07406da8771094f3c3344007114d8194ddce7 Mon Sep 17 00:00:00 2001 From: Hartmut Kaiser Date: Wed, 16 May 2007 16:25:48 +0000 Subject: [PATCH 159/234] Adding file... [SVN r37702] --- include/boost/fusion/include/std_pair.hpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 include/boost/fusion/include/std_pair.hpp diff --git a/include/boost/fusion/include/std_pair.hpp b/include/boost/fusion/include/std_pair.hpp new file mode 100644 index 00000000..bb4d5952 --- /dev/null +++ b/include/boost/fusion/include/std_pair.hpp @@ -0,0 +1,12 @@ +/*============================================================================= + Copyright (c) 2001-2007 Joel de Guzman + + Distributed under the 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_INCLUDE_STD_PAIR) +#define FUSION_INCLUDE_STD_PAIR + +#include + +#endif From d171c25dd20a9197f3150988359098a1fd9f9482 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Tue, 22 May 2007 10:53:49 +0000 Subject: [PATCH 160/234] fixes bug in unfused_generic reported by Eric Niebler [SVN r37739] --- .../boost/fusion/functional/adapter/detail/pow2_explode.hpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/boost/fusion/functional/adapter/detail/pow2_explode.hpp b/include/boost/fusion/functional/adapter/detail/pow2_explode.hpp index 3d5afcb8..2d14ad70 100644 --- a/include/boost/fusion/functional/adapter/detail/pow2_explode.hpp +++ b/include/boost/fusion/functional/adapter/detail/pow2_explode.hpp @@ -22,10 +22,11 @@ # define BOOST_PP_FILENAME_2 \ -# define BOOST_PP_VALUE 1 << (N >> 4) +# define BOOST_PP_VALUE (1 << N) >> 4 # if BOOST_PP_VALUE > BOOST_PP_LIMIT_ITERATION # error "Preprocessor limit exceeded." # endif + # include BOOST_PP_ASSIGN_SLOT(2) # define BOOST_PP_ITERATION_LIMITS (0,BOOST_PP_DEC(BOOST_PP_SLOT_2())) # include BOOST_PP_ITERATE() From 1bf333a444088b966f38321d22ecf835361c5be2 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Thu, 24 May 2007 21:08:34 +0000 Subject: [PATCH 161/234] fixes bug reported by John Maddock. Typo: associative structures have associative members. [SVN r37762] --- include/boost/fusion/sequence/adapted/struct/extension.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/fusion/sequence/adapted/struct/extension.hpp b/include/boost/fusion/sequence/adapted/struct/extension.hpp index c5516ae5..da084498 100644 --- a/include/boost/fusion/sequence/adapted/struct/extension.hpp +++ b/include/boost/fusion/sequence/adapted/struct/extension.hpp @@ -56,7 +56,7 @@ namespace boost { namespace fusion { namespace extension static type& call(Struct const& struct_) { - return struct_member::call( + return struct_assoc_member::call( const_cast(struct_)); } }; From 05a706599a8e0614e54221faed02628ecb3d8b4a Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Sat, 26 May 2007 19:54:13 +0000 Subject: [PATCH 162/234] fix for swap picked up with gcc 4.1.2 [SVN r37791] --- include/boost/fusion/sequence/intrinsic/swap.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/fusion/sequence/intrinsic/swap.hpp b/include/boost/fusion/sequence/intrinsic/swap.hpp index 448ed16b..90570c1f 100644 --- a/include/boost/fusion/sequence/intrinsic/swap.hpp +++ b/include/boost/fusion/sequence/intrinsic/swap.hpp @@ -39,7 +39,7 @@ namespace boost { namespace fusion { }; template - void operator()(Elem& e) const + void operator()(Elem const& e) const { using std::swap; swap(front(e), back(e)); From 0ff8dd230d9ca029514514fc43795b2f6eaa07aa Mon Sep 17 00:00:00 2001 From: Hartmut Kaiser Date: Sun, 27 May 2007 16:30:35 +0000 Subject: [PATCH 163/234] Removed tabs. [SVN r37804] --- test/functional/unfused_typed.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/functional/unfused_typed.cpp b/test/functional/unfused_typed.cpp index f2444f21..01fd4efa 100644 --- a/test/functional/unfused_typed.cpp +++ b/test/functional/unfused_typed.cpp @@ -100,9 +100,9 @@ void result_type_tests() } #if defined(BOOST_MSVC) && BOOST_MSVC < 1400 -# define BOOST_TEST_NO_VC71(cond) (void)((cond)?0:1) +# define BOOST_TEST_NO_VC71(cond) (void)((cond)?0:1) #else -# define BOOST_TEST_NO_VC71(cond) BOOST_TEST(cond) +# define BOOST_TEST_NO_VC71(cond) BOOST_TEST(cond) #endif int main() From 2c7e484787bc9922d2dec2633a60e35d3f3dc8bb Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Mon, 28 May 2007 22:57:59 +0000 Subject: [PATCH 164/234] fix to transform view distance impl [SVN r37805] --- .../view/transform_view/detail/distance_impl.hpp | 16 ++++++---------- .../view/zip_view/detail/strictest_traversal.hpp | 1 + 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/include/boost/fusion/sequence/view/transform_view/detail/distance_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/distance_impl.hpp index 8f327de9..d5ae0adc 100644 --- a/include/boost/fusion/sequence/view/transform_view/detail/distance_impl.hpp +++ b/include/boost/fusion/sequence/view/transform_view/detail/distance_impl.hpp @@ -26,12 +26,10 @@ namespace boost { namespace fusion { { template struct apply + : result_of::distance { - typedef typename First::first_type first_type; - typedef typename Last::first_type last_type; - typedef typename result_of::distance::type type; - - static type + static + typename result_of::distance::type call(First const& first, Last const& last) { return boost::fusion::distance(first.first, last.first); @@ -45,12 +43,10 @@ namespace boost { namespace fusion { { template struct apply + : result_of::distance { - typedef typename First::first1_type first1_type; - typedef typename Last::first1_type last1_type; - typedef typename result_of::distance::type type; - - static type + static + typename result_of::distance::type call(First const& first, Last const& last) { return boost::fusion::distance(first.first1, last.first1); diff --git a/include/boost/fusion/sequence/view/zip_view/detail/strictest_traversal.hpp b/include/boost/fusion/sequence/view/zip_view/detail/strictest_traversal.hpp index b6c43fa9..e69e2842 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/strictest_traversal.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/strictest_traversal.hpp @@ -54,6 +54,7 @@ namespace boost { namespace fusion { Sequence, fusion::random_access_traversal_tag, strictest_traversal_impl > {}; + } }} From b935ea84a9e4114aed6f828857dfc7e49e7a2d17 Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Mon, 28 May 2007 23:12:53 +0000 Subject: [PATCH 165/234] loop unrolling for fusion iteration algorithms [SVN r37806] --- .../fusion/algorithm/iteration/accumulate.hpp | 36 +-- .../algorithm/iteration/detail/fold.hpp | 213 ++++++++++++++++-- .../algorithm/iteration/detail/for_each.hpp | 110 ++++++++- .../boost/fusion/algorithm/iteration/fold.hpp | 51 ++--- .../fusion/algorithm/iteration/for_each.hpp | 35 +-- 5 files changed, 324 insertions(+), 121 deletions(-) diff --git a/include/boost/fusion/algorithm/iteration/accumulate.hpp b/include/boost/fusion/algorithm/iteration/accumulate.hpp index b22147dc..10309cc2 100644 --- a/include/boost/fusion/algorithm/iteration/accumulate.hpp +++ b/include/boost/fusion/algorithm/iteration/accumulate.hpp @@ -7,9 +7,7 @@ #if !defined(FUSION_ACCUMULATE_09172005_1032) #define FUSION_ACCUMULATE_09172005_1032 -#include -#include -#include +#include namespace boost { namespace fusion { @@ -19,46 +17,22 @@ namespace boost { namespace fusion { template struct accumulate - { - typedef typename - detail::static_fold< - typename result_of::begin::type - , typename result_of::end::type - , State - , F - >::type - type; - }; + : result_of::fold + {}; } template inline typename result_of::accumulate::type accumulate(Sequence& seq, State const& state, F const& f) { - return detail::fold( - fusion::begin(seq) - , fusion::end(seq) - , state - , f - , result_of::equal_to< - typename result_of::begin::type - , typename result_of::end::type>() - ); + return fusion::fold(seq, state, f); } template inline typename result_of::accumulate::type accumulate(Sequence const& seq, State const& state, F const& f) { - return detail::fold( - fusion::begin(seq) - , fusion::end(seq) - , state - , f - , result_of::equal_to< - typename result_of::begin::type - , typename result_of::end::type>() - ); + 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 83a6eefc..af7e21f4 100644 --- a/include/boost/fusion/algorithm/iteration/detail/fold.hpp +++ b/include/boost/fusion/algorithm/iteration/detail/fold.hpp @@ -1,11 +1,5 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - Distributed under the 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_FOLD_05052005_1211) -#define FUSION_FOLD_05052005_1211 +#if !defined(BOOST_FUSION_FOLD_HPP_20070528_1253) +#define BOOST_FUSION_FOLD_HPP_20070528_1253 #include #include @@ -16,11 +10,16 @@ #include #include #include +#include -namespace boost { namespace fusion { namespace detail +namespace boost { namespace fusion { +namespace result_of +{ + template + struct fold; +} +namespace detail { - // Unary arguments version - template struct apply_fold_result { @@ -43,11 +42,11 @@ namespace boost { namespace fusion { namespace detail struct next_result_of_fold { typedef typename - static_fold< - typename result_of::next::type - , Last - , typename fold_apply::type - , F + static_fold< + typename result_of::next::type + , Last + , typename fold_apply::type + , F >::type type; }; @@ -56,20 +55,89 @@ namespace boost { namespace fusion { namespace detail struct static_fold { typedef typename - mpl::if_< - result_of::equal_to - , mpl::identity - , next_result_of_fold - >::type + 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(I0 const& i0, State const& state, F const& 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); + return f(*i0, f(*i1, f(*i2, unrolled_fold::call(i3, state, f)))); + } + }; + + template<> + struct unrolled_fold<3> + { + template + static typename result_of_unrolled_fold::type + call(I0 const& i0, State const& state, F const& 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(*i0, f(*i1, f(*i2, state))); + } + }; + + template<> + struct unrolled_fold<2> + { + template + static typename result_of_unrolled_fold::type + call(I0 const& i0, State const& state, F const& f) + { + typedef typename result_of::next::type I1; + I1 i1 = fusion::next(i0); + return f(*i0, f(*i1, state)); + } + }; + + template<> + struct unrolled_fold<1> + { + template + static typename result_of_unrolled_fold::type + call(I0 const& i0, State const& state, F const& f) + { + return f(*i0, state); + } + }; + + template<> + struct unrolled_fold<0> + { + template + static State call(I0 const&, State const& state, F const&) + { + return state; + } + }; + // terminal case template inline State const& - fold(First const&, Last const&, State const& state, F const&, mpl::true_) + linear_fold(First const&, Last const&, State const& state, F const&, mpl::true_) { return state; } @@ -77,14 +145,14 @@ namespace boost { namespace fusion { namespace detail // non-terminal case template inline typename static_fold::type - fold( + linear_fold( First const& first , Last const& last , State const& state , F const& f , mpl::false_) { - return detail::fold( + return detail::linear_fold( fusion::next(first) , last , f(*first, state) @@ -92,7 +160,102 @@ namespace boost { namespace fusion { namespace detail , 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 result_of_unrolled_fold::type Rest; + typedef typename fold_apply::type Rest2; + typedef typename fold_apply::type Rest3; + typedef typename fold_apply::type Rest4; + typedef typename fold_apply::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< + begin, State, F, result_of::distance::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 const& 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 const& f, random_access_traversal_tag) + { + typedef typename result_of::begin::type begin; + typedef typename result_of::end::type end; + return unrolled_fold::value>::call( + fusion::begin(seq) + , state + , f); + } }}} #endif - diff --git a/include/boost/fusion/algorithm/iteration/detail/for_each.hpp b/include/boost/fusion/algorithm/iteration/detail/for_each.hpp index 7f81d9af..a67978c6 100644 --- a/include/boost/fusion/algorithm/iteration/detail/for_each.hpp +++ b/include/boost/fusion/algorithm/iteration/detail/for_each.hpp @@ -7,28 +7,124 @@ #if !defined(FUSION_FOR_EACH_05052005_1028) #define FUSION_FOR_EACH_05052005_1028 -#include +#include +#include #include #include #include +#include +#include -namespace boost { namespace fusion { namespace detail +namespace boost { namespace fusion { +namespace detail { template inline void - for_each(First const&, Last const&, F const&, mpl::true_) + for_each_linear(First const&, Last const&, F const&, mpl::true_) { } - + template inline void - for_each(First const& first, Last const& last, F const& f, mpl::false_) + for_each_linear(First const& first, Last const& last, F const& f, mpl::false_) { f(*first); - detail::for_each(fusion::next(first), last, f - , result_of::equal_to::type, Last>()); + detail::for_each_linear(fusion::next(first), last, f, + result_of::equal_to::type, Last>()); + } + + + template + inline void + for_each(Sequence& seq, F const& f, Tag) + { + detail::for_each_linear( + fusion::begin(seq) + , fusion::end(seq) + , f + , result_of::equal_to< + typename result_of::begin::type + , typename result_of::end::type>()); + } + + template + struct for_each_unrolled + { + template + static void call(I0 const& i0, F const& f) + { + f(*i0); + typedef typename result_of::next::type I1; + I1 i1(fusion::next(i0)); + f(*i1); + typedef typename result_of::next::type I2; + I2 i2(fusion::next(i1)); + f(*i2); + typedef typename result_of::next::type I3; + I3 i3(fusion::next(i2)); + f(*i3); + for_each_unrolled::call(fusion::next(i3), f); + } + }; + + template<> + struct for_each_unrolled<3> + { + template + static void call(I0 const& i0, F const& f) + { + f(*i0); + typedef typename result_of::next::type I1; + I1 i1(fusion::next(i0)); + f(*i1); + typedef typename result_of::next::type I2; + I2 i2(fusion::next(i1)); + f(*i2); + } + }; + + template<> + struct for_each_unrolled<2> + { + template + static void call(I0 const& i0, F const& f) + { + f(*i0); + typedef typename result_of::next::type I1; + I1 i1(fusion::next(i0)); + f(*i1); + } + }; + + template<> + struct for_each_unrolled<1> + { + template + static void call(I0 const& i0, F const& f) + { + f(*i0); + } + }; + + template<> + struct for_each_unrolled<0> + { + template + static void call(It const&, F const&) + { + } + }; + + template + inline void + for_each(Sequence& seq, F const& f, random_access_traversal_tag) + { + typedef typename result_of::begin::type begin; + typedef typename result_of::end::type end; + for_each_unrolled::value>::call(fusion::begin(seq), f); } }}} + #endif diff --git a/include/boost/fusion/algorithm/iteration/fold.hpp b/include/boost/fusion/algorithm/iteration/fold.hpp index e6930ff6..046acb86 100644 --- a/include/boost/fusion/algorithm/iteration/fold.hpp +++ b/include/boost/fusion/algorithm/iteration/fold.hpp @@ -1,65 +1,46 @@ /*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2001-2007 Joel de Guzman + Copyright (c) 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(FUSION_FOLD_05052005_1214) -#define FUSION_FOLD_05052005_1214 +#if !defined(BOOST_FUSION_FOLD_05052005_1214) +#define BOOST_FUSION_FOLD_05052005_1214 #include #include -#include +#include + +#include #include -namespace boost { namespace fusion -{ - struct void_; +namespace boost { namespace fusion { + + struct random_access_traversal_tag; namespace result_of { template struct fold - { - typedef typename - detail::static_fold< - typename result_of::begin::type - , typename result_of::end::type - , State - , F - >::type - type; - }; + : 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 const& f) { - return detail::fold( - fusion::begin(seq) - , fusion::end(seq) - , state - , f - , result_of::equal_to< - typename result_of::begin::type - , typename result_of::end::type>() - ); + 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 const& f) { - return detail::fold( - fusion::begin(seq) - , fusion::end(seq) - , state - , f - , result_of::equal_to< - typename result_of::begin::type - , typename result_of::end::type>() - ); + return detail::fold(seq, state, f, typename traits::category_of::type()); } }} diff --git a/include/boost/fusion/algorithm/iteration/for_each.hpp b/include/boost/fusion/algorithm/iteration/for_each.hpp index 0d96a04e..fffb0f00 100644 --- a/include/boost/fusion/algorithm/iteration/for_each.hpp +++ b/include/boost/fusion/algorithm/iteration/for_each.hpp @@ -1,19 +1,19 @@ /*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2001-2007 Joel de Guzman + Copyright (c) 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(FUSION_FOR_EACH_05052005_1027) -#define FUSION_FOR_EACH_05052005_1027 +#if !defined(BOOST_FUSION_FOR_EACH_20070527_0943) +#define BOOST_FUSION_FOR_EACH_20070527_0943 -#include -#include -#include #include -namespace boost { namespace fusion -{ +#include + +namespace boost { namespace fusion { + namespace result_of { template @@ -23,32 +23,21 @@ namespace boost { namespace fusion }; } + struct random_access_traversal_tag; + template inline void for_each(Sequence& seq, F const& f) { - detail::for_each( - fusion::begin(seq) - , fusion::end(seq) - , f - , result_of::equal_to< - typename result_of::begin::type - , typename result_of::end::type>()); + detail::for_each(seq, f, typename traits::category_of::type()); } template inline void for_each(Sequence const& seq, F const& f) { - detail::for_each( - fusion::begin(seq) - , fusion::end(seq) - , f - , result_of::equal_to< - typename result_of::begin::type - , typename result_of::end::type>()); + detail::for_each(seq, f, typename traits::category_of::type()); } }} #endif - From 6097406ca126620b703fdb20183604fa72306fbf Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Mon, 28 May 2007 23:13:46 +0000 Subject: [PATCH 166/234] covering accumulate as part of fusion fold tests [SVN r37807] --- test/Jamfile | 2 +- test/algorithm/fold.cpp | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/test/Jamfile b/test/Jamfile index 38dcd59f..3c186062 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -1,4 +1,4 @@ -#============================================================================== +##============================================================================== # Copyright (c) 2003-2006 Joel de Guzman # # Use, modification and distribution is subject to the Boost Software diff --git a/test/algorithm/fold.cpp b/test/algorithm/fold.cpp index 228204f1..adfc8ffb 100644 --- a/test/algorithm/fold.cpp +++ b/test/algorithm/fold.cpp @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -104,6 +105,40 @@ main() BOOST_TEST(n == 3); } + { + typedef vector vector_type; + vector_type v(12345, 'x', 678910, 3.36); + int result = accumulate(v, 0, add_ints_only()); + std::cout << result << std::endl; + BOOST_TEST(result == 12345+678910); + } + + { + typedef vector vector_type; + vector_type v(12345); + + int n = fusion::accumulate(v, int_<0>(), count_ints()); + std::cout << n << std::endl; + BOOST_TEST(n == 1); + } + + { + typedef vector vector_type; + vector_type v(12345, 'x', 678910, 3.36, 8756); + + int n = fusion::accumulate(v, int_<0>(), count_ints()); + std::cout << n << std::endl; + BOOST_TEST(n == 3); + } + + { + typedef boost::mpl::vector mpl_vec; + int n = fusion::accumulate(mpl_vec(), int_<0>(), count_ints()); + std::cout << n << std::endl; + BOOST_TEST(n == 3); + } + + return boost::report_errors(); } From da31732ca3874a12827d80b31376f0d7da71149e Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Wed, 30 May 2007 06:47:39 +0000 Subject: [PATCH 167/234] fixing defective test case with bad rvalue / lvalue handling issue [SVN r37819] --- test/algorithm/all.cpp | 27 ++++++++++++++++++++++++--- test/algorithm/any.cpp | 25 +++++++++++++++++++++++-- test/algorithm/none.cpp | 25 +++++++++++++++++++++++-- 3 files changed, 70 insertions(+), 7 deletions(-) diff --git a/test/algorithm/all.cpp b/test/algorithm/all.cpp index 31fff013..983059c8 100644 --- a/test/algorithm/all.cpp +++ b/test/algorithm/all.cpp @@ -1,5 +1,6 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 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) @@ -11,6 +12,24 @@ #include #include +namespace +{ + struct search_for + { + explicit search_for(int search) + : search(search) + {} + + template + bool operator()(T const& v) const + { + return v == search; + } + + int search; + }; +} + int main() { @@ -27,9 +46,11 @@ main() } { - typedef boost::mpl::vector_c mpl_vec; - BOOST_TEST(boost::fusion::all(mpl_vec(), boost::lambda::_1 < 4)); - BOOST_TEST(!boost::fusion::all(mpl_vec(), boost::lambda::_1 == 2)); + typedef boost::mpl::vector_c mpl_vec; + // We cannot use lambda here as mpl vec iterators return + // rvalues, and lambda needs lvalues. + BOOST_TEST(boost::fusion::all(mpl_vec(), search_for(1))); + BOOST_TEST(!boost::fusion::all(mpl_vec(), search_for(2))); } return boost::report_errors(); diff --git a/test/algorithm/any.cpp b/test/algorithm/any.cpp index 2c437f7b..71685ef2 100644 --- a/test/algorithm/any.cpp +++ b/test/algorithm/any.cpp @@ -1,6 +1,7 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005 Eric Niebler + Copyright (c) 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) @@ -12,6 +13,24 @@ #include #include +namespace +{ + struct search_for + { + explicit search_for(int search) + : search(search) + {} + + template + bool operator()(T const& v) const + { + return v == search; + } + + int search; + }; +} + int main() { @@ -27,8 +46,10 @@ main() { typedef boost::mpl::vector_c mpl_vec; - BOOST_TEST(boost::fusion::any(mpl_vec(), boost::lambda::_1 == 2)); - BOOST_TEST(!boost::fusion::any(mpl_vec(), boost::lambda::_1 == 4)); + // We cannot use lambda here as mpl vec iterators return + // rvalues, and lambda needs lvalues. + BOOST_TEST(boost::fusion::any(mpl_vec(), search_for(2))); + BOOST_TEST(!boost::fusion::any(mpl_vec(), search_for(4))); } return boost::report_errors(); diff --git a/test/algorithm/none.cpp b/test/algorithm/none.cpp index 2e879cb9..5747494b 100644 --- a/test/algorithm/none.cpp +++ b/test/algorithm/none.cpp @@ -1,5 +1,6 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 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) @@ -11,6 +12,24 @@ #include #include +namespace +{ + struct search_for + { + explicit search_for(int search) + : search(search) + {} + + template + bool operator()(T const& v) const + { + return v == search; + } + + int search; + }; +} + int main() { @@ -28,8 +47,10 @@ main() { typedef boost::mpl::vector_c mpl_vec; - BOOST_TEST(boost::fusion::none(mpl_vec(), boost::lambda::_1 > 4)); - BOOST_TEST(!boost::fusion::none(mpl_vec(), boost::lambda::_1 != 2)); + // We cannot use lambda here as mpl vec iterators return + // rvalues, and lambda needs lvalues. + BOOST_TEST(boost::fusion::none(mpl_vec(), search_for(4))); + BOOST_TEST(!boost::fusion::none(mpl_vec(), search_for(3))); } return boost::report_errors(); From a4268d3cf9173faf2e32b643d90fce21e0663171 Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Wed, 30 May 2007 06:56:32 +0000 Subject: [PATCH 168/234] loop unrolling for compile time perf in any, all and none [SVN r37820] --- include/boost/fusion/algorithm/query/all.hpp | 17 +--- include/boost/fusion/algorithm/query/any.hpp | 13 +-- .../algorithm/query/detail/Attic/none.hpp | 39 -------- .../fusion/algorithm/query/detail/all.hpp | 94 +++++++++++++++++- .../fusion/algorithm/query/detail/any.hpp | 98 ++++++++++++++++++- include/boost/fusion/algorithm/query/none.hpp | 18 +--- 6 files changed, 198 insertions(+), 81 deletions(-) delete mode 100644 include/boost/fusion/algorithm/query/detail/Attic/none.hpp diff --git a/include/boost/fusion/algorithm/query/all.hpp b/include/boost/fusion/algorithm/query/all.hpp index 67452d5a..9d78867c 100644 --- a/include/boost/fusion/algorithm/query/all.hpp +++ b/include/boost/fusion/algorithm/query/all.hpp @@ -1,15 +1,14 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 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(FUSION_ALL_05052005_1238) -#define FUSION_ALL_05052005_1238 +#if !defined(BOOST_FUSION_ALL_05052005_1238) +#define BOOST_FUSION_ALL_05052005_1238 -#include -#include -#include +#include #include namespace boost { namespace fusion @@ -27,13 +26,7 @@ namespace boost { namespace fusion inline bool all(Sequence const& seq, F f) { - return detail::all( - fusion::begin(seq) - , fusion::end(seq) - , f - , result_of::equal_to< - typename result_of::begin::type - , typename result_of::end::type>()); + return detail::all(seq, f, typename traits::category_of::type()); } }} diff --git a/include/boost/fusion/algorithm/query/any.hpp b/include/boost/fusion/algorithm/query/any.hpp index 39590dfe..be4ef099 100644 --- a/include/boost/fusion/algorithm/query/any.hpp +++ b/include/boost/fusion/algorithm/query/any.hpp @@ -1,6 +1,7 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005 Eric Niebler + Copyright (c) 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) @@ -8,9 +9,7 @@ #if !defined(FUSION_ANY_05052005_1230) #define FUSION_ANY_05052005_1230 -#include -#include -#include +#include #include namespace boost { namespace fusion @@ -28,13 +27,7 @@ namespace boost { namespace fusion inline bool any(Sequence const& seq, F f) { - return detail::any( - fusion::begin(seq) - , fusion::end(seq) - , f - , result_of::equal_to< - typename result_of::begin::type - , typename result_of::end::type>()); + return detail::any(seq, f, typename traits::category_of::type()); } }} diff --git a/include/boost/fusion/algorithm/query/detail/Attic/none.hpp b/include/boost/fusion/algorithm/query/detail/Attic/none.hpp deleted file mode 100644 index 1a633fca..00000000 --- a/include/boost/fusion/algorithm/query/detail/Attic/none.hpp +++ /dev/null @@ -1,39 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - Distributed under the 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_NONE_07062005_1126) -#define FUSION_NONE_07062005_1126 - -#include -#include -#include -#include - -namespace boost { namespace fusion { namespace detail -{ - template - inline bool - none(First const&, Last const&, F const&, mpl::true_) - { - return true; - } - - template - inline bool - none(First const& first, Last const& last, F& f, mpl::false_) - { - typename result_of::deref::type x = *first; - return !f(x) && - detail::none( - fusion::next(first) - , last - , f - , result_of::equal_to::type, Last>()); - } -}}} - -#endif - diff --git a/include/boost/fusion/algorithm/query/detail/all.hpp b/include/boost/fusion/algorithm/query/detail/all.hpp index ae3e64c6..9f4828ce 100644 --- a/include/boost/fusion/algorithm/query/detail/all.hpp +++ b/include/boost/fusion/algorithm/query/detail/all.hpp @@ -1,5 +1,6 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 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) @@ -8,31 +9,118 @@ #define FUSION_ALL_05052005_1237 #include +#include +#include +#include #include #include #include +#include namespace boost { namespace fusion { namespace detail { template inline bool - all(First const&, Last const&, F const&, mpl::true_) + linear_all(First const&, Last const&, F const&, mpl::true_) { return true; } template inline bool - all(First const& first, Last const& last, F& f, mpl::false_) + linear_all(First const& first, Last const& last, F& f, mpl::false_) { typename result_of::deref::type x = *first; return f(x) && - detail::all( + detail::linear_all( fusion::next(first) , last , f , result_of::equal_to::type, Last>()); } + + template + inline bool + all(Sequence const& seq, F f, Tag) + { + return detail::linear_all( + fusion::begin(seq) + , fusion::end(seq) + , f + , result_of::equal_to< + typename result_of::begin::type + , typename result_of::end::type>()); + } + + template + struct unrolled_all + { + template + static bool call(It const& it, F f) + { + return + f(*it) && + f(*fusion::advance_c<1>(it))&& + f(*fusion::advance_c<2>(it)) && + f(*fusion::advance_c<3>(it)) && + detail::unrolled_all::call(fusion::advance_c<4>(it), f); + } + }; + + template<> + struct unrolled_all<3> + { + template + static bool call(It const& it, F f) + { + return + f(*it) && + f(*fusion::advance_c<1>(it)) && + f(*fusion::advance_c<2>(it)); + } + }; + + template<> + struct unrolled_all<2> + { + template + static bool call(It const& it, F f) + { + return + f(*it) && + f(*fusion::advance_c<1>(it)); + } + }; + + template<> + struct unrolled_all<1> + { + template + static bool call(It const& it, F f) + { + return f(*it); + } + }; + + template<> + struct unrolled_all<0> + { + template + static bool call(It const& it, F f) + { + return false; + } + }; + + template + inline bool + all(Sequence const& seq, F f, random_access_traversal_tag) + { + typedef typename result_of::begin::type begin; + typedef typename result_of::end::type end; + return detail::unrolled_all::value>::call( + fusion::begin(seq), f); + } }}} #endif diff --git a/include/boost/fusion/algorithm/query/detail/any.hpp b/include/boost/fusion/algorithm/query/detail/any.hpp index 5e5e569f..8cb2ea21 100644 --- a/include/boost/fusion/algorithm/query/detail/any.hpp +++ b/include/boost/fusion/algorithm/query/detail/any.hpp @@ -1,6 +1,7 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005 Eric Niebler + Copyright (c) 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) @@ -9,31 +10,120 @@ #define FUSION_ANY_05052005_1229 #include +#include +#include +#include #include #include #include +#include -namespace boost { namespace fusion { namespace detail +namespace boost { namespace fusion { + struct random_access_traversal_tag; +namespace detail { template inline bool - any(First const&, Last const&, F const&, mpl::true_) + linear_any(First const&, Last const&, F const&, mpl::true_) { return false; } template inline bool - any(First const& first, Last const& last, F& f, mpl::false_) + linear_any(First const& first, Last const& last, F& f, mpl::false_) { typename result_of::deref::type x = *first; return f(x) || - detail::any( + detail::linear_any( fusion::next(first) , last , f , result_of::equal_to::type, Last>()); } + + template + inline bool + any(Sequence const& seq, F f, Tag) + { + return detail::linear_any( + fusion::begin(seq) + , fusion::end(seq) + , f + , result_of::equal_to< + typename result_of::begin::type + , typename result_of::end::type>()); + } + + template + struct unrolled_any + { + template + static bool call(It const& it, F f) + { + return + f(*it) || + f(*fusion::advance_c<1>(it))|| + f(*fusion::advance_c<2>(it)) || + f(*fusion::advance_c<3>(it)) || + detail::unrolled_any::call(fusion::advance_c<4>(it), f); + } + }; + + template<> + struct unrolled_any<3> + { + template + static bool call(It const& it, F f) + { + return + f(*it) || + f(*fusion::advance_c<1>(it)) || + f(*fusion::advance_c<2>(it)); + } + }; + + template<> + struct unrolled_any<2> + { + template + static bool call(It const& it, F f) + { + return + f(*it) || + f(*fusion::advance_c<1>(it)); + } + }; + + template<> + struct unrolled_any<1> + { + template + static bool call(It const& it, F f) + { + return f(*it); + } + }; + + template<> + struct unrolled_any<0> + { + template + static bool call(It const& it, F f) + { + return false; + } + }; + + template + inline bool + any(Sequence const& seq, F f, random_access_traversal_tag) + { + typedef typename result_of::begin::type begin; + typedef typename result_of::end::type end; + return detail::unrolled_any::value>::call( + fusion::begin(seq), f); + } }}} #endif diff --git a/include/boost/fusion/algorithm/query/none.hpp b/include/boost/fusion/algorithm/query/none.hpp index e182d811..f31f4c9c 100644 --- a/include/boost/fusion/algorithm/query/none.hpp +++ b/include/boost/fusion/algorithm/query/none.hpp @@ -1,16 +1,14 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 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(FUSION_NONE_07062005_1128) -#define FUSION_NONE_07062005_1128 +#if !defined(BOOST_FUSION_NONE_07062005_1128) +#define BOOST_FUSION_NONE_07062005_1128 -#include -#include -#include -#include +#include namespace boost { namespace fusion { @@ -27,13 +25,7 @@ namespace boost { namespace fusion inline bool none(Sequence const& seq, F f) { - return detail::none( - fusion::begin(seq) - , fusion::end(seq) - , f - , result_of::equal_to< - typename result_of::begin::type - , typename result_of::end::type>()); + return !fusion::any(seq, f); } }} From d2f019514e62aef019159ff16cc4f2dfe37d24cc Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Fri, 1 Jun 2007 22:47:49 +0000 Subject: [PATCH 169/234] fusion find_if loop unrolling and use of advance optimization for random traversal sequences [SVN r37856] --- .../fusion/algorithm/query/detail/find_if.hpp | 160 ++++++++++++++++-- 1 file changed, 147 insertions(+), 13 deletions(-) diff --git a/include/boost/fusion/algorithm/query/detail/find_if.hpp b/include/boost/fusion/algorithm/query/detail/find_if.hpp index a82c040b..cf0cc6b7 100644 --- a/include/boost/fusion/algorithm/query/detail/find_if.hpp +++ b/include/boost/fusion/algorithm/query/detail/find_if.hpp @@ -1,5 +1,6 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 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) @@ -16,18 +17,22 @@ #include #include #include +#include +#include +#include +#include +#include -namespace boost { namespace fusion { namespace detail +namespace boost { namespace fusion { + struct random_access_traversal_tag; +namespace detail { template struct apply_filter { - typedef typename - mpl::apply1< - Pred - , typename result_of::value_of::type - >::type - type; + typedef typename mpl::apply1< + Pred, typename result_of::value_of::type>::type type; + BOOST_STATIC_CONSTANT(int, value = type::value); }; template @@ -60,37 +65,166 @@ namespace boost { namespace fusion { namespace detail type; }; + template< + typename First, typename Last, + typename Pred, bool> + struct choose_find_if; + + template + struct choose_find_if + : main_find_if + {}; + + template + struct unroll_again; + + template + struct apply_offset_filter + { + typedef typename result_of::advance_c::type Shifted; + typedef typename + mpl::apply1< + Pred + , typename result_of::value_of::type + >::type + type; + BOOST_STATIC_CONSTANT(int, value = type::value); + }; + + template + struct unrolled_find_if + { + typedef typename mpl::eval_if< + apply_filter, + mpl::identity, + mpl::eval_if< + apply_offset_filter, + result_of::advance_c, + mpl::eval_if< + apply_offset_filter, + result_of::advance_c, + mpl::eval_if< + apply_offset_filter, + result_of::advance_c, + unroll_again< + Iter, + Pred, + n, + 4> > > > >::type type; + }; + + template + struct unrolled_find_if + { + typedef typename mpl::eval_if< + apply_filter, + mpl::identity, + mpl::eval_if< + apply_offset_filter, + result_of::advance_c, + mpl::eval_if< + apply_offset_filter, + result_of::advance_c, + result_of::advance_c > > >::type type; + }; + + template + struct unrolled_find_if + { + typedef typename mpl::eval_if< + apply_filter, + mpl::identity, + mpl::eval_if< + apply_offset_filter, + result_of::advance_c, + result_of::advance_c > >::type type; + }; + + template + struct unrolled_find_if + { + typedef typename mpl::eval_if< + apply_filter, + mpl::identity, + result_of::advance_c >::type type; + }; + + template + struct unroll_again + { + typedef typename unrolled_find_if< + typename result_of::advance_c::type, + Pred, + n-unrolling>::type type; + }; + + template + struct unrolled_find_if + { + typedef Iter type; + }; + + template + struct choose_find_if + { + typedef typename result_of::distance::type N; + typedef typename unrolled_find_if::type type; + }; + template struct static_find_if { typedef typename - main_find_if< + choose_find_if< First , Last , typename mpl::lambda::type + , is_base_of::type>::value >::type type; template static type - call(Iterator const& iter, mpl::true_) + recursive_call(Iterator const& iter, mpl::true_) { return iter; } template static type - call(Iterator const& iter, mpl::false_) + recursive_call(Iterator const& iter, mpl::false_) { - return call(fusion::next(iter)); + return recursive_call(fusion::next(iter)); + } + + template + static type + recursive_call(Iterator const& iter) + { + typedef result_of::equal_to found; + return recursive_call(iter, found()); + } + + template + static type + choose_call(Iterator const& iter, Tag) + { + return recursive_call(iter); + } + + template + static type + choose_call(Iterator const& iter, random_access_traversal_tag) + { + typedef typename result_of::distance::type N; + return fusion::advance(iter); } template static type call(Iterator const& iter) { - typedef result_of::equal_to found; - return call(iter, found()); + return choose_call(iter, typename traits::category_of::type()); } }; From b33ce64895c6519a281085afdc16d599e046e480 Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Sat, 2 Jun 2007 16:48:49 +0000 Subject: [PATCH 170/234] correcting defective fusion count_if test case [SVN r37874] --- test/algorithm/count_if.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/test/algorithm/count_if.cpp b/test/algorithm/count_if.cpp index fa686fc2..1a8c02e5 100644 --- a/test/algorithm/count_if.cpp +++ b/test/algorithm/count_if.cpp @@ -11,6 +11,7 @@ #include #include #include +#include int main() @@ -27,8 +28,9 @@ main() { typedef boost::mpl::vector_c mpl_vec; - BOOST_TEST(boost::fusion::count_if(mpl_vec(), boost::lambda::_1 <= 2) == 2); - BOOST_TEST(boost::fusion::count_if(mpl_vec(), boost::lambda::_1 > 2) == 1); + // Cannot use lambda here as mpl iterators return rvalues and lambda needs lvalues + BOOST_TEST(boost::fusion::count_if(mpl_vec(), std::bind2nd(std::less_equal(), 2)) == 2); + BOOST_TEST(boost::fusion::count_if(mpl_vec(), std::bind2nd(std::greater(), 2)) == 1); } return boost::report_errors(); From 40524cfda199448ce6c6436ccee13e26f1a34e75 Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Sat, 2 Jun 2007 21:48:14 +0000 Subject: [PATCH 171/234] loop unrolling count(_if) [SVN r37875] --- .../boost/fusion/algorithm/query/count.hpp | 20 +-- .../boost/fusion/algorithm/query/count_if.hpp | 16 +- .../algorithm/query/detail/count_if.hpp | 144 +++++++++++++++++- 3 files changed, 146 insertions(+), 34 deletions(-) diff --git a/include/boost/fusion/algorithm/query/count.hpp b/include/boost/fusion/algorithm/query/count.hpp index 88289301..27e3370e 100644 --- a/include/boost/fusion/algorithm/query/count.hpp +++ b/include/boost/fusion/algorithm/query/count.hpp @@ -1,19 +1,15 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2007 Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ -#if !defined(FUSION_COUNT_09162005_0150) -#define FUSION_COUNT_09162005_0150 +#if !defined(BOOST_FUSION_COUNT_09162005_0150) +#define BOOST_FUSION_COUNT_09162005_0150 -#include -#include -#include -#include -#include +#include #include -#include namespace boost { namespace fusion { @@ -31,13 +27,7 @@ namespace boost { namespace fusion count(Sequence const& seq, T const& x) { detail::count_compare f(x); - return detail::count_if( - fusion::begin(seq) - , fusion::end(seq) - , f - , result_of::equal_to< - typename result_of::begin::type - , typename result_of::end::type>()); + return fusion::count_if(seq, f); } }} diff --git a/include/boost/fusion/algorithm/query/count_if.hpp b/include/boost/fusion/algorithm/query/count_if.hpp index 43531c67..a080b3b2 100644 --- a/include/boost/fusion/algorithm/query/count_if.hpp +++ b/include/boost/fusion/algorithm/query/count_if.hpp @@ -1,16 +1,15 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 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(FUSION_COUNT_IF_09162005_0137) -#define FUSION_COUNT_IF_09162005_0137 +#if !defined(BOOST_FUSION_COUNT_IF_09162005_0137) +#define BOOST_FUSION_COUNT_IF_09162005_0137 -#include -#include -#include #include +#include namespace boost { namespace fusion { @@ -28,12 +27,7 @@ namespace boost { namespace fusion count_if(Sequence const& seq, F f) { return detail::count_if( - fusion::begin(seq) - , fusion::end(seq) - , f - , result_of::equal_to< - typename result_of::begin::type - , typename result_of::end::type>()); + seq, f, typename traits::category_of::type()); } }} diff --git a/include/boost/fusion/algorithm/query/detail/count_if.hpp b/include/boost/fusion/algorithm/query/detail/count_if.hpp index c4d612a8..d1f6ef7e 100644 --- a/include/boost/fusion/algorithm/query/detail/count_if.hpp +++ b/include/boost/fusion/algorithm/query/detail/count_if.hpp @@ -1,41 +1,169 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 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(FUSION_COUNT_IF_09162005_0141) -#define FUSION_COUNT_IF_09162005_0141 +#if !defined(BOOST_FUSION_COUNT_IF_09162005_0141) +#define BOOST_FUSION_COUNT_IF_09162005_0141 #include +#include +#include #include #include #include +#include +#include +#include -namespace boost { namespace fusion { namespace detail +namespace boost { namespace fusion { + struct random_access_traversal_tag; +namespace detail { template inline int - count_if(First const&, Last const&, F const&, mpl::true_) + linear_count_if(First const&, Last const&, F const&, mpl::true_) { return 0; } template inline int - count_if(First const& first, Last const& last, F& f, mpl::false_) + linear_count_if(First const& first, Last const& last, F& f, mpl::false_) { - typename result_of::deref::type x = *first; int n = - detail::count_if( + detail::linear_count_if( fusion::next(first) , last , f , result_of::equal_to::type, Last>()); - if (f(x)) + if (f(*first)) ++n; return n; } + + template + inline int + count_if(Sequence const& seq, F f, Tag) + { + return detail::linear_count_if( + fusion::begin(seq) + , fusion::end(seq) + , f + , result_of::equal_to< + typename result_of::begin::type + , typename result_of::end::type>()); + } + + template + struct unrolled_count_if + { + template + static int call(I0 const& i0, F f) + { + int ct = unrolled_count_if:: + call(fusion::advance_c<4>(i0), f); + if(f(*i0)) + ++ct; + + typedef typename result_of::next::type I1; + I1 i1(fusion::next(i0)); + if(f(*i1)) + ++ct; + + typedef typename result_of::next::type I2; + I2 i2(fusion::next(i1)); + if(f(*i2)) + ++ct; + + typedef typename result_of::next::type I3; + I3 i3(fusion::next(i2)); + if(f(*i3)) + ++ct; + + return ct; + } + }; + + template<> + struct unrolled_count_if<3> + { + template + static int call(I0 const& i0, F f) + { + int ct = 0; + if(f(*i0)) + ++ct; + + typedef typename result_of::next::type I1; + I1 i1(fusion::next(i0)); + if(f(*i1)) + ++ct; + + typedef typename result_of::next::type I2; + I2 i2(fusion::next(i1)); + if(f(*i2)) + ++ct; + + return ct; + } + }; + + template<> + struct unrolled_count_if<2> + { + template + static int call(I0 const& i0, F f) + { + int ct = 0; + + if(f(*i0)) + ++ct; + + typedef typename result_of::next::type I1; + I1 i1(fusion::next(i0)); + if(f(*i1)) + ++ct; + + return ct; + } + }; + + template<> + struct unrolled_count_if<1> + { + template + static int call(I0 const& i0, F f) + { + int ct = 0; + if(f(*i0)) + ++ct; + return ct; + } + }; + + + template<> + struct unrolled_count_if<0> + { + template + static int call(I0 const&, F) + { + return 0; + } + }; + + template + inline int + count_if(Sequence const& seq, F f, random_access_traversal_tag) + { + typedef typename result_of::begin::type begin; + typedef typename result_of::end::type end; + return detail::unrolled_count_if::value>:: + call(fusion::begin(seq), f); + } }}} #endif From 2bbf2a7ec49e83eecf76fbaf6810fedbd14df1bd Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Tue, 5 Jun 2007 22:09:51 +0000 Subject: [PATCH 172/234] added include/swap.hpp [SVN r37905] --- include/boost/fusion/include/swap.hpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 include/boost/fusion/include/swap.hpp diff --git a/include/boost/fusion/include/swap.hpp b/include/boost/fusion/include/swap.hpp new file mode 100644 index 00000000..1f428aa1 --- /dev/null +++ b/include/boost/fusion/include/swap.hpp @@ -0,0 +1,12 @@ +/*============================================================================= + Copyright (c) 2001-2007 Joel de Guzman + + Distributed under the 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_INCLUDE_SWAP) +#define FUSION_INCLUDE_SWAP + +#include + +#endif From 6fbd010bbc9426124d085af9c5703b381af1c7e5 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Wed, 6 Jun 2007 00:18:13 +0000 Subject: [PATCH 173/234] more flat includes [SVN r37907] --- include/boost/fusion/include/equal_to.hpp | 12 ++++++++++++ include/boost/fusion/include/next.hpp | 12 ++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 include/boost/fusion/include/equal_to.hpp create mode 100644 include/boost/fusion/include/next.hpp diff --git a/include/boost/fusion/include/equal_to.hpp b/include/boost/fusion/include/equal_to.hpp new file mode 100644 index 00000000..8563a5d8 --- /dev/null +++ b/include/boost/fusion/include/equal_to.hpp @@ -0,0 +1,12 @@ +/*============================================================================= + Copyright (c) 2001-2007 Joel de Guzman + + Distributed under the 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_INCLUDE_EQUAL_TO) +#define FUSION_INCLUDE_EQUAL_TO + +#include + +#endif diff --git a/include/boost/fusion/include/next.hpp b/include/boost/fusion/include/next.hpp new file mode 100644 index 00000000..6188c65a --- /dev/null +++ b/include/boost/fusion/include/next.hpp @@ -0,0 +1,12 @@ +/*============================================================================= + Copyright (c) 2001-2007 Joel de Guzman + + Distributed under the 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_INCLUDE_NEXT) +#define FUSION_INCLUDE_NEXT + +#include + +#endif From 35ec412acfc9b9ce6bc180f0bb35788f0a52e9a9 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Wed, 6 Jun 2007 01:13:33 +0000 Subject: [PATCH 174/234] more flat includes [SVN r37908] --- include/boost/fusion/include/value_of.hpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 include/boost/fusion/include/value_of.hpp diff --git a/include/boost/fusion/include/value_of.hpp b/include/boost/fusion/include/value_of.hpp new file mode 100644 index 00000000..4f2bef95 --- /dev/null +++ b/include/boost/fusion/include/value_of.hpp @@ -0,0 +1,12 @@ +/*============================================================================= + Copyright (c) 2001-2007 Joel de Guzman + + Distributed under the 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_INCLUDE_VALUE_OF) +#define FUSION_INCLUDE_VALUE_OF + +#include + +#endif From d68dd4d43e64d2a151cbd3c1fcbea0ad2978875e Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Wed, 6 Jun 2007 01:23:45 +0000 Subject: [PATCH 175/234] more flat includes [SVN r37909] --- include/boost/fusion/include/equal_to.hpp | 1 + include/boost/fusion/include/list.hpp | 12 ++++++++++++ 2 files changed, 13 insertions(+) create mode 100644 include/boost/fusion/include/list.hpp diff --git a/include/boost/fusion/include/equal_to.hpp b/include/boost/fusion/include/equal_to.hpp index 8563a5d8..5607b8e2 100644 --- a/include/boost/fusion/include/equal_to.hpp +++ b/include/boost/fusion/include/equal_to.hpp @@ -8,5 +8,6 @@ #define FUSION_INCLUDE_EQUAL_TO #include +#include #endif diff --git a/include/boost/fusion/include/list.hpp b/include/boost/fusion/include/list.hpp new file mode 100644 index 00000000..fb5c0b42 --- /dev/null +++ b/include/boost/fusion/include/list.hpp @@ -0,0 +1,12 @@ +/*============================================================================= + Copyright (c) 2001-2007 Joel de Guzman + + Distributed under the 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_INCLUDE_LIST) +#define FUSION_INCLUDE_LIST + +#include + +#endif From 414b87dbdbd3c4ffbe8a83c5542eb2b392d06adb Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Thu, 7 Jun 2007 20:43:50 +0000 Subject: [PATCH 176/234] fixing bug in internal use of fusion::result_of::distance [SVN r37934] --- include/boost/fusion/algorithm/iteration/detail/fold.hpp | 4 ++-- include/boost/fusion/algorithm/iteration/detail/for_each.hpp | 2 +- include/boost/fusion/algorithm/query/detail/all.hpp | 2 +- include/boost/fusion/algorithm/query/detail/any.hpp | 2 +- include/boost/fusion/algorithm/query/detail/count_if.hpp | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/include/boost/fusion/algorithm/iteration/detail/fold.hpp b/include/boost/fusion/algorithm/iteration/detail/fold.hpp index af7e21f4..37f351cb 100644 --- a/include/boost/fusion/algorithm/iteration/detail/fold.hpp +++ b/include/boost/fusion/algorithm/iteration/detail/fold.hpp @@ -214,7 +214,7 @@ namespace detail typedef typename result_of::begin::type begin; typedef typename result_of::end::type end; typedef typename result_of_unrolled_fold< - begin, State, F, result_of::distance::value>::type type; + begin, State, F, result_of::distance::type::value>::type type; }; template @@ -251,7 +251,7 @@ namespace detail { typedef typename result_of::begin::type begin; typedef typename result_of::end::type end; - return unrolled_fold::value>::call( + return unrolled_fold::type::value>::call( fusion::begin(seq) , state , f); diff --git a/include/boost/fusion/algorithm/iteration/detail/for_each.hpp b/include/boost/fusion/algorithm/iteration/detail/for_each.hpp index a67978c6..a23517c8 100644 --- a/include/boost/fusion/algorithm/iteration/detail/for_each.hpp +++ b/include/boost/fusion/algorithm/iteration/detail/for_each.hpp @@ -121,7 +121,7 @@ namespace detail { typedef typename result_of::begin::type begin; typedef typename result_of::end::type end; - for_each_unrolled::value>::call(fusion::begin(seq), f); + for_each_unrolled::type::value>::call(fusion::begin(seq), f); } }}} diff --git a/include/boost/fusion/algorithm/query/detail/all.hpp b/include/boost/fusion/algorithm/query/detail/all.hpp index 9f4828ce..979cfb11 100644 --- a/include/boost/fusion/algorithm/query/detail/all.hpp +++ b/include/boost/fusion/algorithm/query/detail/all.hpp @@ -118,7 +118,7 @@ namespace boost { namespace fusion { namespace detail { typedef typename result_of::begin::type begin; typedef typename result_of::end::type end; - return detail::unrolled_all::value>::call( + return detail::unrolled_all::type::value>::call( fusion::begin(seq), f); } }}} diff --git a/include/boost/fusion/algorithm/query/detail/any.hpp b/include/boost/fusion/algorithm/query/detail/any.hpp index 8cb2ea21..31bbaa58 100644 --- a/include/boost/fusion/algorithm/query/detail/any.hpp +++ b/include/boost/fusion/algorithm/query/detail/any.hpp @@ -121,7 +121,7 @@ namespace detail { typedef typename result_of::begin::type begin; typedef typename result_of::end::type end; - return detail::unrolled_any::value>::call( + return detail::unrolled_any::type::value>::call( fusion::begin(seq), f); } }}} diff --git a/include/boost/fusion/algorithm/query/detail/count_if.hpp b/include/boost/fusion/algorithm/query/detail/count_if.hpp index d1f6ef7e..d270b591 100644 --- a/include/boost/fusion/algorithm/query/detail/count_if.hpp +++ b/include/boost/fusion/algorithm/query/detail/count_if.hpp @@ -161,7 +161,7 @@ namespace detail { typedef typename result_of::begin::type begin; typedef typename result_of::end::type end; - return detail::unrolled_count_if::value>:: + return detail::unrolled_count_if::type::value>:: call(fusion::begin(seq), f); } }}} From 0fcbc5b467c2f813de0da18e4883ddd9a82c480c Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Mon, 11 Jun 2007 07:01:05 +0000 Subject: [PATCH 177/234] result_of and polymorphic function obj compatibility [SVN r37962] --- .../algorithm/iteration/detail/fold.hpp | 8 +- .../transformation/detail/replace.hpp | 11 +- .../transformation/detail/replace_if.hpp | 9 +- .../detail/Attic/gen_result_of_spec.hpp | 102 ------------------ .../detail/Attic/nullary_call_base.hpp | 14 ++- .../adapter/detail/nullary_call_base.hpp | 14 ++- .../boost/fusion/functional/adapter/fused.hpp | 11 +- .../adapter/fused_function_object.hpp | 13 ++- .../functional/adapter/unfused_generic.hpp | 50 ++++----- .../adapter/unfused_lvalue_args.hpp | 48 ++++----- .../adapter/unfused_rvalue_args.hpp | 49 ++++----- .../functional/adapter/unfused_typed.hpp | 54 +++++----- .../invocation/invoke_function_object.hpp | 21 ++-- .../detail/apply_transform_result.hpp | 17 +-- .../view/zip_view/detail/advance_impl.hpp | 9 +- .../sequence/view/zip_view/detail/at_impl.hpp | 11 +- .../view/zip_view/detail/begin_impl.hpp | 9 +- .../view/zip_view/detail/deref_impl.hpp | 7 +- .../view/zip_view/detail/end_impl.hpp | 11 +- .../view/zip_view/detail/next_impl.hpp | 7 +- .../view/zip_view/detail/prior_impl.hpp | 7 +- .../zip_view/detail/strictest_traversal.hpp | 19 ++-- .../view/zip_view/detail/value_at_impl.hpp | 7 +- .../view/zip_view/detail/value_of_impl.hpp | 5 +- .../sequence/view/zip_view/zip_view.hpp | 33 +++--- .../boost/fusion/support/deduce_sequence.hpp | 12 +-- test/Jamfile | 1 - test/algorithm/fold.cpp | 15 ++- test/algorithm/transform.cpp | 11 +- test/functional/fused.cpp | 31 ++++-- test/functional/fused_function_object.cpp | 7 +- test/functional/invoke.cpp | 67 +++++++++--- test/functional/invoke_function_object.cpp | 69 +++++++++--- .../functional/make_fused_function_object.cpp | 8 +- test/functional/make_unfused_generic.cpp | 12 ++- test/functional/make_unfused_lvalue_args.cpp | 12 ++- test/functional/make_unfused_rvalue_args.cpp | 12 ++- test/functional/unfused_generic.cpp | 20 ++-- test/functional/unfused_lvalue_args.cpp | 18 ++-- test/functional/unfused_rvalue_args.cpp | 18 ++-- test/functional/unfused_typed.cpp | 18 ++-- test/sequence/transform_view.cpp | 10 +- 42 files changed, 477 insertions(+), 410 deletions(-) delete mode 100644 include/boost/fusion/functional/adapter/detail/Attic/gen_result_of_spec.hpp diff --git a/include/boost/fusion/algorithm/iteration/detail/fold.hpp b/include/boost/fusion/algorithm/iteration/detail/fold.hpp index 37f351cb..b2bec5b0 100644 --- a/include/boost/fusion/algorithm/iteration/detail/fold.hpp +++ b/include/boost/fusion/algorithm/iteration/detail/fold.hpp @@ -11,6 +11,7 @@ #include #include #include +#include namespace boost { namespace fusion { namespace result_of @@ -25,14 +26,13 @@ namespace detail { template struct apply - { - typedef typename F::template result::type type; - }; + : boost::result_of + {}; }; template struct fold_apply - : mpl::apply, typename result_of::value_of::type, State> + : boost::result_of::type, State)> {}; template diff --git a/include/boost/fusion/algorithm/transformation/detail/replace.hpp b/include/boost/fusion/algorithm/transformation/detail/replace.hpp index 2c738c32..edaa74f5 100644 --- a/include/boost/fusion/algorithm/transformation/detail/replace.hpp +++ b/include/boost/fusion/algorithm/transformation/detail/replace.hpp @@ -43,16 +43,19 @@ namespace boost { namespace fusion { namespace detail replacer(T const& old_value, T const& new_value) : old_value(old_value), new_value(new_value) {} - template - struct result + template + struct result; + + template + struct result(U2)> { typedef typename - mpl::if_, U, U const&>::type + mpl::if_, U2, U2 const&>::type type; }; template - typename result::type + typename result::type operator()(U const& x) const { return replacer_helper::value>:: diff --git a/include/boost/fusion/algorithm/transformation/detail/replace_if.hpp b/include/boost/fusion/algorithm/transformation/detail/replace_if.hpp index 501297e0..0de8d2d6 100644 --- a/include/boost/fusion/algorithm/transformation/detail/replace_if.hpp +++ b/include/boost/fusion/algorithm/transformation/detail/replace_if.hpp @@ -43,8 +43,11 @@ namespace boost { namespace fusion { namespace detail replacer_if(F f, T const& new_value) : f(f), new_value(new_value) {} - template - struct result + template + struct result; + + template + struct result(U)> { typedef typename mpl::if_, U, U const&>::type @@ -52,7 +55,7 @@ namespace boost { namespace fusion { namespace detail }; template - typename result::type + typename result::type operator()(U const& x) const { return replacer_if_helper::value>:: diff --git a/include/boost/fusion/functional/adapter/detail/Attic/gen_result_of_spec.hpp b/include/boost/fusion/functional/adapter/detail/Attic/gen_result_of_spec.hpp deleted file mode 100644 index 29335dc3..00000000 --- a/include/boost/fusion/functional/adapter/detail/Attic/gen_result_of_spec.hpp +++ /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). -==============================================================================*/ - -// No include guard - this file is included multiple times intentionally. - -#if !defined(BOOST_PP_IS_ITERATING) - -# if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_DETAIL_GEN_RESULT_OF_SPEC_HPP_INCLUDED) - -# include -# include -# include -# include -# include - -# include - -# include - -# define BOOST_FUSION_FUNCTIONAL_ADAPTER_DETAIL_GEN_RESULT_OF_SPEC_HPP_INCLUDED -# endif - -# if !defined(BOOST_FUSION_CLASS_TPL_PARAMS) -# error "BOOST_FUSION_CLASS_TPL_PARAMS undefined" -# endif -# if !defined(BOOST_FUSION_CLASS_TPL_SPEC) -# error "BOOST_FUSION_CLASS_TPL_SPEC undefined" -# endif - -# if !defined(BOOST_FUSION_FUNC_OBJ_ARITY) -# define BOOST_PP_ITERATION_LIMITS (1,1) -# else -# define BOOST_PP_ITERATION_LIMITS (0,BOOST_FUSION_FUNC_OBJ_ARITY) -# endif -# define BOOST_PP_FILENAME_1 \ - - -namespace boost -{ - #include BOOST_PP_ITERATE() -} - -# undef BOOST_FUSION_CLASS_TPL_PARAMS -# undef BOOST_FUSION_CLASS_TPL_SPEC -# if defined(BOOST_FUSION_FUNC_OBJ_ARITY) -# undef BOOST_FUSION_FUNC_OBJ_ARITY -# endif - -#else // defined(BOOST_PP_IS_ITERATING) -/////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// -/////////////////////////////////////////////////////////////////////////////// - -# define N BOOST_PP_ITERATION() - - template< BOOST_FUSION_CLASS_TPL_PARAMS - BOOST_PP_ENUM_TRAILING_PARAMS(N, typename A) > - struct result_of< BOOST_FUSION_CLASS_TPL_SPEC (BOOST_PP_ENUM_PARAMS(N,A)) > - { - typedef typename BOOST_FUSION_CLASS_TPL_SPEC ::template result - ::type BOOST_PP_INTERCEPT)>::type type; - }; - - template< BOOST_FUSION_CLASS_TPL_PARAMS - BOOST_PP_ENUM_TRAILING_PARAMS(N, typename A) > - struct result_of< BOOST_FUSION_CLASS_TPL_SPEC & (BOOST_PP_ENUM_PARAMS(N,A)) > - { - typedef typename BOOST_FUSION_CLASS_TPL_SPEC ::template result - ::type BOOST_PP_INTERCEPT)>::type type; - }; - - template< BOOST_FUSION_CLASS_TPL_PARAMS - BOOST_PP_ENUM_TRAILING_PARAMS(N, typename A) > - struct result_of< BOOST_FUSION_CLASS_TPL_SPEC const (BOOST_PP_ENUM_PARAMS(N,A)) > - { - typedef typename BOOST_FUSION_CLASS_TPL_SPEC ::template result - ::type BOOST_PP_INTERCEPT)>::type type; - }; - - template< BOOST_FUSION_CLASS_TPL_PARAMS - BOOST_PP_ENUM_TRAILING_PARAMS(N, typename A) > - struct result_of< BOOST_FUSION_CLASS_TPL_SPEC const & (BOOST_PP_ENUM_PARAMS(N,A)) > - { - typedef typename BOOST_FUSION_CLASS_TPL_SPEC ::template result - ::type BOOST_PP_INTERCEPT)>::type type; - }; - -# undef N - -#endif - diff --git a/include/boost/fusion/functional/adapter/detail/Attic/nullary_call_base.hpp b/include/boost/fusion/functional/adapter/detail/Attic/nullary_call_base.hpp index efef076e..bdba4730 100644 --- a/include/boost/fusion/functional/adapter/detail/Attic/nullary_call_base.hpp +++ b/include/boost/fusion/functional/adapter/detail/Attic/nullary_call_base.hpp @@ -12,17 +12,21 @@ #include #include +#include #include #include +#include + namespace boost { namespace fusion { namespace detail { struct reserved { }; template ::type - ::template result >::value> + ::template result< + typename remove_const::type>::type(fusion::vector0)> >::value> struct nullary_call_base { template inline void operator()(T reserved::*) const { } @@ -34,19 +38,19 @@ namespace boost { namespace fusion { namespace detail struct nullary_call_base { private: - typedef typename remove_reference::type function; + typedef typename remove_const::type>::type function; protected: - typedef typename function::template result r0; + typedef typename function::template result r0; public: - inline typename function::template result::type + inline typename r0::type operator()() const { fusion::vector0 arg; return static_cast(this)->fnc_transformed(arg); } - inline typename function::template result::type + inline typename r0::type operator()() { fusion::vector0 arg; diff --git a/include/boost/fusion/functional/adapter/detail/nullary_call_base.hpp b/include/boost/fusion/functional/adapter/detail/nullary_call_base.hpp index efef076e..bdba4730 100644 --- a/include/boost/fusion/functional/adapter/detail/nullary_call_base.hpp +++ b/include/boost/fusion/functional/adapter/detail/nullary_call_base.hpp @@ -12,17 +12,21 @@ #include #include +#include #include #include +#include + namespace boost { namespace fusion { namespace detail { struct reserved { }; template ::type - ::template result >::value> + ::template result< + typename remove_const::type>::type(fusion::vector0)> >::value> struct nullary_call_base { template inline void operator()(T reserved::*) const { } @@ -34,19 +38,19 @@ namespace boost { namespace fusion { namespace detail struct nullary_call_base { private: - typedef typename remove_reference::type function; + typedef typename remove_const::type>::type function; protected: - typedef typename function::template result r0; + typedef typename function::template result r0; public: - inline typename function::template result::type + inline typename r0::type operator()() const { fusion::vector0 arg; return static_cast(this)->fnc_transformed(arg); } - inline typename function::template result::type + inline typename r0::type operator()() { fusion::vector0 arg; diff --git a/include/boost/fusion/functional/adapter/fused.hpp b/include/boost/fusion/functional/adapter/fused.hpp index 21c25d84..31947392 100644 --- a/include/boost/fusion/functional/adapter/fused.hpp +++ b/include/boost/fusion/functional/adapter/fused.hpp @@ -62,17 +62,16 @@ namespace boost { namespace fusion return fusion::invoke(this->fnc_transformed,s); } - template - struct result + template + struct result; + + template + struct result(Seq)> : result_of::invoke { }; }; }} -#define BOOST_FUSION_CLASS_TPL_PARAMS typename F -#define BOOST_FUSION_CLASS_TPL_SPEC fusion::fused -#include - #endif diff --git a/include/boost/fusion/functional/adapter/fused_function_object.hpp b/include/boost/fusion/functional/adapter/fused_function_object.hpp index 300b1d42..a73ad837 100644 --- a/include/boost/fusion/functional/adapter/fused_function_object.hpp +++ b/include/boost/fusion/functional/adapter/fused_function_object.hpp @@ -67,17 +67,16 @@ namespace boost { namespace fusion func_fwd_t >(this->fnc_transformed,s); } - template - struct result - : result_of::invoke_function_object + template + struct result; + + template + struct result + : result_of::invoke_function_object { }; }; }} -#define BOOST_FUSION_CLASS_TPL_PARAMS typename F -#define BOOST_FUSION_CLASS_TPL_SPEC fusion::fused_function_object -#include - #endif diff --git a/include/boost/fusion/functional/adapter/unfused_generic.hpp b/include/boost/fusion/functional/adapter/unfused_generic.hpp index 6cf811ee..60624076 100644 --- a/include/boost/fusion/functional/adapter/unfused_generic.hpp +++ b/include/boost/fusion/functional/adapter/unfused_generic.hpp @@ -33,7 +33,8 @@ namespace boost { namespace fusion struct void_; - template class unfused_generic + template + class unfused_generic : public detail::nullary_call_base, Function> { Function fnc_transformed; @@ -44,7 +45,7 @@ namespace boost { namespace fusion typedef detail::nullary_call_base< fusion::unfused_generic, Function > base; - typedef typename boost::remove_reference::type function; + typedef typename remove_const::type>::type function; typedef typename detail::call_param::type func_const_fwd_t; public: @@ -55,32 +56,26 @@ namespace boost { namespace fusion using base::operator(); - template < - BOOST_PP_ENUM_BINARY_PARAMS(BOOST_FUSION_UNFUSED_GENERIC_MAX_ARITY, - typename T, = fusion::void_ BOOST_PP_INTERCEPT), - class _ = fusion::void_ - > + template struct result; - template - struct result< - BOOST_PP_ENUM_PARAMS(BOOST_FUSION_UNFUSED_GENERIC_MAX_ARITY, - fusion::void_ BOOST_PP_INTERCEPT),_> + template + struct result()> : base::r0 { }; #define BOOST_FUSION_CODE(tpl_params,arg_types,params,args) \ template \ - inline typename function::template result< \ - BOOST_PP_CAT(fusion::vector,N) >::type \ + inline typename function::template result)>::type \ operator()(params) const \ { \ BOOST_PP_CAT(fusion::vector,N) arg(args); \ return this->fnc_transformed(arg); \ } \ template \ - inline typename function::template result< \ - BOOST_PP_CAT(fusion::vector,N) >::type \ + inline typename function::template result)>::type \ operator()(params) \ { \ BOOST_PP_CAT(fusion::vector,N) arg(args); \ @@ -100,10 +95,14 @@ namespace boost { namespace fusion }; }} -#define BOOST_FUSION_CLASS_TPL_PARAMS class F -#define BOOST_FUSION_CLASS_TPL_SPEC fusion::unfused_generic -#define BOOST_FUSION_FUNC_OBJ_ARITY BOOST_FUSION_UNFUSED_GENERIC_MAX_ARITY -#include +namespace boost { + template + struct result_of()> + { + typedef boost::fusion::unfused_generic function; + typedef typename function::template result::type type; + }; +} #define BOOST_FUSION_FUNCTIONAL_ADAPTER_UNFUSED_GENERIC_HPP_INCLUDED #else // defined(BOOST_PP_IS_ITERATING) @@ -116,17 +115,12 @@ namespace boost { namespace fusion #include #if BOOST_PP_SLOT_1() == 0 - template + template struct result -#if N < BOOST_FUSION_UNFUSED_GENERIC_MAX_ARITY - < BOOST_PP_ENUM_PARAMS(N,T), - BOOST_PP_ENUM_PARAMS( - BOOST_PP_SUB(BOOST_FUSION_UNFUSED_GENERIC_MAX_ARITY,N), - fusion::void_ BOOST_PP_INTERCEPT), _ > -#endif - : function::template result< BOOST_PP_CAT(fusion::vector,N)< + (BOOST_PP_ENUM_PARAMS(N,T))> + : function::template result::type - BOOST_PP_INTERCEPT) > > + BOOST_PP_INTERCEPT) >)> { }; #endif diff --git a/include/boost/fusion/functional/adapter/unfused_lvalue_args.hpp b/include/boost/fusion/functional/adapter/unfused_lvalue_args.hpp index a0152fb2..25f547de 100644 --- a/include/boost/fusion/functional/adapter/unfused_lvalue_args.hpp +++ b/include/boost/fusion/functional/adapter/unfused_lvalue_args.hpp @@ -16,6 +16,7 @@ #include #include +#include #include @@ -43,7 +44,7 @@ namespace boost { namespace fusion typedef detail::nullary_call_base< fusion::unfused_lvalue_args, Function > base; - typedef typename boost::remove_reference::type function; + typedef typename remove_const::type>::type function; typedef typename detail::call_param::type func_const_fwd_t; public: @@ -54,17 +55,11 @@ namespace boost { namespace fusion using base::operator(); - template < - BOOST_PP_ENUM_BINARY_PARAMS( - BOOST_FUSION_UNFUSED_LVALUE_ARGS_MAX_ARITY, - typename T, = fusion::void_ BOOST_PP_INTERCEPT ), - class _ = fusion::void_ > + template struct result; - template - struct result + template + struct result()> : base::r0 { }; @@ -76,10 +71,14 @@ namespace boost { namespace fusion }; }} -#define BOOST_FUSION_CLASS_TPL_PARAMS class F -#define BOOST_FUSION_CLASS_TPL_SPEC fusion::unfused_lvalue_args -#define BOOST_FUSION_FUNC_OBJ_ARITY BOOST_FUSION_UNFUSED_LVALUE_ARGS_MAX_ARITY -#include +namespace boost { + template + struct result_of()> + { + typedef boost::fusion::unfused_lvalue_args function; + typedef typename function::template result::type type; + }; +} #define BOOST_FUSION_FUNCTIONAL_ADAPTER_UNFUSED_LVALUE_ARGS_HPP_INCLUDED #else // defined(BOOST_PP_IS_ITERATING) @@ -90,22 +89,17 @@ namespace boost { namespace fusion //////////////////////////////////////////////////////////////////////////////// #define N BOOST_PP_ITERATION() - template + template struct result -#if N < BOOST_FUSION_UNFUSED_LVALUE_ARGS_MAX_ARITY - < BOOST_PP_ENUM_PARAMS(N,T), - BOOST_PP_ENUM_PARAMS( - BOOST_PP_SUB(BOOST_FUSION_UNFUSED_LVALUE_ARGS_MAX_ARITY,N), - fusion::void_ BOOST_PP_INTERCEPT), _ > -#endif - : function::template result< BOOST_PP_CAT(fusion::vector,N)< + + : function::template result< function(BOOST_PP_CAT(fusion::vector,N)< BOOST_PP_ENUM_BINARY_PARAMS(N,typename detail::mref::type - BOOST_PP_INTERCEPT) > > + BOOST_PP_INTERCEPT) >)> { }; template - inline typename function::template result >::type + inline typename function::template result)>::type operator()(BOOST_PP_ENUM_BINARY_PARAMS(N,T,& a)) const { BOOST_PP_CAT(fusion::vector,N)< @@ -115,8 +109,8 @@ namespace boost { namespace fusion } template - inline typename function::template result >::type + inline typename function::template result)>::type operator()(BOOST_PP_ENUM_BINARY_PARAMS(N,T,& a)) { BOOST_PP_CAT(fusion::vector,N)< diff --git a/include/boost/fusion/functional/adapter/unfused_rvalue_args.hpp b/include/boost/fusion/functional/adapter/unfused_rvalue_args.hpp index 21856bff..62b34463 100644 --- a/include/boost/fusion/functional/adapter/unfused_rvalue_args.hpp +++ b/include/boost/fusion/functional/adapter/unfused_rvalue_args.hpp @@ -16,6 +16,7 @@ #include #include +#include #include @@ -43,7 +44,7 @@ namespace boost { namespace fusion typedef detail::nullary_call_base< fusion::unfused_rvalue_args, Function > base; - typedef typename boost::remove_reference::type function; + typedef typename remove_const::type>::type function; typedef typename detail::call_param::type func_const_fwd_t; public: @@ -54,17 +55,11 @@ namespace boost { namespace fusion using base::operator(); - template < - BOOST_PP_ENUM_BINARY_PARAMS( - BOOST_FUSION_UNFUSED_RVALUE_ARGS_MAX_ARITY, - typename T, = fusion::void_ BOOST_PP_INTERCEPT ), - class _ = fusion::void_ > + template struct result; - template - struct result + template + struct result()> : base::r0 { }; @@ -76,10 +71,14 @@ namespace boost { namespace fusion }; }} -#define BOOST_FUSION_CLASS_TPL_PARAMS class F -#define BOOST_FUSION_CLASS_TPL_SPEC fusion::unfused_rvalue_args -#define BOOST_FUSION_FUNC_OBJ_ARITY BOOST_FUSION_UNFUSED_RVALUE_ARG_MAX_ARITY -#include +namespace boost { + template + struct result_of()> + { + typedef boost::fusion::unfused_rvalue_args function; + typedef typename function::template result::type type; + }; +} #define BOOST_FUSION_FUNCTIONAL_ADAPTER_UNFUSED_RVALUE_ARGS_HPP_INCLUDED #else // defined(BOOST_PP_IS_ITERATING) @@ -90,22 +89,16 @@ namespace boost { namespace fusion //////////////////////////////////////////////////////////////////////////////// #define N BOOST_PP_ITERATION() - template - struct result -#if N < BOOST_FUSION_UNFUSED_RVALUE_ARGS_MAX_ARITY - < BOOST_PP_ENUM_PARAMS(N,T), - BOOST_PP_ENUM_PARAMS( - BOOST_PP_SUB(BOOST_FUSION_UNFUSED_RVALUE_ARGS_MAX_ARITY,N), - fusion::void_ BOOST_PP_INTERCEPT), _ > -#endif - : function::template result< BOOST_PP_CAT(fusion::vector,N)< + template + struct result + : function::template result::type - BOOST_PP_INTERCEPT) > > + BOOST_PP_INTERCEPT) >)> { }; template - inline typename function::template result >::type + inline typename function::template result)>::type operator()(BOOST_PP_ENUM_BINARY_PARAMS(N,T,const& a)) const { BOOST_PP_CAT(fusion::vector,N)< @@ -115,8 +108,8 @@ namespace boost { namespace fusion } template - inline typename function::template result >::type + inline typename function::template result)>::type operator()(BOOST_PP_ENUM_BINARY_PARAMS(N,T,const& a)) { BOOST_PP_CAT(fusion::vector,N)< diff --git a/include/boost/fusion/functional/adapter/unfused_typed.hpp b/include/boost/fusion/functional/adapter/unfused_typed.hpp index b276f390..6f85b929 100644 --- a/include/boost/fusion/functional/adapter/unfused_typed.hpp +++ b/include/boost/fusion/functional/adapter/unfused_typed.hpp @@ -20,6 +20,7 @@ #include #include +#include #include #include @@ -53,8 +54,8 @@ namespace boost { namespace fusion // type of the next base class typedef unfused_typed_impl < Derived, Function, NextSeq, result_of::size::value, - has_type< typename Function::template result< - typename result_of::as_vector::type > >::value + has_type< typename Function::template result::type)> >::value > type; }; @@ -80,7 +81,7 @@ namespace boost { namespace fusion class unfused_typed : public detail::unfused_typed_next_base < unfused_typed, - typename remove_reference::type, Sequence, Sequence + typename remove_const::type>::type, Sequence, Sequence >::type { Function fnc_transformed; @@ -91,11 +92,11 @@ namespace boost { namespace fusion template friend struct detail::nullary_call_base; - typedef typename boost::remove_reference::type function; + typedef typename remove_const::type>::type function; typedef typename detail::call_param::type func_const_fwd_t; typedef typename detail::unfused_typed_next_base,function,Sequence,Sequence>::type base; + function, Sequence>,function,Sequence,Sequence>::type base; public: @@ -103,17 +104,11 @@ namespace boost { namespace fusion : fnc_transformed(f) { } - template < - BOOST_PP_ENUM_BINARY_PARAMS(BOOST_FUSION_UNFUSED_TYPED_MAX_ARITY, - typename T, = fusion::void_ BOOST_PP_INTERCEPT), - class _ = fusion::void_ - > + template struct result; - template - struct result< - BOOST_PP_ENUM_PARAMS(BOOST_FUSION_UNFUSED_TYPED_MAX_ARITY, - fusion::void_ BOOST_PP_INTERCEPT),_> + template + struct result()> : base::r0 { }; }; @@ -124,10 +119,14 @@ namespace boost { namespace fusion }} -#define BOOST_FUSION_CLASS_TPL_PARAMS class F, class S -#define BOOST_FUSION_CLASS_TPL_SPEC fusion::unfused_typed -#define BOOST_FUSION_FUNC_OBJ_ARITY BOOST_FUSION_UNFUSED_TYPED_MAX_ARITY -#include +namespace boost { + template + struct result_of()> + { + typedef boost::fusion::unfused_typed function; + typedef typename function::template result::type type; + }; +} #define BOOST_FUSION_FUNCTIONAL_ADAPTER_UNFUSED_TYPED_HPP_INCLUDED #else // defined(BOOST_PP_IS_ITERATING) @@ -149,6 +148,8 @@ namespace boost { namespace fusion typedef typename unfused_typed_next_base< Derived,Function,Sequence>::type base; + typedef typename remove_const::type>::type function; + // Notes: // - conversion to fusion::vector might not be perfect (there is // currently no "inrinsic converting ctor" that would allow us @@ -161,13 +162,13 @@ namespace boost { namespace fusion using base::operator(); - typedef typename Function:: - template result BOOST_PP_CAT(r,N); + typedef typename function:: + template result BOOST_PP_CAT(r,N); #define M(z,i,s) \ typename call_param::type>::type a##i - inline typename Function::template result::type + inline typename function::template result::type operator()(BOOST_PP_ENUM(N,M,arg_vector_t)) const { arg_vector_t arg(BOOST_PP_ENUM_PARAMS(N,a)); @@ -175,7 +176,7 @@ namespace boost { namespace fusion } #if !BOOST_WORKAROUND(BOOST_MSVC, < 1400) - inline typename Function::template result::type + inline typename function::template result::type operator()(BOOST_PP_ENUM(N,M,arg_vector_t)) { arg_vector_t arg(BOOST_PP_ENUM_PARAMS(N,a)); @@ -189,14 +190,9 @@ namespace boost { namespace fusion } // namespace detail template - template + template struct unfused_typed::result -#if N < BOOST_FUSION_UNFUSED_TYPED_MAX_ARITY - < BOOST_PP_ENUM_PARAMS(N,T), - BOOST_PP_ENUM_PARAMS( - BOOST_PP_SUB(BOOST_FUSION_UNFUSED_TYPED_MAX_ARITY,N), - fusion::void_ BOOST_PP_INTERCEPT), _ > -#endif + : BOOST_PP_CAT(base::r,N) { }; diff --git a/include/boost/fusion/functional/invocation/invoke_function_object.hpp b/include/boost/fusion/functional/invocation/invoke_function_object.hpp index b4372b23..f06fb771 100644 --- a/include/boost/fusion/functional/invocation/invoke_function_object.hpp +++ b/include/boost/fusion/functional/invocation/invoke_function_object.hpp @@ -17,9 +17,14 @@ #include #include +#include + #include #include +#include + +#include #include #include @@ -74,7 +79,7 @@ namespace boost { namespace fusion template struct invoke_function_object : detail::invoke_function_object_impl< typename boost::remove_reference::type, Sequence - >::template result<> + >::template result<> { }; } @@ -114,11 +119,11 @@ namespace boost { namespace fusion template struct result - : Function::template result < #define M(z,j,data) \ typename boost::remove_reference< \ typename result_of::value_at_c::type >::type - BOOST_PP_ENUM(N,M,~) > + : boost::result_of< + typename remove_const::type (BOOST_PP_ENUM(N,M,~))> #undef M { }; @@ -138,12 +143,14 @@ namespace boost { namespace fusion private: typedef invoke_function_object_param_types seq; public: - template struct result - : Function::template result < - BOOST_PP_ENUM_PARAMS(N,typename seq::T) > - { }; + + { + typedef typename + boost::result_of< + typename remove_const::type (BOOST_PP_ENUM_PARAMS(N,typename seq::T))>::type type; + }; template static inline typename result::type diff --git a/include/boost/fusion/sequence/view/transform_view/detail/apply_transform_result.hpp b/include/boost/fusion/sequence/view/transform_view/detail/apply_transform_result.hpp index 38267c62..73be3045 100644 --- a/include/boost/fusion/sequence/view/transform_view/detail/apply_transform_result.hpp +++ b/include/boost/fusion/sequence/view/transform_view/detail/apply_transform_result.hpp @@ -1,11 +1,14 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 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(FUSION_APPLY_TRANSFORM_RESULT_02092006_1936) -#define FUSION_APPLY_TRANSFORM_RESULT_02092006_1936 +#if !defined(BOOST_FUSION_APPLY_TRANSFORM_RESULT_02092006_1936) +#define BOOST_FUSION_APPLY_TRANSFORM_RESULT_02092006_1936 + +#include namespace boost { namespace fusion { @@ -18,15 +21,13 @@ namespace boost { namespace fusion { template struct apply - { - typedef typename F::template result::type type; - }; + : boost::result_of + {}; template struct apply - { - typedef typename F::template result::type type; - }; + : boost::result_of + {}; }; } }} diff --git a/include/boost/fusion/sequence/view/zip_view/detail/advance_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/advance_impl.hpp index f1f784f7..2e89b1da 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/advance_impl.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/advance_impl.hpp @@ -21,13 +21,16 @@ namespace boost { namespace fusion { template struct poly_advance { - template - struct result + template + struct result; + + template + struct result(It)> : result_of::advance {}; template - typename result::type + typename result::type operator()(const It& it) const { return fusion::advance(it); diff --git a/include/boost/fusion/sequence/view/zip_view/detail/at_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/at_impl.hpp index 353fb5eb..d90b5d05 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/at_impl.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/at_impl.hpp @@ -30,8 +30,11 @@ namespace boost { namespace fusion template struct poly_at { - template - struct result + template + struct result; + + template + struct result(SeqRef)> : mpl::eval_if, mpl::identity, result_of::at::type, N> > @@ -40,14 +43,14 @@ namespace boost { namespace fusion }; template - typename result::type + typename result::type operator()(Seq& seq) const { return fusion::at(seq); } template - typename result::type + typename result::type operator()(Seq const& seq) const { return fusion::at(seq); diff --git a/include/boost/fusion/sequence/view/zip_view/detail/begin_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/begin_impl.hpp index 37ed2a8d..c98eb7fc 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/begin_impl.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/begin_impl.hpp @@ -27,8 +27,11 @@ namespace boost { namespace fusion { { struct poly_begin { + template + struct result; + template - struct result + struct result : mpl::eval_if, mpl::identity, result_of::begin::type> > @@ -37,14 +40,14 @@ namespace boost { namespace fusion { }; template - typename result::type + typename result::type operator()(Seq& seq) const { return fusion::begin(seq); } template - typename result::type + typename result::type operator()(Seq const& seq) const { return fusion::begin(seq); diff --git a/include/boost/fusion/sequence/view/zip_view/detail/deref_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/deref_impl.hpp index ee7399fc..cb4c5445 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/deref_impl.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/deref_impl.hpp @@ -25,15 +25,18 @@ namespace boost { namespace fusion { { struct poly_deref { + template + struct result; + template - struct result + struct result : mpl::eval_if, mpl::identity, result_of::deref > {}; template - typename result::type + typename result::type operator()(const It& it) const { return fusion::deref(it); diff --git a/include/boost/fusion/sequence/view/zip_view/detail/end_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/end_impl.hpp index 9f4b66cc..a19b5c1f 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/end_impl.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/end_impl.hpp @@ -41,8 +41,11 @@ namespace boost { namespace fusion { template struct endpoints { - template - struct result + template + struct result; + + template + struct result(SeqRef)> : mpl::eval_if, mpl::identity, get_endpoint > @@ -51,14 +54,14 @@ namespace boost { namespace fusion { }; template - typename result::type + typename result::type operator()(Seq& seq) const { return fusion::advance(fusion::begin(seq)); } template - typename result::type + typename result::type operator()(Seq const& seq) { return fusion::advance(fusion::begin(seq)); diff --git a/include/boost/fusion/sequence/view/zip_view/detail/next_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/next_impl.hpp index b5b6e60d..0cec2882 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/next_impl.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/next_impl.hpp @@ -24,15 +24,18 @@ namespace boost { namespace fusion { { struct poly_next { + template + struct result; + template - struct result + struct result : mpl::eval_if, mpl::identity, result_of::next > {}; template - typename result::type + typename result::type operator()(const It& it) const { return fusion::next(it); diff --git a/include/boost/fusion/sequence/view/zip_view/detail/prior_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/prior_impl.hpp index c174e0cc..fdc409ca 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/prior_impl.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/prior_impl.hpp @@ -24,15 +24,18 @@ namespace boost { namespace fusion { { struct poly_prior { + template + struct result; + template - struct result + struct result : mpl::eval_if, mpl::identity, result_of::prior > {}; template - typename result::type + typename result::type operator()(const It& it) const { return fusion::prior(it); diff --git a/include/boost/fusion/sequence/view/zip_view/detail/strictest_traversal.hpp b/include/boost/fusion/sequence/view/zip_view/detail/strictest_traversal.hpp index e69e2842..d7c922ac 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/strictest_traversal.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/strictest_traversal.hpp @@ -10,7 +10,6 @@ #include #include -#include #include #include #include @@ -38,21 +37,27 @@ namespace boost { namespace fusion { typedef Tag2 type; }; - template struct strictest_traversal_impl { - typedef StrictestSoFar tag1; - typedef typename traits::category_of< - typename remove_reference::type>::type tag2; + template + struct result; - typedef typename stricter_traversal::type type; + template + struct result + { + typedef StrictestSoFar tag1; + typedef typename traits::category_of< + typename remove_reference::type>::type tag2; + + typedef typename stricter_traversal::type type; + }; }; template struct strictest_traversal : result_of::fold< Sequence, fusion::random_access_traversal_tag, - strictest_traversal_impl > + strictest_traversal_impl> {}; } diff --git a/include/boost/fusion/sequence/view/zip_view/detail/value_at_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/value_at_impl.hpp index 1fb298ec..ed5475ba 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/value_at_impl.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/value_at_impl.hpp @@ -26,8 +26,11 @@ namespace boost { namespace fusion { template struct poly_value_at { - template - struct result + template + struct result; + + template + struct result(Seq)> : mpl::eval_if, mpl::identity, result_of::value_at::type, N> > diff --git a/include/boost/fusion/sequence/view/zip_view/detail/value_of_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/value_of_impl.hpp index e8237ec1..9ea84a17 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/value_of_impl.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/value_of_impl.hpp @@ -25,8 +25,11 @@ namespace boost { namespace fusion { { struct poly_value_of { + template + struct result; + template - struct result + struct result : mpl::eval_if, mpl::identity, result_of::value_of > diff --git a/include/boost/fusion/sequence/view/zip_view/zip_view.hpp b/include/boost/fusion/sequence/view/zip_view/zip_view.hpp index 9668abed..d23cb4df 100644 --- a/include/boost/fusion/sequence/view/zip_view/zip_view.hpp +++ b/include/boost/fusion/sequence/view/zip_view/zip_view.hpp @@ -32,6 +32,7 @@ #include #include #include +#include #include #include @@ -47,27 +48,31 @@ namespace boost { namespace fusion { struct seq_ref_size { - template::type, - bool HasSize = traits::is_forward::value - > - struct result - : result_of::size - {}; + template + struct result; - static int const int_max = static_cast( - static_cast(~0) >> 1); + template + struct result + { + static int const int_max = static_cast( + static_cast(~0) >> 1); - template - struct result - : mpl::int_ - {}; + typedef typename remove_reference::type SeqClass; + + typedef typename mpl::eval_if< + traits::is_forward, + result_of::size, + mpl::int_ >::type type; + }; }; struct poly_min { + template + struct result; + template - struct result + struct result : mpl::min {}; }; diff --git a/include/boost/fusion/support/deduce_sequence.hpp b/include/boost/fusion/support/deduce_sequence.hpp index 5adc6b7a..41ecbd1b 100644 --- a/include/boost/fusion/support/deduce_sequence.hpp +++ b/include/boost/fusion/support/deduce_sequence.hpp @@ -11,30 +11,30 @@ #include #include -#include +#include +#include namespace boost { namespace fusion { namespace traits { - template struct deduce_sequence; - //----- ---- --- -- - - - - - namespace detail { struct deducer { template - struct result + struct apply : fusion::traits::deduce { }; }; } + // We cannot use fusion::transform_view here as result_of looses cv qualifiers + // on built in types template struct deduce_sequence : result_of::as_vector< - fusion::transform_view > + typename mpl::transform::type> { }; }}} diff --git a/test/Jamfile b/test/Jamfile index 3c186062..b1967f19 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -5,7 +5,6 @@ # License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at # http://www.boost.org/LICENSE_1_0.txt) #============================================================================== - # bring in rules for testing import testing ; diff --git a/test/algorithm/fold.cpp b/test/algorithm/fold.cpp index adfc8ffb..6cefb99d 100644 --- a/test/algorithm/fold.cpp +++ b/test/algorithm/fold.cpp @@ -1,5 +1,6 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 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) @@ -23,8 +24,11 @@ using boost::is_same; struct add_ints_only { + template + struct result; + template - struct result + struct result { typedef State type; }; @@ -45,8 +49,11 @@ struct add_ints_only struct count_ints { + template + struct result; + template - struct result + struct result { typedef typename if_< @@ -58,10 +65,10 @@ struct count_ints }; template - typename result::type + typename result::type operator()(T const&, CountT const&) const { - typedef typename result::type result; + typedef typename result::type result; return result(); } }; diff --git a/test/algorithm/transform.cpp b/test/algorithm/transform.cpp index c11bf258..eec0942d 100644 --- a/test/algorithm/transform.cpp +++ b/test/algorithm/transform.cpp @@ -1,5 +1,6 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 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) @@ -18,8 +19,11 @@ struct square { + template + struct result; + template - struct result + struct result { BOOST_STATIC_ASSERT(!boost::is_reference::value); typedef int type; @@ -34,8 +38,11 @@ struct square struct add { + template + struct result; + template - struct result + struct result { typedef int type; }; diff --git a/test/functional/fused.cpp b/test/functional/fused.cpp index befe8c73..4b960ee0 100644 --- a/test/functional/fused.cpp +++ b/test/functional/fused.cpp @@ -15,6 +15,9 @@ #include #include +#include +#include + namespace fusion = boost::fusion; using boost::noncopyable; @@ -52,17 +55,33 @@ struct test_func int main() { test_func f; - fusion::fused< test_func<> > fused_func; - fusion::fused< test_func & > fused_func_ref(f); - fusion::fused< test_func<> const > fused_func_c; - fusion::fused< test_func<> > const fused_func_c2; - fusion::fused< test_func const & > fused_func_c_ref(f); - fusion::vector lv_vec(1,'\004'); + typedef fusion::fused< test_func<> > ff; + ff fused_func; + + typedef fusion::fused< test_func & > ffr; + ffr fused_func_ref(f); + + typedef fusion::fused< test_func<> const > ffc; + ffc fused_func_c; + + typedef fusion::fused< test_func<> > const ffc2; + ffc2 fused_func_c2; + + typedef fusion::fused< test_func const & > ffcr; + ffcr fused_func_c_ref(f); + + typedef fusion::vector vec; + vec lv_vec(1,'\004'); + + BOOST_MPL_ASSERT((boost::is_same::type, int>)); BOOST_TEST(fused_func(lv_vec) == 1); + BOOST_MPL_ASSERT((boost::is_same::type, int>)); BOOST_TEST(fused_func_c(lv_vec) == 0); + BOOST_MPL_ASSERT((boost::is_same::type, int>)); BOOST_TEST(fused_func_c2(lv_vec) == 0); BOOST_TEST(fused_func_ref(lv_vec) == 1); + BOOST_MPL_ASSERT((boost::is_same::type, int>)); BOOST_TEST(fused_func_c_ref(lv_vec) == 0); BOOST_TEST(fused_func(fusion::make_vector(2,'\003')) == 1); diff --git a/test/functional/fused_function_object.cpp b/test/functional/fused_function_object.cpp index dd16aeef..911b7c69 100644 --- a/test/functional/fused_function_object.cpp +++ b/test/functional/fused_function_object.cpp @@ -22,8 +22,11 @@ template struct test_func : Base { - template - struct result + template + struct result; + + template + struct result(T0, T1)> { typedef int type; }; diff --git a/test/functional/invoke.cpp b/test/functional/invoke.cpp index 8b29a070..3ee2d6dc 100644 --- a/test/functional/invoke.cpp +++ b/test/functional/invoke.cpp @@ -40,10 +40,27 @@ struct object_nc : boost::noncopyable {}; struct fobj { - typedef int result_type; + // Handle nullary separately to exercise result_of support + template + struct result; - int operator()() { return 0; } - int operator()() const { return 1; } + template + struct result + { + typedef int type; + }; + + template + struct result + { + typedef int type; + }; + + template + struct result + { + typedef int type; + }; int operator()(int i) { return 2 + i; } int operator()(int i) const { return 3 + i; } @@ -57,16 +74,38 @@ struct fobj int operator()(int i, object &, object_nc &) const { return 11 + i; } }; +struct nullary_fobj +{ + typedef int result_type; + + int operator()() { return 0; } + int operator()() const { return 1; } +}; + struct fobj_nc : boost::noncopyable +{ + // Handle nullary separately to exercise result_of support + template + struct result; + + template + struct result + { + typedef int type; + }; + + int operator()(int i) { return 14 + i; } + int operator()(int i) const { return 15 + i; } +}; + +struct nullary_fobj_nc + : boost::noncopyable { typedef int result_type; int operator()() { return 12; } int operator()() const { return 13; } - - int operator()(int i) { return 14 + i; } - int operator()(int i) const { return 15 + i; } }; int nullary() { return 16; } @@ -147,7 +186,7 @@ void test_sequence_n(Sequence & seq, mpl::int_<0>) { // Function Objects - fobj f; + nullary_fobj f; BOOST_TEST(f () == fusion::invoke(f , seq )); BOOST_TEST(f () == fusion::invoke(f , const_(seq))); @@ -155,16 +194,16 @@ void test_sequence_n(Sequence & seq, mpl::int_<0>) // Note: The function object is taken by value, so we request the copy // to be const with an explicit template argument. We can also request // the function object to be pased by reference... - BOOST_TEST(const_(f)() == fusion::invoke(const_(f), seq )); - BOOST_TEST(const_(f)() == fusion::invoke(const_(f), const_(seq))); + BOOST_TEST(const_(f)() == fusion::invoke(const_(f), seq )); + BOOST_TEST(const_(f)() == fusion::invoke(const_(f), const_(seq))); - fobj_nc nc_f; + nullary_fobj_nc nc_f; // ...and we further ensure there is no copying in this case, using a // noncopyable function object. - BOOST_TEST(nc_f () == fusion::invoke(nc_f , seq )); - BOOST_TEST(nc_f () == fusion::invoke(nc_f , const_(seq))); - BOOST_TEST(const_(nc_f)() == fusion::invoke(const_(nc_f), seq )); - BOOST_TEST(const_(nc_f)() == fusion::invoke(const_(nc_f), const_(seq))); + BOOST_TEST(nc_f () == fusion::invoke(nc_f , seq )); + BOOST_TEST(nc_f () == fusion::invoke(nc_f , const_(seq))); + BOOST_TEST(const_(nc_f)() == fusion::invoke(const_(nc_f), seq )); + BOOST_TEST(const_(nc_f)() == fusion::invoke(const_(nc_f), const_(seq))); // Builtin Functions diff --git a/test/functional/invoke_function_object.cpp b/test/functional/invoke_function_object.cpp index ead49b44..34a297e4 100644 --- a/test/functional/invoke_function_object.cpp +++ b/test/functional/invoke_function_object.cpp @@ -40,8 +40,24 @@ struct object_nc : boost::noncopyable {}; struct fobj { - template - struct result + // Handle nullary separately to exercise result_of support + template + struct result; + + template + struct result + { + typedef int type; + }; + + template + struct result + { + typedef int type; + }; + + template + struct result { typedef int type; }; @@ -61,22 +77,41 @@ struct fobj int operator()(int i, object &, object_nc &) const { return 11 + i; } }; +struct nullary_fobj +{ + typedef int result_type; + + int operator()() { return 0; } + int operator()() const { return 1; } +}; + struct fobj_nc : boost::noncopyable { - template - struct result + // Handle nullary separately to exercise result_of support + template + struct result; + + template + struct result { typedef int type; }; - - int operator()() { return 12; } - int operator()() const { return 13; } - + int operator()(int i) { return 14 + i; } int operator()(int i) const { return 15 + i; } }; +struct nullary_fobj_nc + : boost::noncopyable +{ + typedef int result_type; + + int operator()() { return 12; } + int operator()() const { return 13; } +}; + + typedef int element1_type; typedef object element2_type; typedef object_nc & element3_type; @@ -90,23 +125,23 @@ void test_sequence_n(Sequence & seq, mpl::int_<0>) { // Function Objects - fobj f; + nullary_fobj f; BOOST_TEST(f () == fusion::invoke_function_object(f , seq )); BOOST_TEST(f () == fusion::invoke_function_object(f , const_(seq))); // Note: The function object is taken by value, so we request the copy // to be const with an explicit template argument. We can also request // the function object to be pased by reference... - BOOST_TEST(const_(f)() == fusion::invoke_function_object(const_(f), seq )); - BOOST_TEST(const_(f)() == fusion::invoke_function_object(const_(f), const_(seq))); + BOOST_TEST(const_(f)() == fusion::invoke_function_object(const_(f), seq )); + BOOST_TEST(const_(f)() == fusion::invoke_function_object(const_(f), const_(seq))); - fobj_nc nc_f; + nullary_fobj_nc nc_f; // ...and we further ensure there is no copying in this case, using a // noncopyable function object. - BOOST_TEST(nc_f () == fusion::invoke_function_object(nc_f , seq )); - BOOST_TEST(nc_f () == fusion::invoke_function_object(nc_f , const_(seq))); - BOOST_TEST(const_(nc_f)() == fusion::invoke_function_object(const_(nc_f), seq )); - BOOST_TEST(const_(nc_f)() == fusion::invoke_function_object(const_(nc_f), const_(seq))); + BOOST_TEST(nc_f () == fusion::invoke_function_object(nc_f , seq )); + BOOST_TEST(nc_f () == fusion::invoke_function_object(nc_f , const_(seq))); + BOOST_TEST(const_(nc_f)() == fusion::invoke_function_object(const_(nc_f), seq )); + BOOST_TEST(const_(nc_f)() == fusion::invoke_function_object(const_(nc_f), const_(seq))); } template @@ -154,7 +189,7 @@ void result_type_tests() { using boost::is_same; - BOOST_TEST(( is_same< fusion::result_of::invoke_function_object< fobj, fusion::vector<> >::type, int >::value )); + BOOST_TEST(( is_same< fusion::result_of::invoke_function_object< nullary_fobj, fusion::vector<> >::type, int >::value )); BOOST_TEST(( is_same< fusion::result_of::invoke_function_object< fobj, fusion::vector >::type, int >::value )); BOOST_TEST(( is_same< fusion::result_of::invoke_function_object< fobj, fusion::vector >::type, int >::value )); } diff --git a/test/functional/make_fused_function_object.cpp b/test/functional/make_fused_function_object.cpp index 7b895f56..cd01834c 100644 --- a/test/functional/make_fused_function_object.cpp +++ b/test/functional/make_fused_function_object.cpp @@ -24,8 +24,14 @@ template struct test_func : Base { - template + template struct result + { + }; + + + template + struct result(T0, T1)> { typedef int type; }; diff --git a/test/functional/make_unfused_generic.cpp b/test/functional/make_unfused_generic.cpp index d0d793fb..7536f790 100644 --- a/test/functional/make_unfused_generic.cpp +++ b/test/functional/make_unfused_generic.cpp @@ -38,7 +38,11 @@ template struct test_func : Base { - template struct result + template + struct result; + + template + struct result(Seq)> : mpl::if_< mpl::and_< fusion::result_of::empty, RemoveNullary >, boost::blank, mpl::identity >::type { }; @@ -61,6 +65,8 @@ struct test_func struct fold_op { + typedef long result_type; + template long operator()(T const & elem, long value) const { @@ -73,10 +79,6 @@ struct test_func elem += sizeof(T); return value; } - - template struct result - : mpl::identity - { }; }; }; diff --git a/test/functional/make_unfused_lvalue_args.cpp b/test/functional/make_unfused_lvalue_args.cpp index 31288c7e..7a185740 100644 --- a/test/functional/make_unfused_lvalue_args.cpp +++ b/test/functional/make_unfused_lvalue_args.cpp @@ -37,7 +37,11 @@ template struct test_func : Base { - template struct result + template + struct result; + + template + struct result(Seq)> : mpl::if_< mpl::and_< fusion::result_of::empty, RemoveNullary >, boost::blank, mpl::identity >::type { }; @@ -60,16 +64,14 @@ struct test_func struct fold_op { + typedef long result_type; + template long operator()(T & elem, long value) const { elem += sizeof(T); return value + elem; } - - template struct result - : mpl::identity - { }; }; }; diff --git a/test/functional/make_unfused_rvalue_args.cpp b/test/functional/make_unfused_rvalue_args.cpp index 1e65d6d5..579d15ea 100644 --- a/test/functional/make_unfused_rvalue_args.cpp +++ b/test/functional/make_unfused_rvalue_args.cpp @@ -35,7 +35,11 @@ template struct test_func : Base { - template struct result + template + struct result; + + template + struct result(Seq)> : mpl::if_< mpl::and_< fusion::result_of::empty, RemoveNullary >, boost::blank, mpl::identity >::type { }; @@ -58,15 +62,13 @@ struct test_func struct fold_op { + typedef long result_type; + template long operator()(T const & elem, long value) const { return value + sizeof(T) * elem; } - - template struct result - : mpl::identity - { }; }; }; diff --git a/test/functional/unfused_generic.cpp b/test/functional/unfused_generic.cpp index cccf8f80..af4c7134 100644 --- a/test/functional/unfused_generic.cpp +++ b/test/functional/unfused_generic.cpp @@ -35,10 +35,14 @@ template struct test_func : Base { - template struct result + template + struct result; + + template + struct result(Seq)> : mpl::if_< mpl::and_< fusion::result_of::empty, RemoveNullary >, boost::blank, mpl::identity >::type - { }; + {}; template long operator()(Seq const & seq) const @@ -58,6 +62,8 @@ struct test_func struct fold_op { + typedef long result_type; + template long operator()(T const & elem, long value) const { @@ -70,10 +76,6 @@ struct test_func elem += sizeof(T); return value; } - - template struct result - : mpl::identity - { }; }; }; @@ -85,9 +87,9 @@ void result_type_tests() typedef fusion::unfused_generic< test_func > test_func_1; typedef fusion::unfused_generic< test_func > test_func_0; - BOOST_TEST(( has_type< test_func_0::result<> >::value )); - BOOST_TEST(( has_type< test_func_1::result >::value )); - BOOST_TEST(( ! has_type< test_func_1::result<> >::value )); + BOOST_TEST(( has_type< test_func_0::result >::value )); + BOOST_TEST(( has_type< test_func_1::result >::value )); + BOOST_TEST(( ! has_type< test_func_1::result >::value )); BOOST_TEST(( is_same< boost::result_of< test_func_0() >::type, long >::value )); BOOST_TEST(( is_same< boost::result_of< test_func_1(int) >::type, long >::value )); } diff --git a/test/functional/unfused_lvalue_args.cpp b/test/functional/unfused_lvalue_args.cpp index 9bb8660a..3919e527 100644 --- a/test/functional/unfused_lvalue_args.cpp +++ b/test/functional/unfused_lvalue_args.cpp @@ -32,7 +32,11 @@ template struct test_func : Base { - template struct result + template + struct result; + + template + struct result(Seq)> : mpl::if_< mpl::and_< fusion::result_of::empty, RemoveNullary >, boost::blank, mpl::identity >::type { }; @@ -55,16 +59,14 @@ struct test_func struct fold_op { + typedef long result_type; + template long operator()(T & elem, long value) const { elem += sizeof(T); return value + elem; } - - template struct result - : mpl::identity - { }; }; }; @@ -76,9 +78,9 @@ void result_type_tests() typedef fusion::unfused_lvalue_args< test_func > test_func_1; typedef fusion::unfused_lvalue_args< test_func > test_func_0; - BOOST_TEST(( has_type< test_func_0::result<> >::value )); - BOOST_TEST(( has_type< test_func_1::result >::value )); - BOOST_TEST(( ! has_type< test_func_1::result<> >::value )); + BOOST_TEST(( has_type< test_func_0::result >::value )); + BOOST_TEST(( has_type< test_func_1::result >::value )); + BOOST_TEST(( ! has_type< test_func_1::result >::value )); BOOST_TEST(( is_same< boost::result_of< test_func_0() >::type, long >::value )); BOOST_TEST(( is_same< boost::result_of< test_func_1(int) >::type, long >::value )); } diff --git a/test/functional/unfused_rvalue_args.cpp b/test/functional/unfused_rvalue_args.cpp index 4a05b0f4..b15f2f95 100644 --- a/test/functional/unfused_rvalue_args.cpp +++ b/test/functional/unfused_rvalue_args.cpp @@ -32,7 +32,11 @@ template struct test_func : Base { - template struct result + template + struct result; + + template + struct result(Seq)> : mpl::if_< mpl::and_< fusion::result_of::empty, RemoveNullary >, boost::blank, mpl::identity >::type { }; @@ -55,15 +59,13 @@ struct test_func struct fold_op { + typedef long result_type; + template long operator()(T const & elem, long value) const { return value + sizeof(T) * elem; } - - template struct result - : mpl::identity - { }; }; }; @@ -75,9 +77,9 @@ void result_type_tests() typedef fusion::unfused_rvalue_args< test_func > test_func_1; typedef fusion::unfused_rvalue_args< test_func > test_func_0; - BOOST_TEST(( has_type< test_func_0::result<> >::value )); - BOOST_TEST(( has_type< test_func_1::result >::value )); - BOOST_TEST(( ! has_type< test_func_1::result<> >::value )); + BOOST_TEST(( has_type< test_func_0::result >::value )); + BOOST_TEST(( has_type< test_func_1::result >::value )); + BOOST_TEST(( ! has_type< test_func_1::result >::value )); BOOST_TEST(( is_same< boost::result_of< test_func_0() >::type, long >::value )); BOOST_TEST(( is_same< boost::result_of< test_func_1(int) >::type, long >::value )); } diff --git a/test/functional/unfused_typed.cpp b/test/functional/unfused_typed.cpp index 01fd4efa..9e81444d 100644 --- a/test/functional/unfused_typed.cpp +++ b/test/functional/unfused_typed.cpp @@ -42,7 +42,11 @@ template struct test_func : Base { - template struct result + template + struct result; + + template + struct result(Seq)> : mpl::if_< typename mpl::apply::type, mpl::identity, boost::blank >::type { }; @@ -65,6 +69,8 @@ struct test_func struct fold_op { + typedef long result_type; + template long operator()(T const & elem, long value) const { @@ -77,10 +83,6 @@ struct test_func elem += sizeof(T); return value; } - - template struct result - : mpl::identity - { }; }; }; @@ -92,9 +94,9 @@ void result_type_tests() typedef fusion::unfused_typed< test_func, types > test_func_3; typedef fusion::unfused_typed< test_func, types > test_func_0; - BOOST_TEST(( has_type< test_func_0::result<> >::value )); - BOOST_TEST(( has_type< test_func_3::result >::value )); - BOOST_TEST(( ! has_type< test_func_3::result<> >::value )); + BOOST_TEST(( has_type< test_func_0::result >::value )); + BOOST_TEST(( has_type< test_func_3::result >::value )); + BOOST_TEST(( ! has_type< test_func_3::result >::value )); BOOST_TEST(( is_same< boost::result_of< test_func_0() >::type, long >::value )); BOOST_TEST(( is_same< boost::result_of< test_func_3(long &, int, char) >::type, long >::value )); } diff --git a/test/sequence/transform_view.cpp b/test/sequence/transform_view.cpp index f8375a92..3dce9043 100644 --- a/test/sequence/transform_view.cpp +++ b/test/sequence/transform_view.cpp @@ -26,8 +26,11 @@ struct square { + template + struct result; + template - struct result + struct result { typedef int type; }; @@ -41,8 +44,11 @@ struct square struct add { + template + struct result; + template - struct result + struct result { typedef int type; }; From a2046a5aa6019cb952577f75b40ae31ef6aa6df1 Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Mon, 11 Jun 2007 21:09:44 +0000 Subject: [PATCH 178/234] fixes for msvc related to fusion result_of compatibility [SVN r37971] --- .../adapter/detail/Attic/nullary_call_base.hpp | 11 ++++++++--- .../functional/adapter/detail/nullary_call_base.hpp | 11 ++++++++--- .../fusion/functional/adapter/unfused_generic.hpp | 8 ++++---- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/include/boost/fusion/functional/adapter/detail/Attic/nullary_call_base.hpp b/include/boost/fusion/functional/adapter/detail/Attic/nullary_call_base.hpp index bdba4730..c089a697 100644 --- a/include/boost/fusion/functional/adapter/detail/Attic/nullary_call_base.hpp +++ b/include/boost/fusion/functional/adapter/detail/Attic/nullary_call_base.hpp @@ -23,10 +23,15 @@ namespace boost { namespace fusion { namespace detail { struct reserved { }; + template + struct get_result_spec + { + typedef typename remove_const::type>::type function; + typedef typename function::template result type; + }; + template ::type - ::template result< - typename remove_const::type>::type(fusion::vector0)> >::value> + typename get_result_spec::type>::value> struct nullary_call_base { template inline void operator()(T reserved::*) const { } diff --git a/include/boost/fusion/functional/adapter/detail/nullary_call_base.hpp b/include/boost/fusion/functional/adapter/detail/nullary_call_base.hpp index bdba4730..c089a697 100644 --- a/include/boost/fusion/functional/adapter/detail/nullary_call_base.hpp +++ b/include/boost/fusion/functional/adapter/detail/nullary_call_base.hpp @@ -23,10 +23,15 @@ namespace boost { namespace fusion { namespace detail { struct reserved { }; + template + struct get_result_spec + { + typedef typename remove_const::type>::type function; + typedef typename function::template result type; + }; + template ::type - ::template result< - typename remove_const::type>::type(fusion::vector0)> >::value> + typename get_result_spec::type>::value> struct nullary_call_base { template inline void operator()(T reserved::*) const { } diff --git a/include/boost/fusion/functional/adapter/unfused_generic.hpp b/include/boost/fusion/functional/adapter/unfused_generic.hpp index 60624076..00c60c2c 100644 --- a/include/boost/fusion/functional/adapter/unfused_generic.hpp +++ b/include/boost/fusion/functional/adapter/unfused_generic.hpp @@ -126,8 +126,8 @@ namespace boost { #if BOOST_WORKAROUND(BOOST_MSVC,BOOST_TESTED_AT(1400)) template - inline typename function::template result< - BOOST_PP_CAT(fusion::vector,N) >::type + inline typename function::template result)>::type operator()(BOOST_PP_ENUM_BINARY_PARAMS(N,PT,a)) const { BOOST_PP_CAT(fusion::vector,N) @@ -135,8 +135,8 @@ namespace boost { return this->fnc_transformed(arg); } template - inline typename function::template result< - BOOST_PP_CAT(fusion::vector,N) >::type + inline typename function::template result)>::type operator()(BOOST_PP_ENUM_BINARY_PARAMS(N,PT,a)) { BOOST_PP_CAT(fusion::vector,N) From 8e9346051134113ff7d8cda408409bfc3efb3422 Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Wed, 13 Jun 2007 20:30:30 +0000 Subject: [PATCH 179/234] tests covering defect in fusion::fold loop unrolling picked up by Christian Holmquist [SVN r37984] --- test/algorithm/fold.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/test/algorithm/fold.cpp b/test/algorithm/fold.cpp index 6cefb99d..627ca01f 100644 --- a/test/algorithm/fold.cpp +++ b/test/algorithm/fold.cpp @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -18,6 +19,8 @@ #include #include +#include + using boost::mpl::if_; using boost::mpl::int_; using boost::is_same; @@ -73,6 +76,16 @@ struct count_ints } }; +struct appender +{ + typedef std::string result_type; + + std::string operator()(char c, std::string const& str) const + { + return str + c; + } +}; + int main() { @@ -112,6 +125,11 @@ main() BOOST_TEST(n == 3); } + { + BOOST_TEST(fusion::fold(fusion::make_vector('a','b','c','d','e'), std::string(""), appender()) + == "abcde"); + } + { typedef vector vector_type; vector_type v(12345, 'x', 678910, 3.36); @@ -145,6 +163,10 @@ main() BOOST_TEST(n == 3); } + { + BOOST_TEST(fusion::accumulate(fusion::make_vector('a','b','c','d','e'), std::string(""), appender()) + == "abcde"); + } return boost::report_errors(); } From 6605340726b6e969bc5456ca5212c97d61b1ea04 Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Wed, 13 Jun 2007 20:32:30 +0000 Subject: [PATCH 180/234] fixing some defects in fusion::fold loop unrolling [SVN r37985] --- .../algorithm/iteration/detail/fold.hpp | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/include/boost/fusion/algorithm/iteration/detail/fold.hpp b/include/boost/fusion/algorithm/iteration/detail/fold.hpp index b2bec5b0..98c78aaf 100644 --- a/include/boost/fusion/algorithm/iteration/detail/fold.hpp +++ b/include/boost/fusion/algorithm/iteration/detail/fold.hpp @@ -81,7 +81,10 @@ namespace detail I2 i2 = fusion::next(i1); typedef typename result_of::next::type I3; I3 i3 = fusion::next(i2); - return f(*i0, f(*i1, f(*i2, unrolled_fold::call(i3, state, f)))); + typedef typename result_of::next::type I4; + I4 i4 = fusion::next(i3); + + return unrolled_fold::call(i4, f(*i3, f(*i2, f(*i1, f(*i0, state)))), f); } }; @@ -96,7 +99,7 @@ namespace detail I1 i1 = fusion::next(i0); typedef typename result_of::next::type I2; I2 i2 = fusion::next(i1); - return f(*i0, f(*i1, f(*i2, state))); + return f(*i2, f(*i1, f(*i0, state))); } }; @@ -109,7 +112,7 @@ namespace detail { typedef typename result_of::next::type I1; I1 i1 = fusion::next(i0); - return f(*i0, f(*i1, state)); + return f(*i1, f(*i0, state)); } }; @@ -168,11 +171,12 @@ namespace detail typedef typename result_of::next::type I2; typedef typename result_of::next::type I3; typedef typename result_of::next::type I4; - typedef typename result_of_unrolled_fold::type Rest; - typedef typename fold_apply::type Rest2; + 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 fold_apply::type type; + typedef typename fold_apply::type Rest4; + + typedef typename result_of_unrolled_fold::type type; }; template @@ -180,17 +184,17 @@ namespace detail { 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 Rest; typedef typename fold_apply::type Rest2; - typedef typename fold_apply::type type; + 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; + typedef typename fold_apply::type Rest; + typedef typename fold_apply::type type; }; template From 0e5cb04b99f2e2a988b0970601786eea0f07f820 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Sat, 16 Jun 2007 11:56:14 +0000 Subject: [PATCH 181/234] documents concept preserving semantics of iterator_range (new) and zip_range (forgotten) [SVN r38005] --- doc/sequences.qbk | 15 +++++++++++---- todo.txt | 3 --- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/doc/sequences.qbk b/doc/sequences.qbk index 2c553f7c..b8dea5a4 100644 --- a/doc/sequences.qbk +++ b/doc/sequences.qbk @@ -117,6 +117,7 @@ For any Forward Sequence s the following invariants always hold: * __joint_view__ * __transform_view__ * __reverse_view__ +* __zip_view__ [endsect] @@ -179,9 +180,10 @@ are not defined in __forward_sequence__. * __std_pair__ * __boost_array__ * __vector__ +* __reverse_view__ * __iterator_range__ (where adapted sequence is a Bidirectional Sequence) * __transform_view__ (where adapted sequence is a Bidirectional Sequence) -* __reverse_view__ +* __zip_view__ (where adapted sequences are models Bidirectional Sequence) [endsect] @@ -253,9 +255,10 @@ are not defined in __bidirectional_sequence__. * __std_pair__ * __boost_array__ * __vector__ +* __reverse_view__ * __iterator_range__ (where adapted sequence is a Random Access Sequence) * __transform_view__ (where adapted sequence is a Random Access Sequence) -* __reverse_view__ +* __zip_view__ (where adapted sequences are models Random Access Sequence) [endsect] @@ -924,7 +927,9 @@ by a pair of iterators. [heading Model of] -* __forward_sequence__ +* __forward_sequence__, __bidirectional_sequence__ or +__random_access_sequence__ depending on the traversal characteristics (see +__traversal_concept__) of its underlying sequence. [variablelist Notation [[`IR`] [An `iterator_range` type]] @@ -1047,7 +1052,9 @@ is constructed from a __sequence__ of references to the component __sequence__s. [heading Model of] -* __forward_sequence__ +* __forward_sequence__, __bidirectional_sequence__ or +__random_access_sequence__ depending on the traversal characteristics (see +__traversal_concept__) of its underlying sequence. [variablelist Notation [[`ZV`] [A `joint_view` type]] diff --git a/todo.txt b/todo.txt index deab678a..c1e0df08 100644 --- a/todo.txt +++ b/todo.txt @@ -84,9 +84,6 @@ tosh: orthogonal so there can be infinite Bidi/RA/Assoc Sequences. OTOH it complicates things in way that might not be worth it... -* Document new Concept-preserving semantics of iterator_range -* Document forgotten Concept preserving semantics of zip_view - * Implement always_view/always with repetitive_view > semantics - using repetitive_view will for this purpose will be way too much overhead. From 09a6da1f80e1be8e08af87279a4602e6deb08fc2 Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Tue, 19 Jun 2007 21:30:06 +0000 Subject: [PATCH 182/234] fusion fold and transform passing refs for lvalues as per result_of protocol [SVN r38039] --- .../algorithm/iteration/detail/fold.hpp | 10 +++- .../transformation/detail/replace.hpp | 6 +- .../transformation/detail/replace_if.hpp | 4 +- .../view/transform_view/detail/deref_impl.hpp | 6 +- .../view/zip_view/detail/advance_impl.hpp | 9 ++- .../view/zip_view/detail/deref_impl.hpp | 16 ++++-- .../view/zip_view/detail/next_impl.hpp | 16 ++++-- .../view/zip_view/detail/prior_impl.hpp | 15 +++-- .../zip_view/detail/strictest_traversal.hpp | 10 ++-- .../sequence/view/zip_view/zip_view.hpp | 7 ++- test/Jamfile | 1 - test/algorithm/fold.cpp | 42 ++++++++++++-- test/algorithm/transform.cpp | 55 ++++++++++++++++++- 13 files changed, 157 insertions(+), 40 deletions(-) diff --git a/include/boost/fusion/algorithm/iteration/detail/fold.hpp b/include/boost/fusion/algorithm/iteration/detail/fold.hpp index 98c78aaf..9b819954 100644 --- a/include/boost/fusion/algorithm/iteration/detail/fold.hpp +++ b/include/boost/fusion/algorithm/iteration/detail/fold.hpp @@ -13,6 +13,9 @@ #include #include +#include +#include + namespace boost { namespace fusion { namespace result_of { @@ -32,8 +35,11 @@ namespace detail template struct fold_apply - : boost::result_of::type, State)> - {}; + { + 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; diff --git a/include/boost/fusion/algorithm/transformation/detail/replace.hpp b/include/boost/fusion/algorithm/transformation/detail/replace.hpp index edaa74f5..9e20f79f 100644 --- a/include/boost/fusion/algorithm/transformation/detail/replace.hpp +++ b/include/boost/fusion/algorithm/transformation/detail/replace.hpp @@ -9,6 +9,7 @@ #include #include +#include namespace boost { namespace fusion { namespace detail { @@ -43,14 +44,15 @@ namespace boost { namespace fusion { namespace detail replacer(T const& old_value, T const& new_value) : old_value(old_value), new_value(new_value) {} - template + template struct result; template struct result(U2)> { + typedef typename remove_reference::type value; typedef typename - mpl::if_, U2, U2 const&>::type + mpl::if_, value, value const&>::type type; }; diff --git a/include/boost/fusion/algorithm/transformation/detail/replace_if.hpp b/include/boost/fusion/algorithm/transformation/detail/replace_if.hpp index 0de8d2d6..db0434c6 100644 --- a/include/boost/fusion/algorithm/transformation/detail/replace_if.hpp +++ b/include/boost/fusion/algorithm/transformation/detail/replace_if.hpp @@ -9,6 +9,7 @@ #include #include +#include namespace boost { namespace fusion { namespace detail { @@ -49,8 +50,9 @@ namespace boost { namespace fusion { namespace detail template struct result(U)> { + typedef typename remove_reference::type value; typedef typename - mpl::if_, U, U const&>::type + mpl::if_, value, value const&>::type type; }; diff --git a/include/boost/fusion/sequence/view/transform_view/detail/deref_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/deref_impl.hpp index 0d3b8fc7..d466cfd3 100644 --- a/include/boost/fusion/sequence/view/transform_view/detail/deref_impl.hpp +++ b/include/boost/fusion/sequence/view/transform_view/detail/deref_impl.hpp @@ -30,7 +30,7 @@ namespace boost { namespace fusion struct apply { typedef typename - result_of::value_of::type + result_of::deref::type value_type; typedef detail::apply_transform_result transform_type; @@ -52,10 +52,10 @@ namespace boost { namespace fusion struct apply { typedef typename - result_of::value_of::type + result_of::deref::type value1_type; typedef typename - result_of::value_of::type + result_of::deref::type value2_type; typedef detail::apply_transform_result transform_type; diff --git a/include/boost/fusion/sequence/view/zip_view/detail/advance_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/advance_impl.hpp index 2e89b1da..36da0444 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/advance_impl.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/advance_impl.hpp @@ -11,6 +11,7 @@ #include #include #include +#include namespace boost { namespace fusion { @@ -21,13 +22,15 @@ namespace boost { namespace fusion { template struct poly_advance { - template + template struct result; template struct result(It)> - : result_of::advance - {}; + { + typedef typename remove_reference::type it; + typedef typename result_of::advance::type type; + }; template typename result::type diff --git a/include/boost/fusion/sequence/view/zip_view/detail/deref_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/deref_impl.hpp index cb4c5445..70b95d55 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/deref_impl.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/deref_impl.hpp @@ -16,6 +16,8 @@ #include #include #include +#include +#include namespace boost { namespace fusion { @@ -25,15 +27,19 @@ namespace boost { namespace fusion { { struct poly_deref { - template + template struct result; template struct result - : mpl::eval_if, - mpl::identity, - result_of::deref > - {}; + { + typedef typename remove_const< + typename remove_reference::type>::type it; + + typedef typename mpl::eval_if, + mpl::identity, + result_of::deref >::type type; + }; template typename result::type diff --git a/include/boost/fusion/sequence/view/zip_view/detail/next_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/next_impl.hpp index 0cec2882..cae95eec 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/next_impl.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/next_impl.hpp @@ -15,6 +15,8 @@ #include #include #include +#include +#include namespace boost { namespace fusion { @@ -24,15 +26,19 @@ namespace boost { namespace fusion { { struct poly_next { - template + template struct result; template struct result - : mpl::eval_if, - mpl::identity, - result_of::next > - {}; + { + typedef typename remove_const< + typename remove_reference::type>::type it; + + typedef typename mpl::eval_if, + mpl::identity, + result_of::next >::type type; + }; template typename result::type diff --git a/include/boost/fusion/sequence/view/zip_view/detail/prior_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/prior_impl.hpp index fdc409ca..787eb4f9 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/prior_impl.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/prior_impl.hpp @@ -15,6 +15,8 @@ #include #include #include +#include +#include namespace boost { namespace fusion { @@ -24,15 +26,18 @@ namespace boost { namespace fusion { { struct poly_prior { - template + template struct result; template struct result - : mpl::eval_if, - mpl::identity, - result_of::prior > - {}; + { + typedef typename remove_const< + typename remove_reference::type>::type it; + typedef typename mpl::eval_if, + mpl::identity, + result_of::prior >::type type; + }; template typename result::type diff --git a/include/boost/fusion/sequence/view/zip_view/detail/strictest_traversal.hpp b/include/boost/fusion/sequence/view/zip_view/detail/strictest_traversal.hpp index d7c922ac..60abb57c 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/strictest_traversal.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/strictest_traversal.hpp @@ -39,15 +39,17 @@ namespace boost { namespace fusion { struct strictest_traversal_impl { - template + template struct result; template struct result { - typedef StrictestSoFar tag1; - typedef typename traits::category_of< - typename remove_reference::type>::type tag2; + typedef typename remove_reference::type next_value; + typedef typename remove_reference::type strictest_so_far; + + typedef strictest_so_far tag1; + typedef typename traits::category_of::type tag2; typedef typename stricter_traversal::type type; }; diff --git a/include/boost/fusion/sequence/view/zip_view/zip_view.hpp b/include/boost/fusion/sequence/view/zip_view/zip_view.hpp index d23cb4df..23ef2e05 100644 --- a/include/boost/fusion/sequence/view/zip_view/zip_view.hpp +++ b/include/boost/fusion/sequence/view/zip_view/zip_view.hpp @@ -73,8 +73,11 @@ namespace boost { namespace fusion { template struct result - : mpl::min - {}; + { + typedef typename remove_reference::type lhs; + typedef typename remove_reference::type rhs; + typedef typename mpl::min::type type; + }; }; template diff --git a/test/Jamfile b/test/Jamfile index b1967f19..f70629b8 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -145,4 +145,3 @@ import testing ; run sequence/ext_/iterator_range_s.cpp ; explicit iterator_range_s ; } - diff --git a/test/algorithm/fold.cpp b/test/algorithm/fold.cpp index 627ca01f..9545cd0e 100644 --- a/test/algorithm/fold.cpp +++ b/test/algorithm/fold.cpp @@ -19,6 +19,10 @@ #include #include +#include +#include +#include + #include using boost::mpl::if_; @@ -33,7 +37,8 @@ struct add_ints_only template struct result { - typedef State type; + typedef typename boost::remove_const< + typename boost::remove_reference::type>::type type; }; template @@ -58,11 +63,16 @@ struct count_ints template struct result { + typedef typename boost::remove_const< + typename boost::remove_reference::type>::type elem; + typedef typename boost::remove_const< + typename boost::remove_reference::type>::type state; + typedef typename if_< - is_same - , typename boost::mpl::next::type - , CountT + is_same + , typename boost::mpl::next::type + , state >::type type; }; @@ -86,6 +96,25 @@ struct appender } }; +struct lvalue_adder +{ + template + struct result; + + template + struct result + { + // Second argument still needs to support rvalues - see definition of fusion::fold + typedef T0 type; + }; + + template + T0 operator()(T0& lhs, T1 const& rhs) const + { + return lhs + rhs; + } +}; + int main() { @@ -130,6 +159,11 @@ main() == "abcde"); } + { + vector vec(1,2); + BOOST_TEST(fusion::fold(vec, 0, lvalue_adder()) == 3); + } + { typedef vector vector_type; vector_type v(12345, 'x', 678910, 3.36); diff --git a/test/algorithm/transform.cpp b/test/algorithm/transform.cpp index eec0942d..24cccd83 100644 --- a/test/algorithm/transform.cpp +++ b/test/algorithm/transform.cpp @@ -19,13 +19,12 @@ struct square { - template + template struct result; template struct result { - BOOST_STATIC_ASSERT(!boost::is_reference::value); typedef int type; }; @@ -38,7 +37,7 @@ struct square struct add { - template + template struct result; template @@ -54,6 +53,42 @@ struct add } }; +struct unary_lvalue_transform +{ + template + struct result; + + template + struct result + { + typedef T* type; + }; + + template + T* operator()(T& t) const + { + return &t; + } +}; + +struct binary_lvalue_transform +{ + template + struct result; + + template + struct result + { + typedef T0* type; + }; + + template + T0* operator()(T0& t0, T1&) const + { + return &t0; + } +}; + int main() { @@ -92,6 +127,20 @@ main() BOOST_TEST((transform(tup1, tup2, add()) == make_vector(5, 7, 9))); } + { + // Unary transform that requires lvalues, just check compilation + vector tup1(1, 2, 3); + BOOST_TEST(at_c<0>(transform(tup1, unary_lvalue_transform())) == &at_c<0>(tup1)); + BOOST_TEST(*begin(transform(tup1, unary_lvalue_transform())) == &at_c<0>(tup1)); + } + + { + vector tup1(1, 2, 3); + vector tup2(4, 5, 6); + BOOST_TEST(at_c<0>(transform(tup1, tup2, binary_lvalue_transform())) == &at_c<0>(tup1)); + BOOST_TEST(*begin(transform(tup1, tup2, binary_lvalue_transform())) == &at_c<0>(tup1)); + } + return boost::report_errors(); } From 996a4da2d6224878529438f0f5a34ff201ca487b Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Fri, 22 Jun 2007 18:02:58 +0000 Subject: [PATCH 183/234] testing fusion transform and fold work with free functions now that only Boost.ResultOf support is required [SVN r38063] --- test/algorithm/fold.cpp | 15 +++++++++++++++ test/algorithm/transform.cpp | 11 +++++++++++ 2 files changed, 26 insertions(+) diff --git a/test/algorithm/fold.cpp b/test/algorithm/fold.cpp index 9545cd0e..933eadb3 100644 --- a/test/algorithm/fold.cpp +++ b/test/algorithm/fold.cpp @@ -115,6 +115,11 @@ struct lvalue_adder } }; +int add(int lhs, int rhs) +{ + return lhs + rhs; +} + int main() { @@ -164,6 +169,11 @@ main() BOOST_TEST(fusion::fold(vec, 0, lvalue_adder()) == 3); } + { + vector vec(1,2); + BOOST_TEST(fusion::fold(vec, 0, add) == 3); + } + { typedef vector vector_type; vector_type v(12345, 'x', 678910, 3.36); @@ -202,6 +212,11 @@ main() == "abcde"); } + { + vector vec(1,2); + BOOST_TEST(fusion::accumulate(vec, 0, add) == 3); + } + return boost::report_errors(); } diff --git a/test/algorithm/transform.cpp b/test/algorithm/transform.cpp index 24cccd83..c7ce3625 100644 --- a/test/algorithm/transform.cpp +++ b/test/algorithm/transform.cpp @@ -71,6 +71,11 @@ struct unary_lvalue_transform } }; +int twice(int v) +{ + return v*2; +} + struct binary_lvalue_transform { template @@ -141,6 +146,12 @@ main() BOOST_TEST(*begin(transform(tup1, tup2, binary_lvalue_transform())) == &at_c<0>(tup1)); } + { + vector tup1(1, 2, 3); + BOOST_TEST(transform(tup1, twice) == make_vector(2,4,6)); + } + + return boost::report_errors(); } From 8f8cf8145fee4614ccb5e2999af639c3da656d84 Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Fri, 22 Jun 2007 18:05:55 +0000 Subject: [PATCH 184/234] handling fusion fold and accumulate function argument by value rather than const ref to fix free function usage [SVN r38064] --- .../fusion/algorithm/iteration/accumulate.hpp | 4 ++-- .../fusion/algorithm/iteration/detail/fold.hpp | 18 +++++++++--------- .../boost/fusion/algorithm/iteration/fold.hpp | 4 ++-- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/include/boost/fusion/algorithm/iteration/accumulate.hpp b/include/boost/fusion/algorithm/iteration/accumulate.hpp index 10309cc2..3d0685f7 100644 --- a/include/boost/fusion/algorithm/iteration/accumulate.hpp +++ b/include/boost/fusion/algorithm/iteration/accumulate.hpp @@ -23,14 +23,14 @@ namespace boost { namespace fusion template inline typename result_of::accumulate::type - accumulate(Sequence& seq, State const& state, F const& f) + accumulate(Sequence& seq, State const& state, F f) { return fusion::fold(seq, state, f); } template inline typename result_of::accumulate::type - accumulate(Sequence const& seq, State const& state, F const& f) + 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 9b819954..542a8114 100644 --- a/include/boost/fusion/algorithm/iteration/detail/fold.hpp +++ b/include/boost/fusion/algorithm/iteration/detail/fold.hpp @@ -79,7 +79,7 @@ namespace detail { template static typename result_of_unrolled_fold::type - call(I0 const& i0, State const& state, F const& f) + call(I0 const& i0, State const& state, F f) { typedef typename result_of::next::type I1; I1 i1 = fusion::next(i0); @@ -99,7 +99,7 @@ namespace detail { template static typename result_of_unrolled_fold::type - call(I0 const& i0, State const& state, F const& f) + call(I0 const& i0, State const& state, F f) { typedef typename result_of::next::type I1; I1 i1 = fusion::next(i0); @@ -114,7 +114,7 @@ namespace detail { template static typename result_of_unrolled_fold::type - call(I0 const& i0, State const& state, F const& f) + call(I0 const& i0, State const& state, F f) { typedef typename result_of::next::type I1; I1 i1 = fusion::next(i0); @@ -127,7 +127,7 @@ namespace detail { template static typename result_of_unrolled_fold::type - call(I0 const& i0, State const& state, F const& f) + call(I0 const& i0, State const& state, F f) { return f(*i0, state); } @@ -137,7 +137,7 @@ namespace detail struct unrolled_fold<0> { template - static State call(I0 const&, State const& state, F const&) + static State call(I0 const&, State const& state, F) { return state; } @@ -146,7 +146,7 @@ namespace detail // terminal case template inline State const& - linear_fold(First const&, Last const&, State const& state, F const&, mpl::true_) + linear_fold(First const&, Last const&, State const& state, F, mpl::true_) { return state; } @@ -158,7 +158,7 @@ namespace detail First const& first , Last const& last , State const& state - , F const& f + , F f , mpl::false_) { return detail::linear_fold( @@ -242,7 +242,7 @@ namespace detail template typename result_of::fold::type - fold(Sequence& seq, State const& state, F const& f, Tag) + fold(Sequence& seq, State const& state, F f, Tag) { return linear_fold( fusion::begin(seq) @@ -257,7 +257,7 @@ namespace detail template typename result_of::fold::type - fold(Sequence& seq, State const& state, F const& f, random_access_traversal_tag) + 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; diff --git a/include/boost/fusion/algorithm/iteration/fold.hpp b/include/boost/fusion/algorithm/iteration/fold.hpp index 046acb86..75c63b8f 100644 --- a/include/boost/fusion/algorithm/iteration/fold.hpp +++ b/include/boost/fusion/algorithm/iteration/fold.hpp @@ -31,14 +31,14 @@ namespace boost { namespace fusion { template inline typename result_of::fold::type - fold(Sequence& seq, State const& state, F const& f) + 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 const& f) + fold(Sequence const& seq, State const& state, F f) { return detail::fold(seq, state, f, typename traits::category_of::type()); } From d20847afd72b342dcd630726f8e2df7ff0923f2d Mon Sep 17 00:00:00 2001 From: Eric Niebler Date: Mon, 2 Jul 2007 06:52:31 +0000 Subject: [PATCH 185/234] don't use forward declarations of partial specializations. [SVN r38129] --- include/boost/fusion/support/tag_of.hpp | 56 ++++++++++++++++--------- 1 file changed, 37 insertions(+), 19 deletions(-) diff --git a/include/boost/fusion/support/tag_of.hpp b/include/boost/fusion/support/tag_of.hpp index c7cfbb76..a1ccf12d 100644 --- a/include/boost/fusion/support/tag_of.hpp +++ b/include/boost/fusion/support/tag_of.hpp @@ -13,6 +13,7 @@ #include #include #include +#include #include #include #include @@ -45,6 +46,39 @@ 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 @@ -54,31 +88,15 @@ namespace boost { namespace fusion : mpl::if_< detail::is_mpl_sequence, mpl::identity, mpl::identity >::type - { }; + { + BOOST_MPL_ASSERT_NOT((detail::is_specialized)); + }; template struct tag_of >::type> { typedef typename Sequence::fusion_tag type; }; - - template < - class T0, class T1, class T2, class T3, class T4, - class T5, class T6, class T7, class T8, class T9 - > - struct tag_of >; - - template - struct tag_of >; - - template <> - struct tag_of; - - template - struct tag_of >; - - template - struct tag_of >; } namespace detail From 3612acb0ef66afc84fa8ab220fd138475dbe3937 Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Fri, 6 Jul 2007 20:47:11 +0000 Subject: [PATCH 186/234] adding working converting ctors for zero length sequences [SVN r38155] --- .../fusion/sequence/container/deque/deque.hpp | 10 +++++++++- .../container/deque/detail/keyed_element.hpp | 18 ++++++++++++++++++ .../sequence/container/vector/vector10.hpp | 6 ++++++ include/boost/fusion/support/void.hpp | 8 ++++++++ 4 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 include/boost/fusion/support/void.hpp diff --git a/include/boost/fusion/sequence/container/deque/deque.hpp b/include/boost/fusion/sequence/container/deque/deque.hpp index ababdd4c..884899f8 100644 --- a/include/boost/fusion/sequence/container/deque/deque.hpp +++ b/include/boost/fusion/sequence/container/deque/deque.hpp @@ -20,20 +20,23 @@ #include #include #include +#include #include #include #include #include #include +#include #include #include +#include +#include namespace boost { namespace fusion { struct deque_tag; - struct void_; template struct deque @@ -63,6 +66,11 @@ namespace boost { namespace fusion { : base(seq) {} + template + deque(Sequence const& seq, typename disable_if >::type* dummy = 0) + : base(base::from_iterator(fusion::begin(seq))) + {} + template deque& operator=(deque const& rhs) diff --git a/include/boost/fusion/sequence/container/deque/detail/keyed_element.hpp b/include/boost/fusion/sequence/container/deque/detail/keyed_element.hpp index 4f032d6f..177f68ac 100644 --- a/include/boost/fusion/sequence/container/deque/detail/keyed_element.hpp +++ b/include/boost/fusion/sequence/container/deque/detail/keyed_element.hpp @@ -11,6 +11,9 @@ #include #include +#include +#include + namespace boost { namespace fusion { struct fusion_sequence_tag; @@ -21,6 +24,13 @@ namespace detail { { typedef fusion_sequence_tag tag; void get(); + + template + static nil_keyed_element + from_iterator(It const&) + { + return nil_keyed_element(); + } }; template @@ -31,6 +41,14 @@ namespace detail { typedef fusion_sequence_tag tag; using Rest::get; + template + static keyed_element + from_iterator(It const& it) + { + return keyed_element( + *it, base::from_iterator(fusion::next(it))); + } + template keyed_element(keyed_element const& rhs) : Rest(rhs.get_base()), value_(rhs.value_) diff --git a/include/boost/fusion/sequence/container/vector/vector10.hpp b/include/boost/fusion/sequence/container/vector/vector10.hpp index fa96ee56..6ff80a0c 100644 --- a/include/boost/fusion/sequence/container/vector/vector10.hpp +++ b/include/boost/fusion/sequence/container/vector/vector10.hpp @@ -47,6 +47,12 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<0> size; + + vector0() {} + + template + vector0(Sequence const& seq) + {} }; // expand vector1 to vector10 diff --git a/include/boost/fusion/support/void.hpp b/include/boost/fusion/support/void.hpp new file mode 100644 index 00000000..63275b11 --- /dev/null +++ b/include/boost/fusion/support/void.hpp @@ -0,0 +1,8 @@ +#if !defined(BOOST_FUSION_SUPPORT_VOID_20070706_2125) +#define BOOST_FUSION_SUPPORT_VOID_20070706_2125 + +namespace boost { namespace fusion { + struct void_ {}; +}} + +#endif From eb79a48868137dd83b83f0bea4819cf840fa11d8 Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Fri, 6 Jul 2007 20:48:04 +0000 Subject: [PATCH 187/234] testing zero length sequences have converting ctors [SVN r38156] --- test/sequence/construction.hpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/test/sequence/construction.hpp b/test/sequence/construction.hpp index a35e9d89..6c289749 100644 --- a/test/sequence/construction.hpp +++ b/test/sequence/construction.hpp @@ -7,6 +7,7 @@ ==============================================================================*/ #include #include +#include #if !defined(FUSION_AT) #define FUSION_AT at_c @@ -52,6 +53,12 @@ test() using namespace boost::fusion; using namespace test_detail; + nil empty; + + FUSION_SEQUENCE<> empty0; + + FUSION_SEQUENCE<> empty1(empty); + FUSION_SEQUENCE t1; BOOST_TEST(FUSION_AT<0>(t1) == int()); From 046d853d63d6b51361abe269e8bc15f8d31dd652 Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Sun, 8 Jul 2007 14:26:01 +0000 Subject: [PATCH 188/234] fixing issues with fusion zip_view size on intel [SVN r38167] --- include/boost/fusion/iterator/distance.hpp | 10 +++++++--- include/boost/fusion/sequence/intrinsic/size.hpp | 9 +++++++-- .../fusion/sequence/view/zip_view/detail/size_impl.hpp | 5 +++-- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/include/boost/fusion/iterator/distance.hpp b/include/boost/fusion/iterator/distance.hpp index 897bd1de..44fc4292 100644 --- a/include/boost/fusion/iterator/distance.hpp +++ b/include/boost/fusion/iterator/distance.hpp @@ -61,9 +61,13 @@ namespace boost { namespace fusion { template struct distance - : extension::distance_impl::type>:: - template apply - {}; + : extension::distance_impl::type>:: + template apply + { + typedef typename extension::distance_impl::type>:: + template apply::type distance_application; + BOOST_STATIC_CONSTANT(int, value = distance_application::value); + }; } template diff --git a/include/boost/fusion/sequence/intrinsic/size.hpp b/include/boost/fusion/sequence/intrinsic/size.hpp index c94f9ec0..74e3f53a 100644 --- a/include/boost/fusion/sequence/intrinsic/size.hpp +++ b/include/boost/fusion/sequence/intrinsic/size.hpp @@ -53,8 +53,13 @@ namespace boost { namespace fusion template struct size : extension::size_impl::type>:: - template apply - {}; + template apply + + { + typedef typename extension::size_impl::type>:: + template apply::type size_application; + BOOST_STATIC_CONSTANT(int, value = size_application::value); + }; } template diff --git a/include/boost/fusion/sequence/view/zip_view/detail/size_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/size_impl.hpp index aeb6d5e3..70798d28 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/size_impl.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/size_impl.hpp @@ -25,8 +25,9 @@ namespace boost { namespace fusion { { template struct apply - : Sequence::size - {}; + { + typedef typename Sequence::size type; + }; }; } }} From 8eda5d32cabeb008e622532aee84f413f4e7218b Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Thu, 12 Jul 2007 09:08:46 +0000 Subject: [PATCH 189/234] completes boost::result_of-based result type computation [SVN r38194] --- .../detail/Attic/nullary_call_base.hpp | 94 +++++++++++++++---- .../boost/fusion/functional/adapter/fused.hpp | 35 ++++--- .../adapter/fused_function_object.hpp | 27 ++++-- .../functional/adapter/fused_procedure.hpp | 37 ++++---- .../fusion/functional/adapter/limits.hpp | 3 + .../functional/adapter/unfused_generic.hpp | 48 +++++++--- .../adapter/unfused_lvalue_args.hpp | 49 ++++++---- .../adapter/unfused_rvalue_args.hpp | 48 +++++++--- .../functional/adapter/unfused_typed.hpp | 66 ++++++++----- test/functional/make_unfused_generic.cpp | 6 +- test/functional/make_unfused_lvalue_args.cpp | 6 +- test/functional/make_unfused_rvalue_args.cpp | 6 +- test/functional/unfused_generic.cpp | 18 ++-- test/functional/unfused_lvalue_args.cpp | 8 +- test/functional/unfused_rvalue_args.cpp | 6 +- test/functional/unfused_typed.cpp | 4 +- 16 files changed, 305 insertions(+), 156 deletions(-) diff --git a/include/boost/fusion/functional/adapter/detail/Attic/nullary_call_base.hpp b/include/boost/fusion/functional/adapter/detail/Attic/nullary_call_base.hpp index c089a697..cd8383ae 100644 --- a/include/boost/fusion/functional/adapter/detail/Attic/nullary_call_base.hpp +++ b/include/boost/fusion/functional/adapter/detail/Attic/nullary_call_base.hpp @@ -26,43 +26,101 @@ namespace boost { namespace fusion { namespace detail template struct get_result_spec { - typedef typename remove_const::type>::type function; - typedef typename function::template result type; + private: + typedef typename boost::remove_const< + typename boost::remove_reference::type>::type function; + + typedef fusion::vector0 arg; + public: + typedef typename function::template result call_0_result; + typedef typename function::template result + call_const_0_result; }; - template ::type>::value> + template ::call_const_0_result>::value, + bool Enable = detail::has_type< + typename get_result_spec::call_0_result>::value> struct nullary_call_base { - template inline void operator()(T reserved::*) const { } protected: - typedef boost::blank r0; - }; + typedef typename get_result_spec::call_const_0_result + call_const_0_result_class; - template - struct nullary_call_base - { - private: - typedef typename remove_const::type>::type function; - protected: - typedef typename function::template result r0; + typedef typename get_result_spec::call_0_result + call_0_result_class; public: + typedef typename call_const_0_result_class::type + call_const_0_result; - inline typename r0::type - operator()() const + inline call_const_0_result operator()() const { fusion::vector0 arg; return static_cast(this)->fnc_transformed(arg); } - inline typename r0::type - operator()() + typedef typename get_result_spec::call_0_result::type + call_0_result; + + inline call_0_result operator()() { fusion::vector0 arg; return static_cast(this)->fnc_transformed(arg); } }; + template + struct nullary_call_base + { + protected: + typedef typename get_result_spec::call_const_0_result + call_const_0_result_class; + + typedef typename boost::blank call_0_result_class; + public: + typedef typename call_const_0_result_class::type + call_const_0_result, call_0_result; + + inline call_const_0_result operator()() const + { + fusion::vector0 arg; + return static_cast(this)->fnc_transformed(arg); + } + }; + + template + struct nullary_call_base + { + protected: + typedef typename boost::blank call_const_0_result_class; + + typedef typename get_result_spec::call_0_result + call_0_result_class; + public: + typedef void call_const_0_result; + typedef typename call_0_result_class::type call_0_result; + + inline call_const_0_result operator()() + { + fusion::vector0 arg; + return static_cast(this)->fnc_transformed(arg); + } + }; + + template + struct nullary_call_base + { + protected: + typedef boost::blank call_0_result_class; + typedef boost::blank call_const_0_result_class; + public: + typedef void call_0_result; + typedef void call_const_0_result; + + template inline void operator()(T reserved::*) const { } + }; + }}} #endif diff --git a/include/boost/fusion/functional/adapter/fused.hpp b/include/boost/fusion/functional/adapter/fused.hpp index 31947392..40096643 100644 --- a/include/boost/fusion/functional/adapter/fused.hpp +++ b/include/boost/fusion/functional/adapter/fused.hpp @@ -35,40 +35,47 @@ namespace boost { namespace fusion { } template - inline typename result_of::invoke::type + inline typename result_of::invoke::type operator()(Seq const & s) const { - return fusion::invoke(this->fnc_transformed,s); + return fusion::invoke(this->fnc_transformed,s); } template - inline typename result_of::invoke::type + inline typename result_of::invoke::type operator()(Seq const & s) { - return fusion::invoke(this->fnc_transformed,s); + return fusion::invoke(this->fnc_transformed,s); } template - inline typename result_of::invoke::type + inline typename result_of::invoke::type operator()(Seq & s) const { - return fusion::invoke(this->fnc_transformed,s); + return fusion::invoke(this->fnc_transformed,s); } template - inline typename result_of::invoke::type + inline typename result_of::invoke::type operator()(Seq & s) { - return fusion::invoke(this->fnc_transformed,s); + return fusion::invoke(this->fnc_transformed,s); } - template - struct result; - - template - struct result(Seq)> - : result_of::invoke + template + struct result { }; + + template + struct result< Self const (Seq) > + : result_of::invoke + { }; + + template + struct result< Self(Seq) > + : result_of::invoke + { }; + }; }} diff --git a/include/boost/fusion/functional/adapter/fused_function_object.hpp b/include/boost/fusion/functional/adapter/fused_function_object.hpp index a73ad837..b7d176d1 100644 --- a/include/boost/fusion/functional/adapter/fused_function_object.hpp +++ b/include/boost/fusion/functional/adapter/fused_function_object.hpp @@ -35,16 +35,16 @@ namespace boost { namespace fusion { } template - inline typename result_of::invoke_function_object::type operator()(Seq const & s) const + inline typename result_of::invoke_function_object::type operator()(Seq const & s) const { return fusion::invoke_function_object< func_const_fwd_t >(this->fnc_transformed,s); } template - inline typename result_of::invoke_function_object::type + inline typename result_of::invoke_function_object::type operator()(Seq const & s) { return fusion::invoke_function_object< @@ -52,7 +52,8 @@ namespace boost { namespace fusion } template - inline typename result_of::invoke_function_object::type + inline typename result_of::invoke_function_object::type operator()(Seq & s) const { return fusion::invoke_function_object< @@ -60,7 +61,7 @@ namespace boost { namespace fusion } template - inline typename result_of::invoke_function_object::type + inline typename result_of::invoke_function_object::type operator()(Seq & s) { return fusion::invoke_function_object< @@ -68,11 +69,17 @@ namespace boost { namespace fusion } template - struct result; + struct result + { }; - template - struct result - : result_of::invoke_function_object + template + struct result< Self const (Seq) > + : result_of::invoke_function_object + { }; + + template + struct result< Self(Seq) > + : result_of::invoke_function_object { }; }; diff --git a/include/boost/fusion/functional/adapter/fused_procedure.hpp b/include/boost/fusion/functional/adapter/fused_procedure.hpp index 43c94759..7dfded18 100644 --- a/include/boost/fusion/functional/adapter/fused_procedure.hpp +++ b/include/boost/fusion/functional/adapter/fused_procedure.hpp @@ -35,43 +35,42 @@ namespace boost { namespace fusion { } template - inline typename result_of::invoke_procedure::type - operator()(Seq const & s) const + inline void operator()(Seq const & s) const { - return fusion::invoke_procedure< - func_const_fwd_t >(this->fnc_transformed,s); + fusion::invoke_procedure< + func_const_fwd_t >(this->fnc_transformed,s); } template - inline typename result_of::invoke_procedure::type - operator()(Seq const & s) + inline void operator()(Seq const & s) { - return fusion::invoke_procedure< - func_fwd_t >(this->fnc_transformed,s); + fusion::invoke_procedure< + func_fwd_t >(this->fnc_transformed,s); } template - inline typename result_of::invoke_procedure::type - operator()(Seq & s) const + inline void operator()(Seq & s) const { - return fusion::invoke_procedure< - func_const_fwd_t >(this->fnc_transformed,s); + fusion::invoke_procedure< + func_const_fwd_t >(this->fnc_transformed,s); } template - inline typename result_of::invoke_procedure::type - operator()(Seq & s) + inline void operator()(Seq & s) { - return fusion::invoke_procedure< - func_fwd_t >(this->fnc_transformed,s); + return fusion::invoke_procedure< + func_fwd_t >(this->fnc_transformed,s); } - template + template struct result - : result_of::invoke_procedure { }; - typedef void result_type; + template + struct result< Self(Seq) > + { + typedef void type; + }; }; }} diff --git a/include/boost/fusion/functional/adapter/limits.hpp b/include/boost/fusion/functional/adapter/limits.hpp index fa2e5a3b..476fe021 100644 --- a/include/boost/fusion/functional/adapter/limits.hpp +++ b/include/boost/fusion/functional/adapter/limits.hpp @@ -31,6 +31,9 @@ # elif BOOST_FUSION_UNFUSED_TYPED_MAX_ARITY > FUSION_MAX_VECTOR_SIZE # error "BOOST_FUSION_UNFUSED_TYPED_MAX_ARITY > FUSION_MAX_VECTOR_SIZE" # endif +# if !defined(BOOST_FUSION_CONSTRUCTOR_MAX_ARITY) +# define BOOST_FUSION_CONSTRUCTOR_MAX_ARITY 6 +# endif #endif diff --git a/include/boost/fusion/functional/adapter/unfused_generic.hpp b/include/boost/fusion/functional/adapter/unfused_generic.hpp index 00c60c2c..eae10f12 100644 --- a/include/boost/fusion/functional/adapter/unfused_generic.hpp +++ b/include/boost/fusion/functional/adapter/unfused_generic.hpp @@ -56,17 +56,23 @@ namespace boost { namespace fusion using base::operator(); - template - struct result; + template + struct result + { }; - template - struct result()> - : base::r0 + template + struct result< Self const () > + : base::call_const_0_result_class + { }; + + template + struct result< Self() > + : base::call_0_result_class { }; #define BOOST_FUSION_CODE(tpl_params,arg_types,params,args) \ template \ - inline typename function::template result)>::type \ operator()(params) const \ { \ @@ -91,16 +97,22 @@ namespace boost { namespace fusion #define N BOOST_PP_ITERATION_1 #include BOOST_PP_ITERATE() #undef N + #undef BOOST_FUSION_CODE }; }} -namespace boost { - template - struct result_of()> +namespace boost +{ + template + struct result_of const ()> { - typedef boost::fusion::unfused_generic function; - typedef typename function::template result::type type; + typedef typename boost::fusion::unfused_generic::call_const_0_result type; + }; + template + struct result_of()> + { + typedef typename boost::fusion::unfused_generic::call_0_result type; }; } @@ -115,9 +127,17 @@ namespace boost { #include #if BOOST_PP_SLOT_1() == 0 - template + template struct result - (BOOST_PP_ENUM_PARAMS(N,T))> + < Self const (BOOST_PP_ENUM_PARAMS(N,T)) > + : function::template result::type BOOST_PP_INTERCEPT) >)> + { }; + + template + struct result + < Self(BOOST_PP_ENUM_PARAMS(N,T)) > : function::template result::type BOOST_PP_INTERCEPT) >)> @@ -126,7 +146,7 @@ namespace boost { #if BOOST_WORKAROUND(BOOST_MSVC,BOOST_TESTED_AT(1400)) template - inline typename function::template result)>::type operator()(BOOST_PP_ENUM_BINARY_PARAMS(N,PT,a)) const { diff --git a/include/boost/fusion/functional/adapter/unfused_lvalue_args.hpp b/include/boost/fusion/functional/adapter/unfused_lvalue_args.hpp index 25f547de..cd8e0508 100644 --- a/include/boost/fusion/functional/adapter/unfused_lvalue_args.hpp +++ b/include/boost/fusion/functional/adapter/unfused_lvalue_args.hpp @@ -55,12 +55,18 @@ namespace boost { namespace fusion using base::operator(); - template - struct result; + template + struct result + { }; - template - struct result()> - : base::r0 + template + struct result< Self const () > + : base::call_const_0_result_class + { }; + + template + struct result< Self() > + : base::call_0_result_class { }; #define BOOST_PP_FILENAME_1 \ @@ -71,12 +77,17 @@ namespace boost { namespace fusion }; }} -namespace boost { - template - struct result_of()> +namespace boost +{ + template + struct result_of< boost::fusion::unfused_lvalue_args const () > { - typedef boost::fusion::unfused_lvalue_args function; - typedef typename function::template result::type type; + typedef typename boost::fusion::unfused_lvalue_args::call_const_0_result type; + }; + template + struct result_of< boost::fusion::unfused_lvalue_args() > + { + typedef typename boost::fusion::unfused_lvalue_args::call_0_result type; }; } @@ -89,12 +100,18 @@ namespace boost { //////////////////////////////////////////////////////////////////////////////// #define N BOOST_PP_ITERATION() - template - struct result - - : function::template result< function(BOOST_PP_CAT(fusion::vector,N)< - BOOST_PP_ENUM_BINARY_PARAMS(N,typename detail::mref::type - BOOST_PP_INTERCEPT) >)> + template + struct result< Self const (BOOST_PP_ENUM_PARAMS(N,T)) > + : function::template result< function const ( + BOOST_PP_CAT(fusion::vector,N)< BOOST_PP_ENUM_BINARY_PARAMS(N, + typename detail::mref::type BOOST_PP_INTERCEPT) >)> + { }; + + template + struct result< Self(BOOST_PP_ENUM_PARAMS(N,T)) > + : function::template result< function ( + BOOST_PP_CAT(fusion::vector,N)< BOOST_PP_ENUM_BINARY_PARAMS(N, + typename detail::mref::type BOOST_PP_INTERCEPT) >)> { }; template diff --git a/include/boost/fusion/functional/adapter/unfused_rvalue_args.hpp b/include/boost/fusion/functional/adapter/unfused_rvalue_args.hpp index 62b34463..9fbbabfc 100644 --- a/include/boost/fusion/functional/adapter/unfused_rvalue_args.hpp +++ b/include/boost/fusion/functional/adapter/unfused_rvalue_args.hpp @@ -55,12 +55,18 @@ namespace boost { namespace fusion using base::operator(); - template - struct result; + template + struct result + { }; - template - struct result()> - : base::r0 + template + struct result< Self const () > + : base::call_const_0_result_class + { }; + + template + struct result< Self() > + : base::call_0_result_class { }; #define BOOST_PP_FILENAME_1 \ @@ -71,12 +77,17 @@ namespace boost { namespace fusion }; }} -namespace boost { - template - struct result_of()> +namespace boost +{ + template + struct result_of const ()> { - typedef boost::fusion::unfused_rvalue_args function; - typedef typename function::template result::type type; + typedef typename boost::fusion::unfused_rvalue_args::call_const_0_result type; + }; + template + struct result_of()> + { + typedef typename boost::fusion::unfused_rvalue_args::call_0_result type; }; } @@ -89,11 +100,18 @@ namespace boost { //////////////////////////////////////////////////////////////////////////////// #define N BOOST_PP_ITERATION() - template - struct result - : function::template result::type - BOOST_PP_INTERCEPT) >)> + template + struct result< Self const (BOOST_PP_ENUM_PARAMS(N,T)) > + : function::template result< function const ( + BOOST_PP_CAT(fusion::vector,N)< BOOST_PP_ENUM_BINARY_PARAMS(N, + typename detail::cref::type BOOST_PP_INTERCEPT) >)> + { }; + + template + struct result< Self (BOOST_PP_ENUM_PARAMS(N,T)) > + : function::template result< function ( + BOOST_PP_CAT(fusion::vector,N)< BOOST_PP_ENUM_BINARY_PARAMS(N, + typename detail::cref::type BOOST_PP_INTERCEPT) >)> { }; template diff --git a/include/boost/fusion/functional/adapter/unfused_typed.hpp b/include/boost/fusion/functional/adapter/unfused_typed.hpp index 6f85b929..54a2049a 100644 --- a/include/boost/fusion/functional/adapter/unfused_typed.hpp +++ b/include/boost/fusion/functional/adapter/unfused_typed.hpp @@ -104,12 +104,18 @@ namespace boost { namespace fusion : fnc_transformed(f) { } - template - struct result; + template + struct result + { }; - template - struct result()> - : base::r0 + template + struct result< Self const () > + : base::call_const_0_result_class + { }; + + template + struct result< Self() > + : base::call_0_result_class { }; }; @@ -119,15 +125,21 @@ namespace boost { namespace fusion }} -namespace boost { - template - struct result_of()> +namespace boost +{ + template + struct result_of< boost::fusion::unfused_typed const () > { - typedef boost::fusion::unfused_typed function; - typedef typename function::template result::type type; + typedef typename boost::fusion::unfused_typed::call_const_0_result type; + }; + template + struct result_of< boost::fusion::unfused_typed() > + { + typedef typename boost::fusion::unfused_typed::call_0_result type; }; } + #define BOOST_FUSION_FUNCTIONAL_ADAPTER_UNFUSED_TYPED_HPP_INCLUDED #else // defined(BOOST_PP_IS_ITERATING) /////////////////////////////////////////////////////////////////////////////// @@ -149,26 +161,21 @@ namespace boost { Derived,Function,Sequence>::type base; typedef typename remove_const::type>::type function; - - // Notes: - // - conversion to fusion::vector might not be perfect (there is - // currently no "inrinsic converting ctor" that would allow us - // to let the user choose the sequence implementation) - // - value_at_c (instead of iteration) is OK because of conversion - // to fusion::vector - we would need iteration for arbitrary - // sequences typedef typename result_of::as_vector::type arg_vector_t; + + protected: + typedef typename function:: + template result BOOST_PP_CAT(rc,N); + typedef typename function:: + template result BOOST_PP_CAT(r,N); public: using base::operator(); - typedef typename function:: - template result BOOST_PP_CAT(r,N); - #define M(z,i,s) \ typename call_param::type>::type a##i - inline typename function::template result::type + inline typename function::template result::type operator()(BOOST_PP_ENUM(N,M,arg_vector_t)) const { arg_vector_t arg(BOOST_PP_ENUM_PARAMS(N,a)); @@ -190,11 +197,20 @@ namespace boost { } // namespace detail template - template - struct unfused_typed::result - + template + struct unfused_typed::result< + Self const (BOOST_PP_ENUM_PARAMS(N,T)) > + : BOOST_PP_CAT(base::rc,N) + { }; + +#if !BOOST_WORKAROUND(BOOST_MSVC, < 1400) + template + template + struct unfused_typed::result< + Self (BOOST_PP_ENUM_PARAMS(N,T)) > : BOOST_PP_CAT(base::r,N) { }; +#endif #undef N #endif // defined(BOOST_PP_IS_ITERATING) diff --git a/test/functional/make_unfused_generic.cpp b/test/functional/make_unfused_generic.cpp index 7536f790..491fc93b 100644 --- a/test/functional/make_unfused_generic.cpp +++ b/test/functional/make_unfused_generic.cpp @@ -38,11 +38,11 @@ template struct test_func : Base { - template + template struct result; - template - struct result(Seq)> + template + struct result< Self(Seq) > : mpl::if_< mpl::and_< fusion::result_of::empty, RemoveNullary >, boost::blank, mpl::identity >::type { }; diff --git a/test/functional/make_unfused_lvalue_args.cpp b/test/functional/make_unfused_lvalue_args.cpp index 7a185740..20dae6ed 100644 --- a/test/functional/make_unfused_lvalue_args.cpp +++ b/test/functional/make_unfused_lvalue_args.cpp @@ -37,11 +37,11 @@ template struct test_func : Base { - template + template struct result; - template - struct result(Seq)> + template + struct result< Self(Seq) > : mpl::if_< mpl::and_< fusion::result_of::empty, RemoveNullary >, boost::blank, mpl::identity >::type { }; diff --git a/test/functional/make_unfused_rvalue_args.cpp b/test/functional/make_unfused_rvalue_args.cpp index 579d15ea..8746a6af 100644 --- a/test/functional/make_unfused_rvalue_args.cpp +++ b/test/functional/make_unfused_rvalue_args.cpp @@ -35,11 +35,11 @@ template struct test_func : Base { - template + template struct result; - template - struct result(Seq)> + template + struct result< Self(Seq) > : mpl::if_< mpl::and_< fusion::result_of::empty, RemoveNullary >, boost::blank, mpl::identity >::type { }; diff --git a/test/functional/unfused_generic.cpp b/test/functional/unfused_generic.cpp index af4c7134..3810bdcb 100644 --- a/test/functional/unfused_generic.cpp +++ b/test/functional/unfused_generic.cpp @@ -35,14 +35,14 @@ template struct test_func : Base { - template + template struct result; - template - struct result(Seq)> + 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 @@ -51,7 +51,7 @@ struct test_func return fusion::fold(seq, state, fold_op()); } - template < typename Seq > + template long operator()(Seq const & seq) { long state = 100; @@ -89,7 +89,7 @@ void result_type_tests() BOOST_TEST(( has_type< test_func_0::result >::value )); BOOST_TEST(( has_type< test_func_1::result >::value )); - BOOST_TEST(( ! has_type< test_func_1::result >::value )); + BOOST_TEST(( ! has_type< test_func_1::result >::value )); BOOST_TEST(( is_same< boost::result_of< test_func_0() >::type, long >::value )); BOOST_TEST(( is_same< boost::result_of< test_func_1(int) >::type, long >::value )); } @@ -112,8 +112,12 @@ int main() 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,1,2l,'\007') == 100 + expected); + 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)); diff --git a/test/functional/unfused_lvalue_args.cpp b/test/functional/unfused_lvalue_args.cpp index 3919e527..26b4535d 100644 --- a/test/functional/unfused_lvalue_args.cpp +++ b/test/functional/unfused_lvalue_args.cpp @@ -32,11 +32,11 @@ template struct test_func : Base { - template + template struct result; - template - struct result(Seq)> + template + struct result< Self(Seq) > : mpl::if_< mpl::and_< fusion::result_of::empty, RemoveNullary >, boost::blank, mpl::identity >::type { }; @@ -48,7 +48,7 @@ struct test_func return fusion::fold(seq, state, fold_op()); } - template < typename Seq > + template long operator()(Seq const & seq) { long state = 100; diff --git a/test/functional/unfused_rvalue_args.cpp b/test/functional/unfused_rvalue_args.cpp index b15f2f95..da694f07 100644 --- a/test/functional/unfused_rvalue_args.cpp +++ b/test/functional/unfused_rvalue_args.cpp @@ -32,11 +32,11 @@ template struct test_func : Base { - template + template struct result; - template - struct result(Seq)> + template + struct result< Self(Seq) > : mpl::if_< mpl::and_< fusion::result_of::empty, RemoveNullary >, boost::blank, mpl::identity >::type { }; diff --git a/test/functional/unfused_typed.cpp b/test/functional/unfused_typed.cpp index 9e81444d..5b119ba3 100644 --- a/test/functional/unfused_typed.cpp +++ b/test/functional/unfused_typed.cpp @@ -45,8 +45,8 @@ struct test_func template struct result; - template - struct result(Seq)> + template + struct result : mpl::if_< typename mpl::apply::type, mpl::identity, boost::blank >::type { }; From f6184f5f2915f3302a8272f7606e26b407ae3bb6 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Thu, 12 Jul 2007 15:57:18 +0000 Subject: [PATCH 190/234] fixes bad parameter lists for template friends [SVN r38195] --- include/boost/fusion/functional/adapter/unfused_generic.hpp | 2 +- include/boost/fusion/functional/adapter/unfused_lvalue_args.hpp | 2 +- include/boost/fusion/functional/adapter/unfused_rvalue_args.hpp | 2 +- include/boost/fusion/functional/adapter/unfused_typed.hpp | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/include/boost/fusion/functional/adapter/unfused_generic.hpp b/include/boost/fusion/functional/adapter/unfused_generic.hpp index eae10f12..ec3f869e 100644 --- a/include/boost/fusion/functional/adapter/unfused_generic.hpp +++ b/include/boost/fusion/functional/adapter/unfused_generic.hpp @@ -39,7 +39,7 @@ namespace boost { namespace fusion { Function fnc_transformed; - template + template friend struct detail::nullary_call_base; typedef detail::nullary_call_base< diff --git a/include/boost/fusion/functional/adapter/unfused_lvalue_args.hpp b/include/boost/fusion/functional/adapter/unfused_lvalue_args.hpp index cd8e0508..ce205a43 100644 --- a/include/boost/fusion/functional/adapter/unfused_lvalue_args.hpp +++ b/include/boost/fusion/functional/adapter/unfused_lvalue_args.hpp @@ -38,7 +38,7 @@ namespace boost { namespace fusion { Function fnc_transformed; - template + template friend struct detail::nullary_call_base; typedef detail::nullary_call_base< diff --git a/include/boost/fusion/functional/adapter/unfused_rvalue_args.hpp b/include/boost/fusion/functional/adapter/unfused_rvalue_args.hpp index 9fbbabfc..2320ecf9 100644 --- a/include/boost/fusion/functional/adapter/unfused_rvalue_args.hpp +++ b/include/boost/fusion/functional/adapter/unfused_rvalue_args.hpp @@ -38,7 +38,7 @@ namespace boost { namespace fusion { Function fnc_transformed; - template + template friend struct detail::nullary_call_base; typedef detail::nullary_call_base< diff --git a/include/boost/fusion/functional/adapter/unfused_typed.hpp b/include/boost/fusion/functional/adapter/unfused_typed.hpp index 54a2049a..2e0743c7 100644 --- a/include/boost/fusion/functional/adapter/unfused_typed.hpp +++ b/include/boost/fusion/functional/adapter/unfused_typed.hpp @@ -89,7 +89,7 @@ namespace boost { namespace fusion template friend struct detail::unfused_typed_impl; - template + template friend struct detail::nullary_call_base; typedef typename remove_const::type>::type function; From 7a1017dce3fe30b536dc7508e1d4147743b10af0 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Fri, 13 Jul 2007 14:06:50 +0000 Subject: [PATCH 191/234] makes unfused_* work through boost::result_of only [SVN r38197] --- test/functional/invoke.cpp | 28 +++++++---------- test/functional/make_unfused_generic.cpp | 2 +- test/functional/make_unfused_lvalue_args.cpp | 2 +- test/functional/make_unfused_rvalue_args.cpp | 2 +- test/functional/unfused_generic.cpp | 33 ++++++++------------ test/functional/unfused_lvalue_args.cpp | 21 +++---------- test/functional/unfused_rvalue_args.cpp | 21 +++---------- test/functional/unfused_typed.cpp | 29 ++++------------- 8 files changed, 43 insertions(+), 95 deletions(-) diff --git a/test/functional/invoke.cpp b/test/functional/invoke.cpp index 3ee2d6dc..686554bc 100644 --- a/test/functional/invoke.cpp +++ b/test/functional/invoke.cpp @@ -10,11 +10,11 @@ #include #include -#include - #include #include +#include + #include #include @@ -337,25 +337,19 @@ void test_sequence(Sequence & seq) void result_type_tests() { - using boost::fusion::detail::has_type; + using boost::is_same; - BOOST_TEST(( has_type< - fusion::result_of::invoke + BOOST_TEST(( is_same< + fusion::result_of::invoke::type, int >::value )); - BOOST_TEST(( has_type< - fusion::result_of::invoke > + BOOST_TEST(( is_same< + fusion::result_of::invoke >::type, int >::value )); - BOOST_TEST(( ! has_type< - fusion::result_of::invoke > + BOOST_TEST(( is_same< + fusion::result_of::invoke >::type, int >::value )); - BOOST_TEST(( has_type< - fusion::result_of::invoke > - >::value )); - BOOST_TEST(( has_type< - fusion::result_of::invoke > - >::value )); - BOOST_TEST(( ! has_type< - fusion::result_of::invoke > + BOOST_TEST(( is_same< + fusion::result_of::invoke >::type, int >::value )); } diff --git a/test/functional/make_unfused_generic.cpp b/test/functional/make_unfused_generic.cpp index 491fc93b..0e7e81c8 100644 --- a/test/functional/make_unfused_generic.cpp +++ b/test/functional/make_unfused_generic.cpp @@ -42,7 +42,7 @@ struct test_func struct result; template - struct result< Self(Seq) > + struct result< Self(Seq &) > : mpl::if_< mpl::and_< fusion::result_of::empty, RemoveNullary >, boost::blank, mpl::identity >::type { }; diff --git a/test/functional/make_unfused_lvalue_args.cpp b/test/functional/make_unfused_lvalue_args.cpp index 20dae6ed..af94256c 100644 --- a/test/functional/make_unfused_lvalue_args.cpp +++ b/test/functional/make_unfused_lvalue_args.cpp @@ -41,7 +41,7 @@ struct test_func struct result; template - struct result< Self(Seq) > + struct result< Self(Seq &) > : mpl::if_< mpl::and_< fusion::result_of::empty, RemoveNullary >, boost::blank, mpl::identity >::type { }; diff --git a/test/functional/make_unfused_rvalue_args.cpp b/test/functional/make_unfused_rvalue_args.cpp index 8746a6af..383fcc0b 100644 --- a/test/functional/make_unfused_rvalue_args.cpp +++ b/test/functional/make_unfused_rvalue_args.cpp @@ -39,7 +39,7 @@ struct test_func struct result; template - struct result< Self(Seq) > + struct result< Self(Seq &) > : mpl::if_< mpl::and_< fusion::result_of::empty, RemoveNullary >, boost::blank, mpl::identity >::type { }; diff --git a/test/functional/unfused_generic.cpp b/test/functional/unfused_generic.cpp index 3810bdcb..f1f86515 100644 --- a/test/functional/unfused_generic.cpp +++ b/test/functional/unfused_generic.cpp @@ -10,19 +10,14 @@ #include #include -#include #include #include -#include -#include -#include #include #include -#include #include namespace fusion = boost::fusion; @@ -31,7 +26,7 @@ namespace mpl = boost::mpl; using boost::noncopyable; typedef mpl::true_ no_nullary_call; -template +template struct test_func : Base { @@ -39,9 +34,8 @@ struct test_func struct result; template - struct result< Self(Seq) > - : mpl::if_< mpl::and_< fusion::result_of::empty, RemoveNullary >, - boost::blank, mpl::identity >::type + struct result< Self (Seq) > + : mpl::identity { }; template @@ -62,8 +56,6 @@ struct test_func struct fold_op { - typedef long result_type; - template long operator()(T const & elem, long value) const { @@ -76,22 +68,23 @@ struct test_func elem += sizeof(T); return value; } + + template + struct result; + + template struct result< Self(T0,T1) > + : mpl::identity + { }; }; }; void result_type_tests() { using boost::is_same; - using boost::fusion::detail::has_type; - typedef fusion::unfused_generic< test_func > test_func_1; - typedef fusion::unfused_generic< test_func > test_func_0; - - BOOST_TEST(( has_type< test_func_0::result >::value )); - BOOST_TEST(( has_type< test_func_1::result >::value )); - BOOST_TEST(( ! has_type< test_func_1::result >::value )); - BOOST_TEST(( is_same< boost::result_of< test_func_0() >::type, long >::value )); - BOOST_TEST(( is_same< boost::result_of< test_func_1(int) >::type, long >::value )); + 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() diff --git a/test/functional/unfused_lvalue_args.cpp b/test/functional/unfused_lvalue_args.cpp index 26b4535d..e7972499 100644 --- a/test/functional/unfused_lvalue_args.cpp +++ b/test/functional/unfused_lvalue_args.cpp @@ -12,9 +12,6 @@ #include #include -#include -#include -#include #include #include @@ -26,9 +23,8 @@ namespace fusion = boost::fusion; namespace mpl = boost::mpl; using boost::noncopyable; -typedef mpl::true_ no_nullary_call; -template +template struct test_func : Base { @@ -37,8 +33,7 @@ struct test_func template struct result< Self(Seq) > - : mpl::if_< mpl::and_< fusion::result_of::empty, RemoveNullary >, - boost::blank, mpl::identity >::type + : mpl::identity { }; template @@ -73,16 +68,10 @@ struct test_func void result_type_tests() { using boost::is_same; - using boost::fusion::detail::has_type; - typedef fusion::unfused_lvalue_args< test_func > test_func_1; - typedef fusion::unfused_lvalue_args< test_func > test_func_0; - - BOOST_TEST(( has_type< test_func_0::result >::value )); - BOOST_TEST(( has_type< test_func_1::result >::value )); - BOOST_TEST(( ! has_type< test_func_1::result >::value )); - BOOST_TEST(( is_same< boost::result_of< test_func_0() >::type, long >::value )); - BOOST_TEST(( is_same< boost::result_of< test_func_1(int) >::type, long >::value )); + 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() diff --git a/test/functional/unfused_rvalue_args.cpp b/test/functional/unfused_rvalue_args.cpp index da694f07..349bf7fa 100644 --- a/test/functional/unfused_rvalue_args.cpp +++ b/test/functional/unfused_rvalue_args.cpp @@ -12,14 +12,10 @@ #include #include -#include -#include -#include #include #include -#include #include namespace fusion = boost::fusion; @@ -28,7 +24,7 @@ namespace mpl = boost::mpl; using boost::noncopyable; typedef mpl::true_ no_nullary_call; -template +template struct test_func : Base { @@ -37,8 +33,7 @@ struct test_func template struct result< Self(Seq) > - : mpl::if_< mpl::and_< fusion::result_of::empty, RemoveNullary >, - boost::blank, mpl::identity >::type + : mpl::identity { }; template @@ -72,16 +67,10 @@ struct test_func void result_type_tests() { using boost::is_same; - using boost::fusion::detail::has_type; - typedef fusion::unfused_rvalue_args< test_func > test_func_1; - typedef fusion::unfused_rvalue_args< test_func > test_func_0; - - BOOST_TEST(( has_type< test_func_0::result >::value )); - BOOST_TEST(( has_type< test_func_1::result >::value )); - BOOST_TEST(( ! has_type< test_func_1::result >::value )); - BOOST_TEST(( is_same< boost::result_of< test_func_0() >::type, long >::value )); - BOOST_TEST(( is_same< boost::result_of< test_func_1(int) >::type, long >::value )); + 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() diff --git a/test/functional/unfused_typed.cpp b/test/functional/unfused_typed.cpp index 5b119ba3..7c1e3270 100644 --- a/test/functional/unfused_typed.cpp +++ b/test/functional/unfused_typed.cpp @@ -14,15 +14,10 @@ #include -#include -#include -#include #include -#include #include -#include #include namespace fusion = boost::fusion; @@ -33,12 +28,7 @@ using boost::noncopyable; typedef fusion::vector types; -typedef mpl::always< mpl::true_ > unconstrained; - -typedef mpl::equal_to< fusion::result_of::size<_>, - fusion::result_of::size > non_variadic; - -template +template struct test_func : Base { @@ -46,9 +36,8 @@ struct test_func struct result; template - struct result - : mpl::if_< typename mpl::apply::type, - mpl::identity, boost::blank >::type + struct result< Self(Seq) > + : mpl::identity { }; template @@ -89,16 +78,10 @@ struct test_func void result_type_tests() { using boost::is_same; - using boost::fusion::detail::has_type; - typedef fusion::unfused_typed< test_func, types > test_func_3; - typedef fusion::unfused_typed< test_func, types > test_func_0; - - BOOST_TEST(( has_type< test_func_0::result >::value )); - BOOST_TEST(( has_type< test_func_3::result >::value )); - BOOST_TEST(( ! has_type< test_func_3::result >::value )); - BOOST_TEST(( is_same< boost::result_of< test_func_0() >::type, long >::value )); - BOOST_TEST(( is_same< boost::result_of< test_func_3(long &, int, char) >::type, long >::value )); + typedef fusion::unfused_typed< test_func<>, types > t; + BOOST_TEST(( is_same< boost::result_of< t () >::type, long >::value )); + BOOST_TEST(( is_same< boost::result_of< t (int) >::type, long >::value )); } #if defined(BOOST_MSVC) && BOOST_MSVC < 1400 From e2015823f6c2315bb6ec0562a973be60929bdeff Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Fri, 13 Jul 2007 14:09:25 +0000 Subject: [PATCH 192/234] makes unfused_* work exclusively through boost::result_of [SVN r38198] --- .../detail/Attic/nullary_call_base.hpp | 127 --------------- .../functional/adapter/detail/access.hpp | 5 + .../functional/adapter/unfused_generic.hpp | 66 ++++---- .../adapter/unfused_lvalue_args.hpp | 54 +++---- .../adapter/unfused_rvalue_args.hpp | 54 +++---- .../functional/adapter/unfused_typed.hpp | 151 +++++++++--------- 6 files changed, 161 insertions(+), 296 deletions(-) delete mode 100644 include/boost/fusion/functional/adapter/detail/Attic/nullary_call_base.hpp diff --git a/include/boost/fusion/functional/adapter/detail/Attic/nullary_call_base.hpp b/include/boost/fusion/functional/adapter/detail/Attic/nullary_call_base.hpp deleted file mode 100644 index cd8383ae..00000000 --- a/include/boost/fusion/functional/adapter/detail/Attic/nullary_call_base.hpp +++ /dev/null @@ -1,127 +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). -==============================================================================*/ - -#if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_DETAIL_NULLARY_CALL_BASE_HPP_INCLUDED) -#define BOOST_FUSION_FUNCTIONAL_ADAPTER_DETAIL_NULLARY_CALL_BASE_HPP_INCLUDED - -#include - -#include -#include - -#include -#include - -#include - -namespace boost { namespace fusion { namespace detail -{ - struct reserved { }; - - template - struct get_result_spec - { - private: - typedef typename boost::remove_const< - typename boost::remove_reference::type>::type function; - - typedef fusion::vector0 arg; - public: - typedef typename function::template result call_0_result; - typedef typename function::template result - call_const_0_result; - }; - - template ::call_const_0_result>::value, - bool Enable = detail::has_type< - typename get_result_spec::call_0_result>::value> - struct nullary_call_base - { - protected: - typedef typename get_result_spec::call_const_0_result - call_const_0_result_class; - - typedef typename get_result_spec::call_0_result - call_0_result_class; - public: - typedef typename call_const_0_result_class::type - call_const_0_result; - - inline call_const_0_result operator()() const - { - fusion::vector0 arg; - return static_cast(this)->fnc_transformed(arg); - } - - typedef typename get_result_spec::call_0_result::type - call_0_result; - - inline call_0_result operator()() - { - fusion::vector0 arg; - return static_cast(this)->fnc_transformed(arg); - } - }; - - template - struct nullary_call_base - { - protected: - typedef typename get_result_spec::call_const_0_result - call_const_0_result_class; - - typedef typename boost::blank call_0_result_class; - public: - typedef typename call_const_0_result_class::type - call_const_0_result, call_0_result; - - inline call_const_0_result operator()() const - { - fusion::vector0 arg; - return static_cast(this)->fnc_transformed(arg); - } - }; - - template - struct nullary_call_base - { - protected: - typedef typename boost::blank call_const_0_result_class; - - typedef typename get_result_spec::call_0_result - call_0_result_class; - public: - typedef void call_const_0_result; - typedef typename call_0_result_class::type call_0_result; - - inline call_const_0_result operator()() - { - fusion::vector0 arg; - return static_cast(this)->fnc_transformed(arg); - } - }; - - template - struct nullary_call_base - { - protected: - typedef boost::blank call_0_result_class; - typedef boost::blank call_const_0_result_class; - public: - typedef void call_0_result; - typedef void call_const_0_result; - - template inline void operator()(T reserved::*) const { } - }; - -}}} - -#endif - diff --git a/include/boost/fusion/functional/adapter/detail/access.hpp b/include/boost/fusion/functional/adapter/detail/access.hpp index 29f4ad97..7860515f 100644 --- a/include/boost/fusion/functional/adapter/detail/access.hpp +++ b/include/boost/fusion/functional/adapter/detail/access.hpp @@ -31,6 +31,11 @@ namespace boost { namespace fusion { namespace detail template struct r2fp { typedef T const type; }; template struct r2fp { typedef T type; }; + // remove_const< remove_reference<_> > + template struct uncr { typedef T type; }; + template struct uncr { typedef T type; }; + template struct uncr { typedef T type; }; + template struct uncr { typedef T type; }; }}} #endif diff --git a/include/boost/fusion/functional/adapter/unfused_generic.hpp b/include/boost/fusion/functional/adapter/unfused_generic.hpp index ec3f869e..47b37268 100644 --- a/include/boost/fusion/functional/adapter/unfused_generic.hpp +++ b/include/boost/fusion/functional/adapter/unfused_generic.hpp @@ -23,7 +23,9 @@ #include #include -#include + +#include +#include namespace boost { namespace fusion { @@ -35,16 +37,9 @@ namespace boost { namespace fusion template class unfused_generic - : public detail::nullary_call_base, Function> { Function fnc_transformed; - template - friend struct detail::nullary_call_base; - - typedef detail::nullary_call_base< - fusion::unfused_generic, Function > base; - typedef typename remove_const::type>::type function; typedef typename detail::call_param::type func_const_fwd_t; @@ -54,34 +49,39 @@ namespace boost { namespace fusion : fnc_transformed(f) { } - using base::operator(); - template - struct result - { }; + struct result; - template - struct result< Self const () > - : base::call_const_0_result_class - { }; + typedef typename boost::result_of< + function const (fusion::vector0 &) >::type call_const_0_result; - template - struct result< Self() > - : base::call_0_result_class - { }; + inline call_const_0_result operator()() const + { + fusion::vector0 arg; + return this->fnc_transformed(arg); + } + + typedef typename boost::result_of< + function (fusion::vector0 &) >::type call_0_result; + + inline call_0_result operator()() + { + fusion::vector0 arg; + return this->fnc_transformed(arg); + } #define BOOST_FUSION_CODE(tpl_params,arg_types,params,args) \ template \ - inline typename function::template result)>::type \ + inline typename boost::result_of & )>::type \ operator()(params) const \ { \ BOOST_PP_CAT(fusion::vector,N) arg(args); \ return this->fnc_transformed(arg); \ } \ template \ - inline typename function::template result)>::type \ + inline typename boost::result_of & )>::type \ operator()(params) \ { \ BOOST_PP_CAT(fusion::vector,N) arg(args); \ @@ -130,24 +130,24 @@ namespace boost template struct result < Self const (BOOST_PP_ENUM_PARAMS(N,T)) > - : function::template result::type BOOST_PP_INTERCEPT) >)> + typename detail::gref::type BOOST_PP_INTERCEPT) > & )> { }; template struct result < Self(BOOST_PP_ENUM_PARAMS(N,T)) > - : function::template result::type - BOOST_PP_INTERCEPT) >)> + : boost::result_of::type BOOST_PP_INTERCEPT) > & )> { }; #endif #if BOOST_WORKAROUND(BOOST_MSVC,BOOST_TESTED_AT(1400)) template - inline typename function::template result)>::type + inline typename boost::result_of & )>::type operator()(BOOST_PP_ENUM_BINARY_PARAMS(N,PT,a)) const { BOOST_PP_CAT(fusion::vector,N) @@ -155,8 +155,8 @@ namespace boost return this->fnc_transformed(arg); } template - inline typename function::template result)>::type + inline typename boost::result_of & )>::type operator()(BOOST_PP_ENUM_BINARY_PARAMS(N,PT,a)) { BOOST_PP_CAT(fusion::vector,N) diff --git a/include/boost/fusion/functional/adapter/unfused_lvalue_args.hpp b/include/boost/fusion/functional/adapter/unfused_lvalue_args.hpp index ce205a43..6faf51be 100644 --- a/include/boost/fusion/functional/adapter/unfused_lvalue_args.hpp +++ b/include/boost/fusion/functional/adapter/unfused_lvalue_args.hpp @@ -22,7 +22,6 @@ #include #include -#include namespace boost { namespace fusion { @@ -33,17 +32,9 @@ namespace boost { namespace fusion struct void_; template class unfused_lvalue_args - : public detail::nullary_call_base - , Function> { Function fnc_transformed; - template - friend struct detail::nullary_call_base; - - typedef detail::nullary_call_base< - fusion::unfused_lvalue_args, Function > base; - typedef typename remove_const::type>::type function; typedef typename detail::call_param::type func_const_fwd_t; @@ -53,21 +44,26 @@ namespace boost { namespace fusion : fnc_transformed(f) { } - using base::operator(); - template - struct result - { }; + struct result; - template - struct result< Self const () > - : base::call_const_0_result_class - { }; + typedef typename boost::result_of< + function const (fusion::vector0 &) >::type call_const_0_result; - template - struct result< Self() > - : base::call_0_result_class - { }; + inline call_const_0_result operator()() const + { + fusion::vector0 arg; + return this->fnc_transformed(arg); + } + + typedef typename boost::result_of< + function (fusion::vector0 &) >::type call_0_result; + + inline call_0_result operator()() + { + fusion::vector0 arg; + return this->fnc_transformed(arg); + } #define BOOST_PP_FILENAME_1 \ @@ -102,21 +98,21 @@ namespace boost template struct result< Self const (BOOST_PP_ENUM_PARAMS(N,T)) > - : function::template result< function const ( + : boost::result_of< function const ( BOOST_PP_CAT(fusion::vector,N)< BOOST_PP_ENUM_BINARY_PARAMS(N, - typename detail::mref::type BOOST_PP_INTERCEPT) >)> + typename detail::mref::type BOOST_PP_INTERCEPT) > & )> { }; template struct result< Self(BOOST_PP_ENUM_PARAMS(N,T)) > - : function::template result< function ( + : boost::result_of< function ( BOOST_PP_CAT(fusion::vector,N)< BOOST_PP_ENUM_BINARY_PARAMS(N, - typename detail::mref::type BOOST_PP_INTERCEPT) >)> + typename detail::mref::type BOOST_PP_INTERCEPT) > & )> { }; template - inline typename function::template result)>::type + inline typename boost::result_of & )>::type operator()(BOOST_PP_ENUM_BINARY_PARAMS(N,T,& a)) const { BOOST_PP_CAT(fusion::vector,N)< @@ -126,8 +122,8 @@ namespace boost } template - inline typename function::template result)>::type + inline typename boost::result_of & )>::type operator()(BOOST_PP_ENUM_BINARY_PARAMS(N,T,& a)) { BOOST_PP_CAT(fusion::vector,N)< diff --git a/include/boost/fusion/functional/adapter/unfused_rvalue_args.hpp b/include/boost/fusion/functional/adapter/unfused_rvalue_args.hpp index 2320ecf9..230fee81 100644 --- a/include/boost/fusion/functional/adapter/unfused_rvalue_args.hpp +++ b/include/boost/fusion/functional/adapter/unfused_rvalue_args.hpp @@ -22,7 +22,6 @@ #include #include -#include namespace boost { namespace fusion { @@ -33,17 +32,9 @@ namespace boost { namespace fusion struct void_; template class unfused_rvalue_args - : public detail::nullary_call_base - , Function> { Function fnc_transformed; - template - friend struct detail::nullary_call_base; - - typedef detail::nullary_call_base< - fusion::unfused_rvalue_args, Function > base; - typedef typename remove_const::type>::type function; typedef typename detail::call_param::type func_const_fwd_t; @@ -53,21 +44,26 @@ namespace boost { namespace fusion : fnc_transformed(f) { } - using base::operator(); - template - struct result - { }; + struct result; - template - struct result< Self const () > - : base::call_const_0_result_class - { }; + typedef typename boost::result_of< + function const (fusion::vector0 &) >::type call_const_0_result; - template - struct result< Self() > - : base::call_0_result_class - { }; + inline call_const_0_result operator()() const + { + fusion::vector0 arg; + return this->fnc_transformed(arg); + } + + typedef typename boost::result_of< + function (fusion::vector0 &) >::type call_0_result; + + inline call_0_result operator()() + { + fusion::vector0 arg; + return this->fnc_transformed(arg); + } #define BOOST_PP_FILENAME_1 \ @@ -102,21 +98,21 @@ namespace boost template struct result< Self const (BOOST_PP_ENUM_PARAMS(N,T)) > - : function::template result< function const ( + : boost::result_of< function const ( BOOST_PP_CAT(fusion::vector,N)< BOOST_PP_ENUM_BINARY_PARAMS(N, - typename detail::cref::type BOOST_PP_INTERCEPT) >)> + typename detail::cref::type BOOST_PP_INTERCEPT) > & )> { }; template struct result< Self (BOOST_PP_ENUM_PARAMS(N,T)) > - : function::template result< function ( + : boost::result_of< function ( BOOST_PP_CAT(fusion::vector,N)< BOOST_PP_ENUM_BINARY_PARAMS(N, - typename detail::cref::type BOOST_PP_INTERCEPT) >)> + typename detail::cref::type BOOST_PP_INTERCEPT) > & )> { }; template - inline typename function::template result)>::type + inline typename boost::result_of & )>::type operator()(BOOST_PP_ENUM_BINARY_PARAMS(N,T,const& a)) const { BOOST_PP_CAT(fusion::vector,N)< @@ -126,8 +122,8 @@ namespace boost } template - inline typename function::template result)>::type + inline typename boost::result_of & )>::type operator()(BOOST_PP_ENUM_BINARY_PARAMS(N,T,const& a)) { BOOST_PP_CAT(fusion::vector,N)< diff --git a/include/boost/fusion/functional/adapter/unfused_typed.hpp b/include/boost/fusion/functional/adapter/unfused_typed.hpp index 2e0743c7..7a48b5ab 100644 --- a/include/boost/fusion/functional/adapter/unfused_typed.hpp +++ b/include/boost/fusion/functional/adapter/unfused_typed.hpp @@ -19,6 +19,8 @@ #include #include +#include + #include #include @@ -30,8 +32,7 @@ #include #include -#include -#include +#include namespace boost { namespace fusion @@ -44,59 +45,26 @@ namespace boost { namespace fusion namespace detail { template + long Arity = result_of::size::value > struct unfused_typed_impl; - - template ::type > - struct unfused_typed_next_base - { - // type of the next base class - typedef unfused_typed_impl - < Derived, Function, NextSeq, result_of::size::value, - has_type< typename Function::template result::type)> >::value - > - type; - }; - - template - struct unfused_typed_impl - : unfused_typed_next_base::type - { }; - - template - struct unfused_typed_impl - : nullary_call_base - { }; - - template - struct unfused_typed_impl - : nullary_call_base - { }; - } template class unfused_typed - : public detail::unfused_typed_next_base - < unfused_typed, - typename remove_const::type>::type, Sequence, Sequence - >::type + : public detail::unfused_typed_impl + < unfused_typed, typename detail::uncr::type, + Sequence > { Function fnc_transformed; - template - friend struct detail::unfused_typed_impl; - - template - friend struct detail::nullary_call_base; - - typedef typename remove_const::type>::type function; + typedef typename detail::uncr::type function; typedef typename detail::call_param::type func_const_fwd_t; - typedef typename detail::unfused_typed_next_base,function,Sequence,Sequence>::type base; + typedef typename detail::unfused_typed_impl< + unfused_typed,function,Sequence > base; + + template + friend struct detail::unfused_typed_impl; public: @@ -105,20 +73,44 @@ namespace boost { namespace fusion { } template - struct result - { }; - - template - struct result< Self const () > - : base::call_const_0_result_class - { }; - - template - struct result< Self() > - : base::call_0_result_class - { }; + struct result; }; + namespace detail + { + template + struct unfused_typed_impl + { + typedef fusion::vector0 arg_vector_t; + + public: + + typedef typename boost::result_of< + Function const (arg_vector_t &) > call_const_0_result; + + typedef typename boost::result_of< + Function(arg_vector_t &) > call_0_result; + + inline typename boost::result_of< + Function const (arg_vector_t &) >::type + operator()() const + { + arg_vector_t arg; + return static_cast(this)->fnc_transformed(arg); + } + +#if !BOOST_WORKAROUND(BOOST_MSVC, < 1400) + inline typename boost::result_of< + Function (arg_vector_t &) >::type + operator()() + { + arg_vector_t arg; + return static_cast(this)->fnc_transformed(arg); + } +#endif + }; + } + #define BOOST_PP_FILENAME_1 #define BOOST_PP_ITERATION_LIMITS (1,BOOST_FUSION_UNFUSED_TYPED_MAX_ARITY) #include BOOST_PP_ITERATE() @@ -129,14 +121,12 @@ namespace boost { template struct result_of< boost::fusion::unfused_typed const () > - { - typedef typename boost::fusion::unfused_typed::call_const_0_result type; - }; + : boost::fusion::unfused_typed::call_const_0_result + { }; template struct result_of< boost::fusion::unfused_typed() > - { - typedef typename boost::fusion::unfused_typed::call_0_result type; - }; + : boost::fusion::unfused_typed::call_0_result + { }; } @@ -153,29 +143,31 @@ namespace boost { template - struct unfused_typed_impl - : unfused_typed_next_base::type + struct unfused_typed_impl + : unfused_typed_impl::type, BOOST_PP_DEC(N) > { - private: - typedef typename unfused_typed_next_base< - Derived,Function,Sequence>::type base; - - typedef typename remove_const::type>::type function; typedef typename result_of::as_vector::type arg_vector_t; protected: - typedef typename function:: - template result BOOST_PP_CAT(rc,N); - typedef typename function:: - template result BOOST_PP_CAT(r,N); + + typedef typename boost::result_of< + Function const (arg_vector_t &) > BOOST_PP_CAT(rc,N); + + typedef typename boost::result_of< + Function(arg_vector_t &) > BOOST_PP_CAT(r,N); + public: - using base::operator(); + using unfused_typed_impl< Derived,Function, + typename result_of::pop_back::type, BOOST_PP_DEC(N) + >::operator(); #define M(z,i,s) \ typename call_param::type>::type a##i - inline typename function::template result::type + inline typename boost::result_of< + Function const (arg_vector_t &) >::type operator()(BOOST_PP_ENUM(N,M,arg_vector_t)) const { arg_vector_t arg(BOOST_PP_ENUM_PARAMS(N,a)); @@ -183,7 +175,8 @@ namespace boost } #if !BOOST_WORKAROUND(BOOST_MSVC, < 1400) - inline typename function::template result::type + inline typename boost::result_of< + Function (arg_vector_t &) >::type operator()(BOOST_PP_ENUM(N,M,arg_vector_t)) { arg_vector_t arg(BOOST_PP_ENUM_PARAMS(N,a)); @@ -196,6 +189,7 @@ namespace boost } // namespace detail +#if N > 0 template template struct unfused_typed::result< @@ -203,13 +197,14 @@ namespace boost : BOOST_PP_CAT(base::rc,N) { }; -#if !BOOST_WORKAROUND(BOOST_MSVC, < 1400) +# if !BOOST_WORKAROUND(BOOST_MSVC, < 1400) template template struct unfused_typed::result< Self (BOOST_PP_ENUM_PARAMS(N,T)) > : BOOST_PP_CAT(base::r,N) { }; +# endif #endif #undef N From 8ff2dca34a1f49b281e60953197fb2757f311d0b Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Fri, 13 Jul 2007 14:20:38 +0000 Subject: [PATCH 193/234] adds missing include [SVN r38199] --- include/boost/fusion/functional/adapter/unfused_lvalue_args.hpp | 2 ++ include/boost/fusion/functional/adapter/unfused_rvalue_args.hpp | 2 ++ 2 files changed, 4 insertions(+) diff --git a/include/boost/fusion/functional/adapter/unfused_lvalue_args.hpp b/include/boost/fusion/functional/adapter/unfused_lvalue_args.hpp index 6faf51be..26f79c4e 100644 --- a/include/boost/fusion/functional/adapter/unfused_lvalue_args.hpp +++ b/include/boost/fusion/functional/adapter/unfused_lvalue_args.hpp @@ -18,6 +18,8 @@ #include #include +#include + #include #include diff --git a/include/boost/fusion/functional/adapter/unfused_rvalue_args.hpp b/include/boost/fusion/functional/adapter/unfused_rvalue_args.hpp index 230fee81..9a95804a 100644 --- a/include/boost/fusion/functional/adapter/unfused_rvalue_args.hpp +++ b/include/boost/fusion/functional/adapter/unfused_rvalue_args.hpp @@ -18,6 +18,8 @@ #include #include +#include + #include #include From 897a312766b60908481034a00b3927d2c807e0a8 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Fri, 13 Jul 2007 15:11:20 +0000 Subject: [PATCH 194/234] adds const correctness [SVN r38200] --- test/functional/fused_function_object.cpp | 4 +-- test/functional/invoke_function_object.cpp | 18 ++++++------ test/functional/invoke_procedure.cpp | 29 ------------------- .../functional/make_fused_function_object.cpp | 4 +-- 4 files changed, 13 insertions(+), 42 deletions(-) diff --git a/test/functional/fused_function_object.cpp b/test/functional/fused_function_object.cpp index 911b7c69..50a1b38b 100644 --- a/test/functional/fused_function_object.cpp +++ b/test/functional/fused_function_object.cpp @@ -25,8 +25,8 @@ struct test_func template struct result; - template - struct result(T0, T1)> + template + struct result< Self(T0, T1) > { typedef int type; }; diff --git a/test/functional/invoke_function_object.cpp b/test/functional/invoke_function_object.cpp index 34a297e4..0f6272b2 100644 --- a/test/functional/invoke_function_object.cpp +++ b/test/functional/invoke_function_object.cpp @@ -41,23 +41,23 @@ struct object_nc : boost::noncopyable {}; struct fobj { // Handle nullary separately to exercise result_of support - template + template struct result; - template - struct result + template + struct result< Self(T0) > { typedef int type; }; - template - struct result + template + struct result< Self(T0, T1) > { typedef int type; }; - template - struct result + template + struct result< Self(T0, T1, T2) > { typedef int type; }; @@ -92,8 +92,8 @@ struct fobj_nc template struct result; - template - struct result + template + struct result< Self(T0) > { typedef int type; }; diff --git a/test/functional/invoke_procedure.cpp b/test/functional/invoke_procedure.cpp index 96e1468d..bf92ef23 100644 --- a/test/functional/invoke_procedure.cpp +++ b/test/functional/invoke_procedure.cpp @@ -10,8 +10,6 @@ #include #include -#include - #include #include @@ -249,35 +247,8 @@ void test_sequence(Sequence & seq) test_sequence_n(seq, mpl::int_::value>()); } - -void result_type_tests() -{ - using boost::fusion::detail::has_type; - - BOOST_TEST(( has_type< - fusion::result_of::invoke_procedure - >::value )); - BOOST_TEST(( has_type< - fusion::result_of::invoke_procedure > - >::value )); - BOOST_TEST(( ! has_type< - fusion::result_of::invoke_procedure > - >::value )); - BOOST_TEST(( has_type< - fusion::result_of::invoke_procedure > - >::value )); - BOOST_TEST(( has_type< - fusion::result_of::invoke_procedure > - >::value )); - BOOST_TEST(( ! has_type< - fusion::result_of::invoke_procedure > - >::value )); -} - int main() { - result_type_tests(); - typedef fusion::vector<> vector0; typedef fusion::vector vector1; typedef fusion::vector vector2; diff --git a/test/functional/make_fused_function_object.cpp b/test/functional/make_fused_function_object.cpp index cd01834c..51808266 100644 --- a/test/functional/make_fused_function_object.cpp +++ b/test/functional/make_fused_function_object.cpp @@ -30,8 +30,8 @@ struct test_func }; - template - struct result(T0, T1)> + template + struct result< Self(T0, T1) > { typedef int type; }; From f598633cd0f1052329a0141021ffc753ecabe518 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Fri, 13 Jul 2007 15:12:14 +0000 Subject: [PATCH 195/234] adds const-correctness, simplification [SVN r38201] --- .../invocation/invoke_function_object.hpp | 20 ++--- .../invocation/invoke_procedure.hpp | 76 ++++--------------- 2 files changed, 20 insertions(+), 76 deletions(-) diff --git a/include/boost/fusion/functional/invocation/invoke_function_object.hpp b/include/boost/fusion/functional/invocation/invoke_function_object.hpp index f06fb771..e30218e2 100644 --- a/include/boost/fusion/functional/invocation/invoke_function_object.hpp +++ b/include/boost/fusion/functional/invocation/invoke_function_object.hpp @@ -79,7 +79,7 @@ namespace boost { namespace fusion template struct invoke_function_object : detail::invoke_function_object_impl< typename boost::remove_reference::type, Sequence - >::template result<> + >::result { }; } @@ -117,18 +117,16 @@ namespace boost { namespace fusion { public: - template struct result #define M(z,j,data) \ typename boost::remove_reference< \ typename result_of::value_at_c::type >::type - : boost::result_of< - typename remove_const::type (BOOST_PP_ENUM(N,M,~))> + : boost::result_of< Function (BOOST_PP_ENUM(N,M,~)) > #undef M { }; template - static inline typename result::type + static inline typename result::type call(F & f, Sequence & s) { #define M(z,j,data) fusion::at_c(s) @@ -143,17 +141,13 @@ namespace boost { namespace fusion private: typedef invoke_function_object_param_types seq; public: - template struct result - - { - typedef typename - boost::result_of< - typename remove_const::type (BOOST_PP_ENUM_PARAMS(N,typename seq::T))>::type type; - }; + : boost::result_of< + Function (BOOST_PP_ENUM_PARAMS(N,typename seq::T)) > + { }; template - static inline typename result::type + static inline typename result::type call(F & f, Sequence & s) { #if N > 0 diff --git a/include/boost/fusion/functional/invocation/invoke_procedure.hpp b/include/boost/fusion/functional/invocation/invoke_procedure.hpp index 3e68f276..31822ade 100644 --- a/include/boost/fusion/functional/invocation/invoke_procedure.hpp +++ b/include/boost/fusion/functional/invocation/invoke_procedure.hpp @@ -19,24 +19,13 @@ #include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - #include +#include + #include #include #include -#include #include #include @@ -51,7 +40,10 @@ namespace boost { namespace fusion { namespace result_of { - template struct invoke_procedure; + template struct invoke_procedure + { + typedef void type; + }; } template @@ -69,27 +61,10 @@ namespace boost { namespace fusion template< typename Function, class Sequence, int N = result_of::size::value, - bool CBI = ft::is_callable_builtin::value, bool MFP = ft::is_member_function_pointer::value, bool RandomAccess = traits::is_random_access::value > - struct invoke_procedure_impl - { - typedef boost::blank result; - }; - - template - // Contains void type member, empty on arity mismatch - struct invoke_procedure_result - : mpl::if_< - mpl::or_< - mpl::bool_, - mpl::equal_to< ft::function_arity, N >, - mpl::and_< ft::is_callable_builtin, - mpl::less< ft::function_arity, N > > - >, mpl::identity, boost::blank - >::type - { }; + struct invoke_procedure_impl; #define BOOST_PP_FILENAME_1 \ @@ -99,15 +74,6 @@ namespace boost { namespace fusion } - namespace result_of - { - template struct invoke_procedure - : detail::invoke_procedure_impl< - typename boost::remove_reference::type, Sequence - >::result - { }; - } - template inline void invoke_procedure(Function f, Sequence & s) { @@ -137,13 +103,9 @@ namespace boost { namespace fusion #define M(z,j,data) fusion::at_c(s) - template - struct invoke_procedure_impl + template + struct invoke_procedure_impl { - struct result - : invoke_procedure_result< Function, mpl::size_t, CBI > - { }; - static inline void call(Function & f, Sequence & s) { f(BOOST_PP_ENUM(N,M,~)); @@ -152,12 +114,8 @@ namespace boost { namespace fusion #if N > 0 template - struct invoke_procedure_impl + struct invoke_procedure_impl { - struct result - : invoke_procedure_result< Function, mpl::size_t > - { }; - static inline void call(Function & f, Sequence & s) { (that_ptr::type I ## j ; \ I##j i##j = fusion::next(BOOST_PP_CAT(i,BOOST_PP_DEC(j))); - template - struct invoke_procedure_impl + template + struct invoke_procedure_impl { - struct result - : invoke_procedure_result< Function, mpl::size_t, CBI > - { }; - static inline void call(Function & f, Sequence & s) { #if N > 0 @@ -194,12 +148,8 @@ namespace boost { namespace fusion #if N > 0 template - struct invoke_procedure_impl + struct invoke_procedure_impl { - struct result - : invoke_procedure_result< Function, mpl::size_t > - { }; - static inline void call(Function & f, Sequence & s) { typedef typename result_of::begin::type I0; From 909825a34f42654c5e0bf10c2f9dfe200342b7df Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Fri, 13 Jul 2007 16:26:50 +0000 Subject: [PATCH 196/234] simplifies code (minor changes) [SVN r38202] --- .../invocation/invoke_function_object.hpp | 30 ++++++++----------- 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/include/boost/fusion/functional/invocation/invoke_function_object.hpp b/include/boost/fusion/functional/invocation/invoke_function_object.hpp index e30218e2..748d5b4b 100644 --- a/include/boost/fusion/functional/invocation/invoke_function_object.hpp +++ b/include/boost/fusion/functional/invocation/invoke_function_object.hpp @@ -19,8 +19,6 @@ #include -#include - #include #include @@ -59,10 +57,7 @@ namespace boost { namespace fusion int N = result_of::size::value, bool RandomAccess = traits::is_random_access::value > - struct invoke_function_object_impl - { - typedef boost::blank result; - }; + struct invoke_function_object_impl; template struct invoke_function_object_param_types; @@ -77,10 +72,11 @@ namespace boost { namespace fusion namespace result_of { template struct invoke_function_object - : detail::invoke_function_object_impl< + { + typedef typename detail::invoke_function_object_impl< typename boost::remove_reference::type, Sequence - >::result - { }; + >::result_type type; + }; } template @@ -117,16 +113,15 @@ namespace boost { namespace fusion { public: - struct result + typedef typename boost::result_of< #define M(z,j,data) \ typename boost::remove_reference< \ typename result_of::value_at_c::type >::type - : boost::result_of< Function (BOOST_PP_ENUM(N,M,~)) > + Function (BOOST_PP_ENUM(N,M,~)) >::type result_type; #undef M - { }; template - static inline typename result::type + static inline result_type call(F & f, Sequence & s) { #define M(z,j,data) fusion::at_c(s) @@ -141,13 +136,12 @@ namespace boost { namespace fusion private: typedef invoke_function_object_param_types seq; public: - struct result - : boost::result_of< - Function (BOOST_PP_ENUM_PARAMS(N,typename seq::T)) > - { }; + typedef typename boost::result_of< + Function (BOOST_PP_ENUM_PARAMS(N,typename seq::T)) + >::type result_type; template - static inline typename result::type + static inline result_type call(F & f, Sequence & s) { #if N > 0 From 685d26c847b9c184e3a82cc47c04640d45032386 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Fri, 13 Jul 2007 16:27:55 +0000 Subject: [PATCH 197/234] adds const correctness, disables variadic tests, for now [SVN r38203] --- test/functional/invoke.cpp | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/test/functional/invoke.cpp b/test/functional/invoke.cpp index 686554bc..f6e4c868 100644 --- a/test/functional/invoke.cpp +++ b/test/functional/invoke.cpp @@ -41,23 +41,23 @@ struct object_nc : boost::noncopyable {}; struct fobj { // Handle nullary separately to exercise result_of support - template + template struct result; - template - struct result + template + struct result< Self(T0) > { typedef int type; }; - template - struct result + template + struct result< Self(T0, T1) > { typedef int type; }; - template - struct result + template + struct result< Self(T0, T1, T2) > { typedef int type; }; @@ -86,11 +86,11 @@ struct fobj_nc : boost::noncopyable { // Handle nullary separately to exercise result_of support - template + template struct result; - template - struct result + template + struct result< Self(T0)> { typedef int type; }; @@ -342,15 +342,17 @@ void result_type_tests() BOOST_TEST(( is_same< fusion::result_of::invoke::type, int >::value )); - BOOST_TEST(( is_same< - fusion::result_of::invoke >::type, int - >::value )); +// disabled until boost::result_of supports it +// BOOST_TEST(( is_same< +// fusion::result_of::invoke >::type, int +// >::value )); BOOST_TEST(( is_same< fusion::result_of::invoke >::type, int >::value )); - BOOST_TEST(( is_same< - fusion::result_of::invoke >::type, int - >::value )); +// disabled until boost::result_of supports it +// BOOST_TEST(( is_same< +// fusion::result_of::invoke >::type, int +// >::value )); } int main() From c57e8403770c62c438a0663b39a18a17423e7f1c Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Fri, 13 Jul 2007 16:29:45 +0000 Subject: [PATCH 198/234] adds const correctness, simplifies code, fixes nullary member function invocation [SVN r38204] --- .../fusion/functional/invocation/invoke.hpp | 147 ++++++++---------- 1 file changed, 62 insertions(+), 85 deletions(-) diff --git a/include/boost/fusion/functional/invocation/invoke.hpp b/include/boost/fusion/functional/invocation/invoke.hpp index 4e156d20..259b83b7 100644 --- a/include/boost/fusion/functional/invocation/invoke.hpp +++ b/include/boost/fusion/functional/invocation/invoke.hpp @@ -22,15 +22,9 @@ #include #include #include -#include -#include -#include -#include #include #include -#include - #include #include #include @@ -39,10 +33,10 @@ #include #include +#include #include #include #include -#include #include @@ -81,45 +75,53 @@ namespace boost { namespace fusion typename Function, class Sequence, int N = result_of::size::value, bool CBI = ft::is_callable_builtin::value, - bool MFP = ft::is_member_function_pointer::value, bool RandomAccess = traits::is_random_access::value > - struct invoke_impl - { - typedef boost::blank result; - }; + struct invoke_impl; - template struct invoke_param_types; + template + struct invoke_param_types; - template - // contains type member with the result, empty on error - struct invoke_result - : mpl::if_< - mpl::or_< - mpl::equal_to< ft::function_arity, N >, - mpl::and_< ft::is_callable_builtin, - mpl::less< ft::function_arity, N > > - >, ft::result_type, boost::blank - >::type - { }; - template - struct invoke_result - : boost::result_of - { }; + template + struct invoke_data_member; - // Transform for F so that boost::result_of< F(...) > works - template struct invoke_result_of_prep - : mpl::if_< ft::is_function, boost::add_reference, - boost::remove_cv - >::type - { }; + template + struct invoke_mem_fn; #define BOOST_PP_FILENAME_1 #define BOOST_PP_ITERATION_LIMITS (0, BOOST_FUSION_INVOKE_MAX_ARITY) #include BOOST_PP_ITERATE() + template + struct invoke_nonmember_builtin + // use same implementation as for function objects but... + : invoke_impl< // ...work around boost::result_of bugs + typename mpl::eval_if< ft::is_function, + boost::add_reference, boost::remove_cv >::type, + Sequence, N, false, RandomAccess > + { }; + + template + struct invoke_impl + : mpl::if_< ft::is_member_function_pointer, + invoke_mem_fn, + invoke_nonmember_builtin + >::type + { }; + + template + struct invoke_impl + : mpl::eval_if< ft::is_member_pointer, + mpl::if_< ft::is_member_function_pointer, + invoke_mem_fn, + invoke_data_member >, + mpl::identity< invoke_nonmember_builtin< + Function,Sequence,1,RandomAccess> > + >::type + { }; + template - struct invoke_data_member + struct invoke_data_member< T C::*, Sequence > { private: @@ -137,37 +139,25 @@ namespace boost { namespace fusion public: - template - struct result - : boost::add_reference - { }; + typedef typename boost::add_reference::type + result_type; - static inline typename result<>::type call(T C::* f, Sequence & s) + static inline result_type call(T C::* f, Sequence & s) { typename result_of::front::type c = fusion::front(s); return that_ptr::get(c)->*f; } }; - - template - struct invoke_impl - : detail::invoke_data_member - { }; - - template - struct invoke_impl - : detail::invoke_data_member - { }; - } namespace result_of { template struct invoke - : detail::invoke_impl< + { + typedef typename detail::invoke_impl< typename boost::remove_reference::type, Sequence - >::template result<> - { }; + >::result_type type; + }; } template @@ -199,23 +189,18 @@ namespace boost { namespace fusion /////////////////////////////////////////////////////////////////////////////// #define N BOOST_PP_ITERATION() - template - struct invoke_impl + template + struct invoke_impl { - private: - typedef typename invoke_result_of_prep::type func; public: - template - struct result - : invoke_result< Function, mpl::size_t, CBI, + typedef typename boost::result_of< #define M(z,j,data) typename result_of::at_c::type - func(BOOST_PP_ENUM(N,M,~)) > + Function(BOOST_PP_ENUM(N,M,~)) >::type result_type; #undef M - { }; template - static inline typename result::type + static inline result_type call(F & f, Sequence & s) { #define M(z,j,data) fusion::at_c(s) @@ -223,19 +208,17 @@ namespace boost { namespace fusion } }; + #if N > 0 template - struct invoke_impl + struct invoke_mem_fn { public: - template - struct result - : invoke_result< Function, mpl::size_t > - { }; + typedef typename ft::result_type::type result_type; template - static inline typename result::type + static inline result_type call(F & f, Sequence & s) { return (that_ptr - struct invoke_impl + template + struct invoke_impl { private: - typedef typename invoke_result_of_prep::type func; typedef invoke_param_types seq; public: - template - struct result - : invoke_result< Function, mpl::size_t, CBI, - func(BOOST_PP_ENUM_PARAMS(N,typename seq::T)) > - { }; + typedef typename boost::result_of< + Function(BOOST_PP_ENUM_PARAMS(N,typename seq::T)) + >::type result_type; template - static inline typename result::type + static inline result_type call(F & f, Sequence & s) { #if N > 0 @@ -279,19 +259,16 @@ namespace boost { namespace fusion #if N > 0 template - struct invoke_impl + struct invoke_mem_fn { private: typedef invoke_param_types seq; public: - template - struct result - : invoke_result< Function, mpl::size_t > - { }; + typedef typename ft::result_type::type result_type; template - static inline typename result::type + static inline result_type call(F & f, Sequence & s) { typename seq::I0 i0 = fusion::begin(s); From f119120d24a82f4ee97f2c85d99f8e401ed22ed5 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Fri, 13 Jul 2007 16:37:22 +0000 Subject: [PATCH 199/234] corrects missing references in boost::result_of signature [SVN r38205] --- .../functional/invocation/invoke_function_object.hpp | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/include/boost/fusion/functional/invocation/invoke_function_object.hpp b/include/boost/fusion/functional/invocation/invoke_function_object.hpp index 748d5b4b..ad742265 100644 --- a/include/boost/fusion/functional/invocation/invoke_function_object.hpp +++ b/include/boost/fusion/functional/invocation/invoke_function_object.hpp @@ -27,10 +27,9 @@ #include #include #include -#include #include #include -#include +#include #include namespace boost { namespace fusion @@ -116,7 +115,7 @@ namespace boost { namespace fusion typedef typename boost::result_of< #define M(z,j,data) \ typename boost::remove_reference< \ - typename result_of::value_at_c::type >::type + typename result_of::at_c::type >::type Function (BOOST_PP_ENUM(N,M,~)) >::type result_type; #undef M @@ -161,14 +160,12 @@ namespace boost { namespace fusion { #if N > 0 typedef typename result_of::begin::type I0; - typedef typename boost::remove_reference< - typename result_of::value_of::type >::type T0; + typedef typename result_of::deref::type T0; #define M(z,i,data) \ typedef typename result_of::next< \ BOOST_PP_CAT(I,BOOST_PP_DEC(i))>::type I##i; \ - typedef typename boost::remove_reference< \ - typename result_of::value_of::type >::type T##i; + typedef typename result_of::deref::type T##i; BOOST_PP_REPEAT_FROM_TO(1,N,M,~) #undef M From 042735fd06012d99fe7bad85f33d888f7b2cbff9 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Fri, 13 Jul 2007 18:31:16 +0000 Subject: [PATCH 200/234] ported to boost::result_of-based result computation scheme [SVN r38206] --- example/cookbook/do_the_bind.cpp | 38 +++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/example/cookbook/do_the_bind.cpp b/example/cookbook/do_the_bind.cpp index 1967e956..d824c67f 100644 --- a/example/cookbook/do_the_bind.cpp +++ b/example/cookbook/do_the_bind.cpp @@ -91,8 +91,11 @@ namespace impl return bound; } - template - struct result + template + struct result; + + template + struct result< Self (T) > : mpl::eval_if< is_placeholder, result_of::at::type>, mpl::identity @@ -113,15 +116,11 @@ namespace impl : fsq_bind_args(bind_args) { } - template ::value && - !! mpl::count_if >::value) > - struct result - { }; + template + struct result; template - struct result + struct result_impl : result_of::invoke< typename result_of::front::type, typename result_of::transform< typename result_of::pop_front::type, @@ -130,8 +129,13 @@ namespace impl > { }; + template + struct result< Self (FinalArgs) > + : result_impl< typename boost::remove_reference::type > + { }; + template - inline typename result::type + inline typename result_impl::type operator()(FinalArgs const & final_args) const { return fusion::invoke( fusion::front(this->fsq_bind_args), @@ -145,8 +149,11 @@ namespace impl // Fused implementation of the 'bind' function struct fused_binder { + template + struct result; + template - struct result + struct result_impl { // We have to transform the arguments so they are held by-value // in the returned function. @@ -154,11 +161,16 @@ namespace impl fused_bound_function > type; }; + template + struct result< Self (BindArgs) > + : result_impl< typename boost::remove_reference::type > + { }; + template - inline typename result::type + inline typename result_impl< BindArgs >::type operator()(BindArgs & bind_args) const { - return typename result::type(bind_args); + return typename result< void(BindArgs) >::type(bind_args); } }; From 8525c2b0b50c4024fcdb14f67baadefcc1eea0a3 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Fri, 13 Jul 2007 18:46:28 +0000 Subject: [PATCH 201/234] changes result computation to use boost::result_of-based scheme [SVN r38207] --- example/performance/functional.cpp | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/example/performance/functional.cpp b/example/performance/functional.cpp index a4d5056b..228586eb 100644 --- a/example/performance/functional.cpp +++ b/example/performance/functional.cpp @@ -42,10 +42,7 @@ namespace return boost::fusion::fold(seq, state, sum_op()); } - template struct result - { - typedef int type; - }; + typedef int result_type; private: @@ -64,10 +61,7 @@ namespace return value; } - template struct result - { - typedef int type; - }; + typedef int result_type; }; }; @@ -98,12 +92,7 @@ namespace return a0 + a1 + a2 + a3; } - template - struct result - { - typedef int type; - }; + typedef int result_type; }; template @@ -324,5 +313,6 @@ int main() std::cout << "unfused_generic > " << call_unfused(f,res) << std::endl; total += res; } + return total; } From f05493abf0850374c66ae5144de267d579839094 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Fri, 13 Jul 2007 18:47:02 +0000 Subject: [PATCH 202/234] fixes result computation problem [SVN r38208] --- include/boost/fusion/functional/adapter/fused.hpp | 9 +++++---- .../functional/adapter/fused_function_object.hpp | 11 ++++++----- .../fusion/functional/adapter/fused_procedure.hpp | 10 +--------- 3 files changed, 12 insertions(+), 18 deletions(-) diff --git a/include/boost/fusion/functional/adapter/fused.hpp b/include/boost/fusion/functional/adapter/fused.hpp index 40096643..78ddf2ef 100644 --- a/include/boost/fusion/functional/adapter/fused.hpp +++ b/include/boost/fusion/functional/adapter/fused.hpp @@ -63,17 +63,18 @@ namespace boost { namespace fusion } template - struct result - { }; + struct result; template struct result< Self const (Seq) > - : result_of::invoke + : result_of::invoke::type > { }; template struct result< Self(Seq) > - : result_of::invoke + : result_of::invoke::type > { }; }; diff --git a/include/boost/fusion/functional/adapter/fused_function_object.hpp b/include/boost/fusion/functional/adapter/fused_function_object.hpp index b7d176d1..600d3a9a 100644 --- a/include/boost/fusion/functional/adapter/fused_function_object.hpp +++ b/include/boost/fusion/functional/adapter/fused_function_object.hpp @@ -68,18 +68,19 @@ namespace boost { namespace fusion func_fwd_t >(this->fnc_transformed,s); } - template - struct result - { }; + template + struct result; template struct result< Self const (Seq) > - : result_of::invoke_function_object + : result_of::invoke_function_object::type > { }; template struct result< Self(Seq) > - : result_of::invoke_function_object + : result_of::invoke_function_object::type > { }; }; diff --git a/include/boost/fusion/functional/adapter/fused_procedure.hpp b/include/boost/fusion/functional/adapter/fused_procedure.hpp index 7dfded18..f0f8bac4 100644 --- a/include/boost/fusion/functional/adapter/fused_procedure.hpp +++ b/include/boost/fusion/functional/adapter/fused_procedure.hpp @@ -62,15 +62,7 @@ namespace boost { namespace fusion func_fwd_t >(this->fnc_transformed,s); } - template - struct result - { }; - - template - struct result< Self(Seq) > - { - typedef void type; - }; + typedef void result_type; }; }} From 9df373af5f53cd6ca0e349d03ff306fbfc156714 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Fri, 13 Jul 2007 19:25:34 +0000 Subject: [PATCH 203/234] revises function object concepts and functional module documenation to reflect boost::result_of-based result computation [SVN r38209] --- doc/algorithms.qbk | 2 +- doc/functional.qbk | 260 +++++------ doc/fusion.qbk | 5 +- doc/html/fusion/algorithms.html | 6 +- doc/html/fusion/algorithms/iteration.html | 2 +- .../iteration/functions/accumulate.html | 100 +++-- .../algorithms/iteration/functions/fold.html | 98 ++-- .../iteration/functions/for_each.html | 78 +++- .../iteration/metafunctions/accumulate.html | 96 ++-- .../iteration/metafunctions/fold.html | 96 ++-- .../iteration/metafunctions/for_each.html | 71 ++- doc/html/fusion/algorithms/query.html | 2 +- .../algorithms/query/functions/all.html | 78 +++- .../algorithms/query/functions/any.html | 78 +++- .../algorithms/query/functions/count.html | 80 +++- .../algorithms/query/functions/count_if.html | 78 +++- .../algorithms/query/functions/find.html | 73 ++- .../algorithms/query/functions/find_if.html | 76 +++- .../algorithms/query/functions/none.html | 78 +++- .../algorithms/query/metafunctions/all.html | 74 ++- .../algorithms/query/metafunctions/any.html | 74 ++- .../algorithms/query/metafunctions/count.html | 72 ++- .../query/metafunctions/count_if.html | 71 ++- .../algorithms/query/metafunctions/find.html | 71 ++- .../query/metafunctions/find_if.html | 74 ++- .../algorithms/query/metafunctions/none.html | 74 ++- .../fusion/algorithms/transformation.html | 18 +- .../transformation/functions/clear.html | 54 ++- .../transformation/functions/erase.html | 102 +++-- .../transformation/functions/erase_key.html | 73 ++- .../transformation/functions/filter.html | 73 ++- .../transformation/functions/filter_if.html | 76 +++- .../transformation/functions/insert.html | 95 ++-- .../functions/insert_range.html | 98 ++-- .../transformation/functions/join.html | 76 +++- .../transformation/functions/pop_back.html | 54 ++- .../transformation/functions/pop_front.html | 54 ++- .../transformation/functions/push_back.html | 73 ++- .../transformation/functions/push_front.html | 73 ++- .../transformation/functions/remove.html | 73 ++- .../transformation/functions/remove_if.html | 76 +++- .../transformation/functions/replace.html | 101 +++-- .../transformation/functions/replace_if.html | 97 ++-- .../transformation/functions/reverse.html | 54 ++- .../transformation/functions/transform.html | 172 +++++-- .../transformation/functions/zip.html | 53 ++- .../transformation/metafunctions/clear.html | 49 +- .../transformation/metafunctions/erase.html | 96 ++-- .../metafunctions/erase_key.html | 71 ++- .../transformation/metafunctions/filter.html | 71 ++- .../metafunctions/filter_if.html | 74 ++- .../transformation/metafunctions/insert.html | 93 ++-- .../metafunctions/insert_range.html | 96 ++-- .../transformation/metafunctions/join.html | 10 +- .../metafunctions/pop_back.html | 52 ++- .../metafunctions/pop_front.html | 52 ++- .../metafunctions/push_back.html | 71 ++- .../metafunctions/push_front.html | 71 ++- .../transformation/metafunctions/remove.html | 71 ++- .../metafunctions/remove_if.html | 76 +++- .../transformation/metafunctions/replace.html | 71 ++- .../metafunctions/replace_if.html | 93 ++-- .../transformation/metafunctions/reverse.html | 52 ++- .../metafunctions/transform.html | 73 ++- .../transformation/metafunctions/zip.html | 10 +- doc/html/fusion/change_log.html | 3 + doc/html/fusion/extension.html | 36 +- doc/html/fusion/functional.html | 14 +- .../fusion/functional/adapters/fused.html | 127 ++++-- .../adapters/fused_function_object.html | 125 ++++-- .../functional/adapters/fused_procedure.html | 126 ++++-- .../functional/adapters/unfused_generic.html | 173 ++++--- .../adapters/unfused_lvalue_args.html | 134 +++--- .../adapters/unfused_rvalue_args.html | 134 +++--- .../functional/adapters/unfused_typed.html | 210 +++++---- doc/html/fusion/functional/concepts.html | 4 +- .../fusion/functional/concepts/callable.html | 26 +- .../functional/concepts/def_callable.html | 88 +++- doc/html/fusion/functional/concepts/poly.html | 108 +++-- .../generation/functions/mk_fused.html | 54 ++- .../generation/functions/mk_fused_fobj.html | 65 ++- .../generation/functions/mk_fused_proc.html | 54 ++- .../functions/mk_unfused_genrc.html | 60 ++- .../functions/mk_unfused_lvargs.html | 54 ++- .../functions/mk_unfused_rvargs.html | 54 ++- .../generation/metafunctions/mk_fused.html | 8 +- .../metafunctions/mk_fused_fobj.html | 8 +- .../metafunctions/mk_fused_proc.html | 8 +- .../metafunctions/mk_unfused_genrc.html | 8 +- .../metafunctions/mk_unfused_lvargs.html | 8 +- .../metafunctions/mk_unfused_rvargs.html | 8 +- doc/html/fusion/functional/invocation.html | 8 +- .../invocation/functions/invoke.html | 82 ++-- .../invocation/functions/invoke_fobj.html | 96 ++-- .../invocation/functions/invoke_proc.html | 84 ++-- .../invocation/metafunctions/invoke.html | 10 +- .../invocation/metafunctions/invoke_fobj.html | 10 +- .../invocation/metafunctions/invoke_proc.html | 10 +- doc/html/fusion/iterators.html | 2 +- .../concepts/bidirectional_iterator.html | 164 +++++-- .../iterators/concepts/forward_iterator.html | 424 ++++++++++++++---- .../concepts/random_access_iterator.html | 162 +++++-- .../fusion/iterators/functions/advance.html | 74 ++- .../fusion/iterators/functions/advance_c.html | 71 ++- .../fusion/iterators/functions/deref.html | 52 ++- .../fusion/iterators/functions/distance.html | 51 ++- doc/html/fusion/iterators/functions/next.html | 52 ++- .../fusion/iterators/functions/prior.html | 52 ++- .../iterators/metafunctions/advance.html | 74 ++- .../iterators/metafunctions/advance_c.html | 71 ++- .../fusion/iterators/metafunctions/deref.html | 52 ++- .../iterators/metafunctions/distance.html | 51 ++- .../iterators/metafunctions/equal_to.html | 49 +- .../fusion/iterators/metafunctions/next.html | 52 ++- .../fusion/iterators/metafunctions/prior.html | 52 ++- .../iterators/metafunctions/value_of.html | 52 ++- .../operators/operator_equality.html | 47 +- .../operators/operator_inequality.html | 47 +- .../operators/operator_unary_star.html | 52 ++- doc/html/fusion/notes.html | 16 +- doc/html/fusion/organization.html | 22 +- doc/html/fusion/preface.html | 129 ++++-- doc/html/fusion/quick_start.html | 30 +- doc/html/fusion/sequences.html | 2 +- doc/html/fusion/sequences/adapted.html | 6 +- .../sequences/adapted/boost__array.html | 8 +- .../sequences/adapted/boost__tuple.html | 8 +- .../sequences/adapted/boost__variant.html | 8 +- .../sequences/adapted/mpl_sequence.html | 8 +- .../fusion/sequences/adapted/std__pair.html | 8 +- doc/html/fusion/sequences/concepts.html | 4 +- .../concepts/associative_sequence.html | 222 ++++++--- .../concepts/bidirectional_sequence.html | 240 +++++++--- .../sequences/concepts/forward_sequence.html | 371 +++++++++++---- .../concepts/random_access_sequence.html | 264 ++++++++--- doc/html/fusion/sequences/containers.html | 2 +- .../fusion/sequences/containers/cons.html | 199 +++++--- .../fusion/sequences/containers/list.html | 151 +++++-- doc/html/fusion/sequences/containers/map.html | 131 ++++-- doc/html/fusion/sequences/containers/set.html | 125 ++++-- .../fusion/sequences/containers/vector.html | 125 ++++-- doc/html/fusion/sequences/conversion.html | 8 +- .../conversion/functions/as_list.html | 49 +- .../conversion/functions/as_map.html | 49 +- .../conversion/functions/as_set.html | 49 +- .../conversion/functions/as_vector.html | 49 +- .../conversion/metafunctions/as_list.html | 51 ++- .../conversion/metafunctions/as_map.html | 51 ++- .../conversion/metafunctions/as_set.html | 51 ++- .../conversion/metafunctions/as_vector.html | 51 ++- doc/html/fusion/sequences/generation.html | 8 +- .../sequences/generation/functions.html | 1 + .../generation/functions/list_tie.html | 58 ++- .../generation/functions/make_cons.html | 74 ++- .../generation/functions/make_list.html | 60 ++- .../generation/functions/make_map.html | 88 ++-- .../generation/functions/make_set.html | 64 ++- .../generation/functions/make_vector.html | 60 ++- .../sequences/generation/functions/tiers.html | 11 +- .../generation/functions/vector_tie.html | 64 ++- .../sequences/generation/metafunctions.html | 7 +- .../generation/metafunctions/list_tie.html | 54 ++- .../generation/metafunctions/make_cons.html | 70 ++- .../generation/metafunctions/make_list.html | 54 ++- .../generation/metafunctions/make_map.html | 84 ++-- .../generation/metafunctions/make_set.html | 58 ++- .../generation/metafunctions/make_vector.html | 54 ++- .../generation/metafunctions/vector_tie.html | 60 ++- doc/html/fusion/sequences/intrinsics.html | 8 +- .../sequences/intrinsics/functions.html | 1 + .../sequences/intrinsics/functions/at.html | 74 ++- .../sequences/intrinsics/functions/at_c.html | 72 ++- .../intrinsics/functions/at_key.html | 77 +++- .../sequences/intrinsics/functions/back.html | 52 ++- .../sequences/intrinsics/functions/begin.html | 53 ++- .../sequences/intrinsics/functions/empty.html | 52 ++- .../sequences/intrinsics/functions/end.html | 53 ++- .../sequences/intrinsics/functions/front.html | 52 ++- .../intrinsics/functions/has_key.html | 71 ++- .../sequences/intrinsics/functions/size.html | 52 ++- .../sequences/intrinsics/metafunctions.html | 7 +- .../intrinsics/metafunctions/at.html | 78 +++- .../intrinsics/metafunctions/at_c.html | 75 +++- .../intrinsics/metafunctions/at_key.html | 75 +++- .../intrinsics/metafunctions/back.html | 52 ++- .../intrinsics/metafunctions/begin.html | 52 ++- .../intrinsics/metafunctions/empty.html | 52 ++- .../intrinsics/metafunctions/end.html | 52 ++- .../intrinsics/metafunctions/front.html | 52 ++- .../intrinsics/metafunctions/has_key.html | 71 ++- .../intrinsics/metafunctions/size.html | 52 ++- .../intrinsics/metafunctions/value_at.html | 74 ++- .../intrinsics/metafunctions/value_at_c.html | 71 ++- .../metafunctions/value_at_key.html | 77 +++- .../sequences/operators/comparison.html | 2 +- .../sequences/operators/comparison/equal.html | 51 ++- .../operators/comparison/greater_than.html | 49 +- .../comparison/greater_than_equal.html | 49 +- .../operators/comparison/less_than.html | 49 +- .../operators/comparison/less_than_equal.html | 49 +- .../operators/comparison/not_equal.html | 49 +- doc/html/fusion/sequences/operators/i_o.html | 4 +- .../fusion/sequences/operators/i_o/in.html | 68 ++- .../fusion/sequences/operators/i_o/out.html | 68 ++- doc/html/fusion/sequences/views.html | 2 +- .../fusion/sequences/views/filter_view.html | 135 ++++-- .../sequences/views/iterator_range.html | 151 +++++-- .../fusion/sequences/views/joint_view.html | 140 ++++-- .../fusion/sequences/views/reverse_view.html | 115 +++-- .../fusion/sequences/views/single_view.html | 111 +++-- .../sequences/views/transform_view.html | 207 ++++++--- doc/html/fusion/sequences/views/zip_view.html | 126 ++++-- doc/html/fusion/support/category_of.html | 49 +- doc/html/fusion/support/deduce.html | 10 +- doc/html/fusion/support/deduce_sequence.html | 10 +- doc/html/fusion/support/is_sequence.html | 49 +- doc/html/fusion/support/is_view.html | 49 +- doc/html/fusion/support/pair.html | 221 ++++++--- doc/html/fusion/support/tag_of.html | 49 +- .../fusion/tuples/class_template_tuple.html | 4 +- .../class_template_tuple/construction.html | 4 +- .../class_template_tuple/element_access.html | 4 +- .../relational_operators.html | 4 +- .../tuple_creation_functions.html | 4 +- .../tuple_helper_classes.html | 4 +- doc/html/fusion/tuples/pairs.html | 4 +- doc/html/index.html | 14 +- 227 files changed, 10684 insertions(+), 4457 deletions(-) diff --git a/doc/algorithms.qbk b/doc/algorithms.qbk index b659f80b..43b848ab 100644 --- a/doc/algorithms.qbk +++ b/doc/algorithms.qbk @@ -174,7 +174,7 @@ Applies a unary function object to each element of a sequence. [table Parameters [[Parameter][Requirement][Description]] [[`seq`][A model of __forward_sequence__, `f(e)` must be a valid expression for each element `e` in `seq`][Operation's argument]] - [[`f`][A unary function object][Operation's argument]] + [[`f`][A unary __reg_callable_obj__][Operation's argument]] ] [heading Expression Semantics] diff --git a/doc/functional.qbk b/doc/functional.qbk index 222aebee..a2e566a3 100644 --- a/doc/functional.qbk +++ b/doc/functional.qbk @@ -19,7 +19,7 @@ __sequence__, introducing yet another function provides a solution: invoke(f,my_sequence) -Alternatively it's possible to apply a simple transformation to [^f] in order +Alternatively it is possible to apply a simple transformation to [^f] in order to achieve the same effect: f tuple <=> ``f'`` (tuple) @@ -66,44 +66,50 @@ returns an adapter instance for the given argument. [section Concepts] + [section:callable Callable Object] +[heading Description] + A pointer to a function, a pointer to member function, a pointer to member data, or a class type whose objects can appear immediately to the left of a function call operator. -[/ TODO: note about TR1, link to current draft] +[heading Models] +* function pointer types +* member (function or data) pointer types +* all kinds of function objects [endsect] -[section:poly Polymorphic Function Object] +[section:reg_callable Regular Callable Object] -[heading Description] +[heading Description] -A type of function object with a nested metafunction `result`. `result` -returns the result type of calling the function object, given the argument -types. +A non-member-pointer __callable_obj__ type: A pointer to a function or a class +type whose objects can appear immediately to the left of a function call operator. [heading Refinement of] * __callable_obj__ [variablelist Notation - [[`F`][A Polymorphic Function Object type]] - [[`f`][A Polymorphic Function Object]] - [[`T1 ...TN`][Arbitrary types]] - [[`t1 ...tN`][Objects with types `T1 ...TN`]] + [[`F`][A possibly const qualified Deferred Callable Object type]] + [[`f`][An object or reference to an object of type F]] + [[`A1 ...AN`][Argument types]] + [[`a1 ...aN`][Objects or references to objects with types `A1 ...AN`]] ] [heading Expression requirements] [table [[Expression][Return Type][Runtime Complexity]] - [[`f(t1, ...tN)`][`F::result::type`][Unspecified]] + [[`f(a1, ...aN)`][Unspecified][Unspecified]] ] [heading Models] -* all Fusion __functional_adapters__ +* function pointer types +* all kinds of function objects [endsect] @@ -112,29 +118,71 @@ types. [heading Description] -__callable_obj__ that works with __boost_result_of__ to determine the result -of a call (such as the function objects provided by the standard library). +__callable_obj__ types that work with __boost_result_of__ to determine the +result of a call. [heading Refinement of] * __callable_obj__ +[blurb note Once C++ supports the [^decltype] keyword, all models of +__callable_obj__ will also be models of __def_callable_obj__, because +function objects won't need client-side support for `result_of`. +] + [variablelist Notation - [[`F`][A Deferred Callable Object type]] - [[`T1 ...TN`][Arbitrary types]] + [[`F`][A possibly const qualified Deferred Callable Object type]] + [[`A1 ...AN`][Argument types]] + [[`a1 ...aN`][Objects or references to objects with types `A1 ...AN`]] + [[`T1 ...TN`][`T`i is `A`i `&` if `a`i is an __lvalue__, same as `A`i, otherwise]] ] [heading Expression requirements] [table [[Expression][Type]] - [[__boost_result_of_call__`< F(T1 ...TN) >::type`][Unspecified]] + [[__boost_result_of_call__`< F(T1 ...TN) >::type`][Result of a call with `A1 ...AN`-typed arguments]] ] [heading Models] +* __poly_func_obj__ types +* member (function or data) pointer types + +[endsect] + + +[section:poly Polymorphic Function Object] + +[heading Description] + +A non-member-pointer __def_callable_obj__ type. + +[heading Refinement of] +* __reg_callable_obj__ +* __def_callable_obj__ + +[variablelist Notation + [[`F`][A possibly const-qualified Polymorphic Function Object type]] + [[`f`][An object or reference to an object of type F]] + [[`A1 ...AN`][Argument types]] + [[`a1 ...aN`][Objects or references to objects with types `A1 ...AN`]] + [[`T1 ...TN`][`T`i is `A`i `&` if `a`i is an __lvalue__, same as `A`i, otherwise]] +] + +[heading Expression requirements] + +[table + [[Expression][Return Type][Runtime Complexity]] + [[`f(a1, ...aN)`][`result_of< F(T1, ...TN) >::type`][Unspecified]] +] + +[heading Models] +* function pointers +* function objects of the Standard Library * all Fusion __functional_adapters__ [endsect] + [endsect] [/ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ] @@ -149,10 +197,6 @@ of a call (such as the function objects provided by the standard library). Calls a __def_callable_obj__ with the arguments from a __sequence__. -The corresponding metafunction, __result_of_invoke__ does not define a -`type` member for target functions of non-class type whose arity is not -satisfied by the size of the sequence. - The first template parameter can be specialized explicitly to avoid copying and/or to control the const qualification of a function object. @@ -216,10 +260,6 @@ the result of the call expression. Calls a __callable_obj__ with the arguments from a __sequence__. The result of the call is ignored. -The corresponding metafunction, __result_of_invoke_procedure, does not define -a `type` member for target functions of non-class type whose arity is not -satisfied by the size of the sequence. - The first template parameter can be specialized explicitly to avoid copying and/or to control the const qualification of a function object. @@ -285,10 +325,6 @@ implemented). Calls a __poly_func_obj__ with the arguments from a __sequence__. -The corresponding metafunction, __result_of_invoke_function_object__, does -not define a `type` member, if the nested `result` class template of the -target function object is empty. - The first template parameter can be specialized explicitly to avoid copying and/or to control the const qualification of a function object. @@ -316,7 +352,7 @@ and/or to control the const qualification of a function object. [heading Expression Semantics] - invoke_procedure(f,s); + invoke_function_object(f,s); [*Return type]: Return type of `f` when invoked with the elements in `s` as its arguments. @@ -330,11 +366,12 @@ result of the call expression. [heading Example] struct sub { - template - struct result - { - typedef T type; - }; + template + struct result; + + template + struct result< Self(T,T) > + { typedef typename remove_reference::type type; }; template T operator()(T lhs, T rhs) const @@ -366,9 +403,6 @@ result of the call expression. [heading Description] Returns the result type of __invoke__. -Empty for non-class target function types whose arity is not satisfied by -the size of the sequence. - [heading Synopsis] namespace result_of { @@ -393,9 +427,6 @@ the size of the sequence. [heading Description] Returns the result type of __invoke_procedure__. -Empty for non-class target function types whose arity is not satisfied by -the size of the sequence. - [heading Synopsis] namespace result_of { @@ -420,8 +451,6 @@ the size of the sequence. [heading Description] Returns the result type of __invoke_function_object__. -Empty if the target function's nested `result` class template is empty. - [heading Synopsis] namespace result_of { @@ -459,17 +488,13 @@ An unary __poly_func_obj__ adapter template for __def_callable_obj__ target functions. It takes a __forward_sequence__ that contains the arguments for the target function. -The nested `result` metafunction does not define a `type` member for target -functions of non-class type whose arity is not satisfied by the size of the -sequence. - The type of the target function is allowed to be const qualified or a reference. Const qualification is preserved and propagated appropriately -(in other words, only const versions of [^operator()] can be used for an +(in other words, only const versions of [^operator()] can be used for a target function object that is const or, if the target function object is held by value, the adapter is const - these semantics have nothing to do with the const qualification of a member function, which is referring -to the type of object pointed to by [^this] that is specified with the +to the type of object pointed to by [^this] which is specified with the first element in the sequence passed to the adapter). If the target function is a pointer to a class members, the corresponding @@ -534,17 +559,15 @@ An unary __poly_func_obj__ adapter template for __callable_obj__ target functions. It takes a __forward_sequence__ that contains the arguments for the target function. -The result is discared and the adapter's return type is `void`. The nested -`result` metafunction does not define a `type` member for target functions -of non-class type whose arity is not satisfied by the size of the sequence. +The result is discared and the adapter's return type is `void`. The type of the target function is allowed to be const qualified or a reference. Const qualification is preserved and propagated appropriately -(in other words, only const versions of [^operator()] can be used for an +(in other words, only const versions of [^operator()] can be used for a target function object that is const or, if the target function object is held by value, the adapter is const - these semantics have nothing to do with the const qualification of a member function, which is referring -to the type of object pointed to by [^this] that is specified with the +to the type of object pointed to by [^this] which is specified with the first element in the sequence passed to the adapter). If the target function is a pointer to a members function, the corresponding @@ -554,8 +577,8 @@ defined (Boost provides this function for [^std::auto_ptr] and __boost_shared_ptr_call__). The target function must not be a pointer to a member object (dereferencing -such a pointer without returning anything does not make sense, so it isn't -implemented). +such a pointer without returning anything does not make sense, so this case +is not implemented). [heading Header] #include @@ -625,8 +648,6 @@ An unary __poly_func_obj__ adapter template for a __poly_func_obj__ target function. It takes a __forward_sequence__ that contains the arguments for the target function. -The nested `result` metafunction is inhertied from the target function. - The type of the target function is allowed to be const qualified or a reference. Const qualification is preserved and propagated appropriately (in other words, only const versions of [^operator()] can be used for an @@ -680,11 +701,12 @@ is held by value, the adapter is const). struct sub { - template - struct result - { - typedef T type; - }; + template + struct result; + + template + struct result< Self(T,T) > + { typedef typename remove_reference::type type; }; template T operator()(T lhs, T rhs) const @@ -726,16 +748,6 @@ compile time expensive operation (see __the_forwarding_problem__ for details). Therefore, there are two, lightweight and more restricted variants of this class template, __unfused_lvalue_args__ and __unfused_rvalue_args__.] -The overload set of the adapter's function call operator can be restricted -by removing the `type` member from the nested result metafunction of the -__poly_func_obj__ (in this case the substitution-failure-is-not-an-error -principle applies for non-nullary case and nullary calls are explicitly -disabled by the library). - -[caution As the nullary call operator cannot be a template it will be -instantiated along with the class template, so it must be disabled (as -described above) in cases where it isn't instantiable.] - The type of the target function is allowed to be const qualified or a reference. Const qualification is preserved and propagated appropriately (in other words, only const versions of [^operator()] can be used if @@ -782,24 +794,27 @@ object is held by value, the adapter is const). template class fused_bound_1st { - typename traits::__deduce__::type fnc_deferred; - typename traits::__deduce__::type xxx_bound; + typename traits::deduce::type fnc_deferred; + typename traits::deduce::type xxx_bound; public: fused_bound_1st(Function deferred, T bound) : fnc_deferred(deferred), xxx_bound(bound) { } - template - struct result - : __result_of_invoke__< Function, - typename __result_of_push_front__::type > + template + struct result; + + template + struct result< Self(Seq) > + : result_of::invoke< Function, typename result_of::push_front< + typename remove_reference::type, T>::type > { }; template - typename result::type operator()(Seq const & s) const + typename result< void(Seq) >::type operator()(Seq const & s) const { - return __invoke__(fnc_deferred, push_front(s,xxx_bound)); + return invoke(fnc_deferred, push_front(s,xxx_bound)); } }; @@ -819,7 +834,7 @@ object is held by value, the adapter is const). void try_it() { assert(bind_1st(& test_func,3)(-2,-1) == 0); - assert(bind_1st(__std_plus_doc__(), 1)(0.5f) == 1.5f); + assert(bind_1st(std::plus(), 1)(0.5f) == 1.5f); } [heading See also] @@ -841,16 +856,6 @@ target function. When called, its arguments are bundled to a __random_access_sequence__ of references that is passed to the target function object. Only __lvalue__ arguments are accepted. -The overload set of the adapter's function call operator can be restricted -by removing the `type` member from the nested result metafunction of the -__poly_func_obj__ (in this case the substitution-failure-is-not-an-error -principle applies for non-nullary calls and nullary calls are explicitly -disabled by the library). - -[caution As the nullary call operator cannot be a template it will be -instantiated along with the class template, so it must be disabled (as -described above) in cases where it isn't instantiable.] - The type of the target function is allowed to be const qualified or a reference. Const qualification is preserved and propagated appropriately (in other words, only const versions of [^operator()] can be used if @@ -933,16 +938,6 @@ target function. When called, its arguments are bundled to a __random_access_sequence__ of references that is passed to the target function object. All referenced objects in the sequence are const qualified. -The overload set of the adapter's function call operator can be restricted -by removing the `type` member from the nested result metafunction of the -__poly_func_obj__ (in this case the substitution-failure-is-not-an-error -principle applies for non-nullary calls and nullary calls are explicitly -disabled by the library). - -[caution As the nullary call operator cannot be a template it will be -instantiated along with the class template, so it must be disabled (as -described above) in cases where it isn't instantiable.] - The type of the target function is allowed to be const qualified or a reference. Const qualification is preserved and propagated appropriately (in other words, only const versions of [^operator()] can be used if @@ -1029,16 +1024,6 @@ The call operators of the resulting function object are strictly typed By default, call operators with zero to N parameters are generated to, where N is the size of the __sequence__ that specifies the types. -The overload set of the adapter's function call operator can be restricted -by removing the `type` member from the nested result metafunction of the -__poly_func_obj__ (in this case the substitution-failure-is-not-an-error -principle applies for non-nullary calls and nullary calls are explicitly -disabled by the library). - -[caution As the function call operators are not templates, they are -instantiated along with the class template, so they must be disabled (as -described above) in cases where they are not instantiable.] - The type of the target function is allowed to be const qualified or a reference. Const qualification is preserved and propagated appropriately (in other words, only const versions of [^operator()] can be used if @@ -1114,38 +1099,40 @@ signature is optimized automatically to avoid by-value parameters.] : tie_dest(dest) { } - template - struct result - { - typedef void type; - }; + typedef void result_type; template void operator()(Seq const & s) const { - __for_each__(__zip__(tie_dest,s), __fused__() ); + for_each( zip(tie_dest,s), fused() ); } }; // accepts a tie and creates a typed function object from it struct fused_parallel_adder_maker { - template - struct result + template + struct result; + + template + struct result< Self(Seq) > { - typedef unfused_typed, - typename mpl::transform >::type > type; + typedef typename remove_reference::type seq; + + typedef unfused_typed< fused_parallel_adder, + typename mpl::transform >::type > type; }; template - typename result::type operator()(Seq const & tie) + typename result< void(Seq) >::type operator()(Seq const & tie) { - return typename result::type(fused_parallel_adder(tie)); + return typename result< void(Seq) >::type( + fused_parallel_adder(tie) ); } }; - __unfused_lvalue_args__ parallel_add; + unfused_lvalue_args parallel_add; - int main() + void try_it() { int a = 2; char b = 'X'; // the second call is strictly typed with the types deduced from the @@ -1154,8 +1141,6 @@ signature is optimized automatically to avoid by-value parameters.] parallel_add(a,b)(3); parallel_add(a,b)(); assert(a == 8 && b == 'Z'); - - return 0; } [heading See also] @@ -1297,11 +1282,12 @@ The usual __element_conversion__ is applied to the target function. [heading Example] struct sub { - template - struct result - { - typedef T type; - }; + template + struct result; + + template + struct result< Self(T,T) > + { typedef typename remove_reference::type type; }; template T operator()(T lhs, T rhs) const @@ -1357,11 +1343,7 @@ The usual __element_conversion__ is applied to the target function. [heading Example] struct bottles_song { - template - struct result - : mpl::if_< mpl::less< __result_of_size__, mpl::int_<2> >, - boost::blank, mpl::identity >::type - { }; + typedef void result_type; template void operator()(Seq & s) const diff --git a/doc/fusion.qbk b/doc/fusion.qbk index 0a0cf9e5..b53fee73 100644 --- a/doc/fusion.qbk +++ b/doc/fusion.qbk @@ -1,7 +1,7 @@ [library Fusion [quickbook 1.3] [version 2.0] - [authors [de Guzman, Joel], [Marsden, Dan]] + [authors [de Guzman, Joel], [Marsden, Dan], [Schwinger, Tobias]] [copyright 2001 2002 2003 2004 2005 2006 2007 Joel de Guzman, Dan Marsden, Tobias Schwinger] [purpose Statically Typed Heterogeneous Data Structures and Algorithms] [license @@ -250,8 +250,9 @@ [def __tuple_get__ [link fusion.tuples.class_template_tuple.element_access `get`]] [def __callable_obj__ [link fusion.functional.concepts.callable Callable Object]] -[def __poly_func_obj__ [link fusion.functional.concepts.poly Polymorphic Function Object]] [def __def_callable_obj__ [link fusion.functional.concepts.def_callable Deferred Callable Object]] +[def __reg_callable_obj__ [link fusion.functional.concepts.reg_callable Regular Callable Object]] +[def __poly_func_obj__ [link fusion.functional.concepts.poly Polymorphic Function Object]] [def __functional_adapters__ [link fusion.functional.adapters functional adapters]] [def __fused__ [link fusion.functional.adapters.fused `fused`]] [def __fused_procedure__ [link fusion.functional.adapters.fused_procedure `fused_procedure`]] diff --git a/doc/html/fusion/algorithms.html b/doc/html/fusion/algorithms.html index 89f94e6c..fdfdb81a 100644 --- a/doc/html/fusion/algorithms.html +++ b/doc/html/fusion/algorithms.html @@ -44,7 +44,7 @@

    - + Lazy Evaluation

    @@ -67,7 +67,7 @@ as we want without incurring a high runtime penalty.

    - + Sequence Extension

    @@ -90,7 +90,7 @@ functions to convert back to the original sequence type.

    - + Header

    diff --git a/doc/html/fusion/algorithms/iteration.html b/doc/html/fusion/algorithms/iteration.html
    index 31990fd7..49fd6ae5 100644
    --- a/doc/html/fusion/algorithms/iteration.html
    +++ b/doc/html/fusion/algorithms/iteration.html
    @@ -34,7 +34,7 @@
             a sequence repeatedly applying an operation to its elements.
           

    - + Header

    diff --git a/doc/html/fusion/algorithms/iteration/functions/accumulate.html b/doc/html/fusion/algorithms/iteration/functions/accumulate.html
    index 7ed3e1ed..960351da 100644
    --- a/doc/html/fusion/algorithms/iteration/functions/accumulate.html
    +++ b/doc/html/fusion/algorithms/iteration/functions/accumulate.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -37,7 +37,7 @@ fold.

    - + Synopsis
    @@ -50,7 +50,7 @@
         Sequence& seq, State const& initial_state, F const& f);
     
    -

    Table 1.33. Parameters

    +

    Table 1.34. Parameters

    @@ -58,42 +58,86 @@ - - - + + + - - + - + Sequence, f(eN + ....f(e2,f(e1,initial_state))) must be a valid expression for + each element e1 + to eN in seq +

    + + - - - + + + - - + - + Function Object +

    + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    seqA - model of seq +

    +
    +

    + A model of Forward - Sequence, f(eN ....f(e2,f(e1,initial_state))) must be a valid expression for - each element e1 to - eN in seq -

    Operation's argument +

    + Operation's argument +

    +
    initial_stateAny - typeInitial state +

    + initial_state +

    +
    +

    + Any type +

    +
    +

    + Initial state +

    +
    fA - model of binary f +

    +
    +

    + A model of binary Polymorphic - Function Object -

    Operation's argument +

    + Operation's argument +

    +
    - + Expression Semantics
    @@ -108,21 +152,21 @@ where e1 ...eN are the elements of seq.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of f.

    - + Header
     #include <boost/fusion/algorithm/iteration/accumulate.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithms/iteration/functions/fold.html b/doc/html/fusion/algorithms/iteration/functions/fold.html
    index 800e4803..a682962e 100644
    --- a/doc/html/fusion/algorithms/iteration/functions/fold.html
    +++ b/doc/html/fusion/algorithms/iteration/functions/fold.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -36,7 +36,7 @@ to each element of a sequence and the previous state.

    - + Synopsis
    @@ -49,7 +49,7 @@
         Sequence& seq, State const& initial_state, F const& f);
     
    -

    Table 1.32. Parameters

    +

    Table 1.33. Parameters

    @@ -57,41 +57,85 @@ - - - + + + - - + - + Sequence,f(e) must be a valid expression for + each element e + in seq +

    + + - - - + + + - - + - + Function Object +

    + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    seqA - model of seq +

    +
    +

    + A model of Forward - Sequence,f(e) must be a valid expression for each - element e in seq -

    Operation's argument +

    + Operation's argument +

    +
    initial_stateAny - typeInitial state +

    + initial_state +

    +
    +

    + Any type +

    +
    +

    + Initial state +

    +
    fA - model of binary f +

    +
    +

    + A model of binary Polymorphic - Function Object -

    Operation's argument +

    + Operation's argument +

    +
    - + Expression Semantics
    @@ -106,21 +150,21 @@ where e1 ...eN are the elements of seq.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of f.

    - + Header
     #include <boost/fusion/algorithm/iteration/fold.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithms/iteration/functions/for_each.html b/doc/html/fusion/algorithms/iteration/functions/for_each.html
    index 863f7897..75854a61 100644
    --- a/doc/html/fusion/algorithms/iteration/functions/for_each.html
    +++ b/doc/html/fusion/algorithms/iteration/functions/for_each.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Applies a unary function object to each element of a sequence.

    - + Synopsis
    @@ -45,7 +45,7 @@
         Sequence& seq, F const& f);
     
    -

    Table 1.34. Parameters

    +

    Table 1.35. Parameters

    @@ -53,32 +53,68 @@ - - - + + + - - + - + Sequence, f(e) must be a valid expression for + each element e + in seq +

    + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    seqA - model of seq +

    +
    +

    + A model of Forward - Sequence, f(e) must be a valid expression for each - element e in seq -

    Operation's argument +

    + Operation's argument +

    +
    fA - unary function objectOperation's argument +

    + f +

    +
    +

    + A unary Regular + Callable Object +

    +
    +

    + Operation's argument +

    +
    - + Expression Semantics
    @@ -93,21 +129,21 @@ in seq.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of f.

    - + Header
     #include <boost/fusion/algorithm/iteration/for_each.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html b/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html
    index 49b016a9..02d9802b 100644
    --- a/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html
    +++ b/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the result type of accumulate.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.36. Parameters

    +

    Table 1.37. Parameters

    @@ -55,43 +55,83 @@ - - - + + + - - + - + Sequence +

    + + - - - + + + - - + - + Function Object +

    + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    SequenceA - model of Sequence +

    +
    +

    + A model of Forward - Sequence -

    The sequence to iterate +

    + The sequence to iterate +

    +
    StateAny - typeThe initial state for the first application of - F - +

    + State +

    +
    +

    + Any type +

    +
    +

    + The initial state for the first application of F +

    +
    FA - model of binary F +

    +
    +

    + A model of binary Polymorphic - Function Object -

    The operation to be applied - on forward traversal +

    + The operation to be applied on forward traversal +

    +
    - + Expression Semantics
    @@ -111,14 +151,14 @@ Function Object of type F.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of F.

    - + Header
    diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/fold.html b/doc/html/fusion/algorithms/iteration/metafunctions/fold.html
    index c935dc93..23daef97 100644
    --- a/doc/html/fusion/algorithms/iteration/metafunctions/fold.html
    +++ b/doc/html/fusion/algorithms/iteration/metafunctions/fold.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the result type of fold.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.35. Parameters

    +

    Table 1.36. Parameters

    @@ -55,43 +55,83 @@ - - - + + + - - + - + Sequence +

    + + - - - + + + - - + - + Function Object +

    + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    SequenceA - model of Sequence +

    +
    +

    + A model of Forward - Sequence -

    The sequence to iterate +

    + The sequence to iterate +

    +
    StateAny - typeThe initial state for the first application of - F - +

    + State +

    +
    +

    + Any type +

    +
    +

    + The initial state for the first application of F +

    +
    FA - model of binary F +

    +
    +

    + A model of binary Polymorphic - Function Object -

    The operation to be applied - on forward traversal +

    + The operation to be applied on forward traversal +

    +
    - + Expression Semantics
    @@ -111,14 +151,14 @@ Function Object of type F.

    - + Complexity

    Linear, exactly result_of::size<Sequence>::value applications of F.

    - + Header
    diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html b/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html
    index 8a0a3ba5..a6d600c2 100644
    --- a/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html
    +++ b/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html
    @@ -30,11 +30,11 @@
                 return type of for_each is always void.
               

    - + Description
    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.37. Parameters

    +

    Table 1.38. Parameters

    @@ -56,31 +56,64 @@ - - - + + + - - + - + Sequence +

    + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    SequenceA - model of Sequence +

    +
    +

    + A model of Forward - Sequence -

    Operation's argument +

    + Operation's argument +

    +
    FAny - typeOperation's argument +

    + F +

    +
    +

    + Any type +

    +
    +

    + Operation's argument +

    +
    - + Expression Semantics
    @@ -98,14 +131,14 @@ return type is always void.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/query.html b/doc/html/fusion/algorithms/query.html
    index 2d35022d..e55d91d0 100644
    --- a/doc/html/fusion/algorithms/query.html
    +++ b/doc/html/fusion/algorithms/query.html
    @@ -33,7 +33,7 @@
             The query algorithms provide support for searching and analyzing sequences.
           

    - + Header

    diff --git a/doc/html/fusion/algorithms/query/functions/all.html b/doc/html/fusion/algorithms/query/functions/all.html
    index b060a62b..fa6ceda0 100644
    --- a/doc/html/fusion/algorithms/query/functions/all.html
    +++ b/doc/html/fusion/algorithms/query/functions/all.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -37,7 +37,7 @@ element of seq.

    - + Synopsis
    @@ -49,7 +49,7 @@
         Sequence const& seq, F f);
     
    -

    Table 1.39. Parameters

    +

    Table 1.40. Parameters

    @@ -57,34 +57,66 @@ - - - + + + - - + - + Sequence, f(e) is a valid expression, convertible + to bool, for every + element e in seq +

    + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    seqA - model of seq +

    +
    +

    + A model of Forward - Sequence, f(e) is a valid expression, convertible - to bool, for every element - e in seq -

    The sequence - to search +

    + The sequence to search +

    +
    fA - unary function objectThe search predicate +

    + f +

    +
    +

    + A unary function object +

    +
    +

    + The search predicate +

    +
    - + Expression Semantics
    @@ -101,21 +133,21 @@ element e in seq.

    - + Complexity

    Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
     #include <boost/fusion/algorithm/query/all.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithms/query/functions/any.html b/doc/html/fusion/algorithms/query/functions/any.html
    index b8f49487..b7d148d3 100644
    --- a/doc/html/fusion/algorithms/query/functions/any.html
    +++ b/doc/html/fusion/algorithms/query/functions/any.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -37,7 +37,7 @@ least one element of seq.

    - + Synopsis
    @@ -49,7 +49,7 @@
         Sequence const& seq, F f);
     
    -

    Table 1.38. Parameters

    +

    Table 1.39. Parameters

    @@ -57,34 +57,66 @@ - - - + + + - - + - + Sequence, f(e) must be a valid expression, convertible + to bool, for each + element e in seq +

    + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    seqA - model of seq +

    +
    +

    + A model of Forward - Sequence, f(e) must be a valid expression, convertible - to bool, for each element - e in seq -

    The sequence - to search +

    + The sequence to search +

    +
    fA - unary function objectThe search predicate +

    + f +

    +
    +

    + A unary function object +

    +
    +

    + The search predicate +

    +
    - + Expression semantics
    @@ -101,21 +133,21 @@ element e in seq.

    - + Complexity

    Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
     #include <boost/fusion/algorithm/query/any.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithms/query/functions/count.html b/doc/html/fusion/algorithms/query/functions/count.html
    index 2e508ff2..4cbb30d2 100644
    --- a/doc/html/fusion/algorithms/query/functions/count.html
    +++ b/doc/html/fusion/algorithms/query/functions/count.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the number of elements of a given type within a sequence.

    - + Synopsis
    @@ -45,7 +45,7 @@
         Sequence const& seq, T const& t);
     
    -

    Table 1.43. Parameters

    +

    Table 1.44. Parameters

    @@ -53,35 +53,67 @@ - - - + + + - - + - + Sequence, e == t + must be a valid expression, convertible to bool, + for each element e + in seq +

    + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    seqA - model of seq +

    +
    +

    + A model of Forward - Sequence, e == t - must be a valid expression, convertible to bool, - for each element e - in seq -

    The - sequence to search +

    + The sequence to search +

    +
    TAny - typeThe type to count +

    + T +

    +
    +

    + Any type +

    +
    +

    + The type to count +

    +
    - + Expression Semantics
    @@ -97,21 +129,21 @@ t in seq.

    - + Complexity

    Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
     #include <boost/fusion/algorithm/query/count.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithms/query/functions/count_if.html b/doc/html/fusion/algorithms/query/functions/count_if.html
    index 51f92335..87ab285c 100644
    --- a/doc/html/fusion/algorithms/query/functions/count_if.html
    +++ b/doc/html/fusion/algorithms/query/functions/count_if.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -34,7 +34,7 @@ a given unary function object evaluates to true.

    - + Synopsis
    @@ -46,7 +46,7 @@
         Sequence const& seq, F f);
     
    -

    Table 1.44. Parameters

    +

    Table 1.45. Parameters

    @@ -54,34 +54,66 @@ - - - + + + - - + - + Sequence, f(e) is a valid expression, convertible + to bool, for each + element e in seq +

    + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    seqA - model of seq +

    +
    +

    + A model of Forward - Sequence, f(e) is a valid expression, convertible - to bool, for each element - e in seq -

    The sequence - to search +

    + The sequence to search +

    +
    fA - unary function objectThe search predicate +

    + f +

    +
    +

    + A unary function object +

    +
    +

    + The search predicate +

    +
    - + Expression Semantics
    @@ -96,21 +128,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>
     
    - + Example
    diff --git a/doc/html/fusion/algorithms/query/functions/find.html b/doc/html/fusion/algorithms/query/functions/find.html
    index b3a6b50e..c62dd9b5 100644
    --- a/doc/html/fusion/algorithms/query/functions/find.html
    +++ b/doc/html/fusion/algorithms/query/functions/find.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Finds the first element of a given type within a sequence.

    - + Synopsis
    @@ -50,7 +50,7 @@
     unspecified find(Sequence& seq);
     
    -

    Table 1.41. Parameters

    +

    Table 1.42. Parameters

    @@ -58,31 +58,64 @@ - - - + + + - - + - + Sequence +

    + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    seqA - model of seq +

    +
    +

    + A model of Forward - Sequence -

    The sequence to search +

    + The sequence to search +

    +
    TAny - typeThe type to search for +

    + T +

    +
    +

    + Any type +

    +
    +

    + The type to search for +

    +
    - + Expression Semantics
    @@ -100,21 +133,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>
     
    - + Example
    diff --git a/doc/html/fusion/algorithms/query/functions/find_if.html b/doc/html/fusion/algorithms/query/functions/find_if.html
    index 61f159a5..67e4e84b 100644
    --- a/doc/html/fusion/algorithms/query/functions/find_if.html
    +++ b/doc/html/fusion/algorithms/query/functions/find_if.html
    @@ -31,11 +31,11 @@
                 Lambda Expression evaluates to boost::mpl::true_.
               

    - + Description
    - + Synopsis
    @@ -52,7 +52,7 @@
     unspecified find_if(Sequence& seq);
     
    -

    Table 1.42. Parameters

    +

    Table 1.43. Parameters

    @@ -60,33 +60,65 @@ - - - + + + - - + - + Sequence +

    + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    seqA - model of seq +

    +
    +

    + A model of Forward - Sequence -

    The sequence to search +

    + The sequence to search +

    +
    FA - unary MPL - Lambda Expression -The search predicate +

    + F +

    +
    +

    + A unary MPL + Lambda Expression +

    +
    +

    + The search predicate +

    +
    - + Expression Semantics
    @@ -105,21 +137,21 @@ 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>
     
    - + Example
    diff --git a/doc/html/fusion/algorithms/query/functions/none.html b/doc/html/fusion/algorithms/query/functions/none.html
    index fe64b207..b99a3660 100644
    --- a/doc/html/fusion/algorithms/query/functions/none.html
    +++ b/doc/html/fusion/algorithms/query/functions/none.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -37,7 +37,7 @@ element of seq.

    - + Synopsis
    @@ -49,7 +49,7 @@
         Sequence const& seq, F f);
     
    -

    Table 1.40. Parameters

    +

    Table 1.41. Parameters

    @@ -57,34 +57,66 @@ - - - + + + - - + - + Sequence, f(e) is a valid expression, convertible + to bool, for every + element e in seq +

    + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    seqA - model of seq +

    +
    +

    + A model of Forward - Sequence, f(e) is a valid expression, convertible - to bool, for every element - e in seq -

    The sequence - to search +

    + The sequence to search +

    +
    fA - unary function objectThe search predicate +

    + f +

    +
    +

    + A unary function object +

    +
    +

    + The search predicate +

    +
    - + Expression Semantics
    @@ -101,21 +133,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>
     
    - + Example
    diff --git a/doc/html/fusion/algorithms/query/metafunctions/all.html b/doc/html/fusion/algorithms/query/metafunctions/all.html
    index e474eb54..5d463a4f 100644
    --- a/doc/html/fusion/algorithms/query/metafunctions/all.html
    +++ b/doc/html/fusion/algorithms/query/metafunctions/all.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    A metafunction returning the result type of all.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.46. Parameters

    +

    Table 1.47. Parameters

    @@ -55,34 +55,66 @@ - - - + + + - - + - + Sequence +

    + + - - + - + Function Object +

    + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    SequenceA - model of Sequence +

    +
    +

    + A model of Forward - Sequence -

    Operation's argument +

    + Operation's argument +

    +
    FA - model of unary F +

    +
    +

    + A model of unary Polymorphic - Function Object -

    Operation's argument +

    + Operation's argument +

    +
    - + Expression Semantics
    @@ -102,14 +134,14 @@ The return type is always bool.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/query/metafunctions/any.html b/doc/html/fusion/algorithms/query/metafunctions/any.html
    index 1ec76401..0e097efe 100644
    --- a/doc/html/fusion/algorithms/query/metafunctions/any.html
    +++ b/doc/html/fusion/algorithms/query/metafunctions/any.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    A metafunction returning the result type of any.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.45. Parameters

    +

    Table 1.46. Parameters

    @@ -55,34 +55,66 @@ - - - + + + - - + - + Sequence +

    + + - - + - + Function Object +

    + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    SequenceA - model of Sequence +

    +
    +

    + A model of Forward - Sequence -

    Operation's argument +

    + Operation's argument +

    +
    FA - model of unary F +

    +
    +

    + A model of unary Polymorphic - Function Object -

    Operation's argument +

    + Operation's argument +

    +
    - + Expression Semantics
    @@ -102,14 +134,14 @@ The return type is always bool.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/query/metafunctions/count.html b/doc/html/fusion/algorithms/query/metafunctions/count.html
    index fdc787b6..7a7d81a9 100644
    --- a/doc/html/fusion/algorithms/query/metafunctions/count.html
    +++ b/doc/html/fusion/algorithms/query/metafunctions/count.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -34,7 +34,7 @@ given the sequence and search types.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.50. Parameters

    +

    Table 1.51. Parameters

    @@ -56,32 +56,64 @@ - - - + + + - - + - + Sequence +

    + + - - - + + +
    ParameterRequirementheading - Description +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + heading Description +

    +
    SequenceA - model of Sequence +

    +
    +

    + A model of Forward - Sequence -

    Operation's argument +

    + Operation's argument +

    +
    TAny - typeOperation's argument +

    + T +

    +
    +

    + Any type +

    +
    +

    + Operation's argument +

    +
    - + Expression Semantics
    @@ -97,14 +129,14 @@ int.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/query/metafunctions/count_if.html b/doc/html/fusion/algorithms/query/metafunctions/count_if.html
    index 0c1e311b..2123dc67 100644
    --- a/doc/html/fusion/algorithms/query/metafunctions/count_if.html
    +++ b/doc/html/fusion/algorithms/query/metafunctions/count_if.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -34,7 +34,7 @@ given the sequence and predicate types.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.51. Parameters

    +

    Table 1.52. Parameters

    @@ -56,31 +56,64 @@ - - - + + + - - + - + Sequence +

    + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    SequenceA - model of Sequence +

    +
    +

    + A model of Forward - Sequence -

    Operation's argument +

    + Operation's argument +

    +
    PredA - unary function objectOperation's argument +

    + Pred +

    +
    +

    + A unary function object +

    +
    +

    + Operation's argument +

    +
    - + Expression Semantics
    @@ -96,14 +129,14 @@ always int.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/query/metafunctions/find.html b/doc/html/fusion/algorithms/query/metafunctions/find.html
    index 67d38802..e0f75b22 100644
    --- a/doc/html/fusion/algorithms/query/metafunctions/find.html
    +++ b/doc/html/fusion/algorithms/query/metafunctions/find.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -34,7 +34,7 @@ given the sequence and search types.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.48. Parameters

    +

    Table 1.49. Parameters

    @@ -56,31 +56,64 @@ - - - + + + - - + - + Sequence +

    + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    SequenceModel - of Sequence +

    +
    +

    + Model of Forward - Sequence -

    Operation's argument +

    + Operation's argument +

    +
    TAny - typeOperation's argument +

    + T +

    +
    +

    + Any type +

    +
    +

    + Operation's argument +

    +
    - + Expression Semantics
    @@ -97,14 +130,14 @@ in Sequence, or result_of::end<Sequence>::type if there is no such element.

    - + Complexity

    Linear, at most result_of::size<Sequence>::value comparisons.

    - + Header
    diff --git a/doc/html/fusion/algorithms/query/metafunctions/find_if.html b/doc/html/fusion/algorithms/query/metafunctions/find_if.html
    index 8bc4c672..a7efa889 100644
    --- a/doc/html/fusion/algorithms/query/metafunctions/find_if.html
    +++ b/doc/html/fusion/algorithms/query/metafunctions/find_if.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -34,7 +34,7 @@ given the sequence and predicate types.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.49. Parameters

    +

    Table 1.50. Parameters

    @@ -56,33 +56,65 @@ - - - + + + - - + - + Sequence +

    + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    SequenceA - model of Sequence +

    +
    +

    + A model of Forward - Sequence -

    Operation's argument +

    + Operation's argument +

    +
    PredA - model of MPL - Lambda Expression -Operation's arguments +

    + Pred +

    +
    +

    + A model of MPL + Lambda Expression +

    +
    +

    + Operation's arguments +

    +
    - + Expression Semantics
    @@ -100,14 +132,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
    diff --git a/doc/html/fusion/algorithms/query/metafunctions/none.html b/doc/html/fusion/algorithms/query/metafunctions/none.html
    index abc2e587..dfd32b7a 100644
    --- a/doc/html/fusion/algorithms/query/metafunctions/none.html
    +++ b/doc/html/fusion/algorithms/query/metafunctions/none.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    A metafunction returning the result type of none.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.47. Parameters

    +

    Table 1.48. Parameters

    @@ -55,34 +55,66 @@ - - - + + + - - + - + Sequence +

    + + - - + - + Function Object +

    + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    SequenceA - model of Sequence +

    +
    +

    + A model of Forward - Sequence -

    Operation's argument +

    + Operation's argument +

    +
    FA - model of unary F +

    +
    +

    + A model of unary Polymorphic - Function Object -

    Operation's argument +

    + Operation's argument +

    +
    - + Expression Semantics
    @@ -102,14 +134,14 @@ The return type is always bool.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation.html b/doc/html/fusion/algorithms/transformation.html
    index 0a4d7fb9..81217b02 100644
    --- a/doc/html/fusion/algorithms/transformation.html
    +++ b/doc/html/fusion/algorithms/transformation.html
    @@ -39,14 +39,20 @@
     [Note]
     Note
     
    -

    - As the transformation algorithms return views onto their input arguments, - it is important that the lifetime of the input arguments is greater than - the period during which you wish to use the results. -

    + +

    +

    +

    + As the transformation algorithms return views onto their input arguments, + it is important that the lifetime of the input arguments is greater than + the period during which you wish to use the results. +

    +

    +

    +

    - + Header

    diff --git a/doc/html/fusion/algorithms/transformation/functions/clear.html b/doc/html/fusion/algorithms/transformation/functions/clear.html
    index 13ae29d8..19eca3b1 100644
    --- a/doc/html/fusion/algorithms/transformation/functions/clear.html
    +++ b/doc/html/fusion/algorithms/transformation/functions/clear.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    clear returns an empty sequence.

    - + Synposis
    @@ -43,7 +43,7 @@
     typename result_of::clear<Sequence const>::type clear(Sequence const& seq);
     
    -

    Table 1.61. Parameters

    +

    Table 1.62. Parameters

    @@ -51,23 +51,45 @@ - - - + + + - - + - + Sequence +

    + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    seqA - model of seq +

    +
    +

    + A model of Forward - Sequence -

    Operation's argument +

    + Operation's argument +

    +
    - + Expression Semantics
    @@ -84,21 +106,21 @@ with no elements.

    - + Complexity

    Constant.

    - + Header
     #include <boost/fusion/algorithm/transformation/clear.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithms/transformation/functions/erase.html b/doc/html/fusion/algorithms/transformation/functions/erase.html
    index ed861b89..c779e300 100644
    --- a/doc/html/fusion/algorithms/transformation/functions/erase.html
    +++ b/doc/html/fusion/algorithms/transformation/functions/erase.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -34,7 +34,7 @@ those at a specified iterator, or between two iterators.

    - + Synposis
    @@ -54,7 +54,7 @@
         Sequence const& seq, First const& it1, Last const& it2);
     
    -

    Table 1.62. Parameters

    +

    Table 1.63. Parameters

    @@ -62,46 +62,86 @@ - - - + + + - - + - + Sequence +

    + + - - + - + Iterator +

    + + - - + - + Iterator +

    + +
    ParametersRequirementDescription +

    + Parameters +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    seqA - model of seq +

    +
    +

    + A model of Forward - Sequence -

    Operation's argument +

    + Operation's argument +

    +
    it1A - model of it1 +

    +
    +

    + A model of Forward - Iterator -

    Iterator into seq - +

    + Iterator into seq +

    +
    it2A - model of it2 +

    +
    +

    + A model of Forward - Iterator -

    Iterator into seq - after it1 - +

    + Iterator into seq + after it1 +

    +
    - + Expression Semantics
    @@ -132,21 +172,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>
     
    - + Example
    diff --git a/doc/html/fusion/algorithms/transformation/functions/erase_key.html b/doc/html/fusion/algorithms/transformation/functions/erase_key.html
    index a340a57a..e0a5aeeb 100644
    --- a/doc/html/fusion/algorithms/transformation/functions/erase_key.html
    +++ b/doc/html/fusion/algorithms/transformation/functions/erase_key.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -39,7 +39,7 @@ with a given key.

    - + Synposis
    @@ -50,7 +50,7 @@
     typename result_of::erase_key<Sequence const, Key>::type erase_key(Sequence const& seq);
     
    -

    Table 1.63. Parameters

    +

    Table 1.64. Parameters

    @@ -58,31 +58,64 @@ - - - + + + - - + - + Sequence +

    + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    seqA - model of seq +

    +
    +

    + A model of Associative - Sequence -

    Operation's argument +

    + Operation's argument +

    +
    KeyAny - typeKey to erase +

    + Key +

    +
    +

    + Any type +

    +
    +

    + Key to erase +

    +
    - + Expression Semantics
    @@ -100,21 +133,21 @@ except those with key Key.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
     #include <boost/fusion/algorithm/transformation/erase_key.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithms/transformation/functions/filter.html b/doc/html/fusion/algorithms/transformation/functions/filter.html
    index 533fc8ee..91f95064 100644
    --- a/doc/html/fusion/algorithms/transformation/functions/filter.html
    +++ b/doc/html/fusion/algorithms/transformation/functions/filter.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -34,7 +34,7 @@ the elements of a specified type.

    - + Synopsis
    @@ -45,7 +45,7 @@
     typename result_of::filter<Sequence const, T>::type filter(Sequence const& seq);
     
    -

    Table 1.52. Parameters

    +

    Table 1.53. Parameters

    @@ -53,31 +53,64 @@ - - - + + + - - + - + Sequence +

    + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    seqA - model of seq +

    +
    +

    + A model of Forward - Sequence -

    Operation's argument +

    + Operation's argument +

    +
    TAny - typeThe type to retain +

    + T +

    +
    +

    + Any type +

    +
    +

    + The type to retain +

    +
    - + Expression Semantics
    @@ -96,21 +129,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>
     
    - + Example
    diff --git a/doc/html/fusion/algorithms/transformation/functions/filter_if.html b/doc/html/fusion/algorithms/transformation/functions/filter_if.html
    index ef3c3471..edf5d5c4 100644
    --- a/doc/html/fusion/algorithms/transformation/functions/filter_if.html
    +++ b/doc/html/fusion/algorithms/transformation/functions/filter_if.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -35,7 +35,7 @@ Lambda Expression evaluates to boost::mpl::true_.

    - + Synopsis
    @@ -46,7 +46,7 @@
     typename result_of::filter_if<Sequence const, Pred>::type filter_if(Sequence const& seq);
     
    -

    Table 1.53. Parameters

    +

    Table 1.54. Parameters

    @@ -54,33 +54,65 @@ - - - + + + - - + - + Sequence +

    + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    seqA - model of seq +

    +
    +

    + A model of Forward - Sequence -

    Operation's argument +

    + Operation's argument +

    +
    PredA - unary MPL - Lambda Expression -The predicate to filter by +

    + Pred +

    +
    +

    + A unary MPL + Lambda Expression +

    +
    +

    + The predicate to filter by +

    +
    - + Expression Semantics
    @@ -100,21 +132,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>
     
    - + Example
    diff --git a/doc/html/fusion/algorithms/transformation/functions/insert.html b/doc/html/fusion/algorithms/transformation/functions/insert.html
    index 51c96f3a..d7063c5c 100644
    --- a/doc/html/fusion/algorithms/transformation/functions/insert.html
    +++ b/doc/html/fusion/algorithms/transformation/functions/insert.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -34,7 +34,7 @@ element inserted the position described by a given iterator.

    - + Synposis
    @@ -46,7 +46,7 @@
     unspecified insert(Sequence const& seq, Pos const& pos, T const& t);
     
    -

    Table 1.64. Parameters

    +

    Table 1.65. Parameters

    @@ -54,40 +54,83 @@ - - - + + + - - + - + Sequence +

    + + - - + - + Iterator +

    + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    seqA - model of seq +

    +
    +

    + A model of Forward - Sequence -

    Operation's argument +

    + Operation's argument +

    +
    posA - model of pos +

    +
    +

    + A model of Forward - Iterator -

    The position to insert at +

    + The position to insert at +

    +
    tAny - typeThe value to insert +

    + t +

    +
    +

    + Any type +

    +
    +

    + The value to insert +

    +
    - + Expression Semantics
    @@ -107,21 +150,21 @@ pos.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
     #include <boost/fusion/algorithm/transformation/insert.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithms/transformation/functions/insert_range.html b/doc/html/fusion/algorithms/transformation/functions/insert_range.html
    index 116b91fd..6297295f 100644
    --- a/doc/html/fusion/algorithms/transformation/functions/insert_range.html
    +++ b/doc/html/fusion/algorithms/transformation/functions/insert_range.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -34,7 +34,7 @@ iterator.

    - + Synposis
    @@ -47,7 +47,7 @@
         Sequence const& seq, Pos const& pos, Range const& range);
     
    -

    Table 1.65. Parameters

    +

    Table 1.66. Parameters

    @@ -55,43 +55,85 @@ - - - + + + - - + - + Sequence +

    + + - - + - + Iterator +

    + + - - + - + Sequence +

    + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    seqA - model of seq +

    +
    +

    + A model of Forward - Sequence -

    Operation's argument +

    + Operation's argument +

    +
    posA - model of pos +

    +
    +

    + A model of Forward - Iterator -

    The position to insert at +

    + The position to insert at +

    +
    rangeA - model of range +

    +
    +

    + A model of Forward - Sequence -

    Range to insert +

    + Range to insert +

    +
    - + Expression Semantics
    @@ -111,21 +153,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>
     
    - + Example
    diff --git a/doc/html/fusion/algorithms/transformation/functions/join.html b/doc/html/fusion/algorithms/transformation/functions/join.html
    index 40f6810f..4be3106d 100644
    --- a/doc/html/fusion/algorithms/transformation/functions/join.html
    +++ b/doc/html/fusion/algorithms/transformation/functions/join.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -34,7 +34,7 @@ first followed by the elements of the second.

    - + Synopsis
    @@ -44,7 +44,7 @@
     typename result_of::join<LhSequence, RhSequence>::type join(LhSequence const& lhs, RhSequence const& rhs);
     
    -

    Table 1.66. Parameters

    +

    Table 1.67. Parameters

    @@ -52,34 +52,66 @@ - - - + + + - - + - + Sequence +

    + + - - + - + Sequence +

    + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    lhsA - model of lhs +

    +
    +

    + A model of Forward - Sequence -

    Operation's argument +

    + Operation's argument +

    +
    rhsA - model of rhs +

    +
    +

    + A model of Forward - Sequence -

    Operation's argument +

    + Operation's argument +

    +
    - + Expression Semantics
    @@ -98,21 +130,21 @@ The order of th elements is preserved.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
     #include <boost/fusion/algorithm/transformation/join.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithms/transformation/functions/pop_back.html b/doc/html/fusion/algorithms/transformation/functions/pop_back.html
    index beddbc62..f92701c8 100644
    --- a/doc/html/fusion/algorithms/transformation/functions/pop_back.html
    +++ b/doc/html/fusion/algorithms/transformation/functions/pop_back.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns a new sequence, with the last element of the original removed.

    - + Synopsis
    @@ -43,7 +43,7 @@
     typename result_of::pop_back<Sequence const>::type pop_back(Sequence const& seq);
     
    -

    Table 1.68. Parameters

    +

    Table 1.69. Parameters

    @@ -51,23 +51,45 @@ - - - + + + - - + - + Sequence +

    + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    seqA - model of seq +

    +
    +

    + A model of Forward - Sequence -

    Operation's argument +

    + Operation's argument +

    +
    - + Expression Semantics
    @@ -86,21 +108,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>
     
    - + Example
    diff --git a/doc/html/fusion/algorithms/transformation/functions/pop_front.html b/doc/html/fusion/algorithms/transformation/functions/pop_front.html
    index 4c0c76f1..79e797ad 100644
    --- a/doc/html/fusion/algorithms/transformation/functions/pop_front.html
    +++ b/doc/html/fusion/algorithms/transformation/functions/pop_front.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns a new sequence, with the first element of the original removed.

    - + Synopsis
    @@ -43,7 +43,7 @@
     typename result_of::pop_front<Sequence const>::type pop_front(Sequence const& seq);
     
    -

    Table 1.69. Parameters

    +

    Table 1.70. Parameters

    @@ -51,23 +51,45 @@ - - - + + + - - + - + Sequence +

    + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    seqA - model of seq +

    +
    +

    + A model of Forward - Sequence -

    Operation's argument +

    + Operation's argument +

    +
    - + Expression Semantics
    @@ -86,21 +108,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>
     
    - + Example
    diff --git a/doc/html/fusion/algorithms/transformation/functions/push_back.html b/doc/html/fusion/algorithms/transformation/functions/push_back.html
    index f4259325..903c48ca 100644
    --- a/doc/html/fusion/algorithms/transformation/functions/push_back.html
    +++ b/doc/html/fusion/algorithms/transformation/functions/push_back.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns a new sequence with an element added at the end.

    - + Synopsis
    @@ -45,7 +45,7 @@
         Sequence const& seq, T const& t);
     
    -

    Table 1.70. Parameters

    +

    Table 1.71. Parameters

    @@ -53,31 +53,64 @@ - - - + + + - - + - + Sequence +

    + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    seqA - model of seq +

    +
    +

    + A model of Forward - Sequence -

    Operation's argument +

    + Operation's argument +

    +
    tAny - typeThe value to add to the end +

    + t +

    +
    +

    + Any type +

    +
    +

    + The value to add to the end +

    +
    - + Expression Semantics
    @@ -96,21 +129,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>
     
    - + Example
    diff --git a/doc/html/fusion/algorithms/transformation/functions/push_front.html b/doc/html/fusion/algorithms/transformation/functions/push_front.html
    index 651f1172..d0aeb73d 100644
    --- a/doc/html/fusion/algorithms/transformation/functions/push_front.html
    +++ b/doc/html/fusion/algorithms/transformation/functions/push_front.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns a new sequence with an element added at the beginning.

    - + Synopsis
    @@ -45,7 +45,7 @@
         Sequence const& seq, T const& t);
     
    -

    Table 1.71. Parameters

    +

    Table 1.72. Parameters

    @@ -53,31 +53,64 @@ - - - + + + - - + - + Sequence +

    + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    seqA - model of seq +

    +
    +

    + A model of Forward - Sequence -

    Operation's argument +

    + Operation's argument +

    +
    tAny - typeThe value to add to the beginning +

    + t +

    +
    +

    + Any type +

    +
    +

    + The value to add to the beginning +

    +
    - + Expression Semantics
    @@ -97,21 +130,21 @@ seq.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
     #include <boost/fusion/algorithm/transformation/push_front.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithms/transformation/functions/remove.html b/doc/html/fusion/algorithms/transformation/functions/remove.html
    index 6a5c1acb..4e35bf0c 100644
    --- a/doc/html/fusion/algorithms/transformation/functions/remove.html
    +++ b/doc/html/fusion/algorithms/transformation/functions/remove.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -34,7 +34,7 @@ except those of a given type.

    - + Synopsis
    @@ -45,7 +45,7 @@
     typename result_of::remove<Sequence const, T>::type replace(Sequence const& seq);
     
    -

    Table 1.58. Parameters

    +

    Table 1.59. Parameters

    @@ -53,31 +53,64 @@ - - - + + + - - + - + Sequence +

    + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    seqA - model of seq +

    +
    +

    + A model of Forward - Sequence -

    Operation's argument +

    + Operation's argument +

    +
    TAny - typeType to remove +

    + T +

    +
    +

    + Any type +

    +
    +

    + Type to remove +

    +
    - + Expression Semantics
    @@ -96,21 +129,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>
     
    - + Example
    diff --git a/doc/html/fusion/algorithms/transformation/functions/remove_if.html b/doc/html/fusion/algorithms/transformation/functions/remove_if.html
    index a1c1ac0d..89d4cb02 100644
    --- a/doc/html/fusion/algorithms/transformation/functions/remove_if.html
    +++ b/doc/html/fusion/algorithms/transformation/functions/remove_if.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -34,7 +34,7 @@ those where a given unary function object evaluates to true.

    - + Synopsis
    @@ -45,7 +45,7 @@
     typename result_of::remove_if<Sequence const, Pred>::type remove_if(Sequence const& seq);
     
    -

    Table 1.59. Parameters

    +

    Table 1.60. Parameters

    @@ -53,33 +53,65 @@ - - - + + + - - + - + Sequence +

    + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    seqA - model of seq +

    +
    +

    + A model of Forward - Sequence -

    Operation's argument +

    + Operation's argument +

    +
    PredA - model of unary MPL - Lambda Expression -Removal predicate +

    + Pred +

    +
    +

    + A model of unary MPL + Lambda Expression +

    +
    +

    + Removal predicate +

    +
    - + Expression Semantics
    @@ -99,21 +131,21 @@ >(seq).

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
     #include <boost/fusion/algorithm/transformation/remove_if.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithms/transformation/functions/replace.html b/doc/html/fusion/algorithms/transformation/functions/replace.html
    index 9a7db88d..c0efe040 100644
    --- a/doc/html/fusion/algorithms/transformation/functions/replace.html
    +++ b/doc/html/fusion/algorithms/transformation/functions/replace.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -34,7 +34,7 @@ a new value.

    - + Synopsis
    @@ -46,7 +46,7 @@
         Sequence const& seq, T const& old_value, T const& new_value);
     
    -

    Table 1.56. Parameters

    +

    Table 1.57. Parameters

    @@ -54,42 +54,85 @@ - - - + + + - - + - + Sequence, e == old_value + is a valid expression, convertible to bool, + for each element e + in seq with type + convertible to T +

    + + - - - + + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    seqA - model of seq +

    +
    +

    + A model of Forward - Sequence, e == old_value - is a valid expression, convertible to bool, - for each element e - in seq with type - convertible to T -

    Operation's - argument +

    + Operation's argument +

    +
    old_valueAny - typeValue to replace +

    + old_value +

    +
    +

    + Any type +

    +
    +

    + Value to replace +

    +
    new_valueAny - typeReplacement value +

    + new_value +

    +
    +

    + Any type +

    +
    +

    + Replacement value +

    +
    - + Expression Semantics
    @@ -108,21 +151,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>
     
    - + Example
    diff --git a/doc/html/fusion/algorithms/transformation/functions/replace_if.html b/doc/html/fusion/algorithms/transformation/functions/replace_if.html
    index 9cd48436..fe9d308d 100644
    --- a/doc/html/fusion/algorithms/transformation/functions/replace_if.html
    +++ b/doc/html/fusion/algorithms/transformation/functions/replace_if.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -35,7 +35,7 @@ replaced with a new value.

    - + Synopsis
    @@ -47,7 +47,7 @@
         Sequence const& seq, F f, T const& new_value);
     
    -

    Table 1.57. Parameters

    +

    Table 1.58. Parameters

    @@ -55,40 +55,83 @@ - - - + + + - - + - + Sequence +

    + + - - - + + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    seqA - model of seq +

    +
    +

    + A model of Forward - Sequence -

    Operation's argument +

    + Operation's argument +

    +
    fA - function object for which f(e) is a valid expression, convertible - to bool, for each element - e in seq -Operation's argument +

    + f +

    +
    +

    + A function object for which f(e) is a valid expression, convertible + to bool, for each + element e in seq +

    +
    +

    + Operation's argument +

    +
    new_valueAny - typeReplacement value +

    + new_value +

    +
    +

    + Any type +

    +
    +

    + Replacement value +

    +
    - + Expression Semantics
    @@ -108,21 +151,21 @@ evaluates to true.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
     #include <boost/fusion/algorithm/transformation/replace_if.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithms/transformation/functions/reverse.html b/doc/html/fusion/algorithms/transformation/functions/reverse.html
    index 4aa8b7fd..4133ff04 100644
    --- a/doc/html/fusion/algorithms/transformation/functions/reverse.html
    +++ b/doc/html/fusion/algorithms/transformation/functions/reverse.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns a new sequence with the elements of the original in reverse order.

    - + Synposis
    @@ -43,7 +43,7 @@
     typename result_of::reverse<Sequence const>::type reverse(Sequence const& seq);
     
    -

    Table 1.60. Parameters

    +

    Table 1.61. Parameters

    @@ -51,23 +51,45 @@ - - - + + + - - + - + Sequence +

    + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    seqA - model of seq +

    +
    +

    + A model of Bidirectional - Sequence -

    Operation's argument +

    + Operation's argument +

    +
    - + Expression Semantics
    @@ -85,21 +107,21 @@ in reverse order.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
     #include <boost/fusion/algorithm/transformation/reverse.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithms/transformation/functions/transform.html b/doc/html/fusion/algorithms/transformation/functions/transform.html
    index b12116b2..bccc7f4f 100644
    --- a/doc/html/fusion/algorithms/transformation/functions/transform.html
    +++ b/doc/html/fusion/algorithms/transformation/functions/transform.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -38,7 +38,7 @@ to each element of seq.

    - + Unary version synopsis
    @@ -51,7 +51,7 @@ Sequence const& seq, F f);
    -

    Table 1.54. Parameters

    +

    Table 1.55. Parameters

    @@ -59,36 +59,67 @@ - - - + + + - - + - + Sequence +

    + + - - + - + Function Object where f(e) is a valid expression for each + element e of seq +

    + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    seqA - model of seq +

    +
    +

    + A model of Forward - Sequence -

    Operation's argument +

    + Operation's argument +

    +
    fA - model of unary f +

    +
    +

    + A model of unary Polymorphic - Function Object where f(e) is a valid expression for each element - e of seq -

    Transformation - function +

    + Transformation function +

    +
    - + Expression Semantics
    @@ -106,7 +137,7 @@ within seq.

    - + Binary version synopsis
    @@ -120,7 +151,7 @@ Sequence1 const& seq1, Sequence2 const& seq2, F f);
    -

    Table 1.55. Parameters

    +

    Table 1.56. Parameters

    @@ -128,39 +159,82 @@ - - - + + + - - + - + Sequence +

    + + - - + - + Sequence +

    + + - - + - + Function Object where f(e1, e2) is a valid expression for each + pair of elements e1 + and e2 of seq1 and seq2 + respectively +

    + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    seq1A - model of seq1 +

    +
    +

    + A model of Forward - Sequence -

    Operation's argument +

    + Operation's argument +

    +
    seq2A - model of seq2 +

    +
    +

    + A model of Forward - Sequence -

    Operation's argument +

    + Operation's argument +

    +
    fA - model of binary f +

    +
    +

    + A model of binary Polymorphic - Function Object where f(e1, e2) is a valid expression for each pair - of elements e1 and - e2 of seq1 and seq2 - respectively

    Transformation function +

    + Transformation function +

    +
    @@ -176,21 +250,21 @@ within seq1 and seq2 respectively.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
     #include <boost/fusion/algorithm/transformation/transform.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithms/transformation/functions/zip.html b/doc/html/fusion/algorithms/transformation/functions/zip.html
    index a6a6737d..85f84acd 100644
    --- a/doc/html/fusion/algorithms/transformation/functions/zip.html
    +++ b/doc/html/fusion/algorithms/transformation/functions/zip.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -34,7 +34,7 @@ of the members of the component sequences.

    - + Synopsis
    @@ -48,7 +48,7 @@
     zip(Sequence1 const& seq1, Sequence2 const& seq2, ... SequenceN const& seqN);
     
    -

    Table 1.67. Parameters

    +

    Table 1.68. Parameters

    @@ -56,24 +56,45 @@ - - - + + + - + - + Sequence. +

    + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    -seq1 to seqN -Each sequence - is a model of seq1 to seqN +

    +
    +

    + Each sequence is a model of Forward - Sequence.

    Operation's argument +

    + Operation's argument +

    +
    - + Expression Semantics
    @@ -96,21 +117,21 @@ 'c'))

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
     #include <boost/fusion/algorithm/transformation/zip.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/clear.html b/doc/html/fusion/algorithms/transformation/metafunctions/clear.html
    index 5c979962..03814118 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/clear.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/clear.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -34,7 +34,7 @@ type.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.80. Parameters

    +

    Table 1.81. Parameters

    @@ -55,20 +55,43 @@ - - - + + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    SequenceAny - typeOperation's argument +

    + Sequence +

    +
    +

    + Any type +

    +
    +

    + Operation's argument +

    +
    - + Expression Semantics
    @@ -84,14 +107,14 @@ Semantics: Returns an empty sequence.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/erase.html b/doc/html/fusion/algorithms/transformation/metafunctions/erase.html
    index 2b107e83..96a5b17e 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/erase.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/erase.html
    @@ -30,11 +30,11 @@
                 and range delimiting iterator types.
               

    - + Description
    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.81. Parameters

    +

    Table 1.82. Parameters

    @@ -56,43 +56,85 @@ - - - + + + - - + - + Sequence +

    + + - - + - + Iterator +

    + + - - + - + Iterator +

    + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    SequenceA - model of Sequence +

    +
    +

    + A model of Forward - Sequence -

    Operation's argument +

    + Operation's argument +

    +
    It1A - model of It1 +

    +
    +

    + A model of Forward - Iterator -

    Operation's argument +

    + Operation's argument +

    +
    It2A - model of It2 +

    +
    +

    + A model of Forward - Iterator -

    Operation's argument +

    + Operation's argument +

    +
    - + Expression Semantics
    @@ -122,14 +164,14 @@ and It2 removed.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html b/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html
    index dd4bae14..73d9f525 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -34,7 +34,7 @@ and key types.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.82. Parameters

    +

    Table 1.83. Parameters

    @@ -56,31 +56,64 @@ - - - + + + - - + - + Sequence +

    + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    SequenceA - model of Sequence +

    +
    +

    + A model of Associative - Sequence -

    Operation's argument +

    + Operation's argument +

    +
    KeyAny - typeKey type +

    + Key +

    +
    +

    + Any type +

    +
    +

    + Key type +

    +
    - + Expression Semantics
    @@ -98,14 +131,14 @@ except those with key Key.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/filter.html b/doc/html/fusion/algorithms/transformation/metafunctions/filter.html
    index 95fc51b5..88495f1b 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/filter.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/filter.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -34,7 +34,7 @@ and type to retain.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.72. Parameter

    +

    Table 1.73. Parameter

    @@ -56,31 +56,64 @@ - - - + + + - - + - + Sequence +

    + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    SequenceA - model of Sequence +

    +
    +

    + A model of Forward - Sequence -

    Operation's argument +

    + Operation's argument +

    +
    TAny - typeType to retain +

    + T +

    +
    +

    + Any type +

    +
    +

    + Type to retain +

    +
    - + Expression Semantics
    @@ -100,14 +133,14 @@ boost::is_same<mpl::_, T> >::type.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html
    index f9668ecf..924d6d59 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -35,7 +35,7 @@ Lambda Expression predicate type.

    - + Synopsis
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.73. Parameter

    +

    Table 1.74. Parameter

    @@ -57,33 +57,65 @@ - - - + + + - - + - + Sequence +

    + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    SequenceA - model of Sequence +

    +
    +

    + A model of Forward - Sequence -

    Operation's argument +

    + Operation's argument +

    +
    PredA - unary MPL - Lambda Expression -Type to retain +

    + Pred +

    +
    +

    + A unary MPL + Lambda Expression +

    +
    +

    + Type to retain +

    +
    - + Expression Semantics
    @@ -102,14 +134,14 @@ to boost::mpl::true_.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/insert.html b/doc/html/fusion/algorithms/transformation/metafunctions/insert.html
    index d6a8cb65..0be4e506 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/insert.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/insert.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -34,7 +34,7 @@ position iterator and insertion types.

    - + Synopsis
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.83. Parameters

    +

    Table 1.84. Parameters

    @@ -57,40 +57,83 @@ - - - + + + - - + - + Sequence +

    + + - - + - + Iterator +

    + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    SequenceA - model of Sequence +

    +
    +

    + A model of Forward - Sequence -

    Operation's argument +

    + Operation's argument +

    +
    PositionA - model of Position +

    +
    +

    + A model of Forward - Iterator -

    Operation's argument +

    + Operation's argument +

    +
    TAny - typeOperation's argument +

    + T +

    +
    +

    + Any type +

    +
    +

    + Operation's argument +

    +
    - + Expression Semantics
    @@ -109,14 +152,14 @@ in Sequence.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html b/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html
    index 55e5f007..f527f3bb 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -34,7 +34,7 @@ sequence, position iterator and insertion range types.

    - + Synopsis
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.84. Parameters

    +

    Table 1.85. Parameters

    @@ -57,43 +57,85 @@ - - - + + + - - + - + Sequence +

    + + - - + - + Iterator +

    + + - - + - + Sequence +

    + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    SequenceA - model of Sequence +

    +
    +

    + A model of Forward - Sequence -

    Operation's argument +

    + Operation's argument +

    +
    PositionA - model of Position +

    +
    +

    + A model of Forward - Iterator -

    Operation's argument +

    + Operation's argument +

    +
    RangeA - model of Range +

    +
    +

    + A model of Forward - Sequence -

    Operation's argument +

    + Operation's argument +

    +
    - + Expression Semantics
    @@ -112,14 +154,14 @@ into Sequence.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/join.html b/doc/html/fusion/algorithms/transformation/metafunctions/join.html
    index 655a4037..fff63a5f 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/join.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/join.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the result of joining 2 sequences, given the sequence types.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    - + Expression Semantics
    @@ -66,14 +66,14 @@ The order of the elements in the 2 sequences is preserved.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html b/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html
    index 2ef4380d..1c00e9f1 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -34,7 +34,7 @@ type.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.85. Parameters

    +

    Table 1.86. Parameters

    @@ -55,23 +55,45 @@ - - - + + + - - + - + Sequence +

    + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    SequenceA - model of Sequence +

    +
    +

    + A model of Forward - Sequence -

    Operation's argument +

    + Operation's argument +

    +
    - + Expression Semantics
    @@ -89,14 +111,14 @@ except the last element.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html b/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html
    index 81153330..7d71fe88 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -34,7 +34,7 @@ type.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.86. Parameters

    +

    Table 1.87. Parameters

    @@ -55,23 +55,45 @@ - - - + + + - - + - + Sequence +

    + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    SequenceA - model of Sequence +

    +
    +

    + A model of Forward - Sequence -

    Operation's argument +

    + Operation's argument +

    +
    - + Expression Semantics
    @@ -89,14 +111,14 @@ except the first element.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html b/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html
    index 353e79e4..272a506b 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -34,7 +34,7 @@ the input sequence and element to push.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.87. Parameters

    +

    Table 1.88. Parameters

    @@ -56,31 +56,64 @@ - - - + + + - - + - + Sequence +

    + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    SequenceA - model of Sequence +

    +
    +

    + A model of Forward - Sequence -

    Operation's argument +

    + Operation's argument +

    +
    TAny - typeOperation's argument +

    + T +

    +
    +

    + Any type +

    +
    +

    + Operation's argument +

    +
    - + Expression Semantics
    @@ -99,14 +132,14 @@ added to the end.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html b/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html
    index ec64efd3..a415378a 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -34,7 +34,7 @@ of the input sequence and element to push.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.88. Parameters

    +

    Table 1.89. Parameters

    @@ -56,31 +56,64 @@ - - - + + + - - + - + Sequence +

    + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    SequenceA - model of Sequence +

    +
    +

    + A model of Forward - Sequence -

    Operation's argument +

    + Operation's argument +

    +
    TAny - typeOperation's argument +

    + T +

    +
    +

    + Any type +

    +
    +

    + Operation's argument +

    +
    - + Expression Semantics
    @@ -99,14 +132,14 @@ added to the beginning.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/remove.html b/doc/html/fusion/algorithms/transformation/metafunctions/remove.html
    index aebc4373..af5c8dde 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/remove.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/remove.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -34,7 +34,7 @@ removal types.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.77. Parameters

    +

    Table 1.78. Parameters

    @@ -56,31 +56,64 @@ - - - + + + - - + - + Sequence +

    + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    SequenceA - model of Sequence +

    +
    +

    + A model of Forward - Sequence -

    Operation's argument +

    + Operation's argument +

    +
    TAny - typeRemove elements of this type +

    + T +

    +
    +

    + Any type +

    +
    +

    + Remove elements of this type +

    +
    - + Expression Semantics
    @@ -100,14 +133,14 @@ boost::is_same<mpl::_, T> >::type.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html
    index 72b3f0e5..2ddbba4f 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -35,7 +35,7 @@ Lambda Expression predicate types.

    - + Synopsis
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.78. Parameters

    +

    Table 1.79. Parameters

    @@ -57,35 +57,65 @@ - - - + + + - - + - + Sequence +

    + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    SequenceA - model of Sequence +

    +
    +

    + A model of Forward - Sequence -

    Operation's argument +

    + Operation's argument +

    +
    PredA - model of unary MPL - Lambda Expression -Remove elements which evaluate - to boost::mpl::true_ - +

    + Pred +

    +
    +

    + A model of unary MPL + Lambda Expression +

    +
    +

    + Remove elements which evaluate to boost::mpl::true_ +

    +
    - + Expression Semantics
    @@ -104,14 +134,14 @@ to boost::mpl::false_.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/replace.html b/doc/html/fusion/algorithms/transformation/metafunctions/replace.html
    index 8efd0542..377e3fab 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/replace.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/replace.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -34,7 +34,7 @@ the input sequence and element to replace.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.75. Parameters

    +

    Table 1.76. Parameters

    @@ -56,31 +56,64 @@ - - - + + + - - + - + Sequence +

    + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    SequenceA - model of Sequence +

    +
    +

    + A model of Forward - Sequence -

    Operation's argument +

    + Operation's argument +

    +
    TAny - typeThe type of the search and replacement objects +

    + T +

    +
    +

    + Any type +

    +
    +

    + The type of the search and replacement objects +

    +
    - + Expression Semantics
    @@ -97,14 +130,14 @@ replace.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html
    index 05090b56..7c2bc12a 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -36,7 +36,7 @@ Function Object predicate and replacement object.

    - + Synopsis
    @@ -50,7 +50,7 @@
     };
     
    -

    Table 1.76. Parameters

    +

    Table 1.77. Parameters

    @@ -58,40 +58,83 @@ - - - + + + - - + - + Sequence +

    + + - - + - + Function Object +

    + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    SequenceA - model of Sequence +

    +
    +

    + A model of Forward - Sequence -

    Operation's argument +

    + Operation's argument +

    +
    FA - model of unary F +

    +
    +

    + A model of unary Polymorphic - Function Object -

    Replacement predicate +

    + Replacement predicate +

    +
    TAny - typeThe type of the replacement object +

    + T +

    +
    +

    + Any type +

    +
    +

    + The type of the replacement object +

    +
    - + Expression Semantics
    @@ -108,14 +151,14 @@ replace_if.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html b/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html
    index d612bd22..611743f9 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -34,7 +34,7 @@ type.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.79. Parameters

    +

    Table 1.80. Parameters

    @@ -55,23 +55,45 @@ - - - + + + - - + - + Sequence +

    + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    SequenceA - model of Sequence +

    +
    +

    + A model of Bidirectional - Sequence -

    Operation's argument +

    + Operation's argument +

    +
    - + Expression Semantics
    @@ -88,14 +110,14 @@ elements in the reverse order to Sequence.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/transform.html b/doc/html/fusion/algorithms/transformation/metafunctions/transform.html
    index 35ff7a35..c540e017 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/transform.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/transform.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -36,7 +36,7 @@ Object types.

    - + Synopsis
    @@ -50,7 +50,7 @@
     };
     
    -

    Table 1.74. Parameters

    +

    Table 1.75. Parameters

    @@ -58,33 +58,66 @@ - - - + + + - - + - + Sequence +

    + + - - + - + Function Object +

    + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    SequenceA - model of Sequence +

    +
    +

    + A model of Forward - Sequence

    Operation's argument +

    + Operation's argument +

    +
    FA - model of unary F +

    +
    +

    + A model of unary Polymorphic - Function Object -

    Transformation function object +

    + Transformation function object +

    +
    - + Expression Semantics
    @@ -101,14 +134,14 @@ F::result<E>::type for each element type E in Sequence.

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/zip.html b/doc/html/fusion/algorithms/transformation/metafunctions/zip.html
    index da7866ad..79584652 100644
    --- a/doc/html/fusion/algorithms/transformation/metafunctions/zip.html
    +++ b/doc/html/fusion/algorithms/transformation/metafunctions/zip.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -34,7 +34,7 @@ of the members of the component sequences.

    - + Synopsis
    @@ -50,7 +50,7 @@
     };
     
    - + Expression Semantics
    @@ -73,14 +73,14 @@ 'c'))

    - + Complexity

    Constant.

    - + Header
    diff --git a/doc/html/fusion/change_log.html b/doc/html/fusion/change_log.html
    index ca9b53e5..8a3fbe13 100644
    --- a/doc/html/fusion/change_log.html
    +++ b/doc/html/fusion/change_log.html
    @@ -37,6 +37,9 @@
             Nov 17, 2006: Added boost::variant
             support.
           
    +
  • + Feb 15, 2007: Added functional module. +
  • diff --git a/doc/html/fusion/extension.html b/doc/html/fusion/extension.html index a35632dd..711094bc 100644 --- a/doc/html/fusion/extension.html +++ b/doc/html/fusion/extension.html @@ -48,7 +48,7 @@

    - + Our example

    @@ -80,7 +80,7 @@ Start guide.

    - + Enabling Tag Dispatching

    @@ -121,7 +121,7 @@ #include <boost/fusion/sequence/adapted/mpl/tag_of.hpp>

    - + Designing a suitable iterator

    @@ -184,7 +184,7 @@ clearer as we add features to our implementation.

    - + A first couple of instructive features

    @@ -319,16 +319,22 @@ - +
    [Note] Note

    - Although there is a fair amount of left to do to produce a fully fledged - Fusion sequence, value_of and deref illustrate all the signficant - concepts required. The remainder of the process is very repetitive, simply - requiring implementation of a suitable xxxx_impl - for each feature xxxx. -

    +

    +

    +

    + Although there is a fair amount of left to do to produce a fully fledged + Fusion sequence, value_of and deref illustrate all the signficant + concepts required. The remainder of the process is very repetitive, simply + requiring implementation of a suitable xxxx_impl + for each feature xxxx. +

    +

    +

    +

    - + Implementing the remaining iterator functionality

    @@ -383,7 +389,7 @@ are provided in the example code.

    - + Implementing the intrinsic functions of the sequence

    @@ -442,7 +448,7 @@ value_at_impl and at_impl.

    - + Enabling our type as an associative container

    @@ -508,7 +514,7 @@ of is_associative_impl.

    - + Summary

    diff --git a/doc/html/fusion/functional.html b/doc/html/fusion/functional.html index c0393988..ebea3b3c 100644 --- a/doc/html/fusion/functional.html +++ b/doc/html/fusion/functional.html @@ -29,10 +29,12 @@

    Concepts
    Callable Object
    -
    Polymorphic Function +
    Regular Callable Object
    Deferred Callable Object
    +
    Polymorphic Function + Object
    Invocation
    @@ -60,14 +62,14 @@ through a function object interface.

    - + Header

     #include <boost/fusion/functional.hpp>
     

    - + Fused and unfused forms

    @@ -89,7 +91,7 @@ invoke(f,my_sequence)

    - Alternatively it's possible to apply a simple transformation to f + Alternatively it is possible to apply a simple transformation to f in order to achieve the same effect:

    @@ -104,7 +106,7 @@
           form of f'.
         

    - + Calling functions and function objects

    @@ -132,7 +134,7 @@ instance for the given argument.

    - + Making Fusion code callable through a function object interface

    diff --git a/doc/html/fusion/functional/adapters/fused.html b/doc/html/fusion/functional/adapters/fused.html index c5ddb931..07bf5f99 100644 --- a/doc/html/fusion/functional/adapters/fused.html +++ b/doc/html/fusion/functional/adapters/fused.html @@ -26,7 +26,7 @@
    - + Description

    @@ -38,20 +38,14 @@ Sequence">Forward Sequence that contains the arguments for the target function.

    -

    - The nested result metafunction - does not define a type - member for target functions of non-class type whose arity is not satisfied - by the size of the sequence. -

    The type of the target function is allowed to be const qualified or a reference. Const qualification is preserved and propagated appropriately (in other words, only const versions of operator() can be used - for an target function object that is const or, if the target function - object is held by value, the adapter is const - these semantics have nothing - to do with the const qualification of a member function, which is referring - to the type of object pointed to by this, which is specified + for a target function object that is const or, if the target function object + is held by value, the adapter is const - these semantics have nothing to + do with the const qualification of a member function, which is referring + to the type of object pointed to by this which is specified with the first element in the sequence passed to the adapter).

    @@ -59,17 +53,17 @@ object can be specified as a reference, pointer, or smart pointer. In case of the latter, a freestanding get_pointer function must be defined (Boost provides this function for std::auto_ptr - and boost::shared_ptr). + and boost::shared_ptr).

    - + Header
     #include <boost/fusion/functional/adapter/fused.hpp>
     
    - + Synopsis
    @@ -77,7 +71,7 @@
     class fused;
     
    - + Template parameters
    @@ -88,22 +82,43 @@ -Parameter -Description -Default + +

    + Parameter +

    + + +

    + Description +

    + + +

    + Default +

    + -Function -A - Function +

    + + +

    + A Deferred - Callable Object - -  + Callable Object +

    + + +

    +

    +
    - + Model of
      @@ -139,7 +154,7 @@
    - + Expression Semantics
    @@ -149,31 +164,61 @@ -Expression -Semantics + +

    + Expression +

    + + +

    + Semantics +

    + -fused<R>(r) -Creates - a fused function as described above, initializes the target function - with r. + +

    + fused<R>(r) +

    + + +

    + Creates a fused function as described above, initializes the target + function with r. +

    + -fused<R>() -Creates - a fused function as described above, attempts to use R's default constructor. + +

    + fused<R>() +

    + + +

    + Creates a fused function as described above, attempts to use R's default constructor. +

    + -f(s) -Calls - r with the elements - in s as its arguments. + +

    + f(s) +

    + + +

    + Calls r with the + elements in s as + its arguments. +

    +
    - + Example
    @@ -181,7 +226,7 @@
     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 d64140a8..abf82ab0 100644 --- a/doc/html/fusion/functional/adapters/fused_function_object.html +++ b/doc/html/fusion/functional/adapters/fused_function_object.html @@ -26,7 +26,7 @@
      - + Description

      @@ -38,10 +38,6 @@ Sequence">Forward Sequence that contains the arguments for the target function.

      -

      - The nested result metafunction - is inhertied from the target function. -

      The type of the target function is allowed to be const qualified or a reference. Const qualification is preserved and propagated appropriately (in other @@ -50,14 +46,14 @@ object is held by value, the adapter is const).

      - + Header
       #include <boost/fusion/functional/adapter/fused_function_object.hpp>
       
      - + Synopsis
      @@ -65,7 +61,7 @@
       class fused_function_object;
       
      - + Template parameters
      @@ -76,21 +72,43 @@ -Parameter -Description -Default + +

      + Parameter +

      + + +

      + Description +

      + + +

      + Default +

      + -Function -Polymorphic Function Object - type -  +

      + Function +

      + + +

      + Polymorphic Function + Object type +

      + + +

      +

      +
    - + Model of
    @@ -127,7 +145,7 @@
    - + Expression Semantics
    @@ -137,31 +155,61 @@ -Expression -Semantics + +

    + Expression +

    + + +

    + Semantics +

    + -fused_function_object<R>(r) -Creates a fused function - as described above, initializes the target function with r. + +

    + fused_function_object<R>(r) +

    + + +

    + Creates a fused function as described above, initializes the target + function with r. +

    + -fused_function_object<R>() -Creates a fused - function as described above, attempts to use R's - default constructor. + +

    + fused_function_object<R>() +

    + + +

    + Creates a fused function as described above, attempts to use R's default constructor. +

    + -f(s) -Calls - r with the elements - in s as its arguments. + +

    + f(s) +

    + + +

    + Calls r with the + elements in s as + its arguments. +

    +
    - + Example
    @@ -176,11 +224,12 @@
     
     struct sub
     {
    -    template<typename T, typename _>
    -    struct result
    -    {
    -        typedef T type;
    -    };
    +    template <typename Sig>
    +    struct result;
    +
    +    template <class Self, typename T>
    +    struct result< Self(T,T) > 
    +    { typedef typename remove_reference<T>::type type; };
     
         template<typename T>
         T operator()(T lhs, T rhs) const
    @@ -198,7 +247,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/adapters/fused_procedure.html b/doc/html/fusion/functional/adapters/fused_procedure.html index 7ae75031..ba7db6af 100644 --- a/doc/html/fusion/functional/adapters/fused_procedure.html +++ b/doc/html/fusion/functional/adapters/fused_procedure.html @@ -26,7 +26,7 @@
    - + Description

    @@ -39,19 +39,15 @@

    The result is discared and the adapter's return type is void. - The nested result metafunction - does not define a type - member for target functions of non-class type whose arity is not satisfied - by the size of the sequence.

    The type of the target function is allowed to be const qualified or a reference. Const qualification is preserved and propagated appropriately (in other words, only const versions of operator() can be used - for an target function object that is const or, if the target function - object is held by value, the adapter is const - these semantics have nothing - to do with the const qualification of a member function, which is referring - to the type of object pointed to by this, which is specified + for a target function object that is const or, if the target function object + is held by value, the adapter is const - these semantics have nothing to + do with the const qualification of a member function, which is referring + to the type of object pointed to by this which is specified with the first element in the sequence passed to the adapter).

    @@ -59,22 +55,22 @@ object can be specified as a reference, pointer, or smart pointer. In case of the latter, a freestanding get_pointer function must be defined (Boost provides this function for std::auto_ptr - and boost::shared_ptr). + and boost::shared_ptr).

    The target function must not be a pointer to a member object (dereferencing - such a pointer without returning anything does not make sense, so it isn't - implemented). + such a pointer without returning anything does not make sense, so this + case is not implemented).

    - + Header
     #include <boost/fusion/functional/adapter/fused_procedure.hpp>
     
    - + Synopsis
    @@ -82,7 +78,7 @@
     class fused_procedure;
     
    - + Template parameters
    @@ -93,20 +89,42 @@ -Parameter -Description -Default + +

    + Parameter +

    + + +

    + Description +

    + + +

    + Default +

    + -Function -Callable Object - type -  +

    + Function +

    + + +

    + Callable Object + type +

    + + +

    +

    +
    - + Model of
    @@ -142,7 +160,7 @@
    - + Expression Semantics
    @@ -152,31 +170,61 @@ -Expression -Semantics + +

    + Expression +

    + + +

    + Semantics +

    + -fused_procedure<R>(r) -Creates a fused function - as described above, initializes the target function with r. + +

    + fused_procedure<R>(r) +

    + + +

    + Creates a fused function as described above, initializes the target + function with r. +

    + -fused_procedure<R>() -Creates a fused - function as described above, attempts to use R's - default constructor. + +

    + fused_procedure<R>() +

    + + +

    + Creates a fused function as described above, attempts to use R's default constructor. +

    + -f(s) -Calls - r with the elements - in s as its arguments. + +

    + f(s) +

    + + +

    + Calls r with the + elements in s as + its arguments. +

    +
    - + Example
    @@ -197,7 +245,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/adapters/unfused_generic.html b/doc/html/fusion/functional/adapters/unfused_generic.html index 228308c9..6a9a3b56 100644 --- a/doc/html/fusion/functional/adapters/unfused_generic.html +++ b/doc/html/fusion/functional/adapters/unfused_generic.html @@ -26,7 +26,7 @@
    - + Description

    @@ -41,38 +41,12 @@ Non-const LValue arguments are transported as references to non-const, otherwise references to const are used.

    -
    - - - - - -
    [Tip]Tip

    - Detecting mutable LValues on a per-argument basis is currently a compile - time expensive operation (see The - Forwarding Problem for details). Therefore, there are two, lightweight - and more restricted variants of this class template, unfused_lvalue_args and unfused_rvalue_args. -

    -

    - The overload set of the adapter's function call operator can be restricted - by removing the type member - from the nested result metafunction of the Polymorphic - Function Object (in this case the substitution-failure-is-not-an-error - principle applies for non-nullary case and nullary calls are explicitly - disabled by the library). -

    -
    - - - - - -
    [Caution]Caution

    - As the nullary call operator cannot be a template it will be instantiated - along with the class template, so it must be disabled (as described above) - in cases where it isn't instantiable. -

    +

    The type of the target function is allowed to be const qualified or a reference. Const qualification is preserved and propagated appropriately (in other @@ -81,14 +55,14 @@ object is held by value, the adapter is const).

    - + Header
     #include <boost/fusion/functional/adapter/unfused_generic.hpp>
     
    - + Synopsis
    @@ -96,7 +70,7 @@
     class unfused_generic;
     
    - + Template parameters
    @@ -107,22 +81,43 @@ -Parameter -Description -Default + +

    + Parameter +

    + + +

    + Description +

    + + +

    + Default +

    + -Function -An - unary Function +

    + + +

    + An unary Polymorphic - Function Object - -  + Function Object +

    + + +

    +

    +
    - + Model of
    @@ -163,7 +158,7 @@
    - + Expression Semantics
    @@ -173,56 +168,88 @@ -Expression -Semantics + +

    + Expression +

    + + +

    + Semantics +

    + -UG(f) -Creates - a fused function as described above, initializes the target function - with f. - - -UG() -Creates - a fused function as described above, attempts to use F's default constructor. + +

    + UG(f) +

    + + +

    + Creates a fused function as described above, initializes the target + function with f. +

    + -ug(a0...aN) - -Calls f with a Sequence - that contains references to the arguments a0...aN. +

    + UG() +

    + + +

    + Creates a fused function as described above, attempts to use F's default constructor. +

    + + + + +

    + ug(a0...aN) +

    + + +

    + Calls f with a + Sequence that contains + references to the arguments a0...aN. +

    +
    - + Example
     template <typename Function, typename T>
     class fused_bound_1st
     {
    -    typename traits::deduce<Function>::type fnc_deferred;
    -    typename traits::deduce<T>::type        xxx_bound;
    +    typename traits::deduce<Function>::type fnc_deferred;
    +    typename traits::deduce<T>::type        xxx_bound;
     public:
     
         fused_bound_1st(Function deferred, T bound)
             : fnc_deferred(deferred), xxx_bound(bound)
         { }
     
    -    template <class Seq>
    -    struct result
    -        : result_of::invoke< Function,
    -            typename result_of::push_front<Seq, T>::type >
    +    template <typename Sig>
    +    struct result;
    +
    +    template <class Self, class Seq>
    +    struct result< Self(Seq) >
    +        : result_of::invoke< Function, typename result_of::push_front<
    +            typename remove_reference<Seq>::type, T>::type >
         { };
     
         template <class Seq>
    -    typename result<Seq>::type operator()(Seq const & s) const
    +    typename result< void(Seq) >::type operator()(Seq const & s) const
         {
    -        return invoke(fnc_deferred, push_front(s,xxx_bound));
    +        return invoke(fnc_deferred, push_front(s,xxx_bound));
         }
     };
     
    @@ -242,11 +269,11 @@
     void try_it()
     {
         assert(bind_1st(& test_func,3)(-2,-1) == 0);
    -    assert(bind_1st(std::plus<float>(), 1)(0.5f) == 1.5f);
    +    assert(bind_1st(std::plus<float>(), 1)(0.5f) == 1.5f);
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/adapters/unfused_lvalue_args.html b/doc/html/fusion/functional/adapters/unfused_lvalue_args.html index 014dca6a..d78a7649 100644 --- a/doc/html/fusion/functional/adapters/unfused_lvalue_args.html +++ b/doc/html/fusion/functional/adapters/unfused_lvalue_args.html @@ -26,7 +26,7 @@
    - + Description

    @@ -40,26 +40,6 @@ Access Sequence of references that is passed to the target function object. Only LValue arguments are accepted.

    -

    - The overload set of the adapter's function call operator can be restricted - by removing the type member - from the nested result metafunction of the Polymorphic - Function Object (in this case the substitution-failure-is-not-an-error - principle applies for non-nullary calls and nullary calls are explicitly - disabled by the library). -

    -
    - - - - - -
    [Caution]Caution

    - As the nullary call operator cannot be a template it will be instantiated - along with the class template, so it must be disabled (as described above) - in cases where it isn't instantiable. -

    The type of the target function is allowed to be const qualified or a reference. Const qualification is preserved and propagated appropriately (in other @@ -68,14 +48,14 @@ object is held by value, the adapter is const).

    - + Header
     #include <boost/fusion/functional/adapter/unfused_lvalue_args.hpp>
     
    - + Synopsis
    @@ -83,7 +63,7 @@
     class unfused_lvalue_args;
     
    - + Template parameters
    @@ -94,22 +74,43 @@ -Parameter -Description -Default + +

    + Parameter +

    + + +

    + Description +

    + + +

    + Default +

    + -Function -A - unary Function +

    + + +

    + A unary Polymorphic - Function Object - -  + Function Object +

    + + +

    +

    +
    - + Model of
    @@ -150,7 +151,7 @@
    - + Expression Semantics
    @@ -160,32 +161,61 @@ -Expression -Semantics + +

    + Expression +

    + + +

    + Semantics +

    + -UL(f) -Creates - a fused function as described above, initializes the target function - with f. - - -UL() -Creates - a fused function as described above, attempts to use F's default constructor. + +

    + UL(f) +

    + + +

    + Creates a fused function as described above, initializes the target + function with f. +

    + -ul(a0...aN) - -Calls f with a Sequence - that contains references to the arguments a0...aN. +

    + UL() +

    + + +

    + Creates a fused function as described above, attempts to use F's default constructor. +

    + + + + +

    + ul(a0...aN) +

    + + +

    + Calls f with a + Sequence that contains + references to the arguments a0...aN. +

    +
    - + Example
    @@ -213,7 +243,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/adapters/unfused_rvalue_args.html b/doc/html/fusion/functional/adapters/unfused_rvalue_args.html index d8f83f5a..a87ea7a5 100644 --- a/doc/html/fusion/functional/adapters/unfused_rvalue_args.html +++ b/doc/html/fusion/functional/adapters/unfused_rvalue_args.html @@ -26,7 +26,7 @@
    - + Description

    @@ -40,26 +40,6 @@ Access Sequence of references that is passed to the target function object. All referenced objects in the sequence are const qualified.

    -

    - The overload set of the adapter's function call operator can be restricted - by removing the type member - from the nested result metafunction of the Polymorphic - Function Object (in this case the substitution-failure-is-not-an-error - principle applies for non-nullary calls and nullary calls are explicitly - disabled by the library). -

    -
    - - - - - -
    [Caution]Caution

    - As the nullary call operator cannot be a template it will be instantiated - along with the class template, so it must be disabled (as described above) - in cases where it isn't instantiable. -

    The type of the target function is allowed to be const qualified or a reference. Const qualification is preserved and propagated appropriately (in other @@ -68,14 +48,14 @@ object is held by value, the adapter is const).

    - + Header
     #include <boost/fusion/functional/adapter/unfused_rvalue_args.hpp>
     
    - + Synopsis
    @@ -83,7 +63,7 @@
     class unfused_rvalue_args;
     
    - + Template parameters
    @@ -94,22 +74,43 @@ -Parameter -Description -Default + +

    + Parameter +

    + + +

    + Description +

    + + +

    + Default +

    + -Function -A - unary Function +

    + + +

    + A unary Polymorphic - Function Object - -  + Function Object +

    + + +

    +

    +
    - + Model of
    @@ -150,7 +151,7 @@
    - + Expression Semantics
    @@ -160,32 +161,61 @@ -Expression -Semantics + +

    + Expression +

    + + +

    + Semantics +

    + -UR(f) -Creates - a fused function as described above, initializes the target function - with f. - - -UR() -Creates - a fused function as described above, attempts to use F's default constructor. + +

    + UR(f) +

    + + +

    + Creates a fused function as described above, initializes the target + function with f. +

    + -ur(a0...aN) - -Calls f with a Sequence - that contains references to the arguments a0...aN. +

    + UR() +

    + + +

    + Creates a fused function as described above, attempts to use F's default constructor. +

    + + + + +

    + ur(a0...aN) +

    + + +

    + Calls f with a + Sequence that contains + references to the arguments a0...aN. +

    +
    - + Example
    @@ -211,7 +241,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/adapters/unfused_typed.html b/doc/html/fusion/functional/adapters/unfused_typed.html index 316c25eb..ef08f4a9 100644 --- a/doc/html/fusion/functional/adapters/unfused_typed.html +++ b/doc/html/fusion/functional/adapters/unfused_typed.html @@ -26,7 +26,7 @@
    - + Description

    @@ -46,26 +46,6 @@ where N is the size of the Sequence that specifies the types.

    -

    - The overload set of the adapter's function call operator can be restricted - by removing the type member - from the nested result metafunction of the Polymorphic - Function Object (in this case the substitution-failure-is-not-an-error - principle applies for non-nullary calls and nullary calls are explicitly - disabled by the library). -

    -
    - - - - - -
    [Caution]Caution

    - As the function call operators are not templates, they are instantiated - along with the class template, so they must be disabled (as described - above) in cases where they are not instantiable. -

    The type of the target function is allowed to be const qualified or a reference. Const qualification is preserved and propagated appropriately (in other @@ -73,26 +53,26 @@ if the target function object is const - or, in case the target function object is held by value, the adapter is const).

    -
    - - - - - -
    [Tip]Tip

    - If the type sequence passed to this template contains non-reference elements, - the element is copied only once - the call operator's signature is optimized - automatically to avoid by-value parameters. -

    + +
    - + Header
     #include <boost/fusion/functional/adapter/unfused_typed.hpp>
     
    - + Synopsis
    @@ -100,7 +80,7 @@
     class unfused_typed;
     
    - + Template parameters
    @@ -111,31 +91,61 @@ -Parameter -Description -Default + +

    + Parameter +

    + + +

    + Description +

    + + +

    + Default +

    + -Function -A - unary Function +

    + + +

    + A unary Polymorphic - Function Object - -  + Function Object +

    + + +

    +

    + -Sequence -A - Sequence - -  + +

    + Sequence +

    + + +

    + A Sequence +

    + + +

    +

    +
    - + Model of
    @@ -181,7 +191,7 @@
    - + Expression Semantics
    @@ -191,33 +201,63 @@ -Expression -Semantics + +

    + Expression +

    + + +

    + Semantics +

    + -UT(f) -Creates - a fused function as described above, initializes the target function - with f. - - -UT() -Creates - a fused function as described above, attempts to use F's default constructor. + +

    + UT(f) +

    + + +

    + Creates a fused function as described above, initializes the target + function with f. +

    + -ut(a0...aN) - -Calls f with an instance of S (or a subsequence of S starting at the first element, - if fewer arguments are given and the overload hasn't been disabled) - initialized with a0...aN. +

    + UT() +

    + + +

    + Creates a fused function as described above, attempts to use F's default constructor. +

    + + + + +

    + ut(a0...aN) +

    + + +

    + Calls f with an + instance of S (or + a subsequence of S + starting at the first element, if fewer arguments are given and + the overload hasn't been disabled) initialized with a0...aN. +

    +
    - + Example
    @@ -241,38 +281,40 @@
             : tie_dest(dest)
         { }
     
    -    template <class Seq>
    -    struct result
    -    {
    -        typedef void type;
    -    };
    +    typedef void result_type;
     
         template <class Seq>
         void operator()(Seq const & s) const
         {
    -        for_each(zip(tie_dest,s), fused<add_assign>() );
    +        for_each( zip(tie_dest,s), fused<add_assign>() );
         }
     };
     
     // accepts a tie and creates a typed function object from it
     struct fused_parallel_adder_maker
     {
    -    template <class Seq>
    -    struct result
    +    template <typename Sig>
    +    struct result;
    +
    +    template <class Self, class Seq>
    +    struct result< Self(Seq) >
         {
    -        typedef unfused_typed<fused_parallel_adder<Seq>, 
    -            typename mpl::transform<Seq, remove_reference<_> >::type > type;
    +        typedef typename remove_reference<Seq>::type seq;
    +
    +        typedef unfused_typed< fused_parallel_adder<seq>, 
    +            typename mpl::transform<seq, remove_reference<_> >::type > type;
         };
     
         template <class Seq>
    -    typename result<Seq>::type operator()(Seq const & tie)
    +    typename result< void(Seq) >::type operator()(Seq const & tie)
         {
    -        return typename result<Seq>::type(fused_parallel_adder<Seq>(tie));
    +        return typename result< void(Seq) >::type(
    +            fused_parallel_adder<Seq>(tie) );
         }
     };
    -unfused_lvalue_args<fused_parallel_adder_maker> parallel_add;
    +unfused_lvalue_args<fused_parallel_adder_maker> parallel_add;
     
    -int main()
    +void try_it()
     {
         int a = 2; char b = 'X';
         // the second call is strictly typed with the types deduced from the
    @@ -281,12 +323,10 @@
         parallel_add(a,b)(3);
         parallel_add(a,b)();
         assert(a == 8 && b == 'Z');
    -
    -    return 0;
     }
     
    - + See also
      diff --git a/doc/html/fusion/functional/concepts.html b/doc/html/fusion/functional/concepts.html index edd9ef11..5d37381f 100644 --- a/doc/html/fusion/functional/concepts.html +++ b/doc/html/fusion/functional/concepts.html @@ -27,10 +27,12 @@ Concepts
    diff --git a/doc/html/fusion/functional/concepts/callable.html b/doc/html/fusion/functional/concepts/callable.html index f110fd56..9d53e5d7 100644 --- a/doc/html/fusion/functional/concepts/callable.html +++ b/doc/html/fusion/functional/concepts/callable.html @@ -7,7 +7,7 @@ - @@ -21,17 +21,35 @@

    -PrevUpHomeNext +PrevUpHomeNext
    +
    + + Description +

    A pointer to a function, a pointer to member function, a pointer to member data, or a class type whose objects can appear immediately to the left of a function call operator. -

    +
    + + Models +
    +
      +
    • + function pointer types +
    • +
    • + member (function or data) pointer types +
    • +
    • + all kinds of function objects +
    • +
    @@ -40,7 +58,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/concepts/def_callable.html b/doc/html/fusion/functional/concepts/def_callable.html index dcc1b3c0..379490a5 100644 --- a/doc/html/fusion/functional/concepts/def_callable.html +++ b/doc/html/fusion/functional/concepts/def_callable.html @@ -7,9 +7,10 @@ - + - @@ -22,7 +23,7 @@

    -PrevUpHomeNext +PrevUpHomeNext

    @@ -30,37 +31,58 @@ Callable Object"> Deferred Callable Object

    - + Description

    Callable Object - that works with Boost.ResultOf - to determine the result of a call (such as the function objects provided - by the standard library). + types that work with Boost.ResultOf + to determine the result of a call.

    - + Refinement of
    +

    Notation

    F
    - A Deferred Callable Object type + A possibly const qualified Deferred Callable Object type
    +
    A1 + ...AN
    +
    + Argument types +
    +
    a1 + ...aN
    +
    + Objects or references to objects with types A1 + ...AN +
    T1 ...TN
    - Arbitrary types +Ti is Ai + & if ai + is an LValue, same as Ai, + otherwise
    - + Expression requirements
    @@ -70,23 +92,47 @@ -Expression -Type + +

    + Expression +

    + + +

    + Type +

    + -boost::result_of< F(T1 ...TN) >::type - -Unspecified +

    + boost::result_of< F(T1 + ...TN) >::type +

    + + +

    + Result of a call with A1 + ...AN-typed + arguments +

    +
    - + Models
    -
    +
    @@ -95,7 +141,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/concepts/poly.html b/doc/html/fusion/functional/concepts/poly.html index d99e05c6..f1552c6b 100644 --- a/doc/html/fusion/functional/concepts/poly.html +++ b/doc/html/fusion/functional/concepts/poly.html @@ -7,9 +7,9 @@ - - + @@ -22,7 +22,7 @@

    -PrevUpHomeNext +PrevUpHomeNext

    @@ -30,45 +30,61 @@ Object"> Polymorphic Function Object

    - + Description

    - A type of function object with a nested metafunction result. - result returns the result - type of calling the function object, given the argument types. + A non-member-pointer Deferred + Callable Object type.

    - + Refinement of
    - +

    Notation

    F
    - A Polymorphic Function Object type + A possibly const-qualified Polymorphic Function Object type
    f
    - A Polymorphic Function Object + An object or reference to an object of type F
    +
    A1 + ...AN
    +
    + Argument types +
    +
    a1 + ...aN
    +
    + Objects or references to objects with types A1 + ...AN +
    T1 ...TN
    - Arbitrary types +Ti is Ai + & if ai + is an LValue, same as Ai, + otherwise
    -
    t1 - ...tN
    -
    - Objects with types T1 ...TN -
    - + Expression requirements
    @@ -79,24 +95,58 @@ -Expression -Return Type -Runtime - Complexity + +

    + Expression +

    + + +

    + Return Type +

    + + +

    + Runtime Complexity +

    + -f(t1, ...tN) -F::result<T1, ...TN>::type -Unspecified + +

    + f(a1, + ...aN) +

    + + +

    + result_of< + F(T1, + ...TN) >::type +

    + + +

    + Unspecified +

    +
    - + Models
    -
    • +
        +
      • + function pointers +
      • +
      • + function objects of the Standard Library +
      • +
      • all Fusion functional adapters -
      +
    • +
    @@ -105,7 +155,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/generation/functions/mk_fused.html b/doc/html/fusion/functional/generation/functions/mk_fused.html index b8578c1d..05e64daf 100644 --- a/doc/html/fusion/functional/generation/functions/mk_fused.html +++ b/doc/html/fusion/functional/generation/functions/mk_fused.html @@ -30,7 +30,7 @@ make_fused"> make_fused
    - + Description

    @@ -40,7 +40,7 @@ conversion is applied to the target function.

    - + Synopsis
    @@ -50,7 +50,7 @@
     make_fused(F const & f);
     
    - + Parameters
    @@ -60,22 +60,44 @@ - - - + + + - - + - + Callable Object +

    + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    fModel - of f +

    +
    +

    + Model of Deferred - Callable Object -

    The function to transform. +

    + The function to transform. +

    +
    - + Expression Semantics
    @@ -89,14 +111,14 @@ Semantics: Returns a fused adapter for f.

    - + Header
     #include <boost/fusion/functional/generation/make_fused.hpp>
     
    - + Example
    @@ -112,7 +134,7 @@
     }
     
    - + 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 aced6fdd..cc51038f 100644 --- a/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html +++ b/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html @@ -31,7 +31,7 @@ make_fused_function_object"> make_fused_function_object
    - + Description

    @@ -42,7 +42,7 @@ conversion is applied to the target function.

    - + Synopsis
    @@ -52,7 +52,7 @@
     make_fused_function_object(F const & f);
     
    - + Parameters
    @@ -62,22 +62,44 @@ - - - + + + - - + - + Function Object +

    + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    fModel - of f +

    +
    +

    + Model of Polymorphic - Function Object -

    The function to transform. +

    + The function to transform. +

    +
    - + Expression Semantics
    @@ -92,24 +114,25 @@ for f.

    - + Header
     #include <boost/fusion/functional/generation/make_fused_function_object.hpp>
     
    - + Example
     struct sub
     {
    -    template<typename T, typename _>
    -    struct result
    -    {
    -        typedef T type;
    -    };
    +    template <typename Sig>
    +    struct result;
    +
    +    template <class Self, typename T>
    +    struct result< Self(T,T) > 
    +    { typedef typename remove_reference<T>::type type; };
     
         template<typename T>
         T operator()(T lhs, T rhs) const
    @@ -127,7 +150,7 @@
     }
     
    - + 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 79ee2ae8..1baa3d4d 100644 --- a/doc/html/fusion/functional/generation/functions/mk_fused_proc.html +++ b/doc/html/fusion/functional/generation/functions/mk_fused_proc.html @@ -31,7 +31,7 @@ make_fused_procedure"> make_fused_procedure
    - + Description

    @@ -42,7 +42,7 @@ conversion applied to the target function.

    - + Synopsis
    @@ -52,7 +52,7 @@
     make_fused_procedure(F const & f);
     
    - + Parameters
    @@ -62,21 +62,43 @@ - - - + + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    fModel - of Callable - Object -The function to transform. +

    + f +

    +
    +

    + Model of Callable + Object +

    +
    +

    + The function to transform. +

    +
    - + Expression Semantics
    @@ -91,14 +113,14 @@ f.

    - + Header
     #include <boost/fusion/functional/generation/make_fused_procedure.hpp>
     
    - + Example
    @@ -108,7 +130,7 @@
     assert(front(v) == 0);
     
    - + See also
    diff --git a/doc/html/fusion/functional/generation/functions/mk_unfused_genrc.html b/doc/html/fusion/functional/generation/functions/mk_unfused_genrc.html index e2410ec0..4506086e 100644 --- a/doc/html/fusion/functional/generation/functions/mk_unfused_genrc.html +++ b/doc/html/fusion/functional/generation/functions/mk_unfused_genrc.html @@ -31,7 +31,7 @@ make_unfused_generic"> make_unfused_generic
    - + Description

    @@ -42,7 +42,7 @@ conversion is applied to the target function.

    - + Synopsis
    @@ -52,7 +52,7 @@
     make_unfused_generic(F const & f);
     
    - + Parameters
    @@ -62,22 +62,44 @@ - - - + + + - - + - + Function Object +

    + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    fModel - of f +

    +
    +

    + Model of Polymorphic - Function Object -

    The function to transform. +

    + The function to transform. +

    +
    - + Expression Semantics
    @@ -92,24 +114,20 @@ f.

    - + Header
     #include <boost/fusion/functional/generation/make_unfused_generic.hpp>
     
    - + Example
     struct bottles_song
     {
    -    template<class Seq>
    -    struct result
    -        : mpl::if_< mpl::less< result_of::size<Seq>, mpl::int_<2> >,
    -            boost::blank, mpl::identity<void> >::type
    -    { };
    +    typedef void result_type;
     
         template<class Seq> 
         void operator()(Seq & s) const
    @@ -139,7 +157,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/generation/functions/mk_unfused_lvargs.html b/doc/html/fusion/functional/generation/functions/mk_unfused_lvargs.html index c72ce4b8..19a41235 100644 --- a/doc/html/fusion/functional/generation/functions/mk_unfused_lvargs.html +++ b/doc/html/fusion/functional/generation/functions/mk_unfused_lvargs.html @@ -31,7 +31,7 @@ make_unfused_lvalue_args"> make_unfused_lvalue_args
    - + Description

    @@ -42,7 +42,7 @@ conversion is applied to the target function.

    - + Synopsis
    @@ -52,7 +52,7 @@
     make_unfused_lvalue_args(F const & f);
     
    - + Parameters
    @@ -62,22 +62,44 @@ - - - + + + - - + - + Function Object +

    + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    fModel - of f +

    +
    +

    + Model of Polymorphic - Function Object -

    The function to transform. +

    + The function to transform. +

    +
    - + Expression Semantics
    @@ -92,14 +114,14 @@ for f.

    - + Header
     #include <boost/fusion/functional/generation/make_unfused_lvalue_args.hpp>
     
    - + Example
    @@ -126,7 +148,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/generation/functions/mk_unfused_rvargs.html b/doc/html/fusion/functional/generation/functions/mk_unfused_rvargs.html index cd23fc5e..c45e3291 100644 --- a/doc/html/fusion/functional/generation/functions/mk_unfused_rvargs.html +++ b/doc/html/fusion/functional/generation/functions/mk_unfused_rvargs.html @@ -30,7 +30,7 @@ make_unfused_rvalue_args"> make_unfused_rvalue_args
    - + Description

    @@ -41,7 +41,7 @@ conversion is applied to the target function.

    - + Synopsis
    @@ -51,7 +51,7 @@
     make_unfused_rvalue_args(F const & f);
     
    - + Parameters
    @@ -61,22 +61,44 @@ - - - + + + - - + - + Function Object +

    + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    fModel - of f +

    +
    +

    + Model of Polymorphic - Function Object -

    The function to transform. +

    + The function to transform. +

    +
    - + Expression Semantics
    @@ -91,14 +113,14 @@ for f.

    - + Header
     #include <boost/fusion/functional/generation/make_unfused_rvalue_args.hpp>
     
    - + Example
    @@ -124,7 +146,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/generation/metafunctions/mk_fused.html b/doc/html/fusion/functional/generation/metafunctions/mk_fused.html index 24dabafd..8e7dfa64 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused.html @@ -30,7 +30,7 @@ make_fused"> make_fused
    - + Description

    @@ -38,14 +38,14 @@ make_fused">make_fused.

    - + Header
     #include <boost/fusion/functional/generation/make_fused.hpp>
     
    - + Synopsis
    @@ -59,7 +59,7 @@
     }
     
    - + 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 5be6a5cf..abbb7c23 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html @@ -31,7 +31,7 @@ make_fused_function_object"> make_fused_function_object
    - + Description

    @@ -39,14 +39,14 @@ make_fused_function_object">make_fused_function_object.

    - + Header
     #include <boost/fusion/functional/generation/make_fused_function_object.hpp>
     
    - + Synopsis
    @@ -60,7 +60,7 @@
     }
     
    - + 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 40dbe2a7..91ab1a74 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html @@ -31,7 +31,7 @@ make_fused_procedure"> make_fused_procedure
    - + Description

    @@ -39,14 +39,14 @@ make_fused_procedure">make_fused_procedure.

    - + Header
     #include <boost/fusion/functional/generation/make_fused_procedure.hpp>
     
    - + Synopsis
    @@ -60,7 +60,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/generation/metafunctions/mk_unfused_genrc.html b/doc/html/fusion/functional/generation/metafunctions/mk_unfused_genrc.html index 5f7bea12..4ffc6a94 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_unfused_genrc.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_unfused_genrc.html @@ -31,7 +31,7 @@ make_unfused_generic"> make_unfused_generic
    - + Description

    @@ -39,14 +39,14 @@ make_unfused_generic">make_unfused_generic.

    - + Header
     #include <boost/fusion/functional/generation/make_unfused_generic.hpp>
     
    - + Synopsis
    @@ -60,7 +60,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/generation/metafunctions/mk_unfused_lvargs.html b/doc/html/fusion/functional/generation/metafunctions/mk_unfused_lvargs.html index 20a8a3d9..01e07602 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_unfused_lvargs.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_unfused_lvargs.html @@ -31,7 +31,7 @@ make_unfused_lvalue_args"> make_unfused_lvalue_args
    - + Description

    @@ -39,14 +39,14 @@ make_unfused_lvalue_args">make_unfused_lvalue_args.

    - + Header
     #include <boost/fusion/functional/generation/make_unfused_lvalue_args.hpp>
     
    - + Synopsis
    @@ -60,7 +60,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/generation/metafunctions/mk_unfused_rvargs.html b/doc/html/fusion/functional/generation/metafunctions/mk_unfused_rvargs.html index c3bfcf93..232be8eb 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_unfused_rvargs.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_unfused_rvargs.html @@ -30,7 +30,7 @@ make_unfused_rvalue_args"> make_unfused_rvalue_args
    - + Description

    @@ -38,14 +38,14 @@ make_unfused_rvalue_args">make_unfused_rvalue_args.

    - + Header
     #include <boost/fusion/functional/generation/make_unfused_rvalue_args.hpp>
     
    - + Synopsis
    @@ -59,7 +59,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/invocation.html b/doc/html/fusion/functional/invocation.html index 194c009e..f3ed7372 100644 --- a/doc/html/fusion/functional/invocation.html +++ b/doc/html/fusion/functional/invocation.html @@ -6,8 +6,8 @@ - + @@ -21,7 +21,7 @@
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -38,7 +38,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/invocation/functions/invoke.html b/doc/html/fusion/functional/invocation/functions/invoke.html index 3e492ecb..b92863dc 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke.html +++ b/doc/html/fusion/functional/invocation/functions/invoke.html @@ -27,7 +27,7 @@

    - + Description

    @@ -35,10 +35,6 @@ Callable Object">Deferred Callable Object with the arguments from a Sequence.

    -

    - The corresponding metafunction, result_of::invoke does not define a type member for target functions of - non-class type whose arity is not satisfied by the size of the sequence. -

    The first template parameter can be specialized explicitly to avoid copying and/or to control the const qualification of a function object. @@ -48,10 +44,10 @@ object can be specified as a reference, pointer, or smart pointer. In case of the latter, a freestanding get_pointer function must be defined (Boost provides this function for std::auto_ptr - and boost::shared_ptr). + and boost::shared_ptr).

    - + Synopsis
    @@ -70,7 +66,7 @@
     invoke(Function f, Sequence const & s);
     
    - + Parameters
    @@ -80,33 +76,65 @@ - - - + + + - - + - + Callable Object +

    + + - - + - + Sequence +

    + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    fA - f +

    +
    +

    + A Deferred - Callable Object -

    The function to call. +

    + The function to call. +

    +
    sA - s +

    +
    +

    + A Forward - Sequence -

    The arguments. +

    + The arguments. +

    +
    - + Expression Semantics
    @@ -123,14 +151,14 @@ as arguments and returns the result of the call expression.

    - + Header
     #include <boost/fusion/functional/invocation/invoke.hpp>
     
    - + Example
    @@ -138,7 +166,7 @@
     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 dba5f6b3..a692f19d 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke_fobj.html +++ b/doc/html/fusion/functional/invocation/functions/invoke_fobj.html @@ -30,7 +30,7 @@ invoke_function_object"> invoke_function_object
    - + Description

    @@ -38,19 +38,12 @@ Object">Polymorphic Function Object with the arguments from a Sequence.

    -

    - The corresponding metafunction, result_of::invoke_function_object, does - not define a type member, - if the nested result - class template of the target function object is empty. -

    The first template parameter can be specialized explicitly to avoid copying and/or to control the const qualification of a function object.

    - + Synopsis
    @@ -71,7 +64,7 @@
     invoke_function_object(Function f, Sequence const & s);
     
    - + Parameters
    @@ -81,38 +74,70 @@ - - - + + + - - + - + Function Object +

    + + - - + - + Sequence +

    + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    fModel - of f +

    +
    +

    + Model of Polymorphic - Function Object -

    The function object to call. +

    + The function object to call. +

    +
    sModel - of s +

    +
    +

    + Model of Forward - Sequence -

    The arguments. +

    + The arguments. +

    +
    - + Expression Semantics
    -invoke_procedure(f,s);
    +invoke_function_object(f,s);
     

    Return type: Return type of f when invoked with the elements in @@ -124,24 +149,25 @@ as arguments and returns the result of the call expression.

    - + Header
     #include <boost/fusion/functional/invocation/invoke_function_object.hpp>
     
    - + Example
     struct sub
     {
    -    template<typename T, typename _>
    -    struct result
    -    {
    -        typedef T type;
    -    };
    +    template <typename Sig>
    +    struct result;
    +
    +    template <class Self, typename T>
    +    struct result< Self(T,T) > 
    +    { typedef typename remove_reference<T>::type type; };
     
         template<typename T>
         T operator()(T lhs, T rhs) const
    @@ -157,7 +183,7 @@
     }
     
    - + 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 322e6399..e6380ecf 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke_proc.html +++ b/doc/html/fusion/functional/invocation/functions/invoke_proc.html @@ -30,7 +30,7 @@ invoke_procedure"> invoke_procedure
    - + Description

    @@ -38,12 +38,6 @@ Object with the arguments from a Sequence. The result of the call is ignored.

    -

    - The corresponding metafunction, __result_of_invoke_procedure, does not - define a type member - for target functions of non-class type whose arity is not satisfied by - the size of the sequence. -

    The first template parameter can be specialized explicitly to avoid copying and/or to control the const qualification of a function object. @@ -52,7 +46,7 @@ For pointers to class members corresponding object can be specified as a reference, pointer, or smart pointer. In case of the latter, a freestanding get_pointer function must be defined (Boost provides - this function for std::auto_ptr and boost::shared_ptr). + this function for std::auto_ptr and boost::shared_ptr).

    The target function must not be a pointer to a member object (dereferencing @@ -60,7 +54,7 @@ isn't implemented).

    - + Synopsis
    @@ -81,7 +75,7 @@
     invoke_procedure(Function f, Sequence const & s);
     
    - + Parameters
    @@ -91,32 +85,64 @@ - - - + + + - - - + + + - - + - + Sequence +

    + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    fModel - of Callable - Object -The function to call. +

    + f +

    +
    +

    + Model of Callable + Object +

    +
    +

    + The function to call. +

    +
    sModel - of s +

    +
    +

    + Model of Forward - Sequence -

    The arguments. +

    + The arguments. +

    +
    - + Expression Semantics
    @@ -132,14 +158,14 @@ as arguments.

    - + Header
     #include <boost/fusion/functional/invocation/invoke_procedure.hpp>
     
    - + Example
    @@ -149,7 +175,7 @@
     assert(front(v) == 3);
     
    - + See also
    diff --git a/doc/html/fusion/functional/invocation/metafunctions/invoke.html b/doc/html/fusion/functional/invocation/metafunctions/invoke.html index af0c75ac..9ad25597 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke.html @@ -27,18 +27,14 @@
    - + Description

    Returns the result type of invoke.

    -

    - Empty for non-class target function types whose arity is not satisfied - by the size of the sequence. -

    - + Synopsis
    @@ -55,7 +51,7 @@
     }
     
    - + 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 6aef16fd..eac2912f 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html @@ -30,19 +30,15 @@ invoke_function_object"> invoke_function_object
    - + Description

    Returns the result type of invoke_function_object.

    -

    - Empty if the target function's nested result - class template is empty. -

    - + Synopsis
    @@ -59,7 +55,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html b/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html index 3d458857..9515b169 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html @@ -30,19 +30,15 @@ invoke_procedure"> invoke_procedure
    - + Description

    Returns the result type of invoke_procedure.

    -

    - Empty for non-class target function types whose arity is not satisfied - by the size of the sequence. -

    - + Synopsis
    @@ -59,7 +55,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/iterators.html b/doc/html/fusion/iterators.html index e34f9742..ec1ea8d1 100644 --- a/doc/html/fusion/iterators.html +++ b/doc/html/fusion/iterators.html @@ -74,7 +74,7 @@ Sequence.

    - + Header

    diff --git a/doc/html/fusion/iterators/concepts/bidirectional_iterator.html b/doc/html/fusion/iterators/concepts/bidirectional_iterator.html
    index e8ff46a5..31e8d406 100644
    --- a/doc/html/fusion/iterators/concepts/bidirectional_iterator.html
    +++ b/doc/html/fusion/iterators/concepts/bidirectional_iterator.html
    @@ -31,7 +31,7 @@
             Iterator">Bidirectional
             Iterator
     
    - + Description

    @@ -61,7 +61,7 @@

    - + Refinement of
    @@ -70,7 +70,7 @@ Iterator">Forward Iterator

    - + Expression requirements
    @@ -86,44 +86,103 @@ -Expression -Return type -Runtime - Complexity + +

    + Expression +

    + + +

    + Return type +

    + + +

    + Runtime Complexity +

    + -next(i) -next(i) +

    + + +

    + Bidirectional - Iterator -Constant + Iterator +

    + + +

    + Constant +

    + -prior(i) -prior(i) +

    + + +

    + Bidirectional - Iterator -Constant + Iterator +

    + + +

    + Constant +

    + -advance_c<N>(i) -advance_c<N>(i) +

    + + +

    + Bidirectional - Iterator -Constant + Iterator +

    + + +

    + Constant +

    + -advance<M>(i) -advance<M>(i) +

    + + +

    + Bidirectional - Iterator -Constant + Iterator +

    + + +

    + Constant +

    +
    - + Meta Expressions
    @@ -133,17 +192,32 @@ -Expression -Compile Time Complexity + +

    + Expression +

    + + +

    + Compile Time Complexity +

    + -result_of::prior<I>::type -Amortized constant - time + +

    + result_of::prior<I>::type +

    + + +

    + Amortized constant time +

    +
    - + Expression Semantics
    @@ -159,18 +233,32 @@ -Expression -Semantics + +

    + Expression +

    + + +

    + Semantics +

    + -prior(i) -An - iterator to the element preceding i - + +

    + prior(i) +

    + + +

    + An iterator to the element preceding i +

    +
    - + Invariants

    @@ -188,7 +276,7 @@

    - + Models
      diff --git a/doc/html/fusion/iterators/concepts/forward_iterator.html b/doc/html/fusion/iterators/concepts/forward_iterator.html index 474e4ed1..83c845a3 100644 --- a/doc/html/fusion/iterators/concepts/forward_iterator.html +++ b/doc/html/fusion/iterators/concepts/forward_iterator.html @@ -30,7 +30,7 @@ Iterator">Forward Iterator
    - + Description

    @@ -63,7 +63,7 @@

    - + Expression requirements
    @@ -78,63 +78,173 @@ -Expression -Return type -Runtime - Complexity + +

    + Expression +

    + + +

    + Return type +

    + + +

    + Runtime Complexity +

    + -next(i) -Forward Iterator -Constant + +

    + next(i) +

    + + +

    + Forward + Iterator +

    + + +

    + Constant +

    + -i == - j -Convertible - to bool -Constant + +

    + i == + j +

    + + +

    + Convertible to bool +

    + + +

    + Constant +

    + -i != - j -Convertible - to bool -Constant + +

    + i != + j +

    + + +

    + Convertible to bool +

    + + +

    + Constant +

    + -advance_c<N>(i) -Forward Iterator -Constant + +

    + advance_c<N>(i) +

    + + +

    + Forward + Iterator +

    + + +

    + Constant +

    + -advance<M>(i) -Forward Iterator -Constant + +

    + advance<M>(i) +

    + + +

    + Forward + Iterator +

    + + +

    + Constant +

    + -distance(i, j) -result_of::distance<I, J>::type -Constant + +

    + distance(i, + j) +

    + + +

    + result_of::distance<I, + J>::type +

    + + +

    + Constant +

    + -deref(i) -result_of::deref<I>::type -Constant + +

    + deref(i) +

    + + +

    + result_of::deref<I>::type +

    + + +

    + Constant +

    + -*i -result_of::deref<I>::type -Constant + +

    + *i +

    + + +

    + result_of::deref<I>::type +

    + + +

    + Constant +

    +
    - + Meta Expressions
    @@ -144,46 +254,108 @@ -Expression -Compile Time Complexity + +

    + Expression +

    + + +

    + Compile Time Complexity +

    + -result_of::next<I>::type -Amortized constant - time + +

    + result_of::next<I>::type +

    + + +

    + Amortized constant time +

    + -result_of::equal_to<I, J>::type -Amortized constant - time + +

    + result_of::equal_to<I, + J>::type +

    + + +

    + Amortized constant time +

    + -result_of::advance_c<I, N>::type -Linear + +

    + result_of::advance_c<I, + N>::type +

    + + +

    + Linear +

    + -result_of::advance<I ,M>::type -Linear + +

    + result_of::advance<I ,M>::type +

    + + +

    + Linear +

    + -result_of::distance<I ,J>::type -Linear + +

    + result_of::distance<I ,J>::type +

    + + +

    + Linear +

    + -result_of::deref<I>::type -Amortized constant - time + +

    + result_of::deref<I>::type +

    + + +

    + Amortized constant time +

    + -result_of::value_of<I>::type -Amortized constant - time + +

    + result_of::value_of<I>::type +

    + + +

    + Amortized constant time +

    +
    - + Expression Semantics
    @@ -193,63 +365,123 @@ -Expression -Semantics + +

    + Expression +

    + + +

    + Semantics +

    + -next(i) -An - iterator to the element following i - + +

    + next(i) +

    + + +

    + An iterator to the element following i +

    + -i == - j -Iterator - equality comparison + +

    + i == + j +

    + + +

    + Iterator equality comparison +

    + -i != - j -Iterator - inequality comparison + +

    + i != + j +

    + + +

    + Iterator inequality comparison +

    + -advance_c<N>(i) -An - iterator n elements after i - in the sequence + +

    + advance_c<N>(i) +

    + + +

    + An iterator n elements after i + in the sequence +

    + -advance<M>(i) -Equivalent - to advance_c<M::value>(i) - + +

    + advance<M>(i) +

    + + +

    + Equivalent to advance_c<M::value>(i) +

    + -distance(i, j) -The - number of elements between i - and j - + +

    + distance(i, + j) +

    + + +

    + The number of elements between i + and j +

    + -deref(i) -The - element at positioni - + +

    + deref(i) +

    + + +

    + The element at positioni +

    + -*i -Equivalent - to deref(i) - + +

    + *i +

    + + +

    + Equivalent to deref(i) +

    +
    - + Invariants

    @@ -274,7 +506,7 @@

    - + Models
      diff --git a/doc/html/fusion/iterators/concepts/random_access_iterator.html b/doc/html/fusion/iterators/concepts/random_access_iterator.html index c529727d..e355e36d 100644 --- a/doc/html/fusion/iterators/concepts/random_access_iterator.html +++ b/doc/html/fusion/iterators/concepts/random_access_iterator.html @@ -30,7 +30,7 @@ Access Iterator">Random Access Iterator
    - + Description

    @@ -63,7 +63,7 @@

    - + Refinement of
    @@ -73,7 +73,7 @@ Iterator

    - + Expression requirements
    @@ -89,44 +89,103 @@ -Expression -Return type -Runtime - Complexity + +

    + Expression +

    + + +

    + Return type +

    + + +

    + Runtime Complexity +

    + -next(i) -next(i) +

    + + +

    + Random - Access Iterator -Constant + Access Iterator +

    + + +

    + Constant +

    + -prior(i) -prior(i) +

    + + +

    + Random - Access Iterator -Constant + Access Iterator +

    + + +

    + Constant +

    + -advance_c<N>(i) -advance_c<N>(i) +

    + + +

    + Random - Access Iterator -Constant + Access Iterator +

    + + +

    + Constant +

    + -advance<M>(i) -advance<M>(i) +

    + + +

    + Random - Access Iterator -Constant + Access Iterator +

    + + +

    + Constant +

    +
    - + Meta Expressions
    @@ -136,29 +195,60 @@ -Expression -Compile Time Complexity + +

    + Expression +

    + + +

    + Compile Time Complexity +

    + -result_of::advance_c<I, N>::type -Amortized constant - time + +

    + result_of::advance_c<I, + N>::type +

    + + +

    + Amortized constant time +

    + -result_of::advance<I, M>::type -Amortized constant - time + +

    + result_of::advance<I, + M>::type +

    + + +

    + Amortized constant time +

    + -result_of::distance<I ,J>::type -Amortized constant - time + +

    + result_of::distance<I ,J>::type +

    + + +

    + Amortized constant time +

    +
    - + Models
      diff --git a/doc/html/fusion/iterators/functions/advance.html b/doc/html/fusion/iterators/functions/advance.html index bd93fe87..1290ec3b 100644 --- a/doc/html/fusion/iterators/functions/advance.html +++ b/doc/html/fusion/iterators/functions/advance.html @@ -26,14 +26,14 @@
      - + Description

      Moves an iterator by a specified distance.

      - + Synopsis
      @@ -44,7 +44,7 @@
       typename result_of::advance<I, M>::type advance(I const& i); 
       
      -

      Table 1.6. Parameters

      +

      Table 1.6. Parameters

      @@ -52,33 +52,65 @@ - - - + + + - - + - + Iterator +

      + + - - - + + +
      ParameterRequirementDescription +

      + Parameter +

      +
      +

      + Requirement +

      +
      +

      + Description +

      +
      iModel - of i +

      +
      +

      + Model of Forward - Iterator -

      Iterator to move relative to +

      + Iterator to move relative to +

      +
      NAn - MPL - Integral Constant -Number of positions to move +

      + N +

      +
      +

      + An MPL + Integral Constant +

      +
      +

      + Number of positions to move +

      +
      - + Expression Semantics
      @@ -99,14 +131,14 @@ may be negative.

      - + Header
       #include <boost/fusion/iterator/advance.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterators/functions/advance_c.html b/doc/html/fusion/iterators/functions/advance_c.html
      index faf542c7..27994e78 100644
      --- a/doc/html/fusion/iterators/functions/advance_c.html
      +++ b/doc/html/fusion/iterators/functions/advance_c.html
      @@ -26,14 +26,14 @@
       
       
      - + Description

      Moves an iterator by a specified distance.

      - + Synopsis
      @@ -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

      @@ -52,31 +52,64 @@ - - - + + + - - + - + Iterator +

      + + - - - + + +
      ParameterRequirementDescription +

      + Parameter +

      +
      +

      + Requirement +

      +
      +

      + Description +

      +
      iModel - of i +

      +
      +

      + Model of Forward - Iterator -

      Iterator to move relative to +

      + Iterator to move relative to +

      +
      NInteger - constantNumber of positions to move +

      + N +

      +
      +

      + Integer constant +

      +
      +

      + Number of positions to move +

      +
      - + Expression Semantics
      @@ -97,14 +130,14 @@ may be negative.

      - + Header
       #include <boost/fusion/iterator/advance.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterators/functions/deref.html b/doc/html/fusion/iterators/functions/deref.html
      index ea264e51..7e53a07f 100644
      --- a/doc/html/fusion/iterators/functions/deref.html
      +++ b/doc/html/fusion/iterators/functions/deref.html
      @@ -26,14 +26,14 @@
       
       
      - + Description

      Deferences an iterator.

      - + Synopsis
      @@ -43,7 +43,7 @@
       typename result_of::deref<I>::type deref(I const& i);
       
      -

      Table 1.2. Parameters

      +

      Table 1.2. Parameters

      @@ -51,23 +51,45 @@ - - - + + + - - + - + Iterator +

      + +
      ParameterRequirementDescription +

      + Parameter +

      +
      +

      + Requirement +

      +
      +

      + Description +

      +
      iModel - of i +

      +
      +

      + Model of Forward - Iterator -

      Operation's argument +

      + Operation's argument +

      +
      - + Expression Semantics
      @@ -82,14 +104,14 @@ i.

      - + Header
       #include <boost/fusion/iterator/deref.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterators/functions/distance.html b/doc/html/fusion/iterators/functions/distance.html
      index 3a21b7cb..48c9c217 100644
      --- a/doc/html/fusion/iterators/functions/distance.html
      +++ b/doc/html/fusion/iterators/functions/distance.html
      @@ -26,14 +26,14 @@
       
       
      - + Description

      Returns the distance between 2 iterators.

      - + Synopsis
      @@ -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

      @@ -52,24 +52,45 @@ - - - + + + - + - + Iterator into the same sequence +

      + +
      ParameterRequirementDescription +

      + Parameter +

      +
      +

      + Requirement +

      +
      +

      + Description +

      +
      -i, j -Models of i, j +

      +
      +

      + Models of Forward - Iterator into the same sequence

      The start and - end points of the distance to be measured +

      + The start and end points of the distance to be measured +

      +
      - + Expression Semantics
      @@ -84,14 +105,14 @@ iterators i and j.

      - + Header
       #include <boost/fusion/iterator/distance.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterators/functions/next.html b/doc/html/fusion/iterators/functions/next.html
      index b15f8e71..13a97c83 100644
      --- a/doc/html/fusion/iterators/functions/next.html
      +++ b/doc/html/fusion/iterators/functions/next.html
      @@ -26,14 +26,14 @@
       
       
      - + Description

      Moves an iterator 1 position forwards.

      - + Synopsis
      @@ -43,7 +43,7 @@
       typename result_of::next<I>::type next(I const& i);
       
      -

      Table 1.3. Parameters

      +

      Table 1.3. Parameters

      @@ -51,23 +51,45 @@ - - - + + + - - + - + Iterator +

      + +
      ParameterRequirementDescription +

      + Parameter +

      +
      +

      + Requirement +

      +
      +

      + Description +

      +
      iModel - of i +

      +
      +

      + Model of Forward - Iterator -

      Operation's argument +

      + Operation's argument +

      +
      - + Expression Semantics
      @@ -83,14 +105,14 @@ next element after i.

      - + Header
       #include <boost/fusion/iterator/next.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterators/functions/prior.html b/doc/html/fusion/iterators/functions/prior.html
      index 79aa299e..b4f33bba 100644
      --- a/doc/html/fusion/iterators/functions/prior.html
      +++ b/doc/html/fusion/iterators/functions/prior.html
      @@ -26,14 +26,14 @@
       
       
      - + Description

      Moves an iterator 1 position backwards.

      - + Synopsis
      @@ -43,7 +43,7 @@
       typename result_of::prior<I>::type prior(I const& i);
       
      -

      Table 1.4. Parameters

      +

      Table 1.4. Parameters

      @@ -51,23 +51,45 @@ - - - + + + - - + - + Iterator +

      + +
      ParameterRequirementDescription +

      + Parameter +

      +
      +

      + Requirement +

      +
      +

      + Description +

      +
      iModel - of i +

      +
      +

      + Model of Bidirectional - Iterator -

      Operation's argument +

      + Operation's argument +

      +
      - + Expression Semantics
      @@ -83,14 +105,14 @@ element prior to i.

      - + Header
       #include <boost/fusion/iterator/prior.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterators/metafunctions/advance.html b/doc/html/fusion/iterators/metafunctions/advance.html
      index 30820344..caf22919 100644
      --- a/doc/html/fusion/iterators/metafunctions/advance.html
      +++ b/doc/html/fusion/iterators/metafunctions/advance.html
      @@ -26,14 +26,14 @@
       
       
      - + Description

      Moves an iterator a specified distance.

      - + Synopsis
      @@ -47,7 +47,7 @@
       };
       
      -

      Table 1.17. Parameters

      +

      Table 1.17. Parameters

      @@ -55,33 +55,65 @@ - - - + + + - - + - + Iterator +

      + + - - - + + +
      ParameterRequirementDescription +

      + Parameter +

      +
      +

      + Requirement +

      +
      +

      + Description +

      +
      IModel - of I +

      +
      +

      + Model of Forward - Iterator -

      Iterator to move relative to +

      + Iterator to move relative to +

      +
      MModel - of MPL - Integral Constant -Number of positions to move +

      + M +

      +
      +

      + Model of MPL + Integral Constant +

      +
      +

      + Number of positions to move +

      +
      - + Expression Semantics
      @@ -101,14 +133,14 @@ may be negative.

      - + Header
       #include <boost/fusion/iterator/advance.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterators/metafunctions/advance_c.html b/doc/html/fusion/iterators/metafunctions/advance_c.html
      index 34c46b8b..1b866e2c 100644
      --- a/doc/html/fusion/iterators/metafunctions/advance_c.html
      +++ b/doc/html/fusion/iterators/metafunctions/advance_c.html
      @@ -26,14 +26,14 @@
       
       
      - + Description

      Moves an iterator by a specified distance.

      - + Synopsis
      @@ -47,7 +47,7 @@
       };
       
      -

      Table 1.18. Parameters

      +

      Table 1.18. Parameters

      @@ -55,31 +55,64 @@ - - - + + + - - + - + Iterator +

      + + - - - + + +
      ParameterRequirementDescription +

      + Parameter +

      +
      +

      + Requirement +

      +
      +

      + Description +

      +
      IModel - of I +

      +
      +

      + Model of Forward - Iterator -

      Iterator to move relative to +

      + Iterator to move relative to +

      +
      NInteger - constantNumber of positions to move +

      + N +

      +
      +

      + Integer constant +

      +
      +

      + Number of positions to move +

      +
      - + Expression Semantics
      @@ -99,14 +132,14 @@ may be negative. Equivalent to result_of::advance<I, boost::mpl::int_<N> >::type.

      - + Header
       #include <boost/fusion/iterator/advance.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterators/metafunctions/deref.html b/doc/html/fusion/iterators/metafunctions/deref.html
      index b50b5fbc..31a47bf9 100644
      --- a/doc/html/fusion/iterators/metafunctions/deref.html
      +++ b/doc/html/fusion/iterators/metafunctions/deref.html
      @@ -26,14 +26,14 @@
       
       
      - + Description

      Returns the type that will be returned by dereferencing an iterator.

      - + Synposis
      @@ -46,7 +46,7 @@
       };
       
      -

      Table 1.12. Parameters

      +

      Table 1.12. Parameters

      @@ -54,23 +54,45 @@ - - - + + + - - + - + Iterator +

      + +
      ParameterRequirementDescription +

      + Parameter +

      +
      +

      + Requirement +

      +
      +

      + Description +

      +
      IModel - of I +

      +
      +

      + Model of Forward - Iterator -

      Operation's argument +

      + Operation's argument +

      +
      - + Expression Semantics
      @@ -85,14 +107,14 @@ an iterator of type I.

      - + Header
       #include <boost/fusion/iterator/deref.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterators/metafunctions/distance.html b/doc/html/fusion/iterators/metafunctions/distance.html
      index fdcd83ff..92b6448b 100644
      --- a/doc/html/fusion/iterators/metafunctions/distance.html
      +++ b/doc/html/fusion/iterators/metafunctions/distance.html
      @@ -26,14 +26,14 @@
       
       
      - + Description

      Returns the distance between two iterators.

      - + Synopsis
      @@ -47,7 +47,7 @@
       };
       
      -

      Table 1.16. Parameters

      +

      Table 1.16. Parameters

      @@ -55,24 +55,45 @@ - - - + + + - + - + Iterator into the same sequence +

      + +
      ParameterRequirementDescription +

      + Parameter +

      +
      +

      + Requirement +

      +
      +

      + Description +

      +
      -I, J -Models of I, J +

      +
      +

      + Models of Forward - Iterator into the same sequence

      The start and - end points of the distance to be measured +

      + The start and end points of the distance to be measured +

      +
      - + Expression Semantics
      @@ -89,14 +110,14 @@ J.

      - + Header
       #include <boost/fusion/iterator/distance.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterators/metafunctions/equal_to.html b/doc/html/fusion/iterators/metafunctions/equal_to.html
      index dd58a123..2c6c1000 100644
      --- a/doc/html/fusion/iterators/metafunctions/equal_to.html
      +++ b/doc/html/fusion/iterators/metafunctions/equal_to.html
      @@ -26,7 +26,7 @@
       
       
      - + Description

      @@ -35,7 +35,7 @@ and J are equal.

      - + Synopsis
      @@ -49,7 +49,7 @@
       };
       
      -

      Table 1.15. Parameters

      +

      Table 1.15. Parameters

      @@ -57,22 +57,43 @@ - - - + + + - - +

      + I, J +

      + + +
      ParameterRequirementDescription +

      + Parameter +

      +
      +

      + Requirement +

      +
      +

      + Description +

      +
      -I, J -Any fusion iteratorsOperation's - arguments +

      + Any fusion iterators +

      +
      +

      + Operation's arguments +

      +
      - + Expression Semantics
      @@ -89,14 +110,14 @@ Returns boost::mpl::false_ otherwise.

      - + Header
       #include <boost/fusion/iterator/equal_to.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterators/metafunctions/next.html b/doc/html/fusion/iterators/metafunctions/next.html
      index dd758a85..2aa6e18a 100644
      --- a/doc/html/fusion/iterators/metafunctions/next.html
      +++ b/doc/html/fusion/iterators/metafunctions/next.html
      @@ -26,14 +26,14 @@
       
       
      - + Description

      Returns the type of the next iterator in a sequence.

      - + Synposis
      @@ -46,7 +46,7 @@
       };
       
      -

      Table 1.13. Parameters

      +

      Table 1.13. Parameters

      @@ -54,23 +54,45 @@ - - - + + + - - + - + Iterator +

      + +
      ParameterRequirementDescription +

      + Parameter +

      +
      +

      + Requirement +

      +
      +

      + Description +

      +
      IModel - of I +

      +
      +

      + Model of Forward - Iterator -

      Operation's argument +

      + Operation's argument +

      +
      - + Expression Semantics
      @@ -86,14 +108,14 @@ next element in the sequence after I.

      - + Header
       #include <boost/fusion/iterator/next.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterators/metafunctions/prior.html b/doc/html/fusion/iterators/metafunctions/prior.html
      index b7f2e20e..98437f28 100644
      --- a/doc/html/fusion/iterators/metafunctions/prior.html
      +++ b/doc/html/fusion/iterators/metafunctions/prior.html
      @@ -26,14 +26,14 @@
       
       
      - + Description

      Returns the type of the previous iterator in a sequence.

      - + Synopsis
      @@ -46,7 +46,7 @@
       };
       
      -

      Table 1.14. Parameters

      +

      Table 1.14. Parameters

      @@ -54,23 +54,45 @@ - - - + + + - - + - + Iterator +

      + +
      ParameterRequirementDescription +

      + Parameter +

      +
      +

      + Requirement +

      +
      +

      + Description +

      +
      IModel - of I +

      +
      +

      + Model of Bidirectional - Iterator -

      Operation's argument +

      + Operation's argument +

      +
      - + Expression Semantics
      @@ -86,14 +108,14 @@ previous element in the sequence before I.

      - + Header
       #include <boost/fusion/iterator/prior.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterators/metafunctions/value_of.html b/doc/html/fusion/iterators/metafunctions/value_of.html
      index f1d20079..0a430352 100644
      --- a/doc/html/fusion/iterators/metafunctions/value_of.html
      +++ b/doc/html/fusion/iterators/metafunctions/value_of.html
      @@ -26,14 +26,14 @@
       
       
      - + Description

      Returns the type stored at the position of an iterator.

      - + Synopsis
      @@ -46,7 +46,7 @@
       };
       
      -

      Table 1.11. Parameters

      +

      Table 1.11. Parameters

      @@ -54,23 +54,45 @@ - - - + + + - - + - + Iterator +

      + +
      ParameterRequirementDescription +

      + Parameter +

      +
      +

      + Requirement +

      +
      +

      + Description +

      +
      IModel - of I +

      +
      +

      + Model of Forward - Iterator -

      Operation's argument +

      + Operation's argument +

      +
      - + Expression Semantics
      @@ -85,14 +107,14 @@ a sequence at iterator position I.

      - + Header
       #include <boost/fusion/iterator/value_of.hpp>
       
      - + Example
      diff --git a/doc/html/fusion/iterators/operators/operator_equality.html b/doc/html/fusion/iterators/operators/operator_equality.html
      index 488f4c4f..3279bad6 100644
      --- a/doc/html/fusion/iterators/operators/operator_equality.html
      +++ b/doc/html/fusion/iterators/operators/operator_equality.html
      @@ -31,14 +31,14 @@
               =="> Operator
               ==
    - + Description

    Compares 2 iterators for equality.

    - + Synopsis
    @@ -49,7 +49,7 @@
     unspecified operator==(I const& i, J const& i);
     
    -

    Table 1.9. Parameters

    +

    Table 1.9. Parameters

    @@ -57,22 +57,43 @@ - - - + + + - - +

    + i, j +

    + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    -i, j -Any fusion iteratorsOperation's - arguments +

    + Any fusion iterators +

    +
    +

    + Operation's arguments +

    +
    - + Expression Semantics
    @@ -88,7 +109,7 @@ and j respectively.

    - + Header
    diff --git a/doc/html/fusion/iterators/operators/operator_inequality.html b/doc/html/fusion/iterators/operators/operator_inequality.html
    index 81f3900f..7485a5e2 100644
    --- a/doc/html/fusion/iterators/operators/operator_inequality.html
    +++ b/doc/html/fusion/iterators/operators/operator_inequality.html
    @@ -30,14 +30,14 @@
             !="> Operator
             !=
     
    - + Description

    Compares 2 iterators for inequality.

    - + Synopsis
    @@ -48,7 +48,7 @@
     unspecified operator==(I const& i, J const& i);
     
    -

    Table 1.10. Parameters

    +

    Table 1.10. Parameters

    @@ -56,22 +56,43 @@ - - - + + + - - +

    + i, j +

    + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    -i, j -Any fusion iteratorsOperation's - arguments +

    + Any fusion iterators +

    +
    +

    + Operation's arguments +

    +
    - + Expression Semantics
    @@ -84,7 +105,7 @@ and j respectively.

    - + Header
    diff --git a/doc/html/fusion/iterators/operators/operator_unary_star.html b/doc/html/fusion/iterators/operators/operator_unary_star.html
    index ebb5e82a..c1574731 100644
    --- a/doc/html/fusion/iterators/operators/operator_unary_star.html
    +++ b/doc/html/fusion/iterators/operators/operator_unary_star.html
    @@ -30,14 +30,14 @@
             *"> Operator
             *
     
    - + Description

    Dereferences an iterator.

    - + Synopsis
    @@ -47,7 +47,7 @@
     typename result_of::deref<I>::type operator*(unspecified<I> const& i);
     
    -

    Table 1.8. Parameters

    +

    Table 1.8. Parameters

    @@ -55,23 +55,45 @@ - - - + + + - - + - + Iterator +

    + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    iModel - of i +

    +
    +

    + Model of Forward - Iterator -

    Operation's argument +

    + Operation's argument +

    +
    - + Expression Semantics
    @@ -86,14 +108,14 @@ Semantics: Equivalent to deref(i).

    - + Header
     #include <boost/fusion/iterator/deref.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/notes.html b/doc/html/fusion/notes.html
    index ca6f805a..9f7aef89 100644
    --- a/doc/html/fusion/notes.html
    +++ b/doc/html/fusion/notes.html
    @@ -27,7 +27,7 @@
     
     

    - + Recursive Inlined Functions

    @@ -40,7 +40,7 @@ compiler limit of course). Compile time complexity remains linear.

    - + Overloaded Functions

    @@ -50,7 +50,7 @@ given a key, k.

    - + Tag Dispatching

    @@ -102,7 +102,7 @@

    - + Extensibility

    @@ -137,7 +137,7 @@ it very cheap to pass around.

    - + Element Conversion

    @@ -160,7 +160,7 @@

    Array arguments are deduced to reference to const types. For example - [14] + [14] :

    @@ -193,7 +193,7 @@
     list<void (*)(int)>
     

    - + boost::ref

    @@ -236,7 +236,7 @@



    -

    [14] +

    [14] 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 diff --git a/doc/html/fusion/organization.html b/doc/html/fusion/organization.html index 0eb24051..650b4ee2 100644 --- a/doc/html/fusion/organization.html +++ b/doc/html/fusion/organization.html @@ -34,12 +34,18 @@ 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 file placed in @@ -50,7 +56,7 @@ against.

    - + Directory

      @@ -159,7 +165,7 @@

    - + Example

    @@ -175,12 +181,12 @@

    The first includes all sequences. The second includes all of sequence containers. The third includes only list - [3] + [3] .



    -

    [3] +

    [3] 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 d8732b9a..44f6ffbc 100644 --- a/doc/html/fusion/preface.html +++ b/doc/html/fusion/preface.html @@ -25,14 +25,26 @@
    -

    - Algorithms + Data Structures = Programs. -

    -

    - --Niklaus Wirth -

    +
    +

    +

    +

    + Algorithms + Data Structures = Programs. +

    +

    +

    +
    +
    +

    +

    +

    + --Niklaus Wirth +

    +

    +

    +

    - + Description

    @@ -50,7 +62,7 @@ of compile time metaprogramming with runtime programming.

    - + Motivation

    @@ -76,7 +88,7 @@ an instant AHA! moment.

    - + How to use this manual

    @@ -84,7 +96,7 @@ icons precede some text to indicate:

    -

    Table 1.1. Icons

    +

    Table 1.1. Icons

    @@ -92,34 +104,91 @@ - - - + + + - - - + + + - - - + + + - - - + + + - - - + + +
    IconNameMeaning +

    + Icon +

    +
    +

    + Name +

    +
    +

    + Meaning +

    +
    noteNoteInformation provided - is auxiliary but will give the reader a deeper insight into a specific - topic. May be skipped. +

    + note +

    +
    +

    + Note +

    +
    +

    + Information provided is auxiliary but will give the reader a deeper insight + into a specific topic. May be skipped. +

    +
    alertAlertInformation provided - is of utmost importance. +

    + alert +

    +
    +

    + Alert +

    +
    +

    + Information provided is of utmost importance. +

    +
    cautionCautionA mild warning. +

    + caution +

    +
    +

    + Caution +

    +
    +

    + A mild warning. +

    +
    tipTipA potentially useful - and helpful piece of information. +

    + tip +

    +
    +

    + Tip +

    +
    +

    + A potentially useful and helpful piece of information. +

    +
    @@ -130,7 +199,7 @@ Tools.

    - + Support

    diff --git a/doc/html/fusion/quick_start.html b/doc/html/fusion/quick_start.html index b2f1518a..52894bea 100644 --- a/doc/html/fusion/quick_start.html +++ b/doc/html/fusion/quick_start.html @@ -33,7 +33,7 @@

    For starters, we shall include all of Fusion's _sequence_s - [1] + [1] :

    @@ -41,7 +41,7 @@
     

    Let's begin with a vector - [2] + [2] :

    @@ -59,7 +59,7 @@
           Let's see some examples.
         

    - + Print the vector as XML

    @@ -105,10 +105,16 @@ [Caution] Caution -

    - The result of typeid(x).name() is platform specific. The code here is - just for exposition. Of course you already know that :-) -

    + +

    +

    +

    + The result of typeid(x).name() is platform specific. The code here is + just for exposition. Of course you already know that :-) +

    +

    +

    +

    for_each is generic. With @@ -116,7 +122,7 @@ print just about any Fusion Sequence.

    - + Print only pointers

    @@ -150,7 +156,7 @@ Easy, right?

    - + Associative tuples

    @@ -225,7 +231,7 @@ a dog or a whole alternate_universe.

    - + Tip of the Iceberg

    @@ -236,12 +242,12 @@



    -

    [1] +

    [1] There are finer grained header files available if you wish to have more control over which components to include (see section Orgainization for details).

    -

    [2] +

    [2] 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. diff --git a/doc/html/fusion/sequences.html b/doc/html/fusion/sequences.html index 9346711d..6888e96f 100644 --- a/doc/html/fusion/sequences.html +++ b/doc/html/fusion/sequences.html @@ -95,7 +95,7 @@ type that can be used to iterate through the Sequence's elements.

    - + Header

    diff --git a/doc/html/fusion/sequences/adapted.html b/doc/html/fusion/sequences/adapted.html
    index c00b2dcf..061b7d2e 100644
    --- a/doc/html/fusion/sequences/adapted.html
    +++ b/doc/html/fusion/sequences/adapted.html
    @@ -40,11 +40,11 @@
             mechanism. If you wish to use these sequences with fusion, simply include
             the necessary files and they will be regarded as first-class, fully conforming
             fusion sequences
    -        [4]
    +        [4]
             .
           

    - + Header

    @@ -52,7 +52,7 @@
     


    -

    [4] +

    [4] Fusion sequences may also be adapted as fully conforming MPL sequences (see Intrinsics). That way, we can have 2-way adaptation to and from MPL diff --git a/doc/html/fusion/sequences/adapted/boost__array.html b/doc/html/fusion/sequences/adapted/boost__array.html index 3d89512f..f7c44a17 100644 --- a/doc/html/fusion/sequences/adapted/boost__array.html +++ b/doc/html/fusion/sequences/adapted/boost__array.html @@ -33,21 +33,21 @@ Access Sequence.

    - + Header
     #include <boost/fusion/sequence/adapted/array.hpp>
     
    - + Model of
    - + Example
    @@ -60,7 +60,7 @@
     std::cout << at_c<2>(arr) << std::endl;
     
    - + See also

    diff --git a/doc/html/fusion/sequences/adapted/boost__tuple.html b/doc/html/fusion/sequences/adapted/boost__tuple.html index 6ef359ab..938bac68 100644 --- a/doc/html/fusion/sequences/adapted/boost__tuple.html +++ b/doc/html/fusion/sequences/adapted/boost__tuple.html @@ -33,20 +33,20 @@ Sequence.

    - + Header
     #include <boost/fusion/sequence/adapted/boost_tuple.hpp>
     
    - + Model of
    - + Example
    @@ -55,7 +55,7 @@
     std::cout << *boost::fusion::next(boost::fusion::begin(example_tuple)) << '\n';
     
    - + See also

    diff --git a/doc/html/fusion/sequences/adapted/boost__variant.html b/doc/html/fusion/sequences/adapted/boost__variant.html index 08691e2e..a99f9509 100644 --- a/doc/html/fusion/sequences/adapted/boost__variant.html +++ b/doc/html/fusion/sequences/adapted/boost__variant.html @@ -36,21 +36,21 @@ value of that type.

    - + Header
     #include <boost/fusion/sequence/adapted/variant.hpp>
     
    - + Model of
    - + Example
    @@ -60,7 +60,7 @@
     std::cout << example_variant << '\n';
     
    - + See also

    diff --git a/doc/html/fusion/sequences/adapted/mpl_sequence.html b/doc/html/fusion/sequences/adapted/mpl_sequence.html index 0cf50330..f9e1f6e6 100644 --- a/doc/html/fusion/sequences/adapted/mpl_sequence.html +++ b/doc/html/fusion/sequences/adapted/mpl_sequence.html @@ -31,14 +31,14 @@ sequences fully conforming fusion sequences.

    - + Header
     #include <boost/fusion/sequence/adapted/mpl.hpp>
     
    - + Model of
      @@ -62,7 +62,7 @@
    - + Example
    @@ -76,7 +76,7 @@
     std::cout << at_c<1>(v) << std::endl;
     
    - + See also

    diff --git a/doc/html/fusion/sequences/adapted/std__pair.html b/doc/html/fusion/sequences/adapted/std__pair.html index be79aa89..fe7f5696 100644 --- a/doc/html/fusion/sequences/adapted/std__pair.html +++ b/doc/html/fusion/sequences/adapted/std__pair.html @@ -33,21 +33,21 @@ Access Sequence.

    - + Header
     #include <boost/fusion/sequence/adapted/std_pair.hpp>
     
    - + Model of
    - + Example
    @@ -57,7 +57,7 @@
     std::cout << p << std::endl;
     
    - + See also

    diff --git a/doc/html/fusion/sequences/concepts.html b/doc/html/fusion/sequences/concepts.html index 83e83b5a..f87f6f03 100644 --- a/doc/html/fusion/sequences/concepts.html +++ b/doc/html/fusion/sequences/concepts.html @@ -40,7 +40,7 @@ Fusion Sequences are organized into a hierarchy of concepts.

    - + Traversal

    @@ -58,7 +58,7 @@ Sequence. These concepts pertain to sequence traversal.

    - + Associativity

    diff --git a/doc/html/fusion/sequences/concepts/associative_sequence.html b/doc/html/fusion/sequences/concepts/associative_sequence.html index 6fa444c9..13f2d6d5 100644 --- a/doc/html/fusion/sequences/concepts/associative_sequence.html +++ b/doc/html/fusion/sequences/concepts/associative_sequence.html @@ -30,7 +30,7 @@ Sequence">Associative Sequence

    - + Description

    @@ -71,7 +71,7 @@

    - + Valid Expressions
    @@ -86,43 +86,101 @@ -Expression -Return type -Type Requirements -Runtime - Complexity + +

    + Expression +

    + + +

    + Return type +

    + + +

    + Type Requirements +

    + + +

    + Runtime Complexity +

    + -has_key<K>(s) -MPL - Boolean Constant. Convertible to bool. -  -Constant +

    + has_key<K>(s) +

    + + +

    + MPL + Boolean Constant. Convertible to bool. +

    + + +

    +

    + + +

    + Constant +

    + -at_key<K>(s) -Any - type -  -Constant + +

    + at_key<K>(s) +

    + + +

    + Any type +

    + + +

    +

    + + +

    + Constant +

    + -at_key<K>(s) = o -Any - type -s - is mutable and e = o, - where e is the first - element in the sequence, is a valid expression. -Constant +

    + at_key<K>(s) + = o +

    + + +

    + Any type +

    + + +

    + s is mutable and + e = + o, where e is the first element in the + sequence, is a valid expression. +

    + + +

    + Constant +

    +
    - + Result Type Expressions
    @@ -132,37 +190,69 @@ -Expression -Compile Time Complexity + +

    + Expression +

    + + +

    + Compile Time Complexity +

    + -result_of::has_key<S, K>::type -Amortized constant - time + +

    + result_of::has_key<S, + K>::type +

    + + +

    + Amortized constant time +

    + -result_of::at_key<S, K>::type -Amortized constant - time + +

    + result_of::at_key<S, + K>::type +

    + + +

    + Amortized constant time +

    + -result_of::value_at_key<S, K>::type -Amortized constant - time + +

    + result_of::value_at_key<S, + K>::type +

    + + +

    + Amortized constant time +

    +
    -

    +

    - + Expression Semantics
    @@ -172,30 +262,52 @@ -Expression -Semantics + +

    + Expression +

    + + +

    + Semantics +

    + -has_key<K>(s) -A - boolean Integral Constant c - such that c::value == - true if and only if there - is one or more elements with the key k - in s; see has_key. + +

    + has_key<K>(s) +

    + + +

    + A boolean Integral Constant c + such that c::value == + true if and only if there + is one or more elements with the key k + in s; see has_key. +

    + -at_key<K>(s) -The - element associated with the key K - in the sequence s; - see at. + +

    + at_key<K>(s) +

    + + +

    + The element associated with the key K + in the sequence s; + see at. +

    +
    - + Models
      diff --git a/doc/html/fusion/sequences/concepts/bidirectional_sequence.html b/doc/html/fusion/sequences/concepts/bidirectional_sequence.html index b64f4c60..02db76e5 100644 --- a/doc/html/fusion/sequences/concepts/bidirectional_sequence.html +++ b/doc/html/fusion/sequences/concepts/bidirectional_sequence.html @@ -31,7 +31,7 @@ Sequence">Bidirectional Sequence
    - + Description

    @@ -42,7 +42,7 @@ Iterator.

    - + Refinement of
    @@ -72,7 +72,7 @@
    - + Valid Expressions
    @@ -89,51 +89,125 @@ -Expression -Return type -Type Requirements -Runtime - Complexity + +

    + Expression +

    + + +

    + Return type +

    + + +

    + Type Requirements +

    + + +

    + Runtime Complexity +

    + -begin(s) -Bidirectional - Iterator -  -Constant - - -end(s) -Bidirectional - Iterator -  -Constant - - -back(s) -Any - type -  -Constant - - -back(s) = o -Any - type -s - is mutable and e = o, - where e is the first - element in the sequence, is a valid expression. -Constant +

    + begin(s) +

    + + +

    + Bidirectional + Iterator +

    + + +

    +

    + + +

    + Constant +

    + + + + +

    + end(s) +

    + + +

    + Bidirectional + Iterator +

    + + +

    +

    + + +

    + Constant +

    + + + + +

    + back(s) +

    + + +

    + Any type +

    + + +

    +

    + + +

    + Constant +

    + + + + +

    + back(s) + = o +

    + + +

    + Any type +

    + + +

    + s is mutable and + e = + o, where e is the first element in the + sequence, is a valid expression. +

    + + +

    + Constant +

    +
    - + Result Type Expressions
    @@ -143,29 +217,58 @@ -Expression -Compile Time Complexity + +

    + Expression +

    + + +

    + Compile Time Complexity +

    + -result_of::begin<S>::type -Amortized constant - time + +

    + result_of::begin<S>::type +

    + + +

    + Amortized constant time +

    + -result_of::end<S>::type -Amortized constant - time + +

    + result_of::end<S>::type +

    + + +

    + Amortized constant time +

    + -result_of::back<S>::type -Amortized constant - time + +

    + result_of::back<S>::type +

    + + +

    + Amortized constant time +

    +
    - + Expression Semantics
    @@ -181,23 +284,39 @@ -Expression -Semantics + +

    + Expression +

    + + +

    + Semantics +

    + -back(s) -The - last element in the sequence; see back. + +

    + back(s) +

    + + +

    + The last element in the sequence; see back. +

    +
    - + Models
    diff --git a/doc/html/fusion/sequences/concepts/forward_sequence.html b/doc/html/fusion/sequences/concepts/forward_sequence.html index 5aa9edd8..87b1b377 100644 --- a/doc/html/fusion/sequences/concepts/forward_sequence.html +++ b/doc/html/fusion/sequences/concepts/forward_sequence.html @@ -30,7 +30,7 @@ Sequence">Forward Sequence
    - + Description

    @@ -62,7 +62,7 @@

    - + Valid Expressions
    @@ -77,65 +77,169 @@ - - - - + + + + - - - - - - - - - - - - - - - - - - +

    + begin(s) +

    + - - - - - - - - - - - - +

    + Forward + Iterator +

    + - +

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ExpressionReturn typeType RequirementsRuntime - Complexity +

    + Expression +

    +
    +

    + Return type +

    +
    +

    + Type Requirements +

    +
    +

    + Runtime Complexity +

    +
    begin(s)Forward Iterator Constant
    end(s)Forward Iterator Constant
    size(s) -MPL - Integral Constant. Convertible to int. Constant
    empty(s) -MPL - Boolean Constant. Convertible to bool. Constant
    front(s)Any - type Constant
    front(s) = oAny - type -s - is mutable and e = o, - where e is the first - element in the sequence, is a valid expression.Constant +

    + Constant +

    +
    +

    + end(s) +

    +
    +

    + Forward + Iterator +

    +
    +

    +

    +
    +

    + Constant +

    +
    +

    + size(s) +

    +
    +

    + MPL + Integral Constant. Convertible to int. +

    +
    +

    +

    +
    +

    + Constant +

    +
    +

    + empty(s) +

    +
    +

    + MPL + Boolean Constant. Convertible to bool. +

    +
    +

    +

    +
    +

    + Constant +

    +
    +

    + front(s) +

    +
    +

    + Any type +

    +
    +

    +

    +
    +

    + Constant +

    +
    +

    + front(s) + = o +

    +
    +

    + Any type +

    +
    +

    + s is mutable and + e = + o, where e is the first element in the + sequence, is a valid expression. +

    +
    +

    + Constant +

    +
    - + Result Type Expressions
    @@ -145,37 +249,82 @@ -Expression -Compile Time Complexity + +

    + Expression +

    + + +

    + Compile Time Complexity +

    + -result_of::begin<S>::type -Amortized constant - time + +

    + result_of::begin<S>::type +

    + + +

    + Amortized constant time +

    + -result_of::end<S>::type -Amortized constant - time + +

    + result_of::end<S>::type +

    + + +

    + Amortized constant time +

    + -result_of::size<S>::type -Unspecified + +

    + result_of::size<S>::type +

    + + +

    + Unspecified +

    + -result_of::empty<S>::type -Constant time + +

    + result_of::empty<S>::type +

    + + +

    + Constant time +

    + -result_of::front<S>::type -Amortized constant - time + +

    + result_of::front<S>::type +

    + + +

    + Amortized constant time +

    +
    - + Expression Semantics
    @@ -185,42 +334,85 @@ -Expression -Semantics + +

    + Expression +

    + + +

    + Semantics +

    + -begin(s) -An - iterator to the first element of the sequence; see begin. + +

    + begin(s) +

    + + +

    + An iterator to the first element of the sequence; see begin. +

    + -end(s) -A - past-the-end iterator to the sequence; see end. + +

    + end(s) +

    + + +

    + A past-the-end iterator to the sequence; see end. +

    + -size(s) -The - size of the sequence; see size. + +

    + size(s) +

    + + +

    + The size of the sequence; see size. +

    + -empty(s) -A - boolean Integral Constant c - such that c::value == - true if and only if the sequence - is empty; see empty. + +

    + empty(s) +

    + + +

    + A boolean Integral Constant c + such that c::value == + true if and only if the + sequence is empty; see empty. +

    + -front(s) -The - first element in the sequence; see front. + +

    + front(s) +

    + + +

    + The first element in the sequence; see front. +

    +
    - + Invariants

    @@ -246,7 +438,7 @@

    - + Models
    diff --git a/doc/html/fusion/sequences/concepts/random_access_sequence.html b/doc/html/fusion/sequences/concepts/random_access_sequence.html index d286f202..34dd60ab 100644 --- a/doc/html/fusion/sequences/concepts/random_access_sequence.html +++ b/doc/html/fusion/sequences/concepts/random_access_sequence.html @@ -31,7 +31,7 @@ Access Sequence">Random Access Sequence
    - + Description

    @@ -43,7 +43,7 @@ sequence elements.

    - + Refinement of
    @@ -65,8 +65,9 @@
    N
    - An integral constant -
    + An MPL + Integral Constant +
    o
    An arbitrary object @@ -78,7 +79,7 @@
    - + Valid Expressions
    @@ -95,51 +96,125 @@
    - - - - + + + + - - - - - - - - - - - - - - - - - - - - - +

    + begin(s) +

    + + + + + + + + + + + + + + + + + + + + + +
    ExpressionReturn typeType RequirementsRuntime - Complexity +

    + Expression +

    +
    +

    + Return type +

    +
    +

    + Type Requirements +

    +
    +

    + Runtime Complexity +

    +
    begin(s)Random - Access Iterator Constant
    end(s)Random - Access Iterator Constant
    at<N>(s)Any - type Constant
    at<N>(s) = oAny - type -s - is mutable and e = o, - where e is the first - element in the sequence, is a valid expression.Constant +

    + Random + Access Iterator +

    +
    +

    +

    +
    +

    + Constant +

    +
    +

    + end(s) +

    +
    +

    + Random + Access Iterator +

    +
    +

    +

    +
    +

    + Constant +

    +
    +

    + at<N>(s) +

    +
    +

    + Any type +

    +
    +

    +

    +
    +

    + Constant +

    +
    +

    + at<N>(s) + = o +

    +
    +

    + Any type +

    +
    +

    + s is mutable and + e = + o, where e is the first element in the + sequence, is a valid expression. +

    +
    +

    + Constant +

    +
    - + Result Type Expressions
    @@ -149,42 +224,80 @@ -Expression -Compile Time Complexity + +

    + Expression +

    + + +

    + Compile Time Complexity +

    + -result_of::begin<S>::type -Amortized constant - time + +

    + result_of::begin<S>::type +

    + + +

    + Amortized constant time +

    + -result_of::end<S>::type -Amortized constant - time + +

    + result_of::end<S>::type +

    + + +

    + Amortized constant time +

    + -result_of::at<S, N>::type -Amortized constant - time + +

    + result_of::at<S, + N>::type +

    + + +

    + Amortized constant time +

    + -result_of::value_at<S, N>::type -Amortized constant - time + +

    + result_of::value_at<S, + N>::type +

    + + +

    + Amortized constant time +

    + -

    +

    - + Expression Semantics
    @@ -200,23 +313,39 @@ -Expression -Semantics + +

    + Expression +

    + + +

    + Semantics +

    + -at<N>(s) -The - Nth element from the beginning of the sequence; see at. + +

    + at<N>(s) +

    + + +

    + The Nth element from the beginning of the sequence; see at. +

    +
    - + Models
    diff --git a/doc/html/fusion/sequences/containers.html b/doc/html/fusion/sequences/containers.html index 06186496..bc863188 100644 --- a/doc/html/fusion/sequences/containers.html +++ b/doc/html/fusion/sequences/containers.html @@ -39,7 +39,7 @@ These containers are more or less counterparts of those in STL.

    - + Header

    diff --git a/doc/html/fusion/sequences/containers/cons.html b/doc/html/fusion/sequences/containers/cons.html
    index 7a627c39..562e566d 100644
    --- a/doc/html/fusion/sequences/containers/cons.html
    +++ b/doc/html/fusion/sequences/containers/cons.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -41,14 +41,14 @@ Inlined Functions).

    - + Header
     #include <boost/fusion/sequence/container/list/cons.hpp>
     
    - + Synopsis
    @@ -56,7 +56,7 @@
     struct cons;
     
    - + Template parameters
    @@ -67,27 +67,60 @@
    - - - + + + - - - + + + - - - + + +
    ParameterDescriptionDefault +

    + Parameter +

    +
    +

    + Description +

    +
    +

    + Default +

    +
    CarHead - type  +

    + Car +

    +
    +

    + Head type +

    +
    +

    +

    +
    CdrTail - typenil +

    + Cdr +

    +
    +

    + Tail type +

    +
    +

    + nil +

    +
    - + Model of
    - + Expression Semantics
    @@ -145,57 +179,114 @@ -Expression -Semantics + +

    + Expression +

    + + +

    + Semantics +

    + -nil() -Creates - an empty list. + +

    + nil() +

    + + +

    + Creates an empty list. +

    + -C() -Creates - a cons with default constructed elements. + +

    + C() +

    + + +

    + Creates a cons with default constructed elements. +

    + -C(car) -Creates - a cons with car head - and default constructed tail. + +

    + C(car) +

    + + +

    + Creates a cons with car + head and default constructed tail. +

    + -C(car, - cdr) -Creates - a cons with car head - and cdr tail. + +

    + C(car, + cdr) +

    + + +

    + Creates a cons with car + head and cdr tail. +

    + -C(s) -Copy - constructs a cons from a C(s) +

    + + +

    + Copy constructs a cons from a Forward - Sequence, s. + Sequence, s. +

    + -l = - s -Assigns - to a cons, l, from - a l = + s +

    + + +

    + Assigns to a cons, l, + from a Forward - Sequence, s. + Sequence, s. +

    + -at<N>(l) -The - Nth element from the beginning of the sequence; see at. + +

    + at<N>(l) +

    + + +

    + The Nth element from the beginning of the sequence; see at. +

    + -

    +

    - + Example
     cons<int, cons<float> > l(12, cons<float>(5.5f));
    -std::cout << at<0>(l) << std::endl;
    -std::cout << at<1>(l) << std::endl;
    +std::cout << at_c<0>(l) << std::endl;
    +std::cout << at_c<1>(l) << std::endl;
     
    diff --git a/doc/html/fusion/sequences/containers/list.html b/doc/html/fusion/sequences/containers/list.html index 11cd0672..d2a8b965 100644 --- a/doc/html/fusion/sequences/containers/list.html +++ b/doc/html/fusion/sequences/containers/list.html @@ -26,7 +26,7 @@
    - + Description

    @@ -38,7 +38,7 @@ runtime cost of access to each element is peculiarly constant (see Recursive Inlined Functions).

    - + Header
    @@ -46,7 +46,7 @@
     #include <boost/fusion/sequence/container/list/list_forward.hpp>
     
    - + Synopsis
    @@ -77,7 +77,7 @@
     #define FUSION_MAX_LIST_SIZE 20
     
    - + Template parameters
    @@ -88,20 +88,42 @@ - - - + + + - - +

    + T0...TN +

    + + +
    ParameterDescriptionDefault +

    + Parameter +

    +
    +

    + Description +

    +
    +

    + Default +

    +
    -T0...TN -Element typesunspecified-type +

    + Element types +

    +
    +

    + unspecified-type +

    +
    - + Model of
    - + Expression Semantics
    @@ -150,45 +173,89 @@ -Expression -Semantics + +

    + Expression +

    + + +

    + Semantics +

    + -L() -Creates - a list with default constructed elements. + +

    + L() +

    + + +

    + Creates a list with default constructed elements. +

    + -L(e0, e1,... - en) -Creates - a list with elements e0...en. + +

    + L(e0, + e1,... + en) +

    + + +

    + Creates a list with elements e0...en. +

    + -L(s) -Copy - constructs a list from a L(s) +

    + + +

    + Copy constructs a list from a Forward - Sequence, s. + Sequence, s. +

    + -l = - s -Assigns - to a list, l, from - a l = + s +

    + + +

    + Assigns to a list, l, + from a Forward - Sequence, s. + Sequence, s. +

    + -at<N>(l) -The - Nth element from the beginning of the sequence; see at. + +

    + at<N>(l) +

    + + +

    + The Nth element from the beginning of the sequence; see at. +

    + -

    +

    - + Example
     list<int, float> l(12, 5.5f);
    -std::cout << at<0>(l) << std::endl;
    -std::cout << at<1>(l) << std::endl;
    +std::cout << at_c<0>(l) << std::endl;
    +std::cout << at_c<1>(l) << std::endl;
     
    diff --git a/doc/html/fusion/sequences/containers/map.html b/doc/html/fusion/sequences/containers/map.html index 5201c95f..8edce548 100644 --- a/doc/html/fusion/sequences/containers/map.html +++ b/doc/html/fusion/sequences/containers/map.html @@ -26,7 +26,7 @@
    - + Description

    @@ -41,14 +41,14 @@ Functions).

    - + Header
     #include <boost/fusion/sequence/container/map.hpp>
     
    - + Synopsis
    @@ -79,7 +79,7 @@
     #define FUSION_MAX_MAP_SIZE 20
     
    - + Template parameters
    @@ -90,20 +90,42 @@ - - - + + + - - +

    + T0...TN +

    + + +
    ParameterDescriptionDefault +

    + Parameter +

    +
    +

    + Description +

    +
    +

    + Default +

    +
    -T0...TN -Element typesunspecified-type +

    + Element types +

    +
    +

    + unspecified-type +

    +
    - + Model of
      @@ -137,7 +159,7 @@
    - + Expression Semantics
    @@ -155,55 +177,92 @@ -Expression -Semantics + +

    + Expression +

    + + +

    + Semantics +

    + -M() -Creates - a map with default constructed elements. + +

    + M() +

    + + +

    + Creates a map with default constructed elements. +

    + -M(e0, e1,... - en) -Creates - a map with element pairs e0...en. + +

    + M(e0, + e1,... + en) +

    + + +

    + Creates a map with element pairs e0...en. +

    + -M(s) -Copy - constructs a map from a M(s) +

    + + +

    + Copy constructs a map from a Forward - Sequence s. + Sequence s. +

    + -m = - s -Assigns - to a map, m, from - a m = + s +

    + + +

    + Assigns to a map, m, + from a Forward - Sequence s. + Sequence s. +

    +
    - + Example
     typedef map<
         pair<int, char>
    -  , pair<double, std::string> > 
    +  , pair<double, std::string> >
     map_type;
     
     map_type m(
         make_pair<int>('X')
       , make_pair<double>("Men"));
     
    -std::cout << at<int>(m) << std::endl;
    -std::cout << at<double>(m) << std::endl;
    +std::cout << at_key<int>(m) << std::endl;
    +std::cout << at_key<double>(m) << std::endl;
     
    diff --git a/doc/html/fusion/sequences/containers/set.html b/doc/html/fusion/sequences/containers/set.html index 73d4de8b..43b641fb 100644 --- a/doc/html/fusion/sequences/containers/set.html +++ b/doc/html/fusion/sequences/containers/set.html @@ -26,7 +26,7 @@
    - + Description

    @@ -39,14 +39,14 @@ Functions).

    - + Header
     #include <boost/fusion/sequence/container/set.hpp>
     
    - + Synopsis
    @@ -77,7 +77,7 @@
     #define FUSION_MAX_SET_SIZE 20
     
    - + Template parameters
    @@ -88,20 +88,42 @@ - - - + + + - - +

    + T0...TN +

    + + +
    ParameterDescriptionDefault +

    + Parameter +

    +
    +

    + Description +

    +
    +

    + Default +

    +
    -T0...TN -Element typesunspecified-type +

    + Element types +

    +
    +

    + unspecified-type +

    +
    - + Model of
      @@ -135,7 +157,7 @@
    - + Expression Semantics
    @@ -153,41 +175,78 @@ -Expression -Semantics + +

    + Expression +

    + + +

    + Semantics +

    + -S() -Creates - a set with default constructed elements. + +

    + S() +

    + + +

    + Creates a set with default constructed elements. +

    + -S(e0, e1,... - en) -Creates - a set with elements e0...en. + +

    + S(e0, + e1,... + en) +

    + + +

    + Creates a set with elements e0...en. +

    + -S(fs) -Copy - constructs a set from a S(fs) +

    + + +

    + Copy constructs a set from a Forward - Sequence fs. + Sequence fs. +

    + -s = - fs -Assigns - to a set, s, from - a s = + fs +

    + + +

    + Assigns to a set, s, + from a Forward - Sequence fs. + Sequence fs. +

    +
    - + Example
    diff --git a/doc/html/fusion/sequences/containers/vector.html b/doc/html/fusion/sequences/containers/vector.html
    index 27f6ab59..f28757ac 100644
    --- a/doc/html/fusion/sequences/containers/vector.html
    +++ b/doc/html/fusion/sequences/containers/vector.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -39,7 +39,7 @@ most efficient.

    - + Header
    @@ -54,7 +54,7 @@
     #include <boost/fusion/sequence/container/vector/vector50.hpp>
     
    - + Synopsis

    @@ -115,7 +115,7 @@ #define FUSION_MAX_VECTOR_SIZE 20

    - + Template parameters
    @@ -126,20 +126,42 @@ -Parameter -Description -Default + +

    + Parameter +

    + + +

    + Description +

    + + +

    + Default +

    + -T0...TN - -Element types -unspecified +

    + T0...TN +

    + + +

    + Element types +

    + + +

    + unspecified +

    +
    - + Model of
    - + Example
    diff --git a/doc/html/fusion/sequences/conversion.html b/doc/html/fusion/sequences/conversion.html
    index 9ccd79a7..dc3da6a4 100644
    --- a/doc/html/fusion/sequences/conversion.html
    +++ b/doc/html/fusion/sequences/conversion.html
    @@ -6,7 +6,7 @@
     
     
     
    -
    +
     
     
     
    @@ -20,7 +20,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -34,7 +34,7 @@ types using one of these conversion functions.

    - + Header

    @@ -48,7 +48,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/conversion/functions/as_list.html b/doc/html/fusion/sequences/conversion/functions/as_list.html index 28fa5f98..e10bbfa1 100644 --- a/doc/html/fusion/sequences/conversion/functions/as_list.html +++ b/doc/html/fusion/sequences/conversion/functions/as_list.html @@ -26,14 +26,14 @@
    - + Description

    Convert a fusion sequence to a list.

    - + Synopsis
    @@ -46,7 +46,7 @@
     as_list(Sequence const& seq);
     
    - + Parameters
    @@ -56,19 +56,42 @@ - - - + + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    seqAn - instance of SequenceThe sequence to convert. +

    + seq +

    +
    +

    + An instance of Sequence +

    +
    +

    + The sequence to convert. +

    +
    - + Expression Semantics
    @@ -83,14 +106,14 @@ seq, to a list.

    - + Header
     #include <boost/fusion/sequence/conversion/as_list.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/conversion/functions/as_map.html b/doc/html/fusion/sequences/conversion/functions/as_map.html
    index 1ec13167..4a2b0fa9 100644
    --- a/doc/html/fusion/sequences/conversion/functions/as_map.html
    +++ b/doc/html/fusion/sequences/conversion/functions/as_map.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Convert a fusion sequence to a map.

    - + Synopsis
    @@ -46,7 +46,7 @@
     as_map(Sequence const& seq);
     
    - + Parameters
    @@ -56,19 +56,42 @@ - - - + + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    seqAn - instance of SequenceThe sequence to convert. +

    + seq +

    +
    +

    + An instance of Sequence +

    +
    +

    + The sequence to convert. +

    +
    - + Expression Semantics
    @@ -88,14 +111,14 @@ There may be no duplicate fusion::pair key types.

    - + Header
     #include <boost/fusion/sequence/conversion/as_map.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/conversion/functions/as_set.html b/doc/html/fusion/sequences/conversion/functions/as_set.html
    index 94dc5549..9fd05e21 100644
    --- a/doc/html/fusion/sequences/conversion/functions/as_set.html
    +++ b/doc/html/fusion/sequences/conversion/functions/as_set.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Convert a fusion sequence to a set.

    - + Synopsis
    @@ -46,7 +46,7 @@
     as_set(Sequence const& seq);
     
    - + Parameters
    @@ -56,19 +56,42 @@ - - - + + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    seqAn - instance of SequenceThe sequence to convert. +

    + seq +

    +
    +

    + An instance of Sequence +

    +
    +

    + The sequence to convert. +

    +
    - + Expression Semantics
    @@ -87,14 +110,14 @@ key types.

    - + Header
     #include <boost/fusion/sequence/conversion/as_set.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/conversion/functions/as_vector.html b/doc/html/fusion/sequences/conversion/functions/as_vector.html
    index a8f276bf..b04dc65f 100644
    --- a/doc/html/fusion/sequences/conversion/functions/as_vector.html
    +++ b/doc/html/fusion/sequences/conversion/functions/as_vector.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Convert a fusion sequence to a vector.

    - + Synopsis
    @@ -46,7 +46,7 @@
     as_vector(Sequence const& seq);
     
    - + Parameters
    @@ -56,19 +56,42 @@ - - - + + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    seqAn - instance of SequenceThe sequence to convert. +

    + seq +

    +
    +

    + An instance of Sequence +

    +
    +

    + The sequence to convert. +

    +
    - + Expression Semantics
    @@ -83,14 +106,14 @@ seq, to a vector.

    - + Header
     #include <boost/fusion/sequence/conversion/as_vector.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_list.html b/doc/html/fusion/sequences/conversion/metafunctions/as_list.html
    index 8d232574..209732e7 100644
    --- a/doc/html/fusion/sequences/conversion/metafunctions/as_list.html
    +++ b/doc/html/fusion/sequences/conversion/metafunctions/as_list.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the result type of as_list.

    - + Synopsis
    @@ -41,7 +41,7 @@
     struct as_list;
     
    - + Parameters
    @@ -51,21 +51,42 @@ - - - + + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    SequenceA - fusion Sequence -The - sequence type to convert. +

    + Sequence +

    +
    +

    + A fusion Sequence +

    +
    +

    + The sequence type to convert. +

    +
    - + Expression Semantics
    @@ -81,14 +102,14 @@ Sequence, to a list.

    - + Header
     #include <boost/fusion/sequence/conversion/as_list.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_map.html b/doc/html/fusion/sequences/conversion/metafunctions/as_map.html
    index 2d73fe3d..81624768 100644
    --- a/doc/html/fusion/sequences/conversion/metafunctions/as_map.html
    +++ b/doc/html/fusion/sequences/conversion/metafunctions/as_map.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the result type of as_map.

    - + Synopsis
    @@ -41,7 +41,7 @@
     struct as_map;
     
    - + Parameters
    @@ -51,21 +51,42 @@ - - - + + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    SequenceA - fusion Sequence -The - sequence to convert. +

    + Sequence +

    +
    +

    + A fusion Sequence +

    +
    +

    + The sequence to convert. +

    +
    - + Expression Semantics
    @@ -86,14 +107,14 @@ There may be no duplicate fusion::pair key types.

    - + Header
     #include <boost/fusion/sequence/conversion/as_map.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_set.html b/doc/html/fusion/sequences/conversion/metafunctions/as_set.html
    index d753deb8..80b3c234 100644
    --- a/doc/html/fusion/sequences/conversion/metafunctions/as_set.html
    +++ b/doc/html/fusion/sequences/conversion/metafunctions/as_set.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the result type of as_set.

    - + Synopsis
    @@ -41,7 +41,7 @@
     struct as_set;
     
    - + Parameters
    @@ -51,21 +51,42 @@ - - - + + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    SequenceA - fusion Sequence -The - sequence to convert. +

    + Sequence +

    +
    +

    + A fusion Sequence +

    +
    +

    + The sequence to convert. +

    +
    - + Expression Semantics
    @@ -85,14 +106,14 @@ key types.

    - + Header
     #include <boost/fusion/sequence/conversion/as_set.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html b/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html
    index 7203ec9a..e8331588 100644
    --- a/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html
    +++ b/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the result type of as_vector.

    - + Synopsis
    @@ -41,7 +41,7 @@
     struct as_vector;
     
    - + Parameters
    @@ -51,21 +51,42 @@ - - - + + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    SequenceA - fusion Sequence -The - sequence to convert. +

    + Sequence +

    +
    +

    + A fusion Sequence +

    +
    +

    + The sequence to convert. +

    +
    - + Expression Semantics
    @@ -81,14 +102,14 @@ Sequence, to a vector.

    - + Header
     #include <boost/fusion/sequence/conversion/as_vector.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/generation.html b/doc/html/fusion/sequences/generation.html
    index c4eaa4e9..b1afe235 100644
    --- a/doc/html/fusion/sequences/generation.html
    +++ b/doc/html/fusion/sequences/generation.html
    @@ -6,7 +6,7 @@
     
     
     
    -
    +
     
     
     
    @@ -20,7 +20,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -33,7 +33,7 @@ These are the functions that you can use to generate various forms of Containers from elemental values.

    - + Header

    @@ -47,7 +47,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/generation/functions.html b/doc/html/fusion/sequences/generation/functions.html index 1e3e5000..7fa0f56c 100644 --- a/doc/html/fusion/sequences/generation/functions.html +++ b/doc/html/fusion/sequences/generation/functions.html @@ -34,6 +34,7 @@
    Tiers
    list_tie
    vector_tie
    +
    map_tie
    diff --git a/doc/html/fusion/sequences/generation/functions/list_tie.html b/doc/html/fusion/sequences/generation/functions/list_tie.html index a28ce837..b5473b07 100644 --- a/doc/html/fusion/sequences/generation/functions/list_tie.html +++ b/doc/html/fusion/sequences/generation/functions/list_tie.html @@ -26,14 +26,14 @@
    - + Description

    Constructs a tie using a list sequence.

    - + Synopsis
    @@ -53,7 +53,7 @@
     #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -63,26 +63,44 @@ - - - + + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    x0, - x1,... - xNInstances - of T0, - T1,... - TN -The - arguments to list_tie - +

    + x0, + x1,... + xN +

    +
    +

    + Instances of T0, T1,... TN +

    +
    +

    + The arguments to list_tie +

    +
    - + Expression Semantics
    @@ -97,14 +115,14 @@ Semantics: Create a list of references from x0, x1,... xN.

    - + Header
     #include <boost/fusion/sequence/generation/list_tie.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/generation/functions/make_cons.html b/doc/html/fusion/sequences/generation/functions/make_cons.html
    index c38fcff1..36daf73f 100644
    --- a/doc/html/fusion/sequences/generation/functions/make_cons.html
    +++ b/doc/html/fusion/sequences/generation/functions/make_cons.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -35,7 +35,7 @@ (tail).

    - + Synopsis
    @@ -48,7 +48,7 @@
     make_cons(Car const& car, Cdr const& cdr);
     
    - + Parameters
    @@ -58,31 +58,61 @@ - - - + + + - - - + + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    carInstance - of Car -The - list's head +

    + car +

    +
    +

    + Instance of Car +

    +
    +

    + The list's head +

    +
    cdrInstance - of Cdr -The - list's tail (optional) +

    + cdr +

    +
    +

    + Instance of Cdr +

    +
    +

    + The list's tail (optional) +

    +
    - + Expression Semantics
    @@ -98,21 +128,21 @@ (tail).

    - + Header
     #include <boost/fusion/sequence/generation/make_cons.hpp>
     
    - + Example
     make_cons('x', make_cons(123))
     
    - + See also
    diff --git a/doc/html/fusion/sequences/generation/functions/make_list.html b/doc/html/fusion/sequences/generation/functions/make_list.html index 3d02a862..b336f818 100644 --- a/doc/html/fusion/sequences/generation/functions/make_list.html +++ b/doc/html/fusion/sequences/generation/functions/make_list.html @@ -26,14 +26,14 @@
    - + Description

    Create a list from one or more values.

    - + Synopsis
    @@ -53,7 +53,7 @@
     #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -63,26 +63,44 @@ - - - + + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    x0, - x1,... - xNInstances - of T0, - T1,... - TN -The - arguments to make_list - +

    + x0, + x1,... + xN +

    +
    +

    + Instances of T0, T1,... TN +

    +
    +

    + The arguments to make_list +

    +
    - + Expression Semantics
    @@ -96,21 +114,21 @@ Semantics: Create a list from x0, x1,... xN.

    - + Header
     #include <boost/fusion/sequence/generation/make_list.hpp>
     
    - + Example
     make_list(123, "hello", 12.5)
     
    - + See also
    diff --git a/doc/html/fusion/sequences/generation/functions/make_map.html b/doc/html/fusion/sequences/generation/functions/make_map.html index 50f2ff0f..b0ade1af 100644 --- a/doc/html/fusion/sequences/generation/functions/make_map.html +++ b/doc/html/fusion/sequences/generation/functions/make_map.html @@ -26,7 +26,7 @@
    - + Description

    @@ -34,7 +34,7 @@ pairs.

    - + Synopsis
    @@ -47,7 +47,7 @@
     

    The variadic function accepts 0 to FUSION_MAX_VECTOR_SIZE - [10] + [10] elements, where FUSION_MAX_VECTOR_SIZE is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE @@ -57,7 +57,7 @@ #define FUSION_MAX_VECTOR_SIZE 20

    - + Parameters
    @@ -67,37 +67,65 @@ - - - + + + - - - + + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    K0, - K1,... - KNThe - key typesKeys associated with x0, x1,... xN - +

    + K0, + K1,... + KN +

    +
    +

    + The key types +

    +
    +

    + Keys associated with x0, x1,... xN +

    +
    x0, - x1,... - xNInstances - of T0, - T1,... - TN -The - arguments to make_map - +

    + x0, + x1,... + xN +

    +
    +

    + Instances of T0, T1,... TN +

    +
    +

    + The arguments to make_map +

    +
    - + Expression Semantics
    @@ -118,14 +146,14 @@ key types.

    - + Header
     #include <boost/fusion/sequence/generation/make_map.hpp>
     
    - + Example
    @@ -134,7 +162,7 @@
       , make_pair<double>("Men"))
     
    - + See also
    @@ -144,7 +172,7 @@



    -

    [10] +

    [10] map is implemented in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

    diff --git a/doc/html/fusion/sequences/generation/functions/make_set.html b/doc/html/fusion/sequences/generation/functions/make_set.html index 26da2b0e..45800668 100644 --- a/doc/html/fusion/sequences/generation/functions/make_set.html +++ b/doc/html/fusion/sequences/generation/functions/make_set.html @@ -26,14 +26,14 @@
    - + Description

    Create a set from one or more values.

    - + Synopsis
    @@ -44,7 +44,7 @@
     

    The variadic function accepts 0 to FUSION_MAX_VECTOR_SIZE - [9] + [9] elements, where FUSION_MAX_VECTOR_SIZE is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE @@ -54,7 +54,7 @@ #define FUSION_MAX_VECTOR_SIZE 20

    - + Parameters
    @@ -64,26 +64,44 @@ - - - + + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    x0, - x1,... - xNInstances - of T0, - T1,... - TN -The - arguments to make_set - +

    + x0, + x1,... + xN +

    +
    +

    + Instances of T0, T1,... TN +

    +
    +

    + The arguments to make_set +

    +
    - + Expression Semantics
    @@ -101,21 +119,21 @@ key types.

    - + Header
     #include <boost/fusion/sequence/generation/make_set.hpp>
     
    - + Example
     make_set(123, "hello", 12.5)
     
    - + See also
    @@ -124,7 +142,7 @@



    -

    [9] +

    [9] set is implemented in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

    diff --git a/doc/html/fusion/sequences/generation/functions/make_vector.html b/doc/html/fusion/sequences/generation/functions/make_vector.html index 42d33c7e..4c0fe78a 100644 --- a/doc/html/fusion/sequences/generation/functions/make_vector.html +++ b/doc/html/fusion/sequences/generation/functions/make_vector.html @@ -26,14 +26,14 @@
    - + Description

    Create a vector from one or more values.

    - + Synopsis
    @@ -53,7 +53,7 @@
     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -63,26 +63,44 @@ - - - + + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    x0, - x1,... - xNInstances - of T0, - T1,... - TN -The - arguments to make_vector - +

    + x0, + x1,... + xN +

    +
    +

    + Instances of T0, T1,... TN +

    +
    +

    + The arguments to make_vector +

    +
    - + Expression Semantics
    @@ -96,21 +114,21 @@ Semantics: Create a vector from x0, x1,... xN.

    - + Header
     #include <boost/fusion/sequence/generation/make_vector.hpp>
     
    - + Example
     make_vector(123, "hello", 12.5)
     
    - + See also
    diff --git a/doc/html/fusion/sequences/generation/functions/tiers.html b/doc/html/fusion/sequences/generation/functions/tiers.html index 9bfc2f14..4832ff8d 100644 --- a/doc/html/fusion/sequences/generation/functions/tiers.html +++ b/doc/html/fusion/sequences/generation/functions/tiers.html @@ -34,12 +34,13 @@

    Example:

    -int i; char c; double d; 
    +int i; char c; double d;
       ...
     vector_tie(i, c, a);
     
    @@ -48,7 +49,7 @@ 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)) - [11] + [11] .

    @@ -56,7 +57,7 @@ variables. E.g.:

    -int i; char c; double d; 
    +int i; char c; double d;
     vector_tie(i, c, d) = make_vector(1,'a', 5.5);
     std::cout << i << " " <<  c << " " << d;
     
    @@ -66,7 +67,7 @@ when calling functions which return sequences.

    - + Ignore

    @@ -81,7 +82,7 @@



    -

    [11] +

    [11] see Boost.Ref for details about ref

    diff --git a/doc/html/fusion/sequences/generation/functions/vector_tie.html b/doc/html/fusion/sequences/generation/functions/vector_tie.html index cf33dbba..a6d78cc8 100644 --- a/doc/html/fusion/sequences/generation/functions/vector_tie.html +++ b/doc/html/fusion/sequences/generation/functions/vector_tie.html @@ -7,7 +7,7 @@ - + @@ -20,20 +20,20 @@

    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    Constructs a tie using a vector sequence.

    - + Synopsis
    @@ -53,7 +53,7 @@
     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -63,26 +63,44 @@ - - - + + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    x0, - x1,... - xNInstances - of T0, - T1,... - TN -The - arguments to vector_tie - +

    + x0, + x1,... + xN +

    +
    +

    + Instances of T0, T1,... TN +

    +
    +

    + The arguments to vector_tie +

    +
    - + Expression Semantics
    @@ -97,14 +115,14 @@ Semantics: Create a vector of references from x0, x1,... xN.

    - + Header
     #include <boost/fusion/sequence/generation/vector_tie.hpp>
     
    - + Example
    @@ -120,7 +138,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/generation/metafunctions.html b/doc/html/fusion/sequences/generation/metafunctions.html index 3a4a1b45..c645d2f2 100644 --- a/doc/html/fusion/sequences/generation/metafunctions.html +++ b/doc/html/fusion/sequences/generation/metafunctions.html @@ -6,7 +6,7 @@ - + @@ -20,7 +20,7 @@
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -33,6 +33,7 @@
    make_map
    list_tie
    vector_tie
    +
    map_tie

    @@ -42,7 +43,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/generation/metafunctions/list_tie.html b/doc/html/fusion/sequences/generation/metafunctions/list_tie.html index 15a691f6..eed67106 100644 --- a/doc/html/fusion/sequences/generation/metafunctions/list_tie.html +++ b/doc/html/fusion/sequences/generation/metafunctions/list_tie.html @@ -26,14 +26,14 @@
    - + Description

    Returns the result type of list_tie.

    - + Synopsis
    @@ -52,7 +52,7 @@
     #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -62,22 +62,44 @@ - - - + + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    T0, - T1,... - TNAny - typeThe arguments to list_tie - +

    + T0, + T1,... + TN +

    +
    +

    + Any type +

    +
    +

    + The arguments to list_tie +

    +
    - + Expression Semantics
    @@ -92,14 +114,14 @@ Semantics: Create a list of references from T0, T1,... TN.

    - + Header
     #include <boost/fusion/sequence/generation/list_tie.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_cons.html b/doc/html/fusion/sequences/generation/metafunctions/make_cons.html
    index 97a0dff5..f88a4af1 100644
    --- a/doc/html/fusion/sequences/generation/metafunctions/make_cons.html
    +++ b/doc/html/fusion/sequences/generation/metafunctions/make_cons.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the result type of make_cons.

    - + Synopsis
    @@ -41,7 +41,7 @@
     struct make_cons;
     
    - + Parameters
    @@ -51,29 +51,61 @@ - - - + + + - - - + + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    CarAny - typeThe list's head type +

    + Car +

    +
    +

    + Any type +

    +
    +

    + The list's head type +

    +
    CdrA - cons -The - list's tail type (optional) +

    + Cdr +

    +
    +

    + A cons +

    +
    +

    + The list's tail type (optional) +

    +
    - + Expression Semantics
    @@ -91,14 +123,14 @@ (tail).

    - + Header
     #include <boost/fusion/sequence/generation/make_cons.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_list.html b/doc/html/fusion/sequences/generation/metafunctions/make_list.html
    index 111e78eb..82e36686 100644
    --- a/doc/html/fusion/sequences/generation/metafunctions/make_list.html
    +++ b/doc/html/fusion/sequences/generation/metafunctions/make_list.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the result type of make_list.

    - + Synopsis
    @@ -52,7 +52,7 @@
     #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -62,22 +62,44 @@ - - - + + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    T0, - T1,... - TNAny - typeTemplate arguments to make_list - +

    + T0, + T1,... + TN +

    +
    +

    + Any type +

    +
    +

    + Template arguments to make_list +

    +
    - + Expression Semantics
    @@ -93,14 +115,14 @@ Semantics: Create a list from T0, T1,... TN.

    - + Header
     #include <boost/fusion/sequence/generation/make_list.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_map.html b/doc/html/fusion/sequences/generation/metafunctions/make_map.html
    index ed3ca042..7203df5b 100644
    --- a/doc/html/fusion/sequences/generation/metafunctions/make_map.html
    +++ b/doc/html/fusion/sequences/generation/metafunctions/make_map.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the result type of make_map.

    - + Synopsis
    @@ -45,7 +45,7 @@
     

    The variadic function accepts 0 to FUSION_MAX_VECTOR_SIZE - [13] + [13] elements, where FUSION_MAX_VECTOR_SIZE is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE @@ -55,7 +55,7 @@ #define FUSION_MAX_VECTOR_SIZE 20

    - + Parameters
    @@ -65,33 +65,65 @@ - - - + + + - - - + + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    K0, - K1,... - KNAny - typeKeys associated with T0, T1,... TN - +

    + K0, + K1,... + KN +

    +
    +

    + Any type +

    +
    +

    + Keys associated with T0, T1,... TN +

    +
    T0, - T1,... - TNAny - typeData associated with keys K0, K1,... KN - +

    + T0, + T1,... + TN +

    +
    +

    + Any type +

    +
    +

    + Data associated with keys K0, K1,... KN +

    +
    - + Expression Semantics
    @@ -111,21 +143,21 @@ key types.

    - + Header
     #include <boost/fusion/sequence/generation/make_map.hpp>
     
    - + Example
     result_of::make_map<int, double, char, double>::type
     
    - + See also
    @@ -134,7 +166,7 @@



    -

    [13] +

    [13] map is implemented in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

    diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_set.html b/doc/html/fusion/sequences/generation/metafunctions/make_set.html index aabca251..8bb799d9 100644 --- a/doc/html/fusion/sequences/generation/metafunctions/make_set.html +++ b/doc/html/fusion/sequences/generation/metafunctions/make_set.html @@ -26,14 +26,14 @@
    - + Description

    Returns the result type of make_set.

    - + Synopsis
    @@ -43,7 +43,7 @@
     

    The variadic function accepts 0 to FUSION_MAX_VECTOR_SIZE - [12] + [12] elements, where FUSION_MAX_VECTOR_SIZE is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE @@ -53,7 +53,7 @@ #define FUSION_MAX_VECTOR_SIZE 20

    - + Parameters
    @@ -63,22 +63,44 @@ - - - + + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    T0, - T1,... - TNAny - typeThe arguments to make_set - +

    + T0, + T1,... + TN +

    +
    +

    + Any type +

    +
    +

    + The arguments to make_set +

    +
    - + Expression Semantics
    @@ -98,14 +120,14 @@ key types.

    - + Header
     #include <boost/fusion/sequence/generation/make_set.hpp>
     
    - + Example
    @@ -113,7 +135,7 @@
     


    -

    [12] +

    [12] set is implemented in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

    diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_vector.html b/doc/html/fusion/sequences/generation/metafunctions/make_vector.html index 1fffe123..b694e98f 100644 --- a/doc/html/fusion/sequences/generation/metafunctions/make_vector.html +++ b/doc/html/fusion/sequences/generation/metafunctions/make_vector.html @@ -26,14 +26,14 @@
    - + Description

    Returns the result type of make_vector.

    - + Synopsis
    @@ -52,7 +52,7 @@
     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -62,22 +62,44 @@ - - - + + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    T0, - T1,... - TNAny - typeTemplate arguments to make_vector - +

    + T0, + T1,... + TN +

    +
    +

    + Any type +

    +
    +

    + Template arguments to make_vector +

    +
    - + Expression Semantics
    @@ -93,14 +115,14 @@ Semantics: Create a vector from T0, T1,... TN.

    - + Header
     #include <boost/fusion/sequence/generation/make_list.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html b/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html
    index b70cc262..1f7d8bf1 100644
    --- a/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html
    +++ b/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html
    @@ -7,7 +7,7 @@
     
     
     
    -
    +
     
     
     
    @@ -20,20 +20,20 @@
     

    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    Returns the result type of vector_tie.

    - + Synopsis
    @@ -52,7 +52,7 @@
     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -62,22 +62,44 @@ - - - + + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    T0, - T1,... - TNAny - typeThe arguments to vector_tie - +

    + T0, + T1,... + TN +

    +
    +

    + Any type +

    +
    +

    + The arguments to vector_tie +

    +
    - + Expression Semantics
    @@ -92,14 +114,14 @@ Semantics: Create a vector of references from T0, T1,... TN.

    - + Header
     #include <boost/fusion/sequence/generation/vector_tie.hpp>
     
    - + Example
    @@ -113,7 +135,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/intrinsics.html b/doc/html/fusion/sequences/intrinsics.html index 8143ab1c..c737edbe 100644 --- a/doc/html/fusion/sequences/intrinsics.html +++ b/doc/html/fusion/sequences/intrinsics.html @@ -30,17 +30,17 @@
    Metafunctions

    - Intrinsics form the essential interface of Fusion _sequence_s. + Intrinsics form the essential interface of every Fusion Sequence. STL 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] + [5] .

    - + Header

    @@ -48,7 +48,7 @@
     


    -

    [5] +

    [5] In practice, many of intrinsic functions have default implementations that will work in majority of cases

    diff --git a/doc/html/fusion/sequences/intrinsics/functions.html b/doc/html/fusion/sequences/intrinsics/functions.html index d81674c8..a5564140 100644 --- a/doc/html/fusion/sequences/intrinsics/functions.html +++ b/doc/html/fusion/sequences/intrinsics/functions.html @@ -36,6 +36,7 @@
    at_c
    has_key
    at_key
    +
    swap
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/at.html b/doc/html/fusion/sequences/intrinsics/functions/at.html index bf182a0a..53059ea0 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/at.html +++ b/doc/html/fusion/sequences/intrinsics/functions/at.html @@ -26,14 +26,14 @@
    - + Description

    Returns the N-th element from the beginning of the sequence.

    - + Synopsis
    @@ -46,7 +46,7 @@
     at(Sequence const& seq);
     
    - + Parameters
    @@ -56,32 +56,64 @@ - - - + + + - - + - + Access Sequence +

    + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    seqModel - of seq +

    +
    +

    + Model of Random - Access Sequence -

    The sequence we wish to investigate. +

    + The sequence we wish to investigate. +

    +
    NAn - MPL - integral constantAn index from the beginning of - the sequence. +

    + N +

    +
    +

    + An MPL + Integral Constant +

    +
    +

    + An index from the beginning of the sequence. +

    +
    - + Expression Semantics
    @@ -109,14 +141,14 @@ deref(advance<N>(begin(s)))
    - + Header
     #include <boost/fusion/sequence/intrinsic/at.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/at_c.html b/doc/html/fusion/sequences/intrinsics/functions/at_c.html
    index 02d8542b..e6be8316 100644
    --- a/doc/html/fusion/sequences/intrinsics/functions/at_c.html
    +++ b/doc/html/fusion/sequences/intrinsics/functions/at_c.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the N-th element from the beginning of the sequence.

    - + Synopsis
    @@ -46,7 +46,7 @@
     at_c(Sequence const& seq);
     
    - + Parameters
    @@ -56,31 +56,63 @@ - - - + + + - - + - + Access Sequence +

    + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    seqModel - of seq +

    +
    +

    + Model of Random - Access Sequence -

    The sequence we wish to investigate. +

    + The sequence we wish to investigate. +

    +
    NAn - integral constantAn index from the beginning of - the sequence. +

    + N +

    +
    +

    + An integral constant +

    +
    +

    + An index from the beginning of the sequence. +

    +
    - + Expression Semantics
    @@ -109,14 +141,14 @@ deref(advance<N>(begin(s)))
    - + Header
     #include <boost/fusion/sequence/intrinsic/at_c.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/at_key.html b/doc/html/fusion/sequences/intrinsics/functions/at_key.html
    index 385d9090..feaf24f6 100644
    --- a/doc/html/fusion/sequences/intrinsics/functions/at_key.html
    +++ b/doc/html/fusion/sequences/intrinsics/functions/at_key.html
    @@ -7,7 +7,7 @@
     
     
     
    -
    +
     
     
     
    @@ -20,20 +20,20 @@
     

    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    Returns the element associated with a Key from the sequence.

    - + Synopsis
    @@ -46,7 +46,7 @@
     at_key(Sequence const& seq);
     
    - + Parameters
    @@ -56,30 +56,63 @@ - - - + + + - - + - + Sequence +

    + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    seqModel - of seq +

    +
    +

    + Model of Associative - Sequence -

    The sequence we wish to investigate. +

    + The sequence we wish to investigate. +

    +
    KeyAny - typeThe queried key. +

    + Key +

    +
    +

    + Any type +

    +
    +

    + The queried key. +

    +
    - + Expression Semantics
    @@ -103,14 +136,14 @@ with Key.

    - + Header
     #include <boost/fusion/sequence/intrinsic/at_key.hpp>
     
    - + Example
    @@ -125,7 +158,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/back.html b/doc/html/fusion/sequences/intrinsics/functions/back.html index 3a02d172..db0fc6fc 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/back.html +++ b/doc/html/fusion/sequences/intrinsics/functions/back.html @@ -26,14 +26,14 @@
    - + Description

    Returns the last element in the sequence.

    - + Synopsis
    @@ -46,7 +46,7 @@
     back(Sequence const& seq);
     
    - + Parameters
    @@ -56,22 +56,44 @@ - - - + + + - - + - + Sequence +

    + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    seqModel - of seq +

    +
    +

    + Model of Bidirectional - Sequence -

    The sequence we wish to investigate. +

    + The sequence we wish to investigate. +

    +
    - + Expression Semantics
    @@ -95,14 +117,14 @@ in the sequence.

    - + Header
     #include <boost/fusion/sequence/intrinsic/back.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/begin.html b/doc/html/fusion/sequences/intrinsics/functions/begin.html
    index 35e40ee4..2a427bef 100644
    --- a/doc/html/fusion/sequences/intrinsics/functions/begin.html
    +++ b/doc/html/fusion/sequences/intrinsics/functions/begin.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns an iterator pointing to the first element in the sequence.

    - + Synopsis
    @@ -46,7 +46,7 @@
     begin(Sequence const& seq);
     
    - + Parameters
    @@ -56,23 +56,44 @@ - - - + + + - - + - + Sequence +

    + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    seqModel - of seq +

    +
    +

    + Model of Forward - Sequence -

    The sequence we wish to get an iterator - from. +

    + The sequence we wish to get an iterator from. +

    +
    - + Expression Semantics
    @@ -102,14 +123,14 @@ to the first element in the sequence.

    - + Header
     #include <boost/fusion/sequence/intrinsic/begin.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/empty.html b/doc/html/fusion/sequences/intrinsics/functions/empty.html
    index 91c8aa7a..8188a48c 100644
    --- a/doc/html/fusion/sequences/intrinsics/functions/empty.html
    +++ b/doc/html/fusion/sequences/intrinsics/functions/empty.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -35,7 +35,7 @@ the sequence is empty, else, evaluates to false.

    - + Synopsis
    @@ -44,7 +44,7 @@
     empty(Sequence const& seq);
     
    - + Parameters
    @@ -54,22 +54,44 @@ - - - + + + - - + - + Sequence +

    + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    seqModel - of seq +

    +
    +

    + Model of Forward - Sequence -

    The sequence we wish to investigate. +

    + The sequence we wish to investigate. +

    +
    - + Expression Semantics
    @@ -84,14 +106,14 @@ to false.

    - + Header
     #include <boost/fusion/sequence/intrinsic/empty.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/end.html b/doc/html/fusion/sequences/intrinsics/functions/end.html
    index 1945108c..a81d8e5c 100644
    --- a/doc/html/fusion/sequences/intrinsics/functions/end.html
    +++ b/doc/html/fusion/sequences/intrinsics/functions/end.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns an iterator pointing to one element past the end of the sequence.

    - + Synopsis
    @@ -46,7 +46,7 @@
     end(Sequence const& seq);
     
    - + Parameters
    @@ -56,23 +56,44 @@ - - - + + + - - + - + Sequence +

    + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    seqModel - of seq +

    +
    +

    + Model of Forward - Sequence -

    The sequence we wish to get an iterator - from. +

    + The sequence we wish to get an iterator from. +

    +
    - + Expression Semantics
    @@ -102,14 +123,14 @@ to one element past the end of the sequence.

    - + Header
     #include <boost/fusion/sequence/intrinsic/end.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/front.html b/doc/html/fusion/sequences/intrinsics/functions/front.html
    index 97f5d498..ed2778c0 100644
    --- a/doc/html/fusion/sequences/intrinsics/functions/front.html
    +++ b/doc/html/fusion/sequences/intrinsics/functions/front.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the first element in the sequence.

    - + Synopsis
    @@ -46,7 +46,7 @@
     front(Sequence const& seq);
     
    - + Parameters
    @@ -56,22 +56,44 @@ - - - + + + - - + - + Sequence +

    + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    seqModel - of seq +

    +
    +

    + Model of Forward - Sequence -

    The sequence we wish to investigate. +

    + The sequence we wish to investigate. +

    +
    - + Expression Semantics
    @@ -95,14 +117,14 @@ in the sequence.

    - + Header
     #include <boost/fusion/sequence/intrinsic/front.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/has_key.html b/doc/html/fusion/sequences/intrinsics/functions/has_key.html
    index 55176331..d0f9fb6a 100644
    --- a/doc/html/fusion/sequences/intrinsics/functions/has_key.html
    +++ b/doc/html/fusion/sequences/intrinsics/functions/has_key.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -36,7 +36,7 @@ to false.

    - + Synopsis
    @@ -45,7 +45,7 @@
     has_key(Sequence const& seq);
     
    - + Parameters
    @@ -55,30 +55,63 @@ - - - + + + - - + - + Sequence +

    + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    seqModel - of seq +

    +
    +

    + Model of Associative - Sequence -

    The sequence we wish to investigate. +

    + The sequence we wish to investigate. +

    +
    KeyAny - typeThe queried key. +

    + Key +

    +
    +

    + Any type +

    +
    +

    + The queried key. +

    +
    - + Expression Semantics
    @@ -93,14 +126,14 @@ associated with Key, else, evaluates to false.

    - + Header
     #include <boost/fusion/sequence/intrinsic/has_key.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/size.html b/doc/html/fusion/sequences/intrinsics/functions/size.html
    index d1e8f313..517a1b56 100644
    --- a/doc/html/fusion/sequences/intrinsics/functions/size.html
    +++ b/doc/html/fusion/sequences/intrinsics/functions/size.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -34,7 +34,7 @@ that evaluates the number of elements in the sequence.

    - + Synopsis
    @@ -43,7 +43,7 @@
     size(Sequence const& seq);
     
    - + Parameters
    @@ -53,22 +53,44 @@ - - - + + + - - + - + Sequence +

    + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    seqModel - of seq +

    +
    +

    + Model of Forward - Sequence -

    The sequence we wish to investigate. +

    + The sequence we wish to investigate. +

    +
    - + Expression Semantics
    @@ -83,14 +105,14 @@ in the sequence.

    - + Header
     #include <boost/fusion/sequence/intrinsic/size.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions.html b/doc/html/fusion/sequences/intrinsics/metafunctions.html
    index e50cb52f..aee36bd2 100644
    --- a/doc/html/fusion/sequences/intrinsics/metafunctions.html
    +++ b/doc/html/fusion/sequences/intrinsics/metafunctions.html
    @@ -6,7 +6,7 @@
     
     
     
    -
    +
     
     
     
    @@ -20,7 +20,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -39,6 +39,7 @@
    has_key
    at_key
    value_at_key
    +
    swap

    @@ -48,7 +49,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/at.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at.html index 078481c1..167b5153 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/at.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/at.html @@ -26,16 +26,16 @@
    - + Description

    Returns the result type of at - [6] + [6] .

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.25. Parameters

    +

    Table 1.25. Parameters

    @@ -56,33 +56,65 @@ - - - + + + - - + - + Sequence +

    + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    SeqA - model of Seq +

    +
    +

    + A model of Forward - Sequence -

    Argument sequence +

    + Argument sequence +

    +
    NAn - MPL - Integral Constant -Index of element +

    + N +

    +
    +

    + An MPL + Integral Constant +

    +
    +

    + Index of element +

    +
    - + Expression Semantics
    @@ -97,14 +129,14 @@ using at to access the Nth element of Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/at.hpp>
     
    - + Example
    @@ -113,7 +145,7 @@
     


    -

    [6] +

    [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 diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html index 6b44b93b..d837cbf4 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html @@ -26,16 +26,16 @@

    - + Description

    Returns the result type of at_c - [7] + [7] .

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.26. Parameters

    +

    Table 1.26. Parameters

    @@ -56,31 +56,64 @@ - - - + + + - - + - + Sequence +

    + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    SeqA - model of Seq +

    +
    +

    + A model of Forward - Sequence -

    Argument sequence +

    + Argument sequence +

    +
    MPositive - integer indexIndex of element +

    + M +

    +
    +

    + Positive integer index +

    +
    +

    + Index of element +

    +
    - + Expression Semantics
    @@ -95,14 +128,14 @@ using at_c to access the Mth element of Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/at.hpp>
     
    - + Example
    @@ -111,7 +144,7 @@
     


    -

    [7] +

    [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 diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html index 5e46c469..8a3db14e 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html @@ -26,16 +26,16 @@

    - + Description

    Returns the result type of at_key - [8] + [8] .

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.30. Parameters

    +

    Table 1.30. Parameters

    @@ -56,31 +56,64 @@ - - - + + + - - + - + Sequence +

    + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    SeqA - model of Seq +

    +
    +

    + A model of Forward - Sequence -

    Argument sequence +

    + Argument sequence +

    +
    KeyAny - typeKey type +

    + Key +

    +
    +

    + Any type +

    +
    +

    + Key type +

    +
    - + Expression Semantics
    @@ -97,14 +130,14 @@ Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/at_key.hpp>
     
    - + Example
    @@ -113,7 +146,7 @@
     


    -

    [8] +

    [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 diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/back.html b/doc/html/fusion/sequences/intrinsics/metafunctions/back.html index 92506d86..2e52c2f2 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/back.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/back.html @@ -26,14 +26,14 @@

    - + Description

    Returns the result type of back.

    - + Synopsis
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.23. Parameters

    +

    Table 1.23. Parameters

    @@ -52,23 +52,45 @@ - - - + + + - - + - + Sequence +

    + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    SeqA - model of Seq +

    +
    +

    + A model of Forward - Sequence -

    Argument sequence +

    + Argument sequence +

    +
    - + Expression Semantics
    @@ -83,14 +105,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>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html b/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html
    index ebdcceab..e1c0eecf 100644
    --- a/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html
    +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the result type of begin.

    - + Synopsis
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.19. Parameters

    +

    Table 1.19. Parameters

    @@ -52,23 +52,45 @@ - - - + + + - - + - + Sequence +

    + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    SeqA - model of Seq +

    +
    +

    + A model of Forward - Sequence -

    Argument sequence +

    + Argument sequence +

    +
    - + Expression Semantics
    @@ -84,14 +106,14 @@ to the first element of Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/begin.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html b/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html
    index a0b551c8..e6a83c3c 100644
    --- a/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html
    +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the result type of empty.

    - + Synopsis
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.21. Parameters

    +

    Table 1.21. Parameters

    @@ -52,23 +52,45 @@ - - - + + + - - + - + Sequence +

    + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    SeqA - model of Seq +

    +
    +

    + A model of Forward - Sequence -

    Argument sequence +

    + Argument sequence +

    +
    - + Expression Semantics
    @@ -85,14 +107,14 @@ mpl::false_ otherwise.

    - + Header
     #include <boost/fusion/sequence/intrinsic/empty.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/end.html b/doc/html/fusion/sequences/intrinsics/metafunctions/end.html
    index 0743e27d..37ba917c 100644
    --- a/doc/html/fusion/sequences/intrinsics/metafunctions/end.html
    +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/end.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the result type of end.

    - + Synopsis
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.20. Parameters

    +

    Table 1.20. Parameters

    @@ -52,23 +52,45 @@ - - - + + + - - + - + Sequence +

    + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    SeqA - model of Seq +

    +
    +

    + A model of Forward - Sequence -

    Argument sequence +

    + Argument sequence +

    +
    - + Expression Semantics
    @@ -84,14 +106,14 @@ one past the end of Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/end.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/front.html b/doc/html/fusion/sequences/intrinsics/metafunctions/front.html
    index a31ddb4c..9e710263 100644
    --- a/doc/html/fusion/sequences/intrinsics/metafunctions/front.html
    +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/front.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the result type of front.

    - + Synopsis
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.22. Parameters

    +

    Table 1.22. Parameters

    @@ -52,23 +52,45 @@ - - - + + + - - + - + Sequence +

    + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    SeqA - model of Seq +

    +
    +

    + A model of Forward - Sequence -

    Argument sequence +

    + Argument sequence +

    +
    - + Expression Semantics
    @@ -84,14 +106,14 @@ Equivalent to result_of::deref<result_of::begin<Seq>::type>::type.

    - + Header
     #include <boost/fusion/sequence/intrinsic/front.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html
    index cbcadd73..383d4e5f 100644
    --- a/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html
    +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the result type of has_key.

    - + Synopsis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.29. Parameters

    +

    Table 1.29. Parameters

    @@ -54,31 +54,64 @@ - - - + + + - - + - + Sequence +

    + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    SeqA - model of Seq +

    +
    +

    + A model of Forward - Sequence -

    Argument sequence +

    + Argument sequence +

    +
    KeyAny - typeKey type +

    + Key +

    +
    +

    + Any type +

    +
    +

    + Key type +

    +
    - + Expression Semantics
    @@ -96,14 +129,14 @@ mpl::false_ otherwise.

    - + Header
     #include <boost/fusion/sequence/intrinsic/has_key.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/size.html b/doc/html/fusion/sequences/intrinsics/metafunctions/size.html
    index f52e4550..c700f677 100644
    --- a/doc/html/fusion/sequences/intrinsics/metafunctions/size.html
    +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/size.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the result type of size.

    - + Synopsis
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.24. Parameters

    +

    Table 1.24. Parameters

    @@ -52,23 +52,45 @@ - - - + + + - - + - + Sequence +

    + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    SeqA - model of Seq +

    +
    +

    + A model of Forward - Sequence -

    Argument sequence +

    + Argument sequence +

    +
    - + Expression Semantics
    @@ -84,14 +106,14 @@ in Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/size.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html
    index 8c7ff70f..f93ee091 100644
    --- a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html
    +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the actual type at a given index from the Sequence.

    - + Synopsis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.27. Parameters

    +

    Table 1.27. Parameters

    @@ -54,33 +54,65 @@ - - - + + + - - + - + Sequence +

    + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    SeqA - model of Seq +

    +
    +

    + A model of Forward - Sequence -

    Argument sequence +

    + Argument sequence +

    +
    NAn - MPL - Integral Constant -Index of element +

    + N +

    +
    +

    + An MPL + Integral Constant +

    +
    +

    + Index of element +

    +
    - + Expression Semantics
    @@ -95,14 +127,14 @@ the Nth element of Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/value_at.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html
    index bf53847a..21e64396 100644
    --- a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html
    +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html
    @@ -26,14 +26,14 @@
     
     
    - + Description

    Returns the actual type at a given index from the Sequence.

    - + Synopsis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.28. Parameters

    +

    Table 1.28. Parameters

    @@ -54,31 +54,64 @@ - - - + + + - - + - + Sequence +

    + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    SeqA - model of Seq +

    +
    +

    + A model of Forward - Sequence -

    Argument sequence +

    + Argument sequence +

    +
    MPositive - integer indexIndex of element +

    + M +

    +
    +

    + Positive integer index +

    +
    +

    + Index of element +

    +
    - + Expression Semantics
    @@ -93,14 +126,14 @@ the Mth element of Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/value_at.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html
    index cda46f50..ba33f8ed 100644
    --- a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html
    +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html
    @@ -7,7 +7,7 @@
     
     
     
    -
    +
     
     
     
    @@ -20,20 +20,20 @@
     

    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    Returns the actual element type associated with a Key from the Sequence.

    - + Synopsis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.31. Parameters

    +

    Table 1.31. Parameters

    @@ -54,31 +54,64 @@ - - - + + + - - + - + Sequence +

    + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    SeqA - model of Seq +

    +
    +

    + A model of Forward - Sequence -

    Argument sequence +

    + Argument sequence +

    +
    KeyAny - typeKey type +

    + Key +

    +
    +

    + Any type +

    +
    +

    + Key type +

    +
    - + Expression Semantics
    @@ -94,14 +127,14 @@ in Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/value_at_key.hpp>
     
    - + Example
    @@ -116,7 +149,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/operators/comparison.html b/doc/html/fusion/sequences/operators/comparison.html index e91c0940..c8d9a9f0 100644 --- a/doc/html/fusion/sequences/operators/comparison.html +++ b/doc/html/fusion/sequences/operators/comparison.html @@ -48,7 +48,7 @@ only until the result is clear.

    - + Header
    diff --git a/doc/html/fusion/sequences/operators/comparison/equal.html b/doc/html/fusion/sequences/operators/comparison/equal.html
    index 16b47f95..3dd431be 100644
    --- a/doc/html/fusion/sequences/operators/comparison/equal.html
    +++ b/doc/html/fusion/sequences/operators/comparison/equal.html
    @@ -27,14 +27,14 @@
     
     
    - + Description

    Compare two sequences for equality.

    - + Synopsis
    @@ -43,7 +43,7 @@
     operator==(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -53,22 +53,43 @@ - - - + + + - - +

    + a, + b +

    + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    a, - bInstances - of Sequence - -_sequence_s to compare +

    + Instances of Sequence +

    +
    +

    + _sequence_s to compare +

    +
    - + Expression Semantics
    @@ -104,14 +125,14 @@ true.

    - + Header
     #include <boost/fusion/sequence/comparison/equal_to.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/operators/comparison/greater_than.html b/doc/html/fusion/sequences/operators/comparison/greater_than.html
    index 10f71626..14868060 100644
    --- a/doc/html/fusion/sequences/operators/comparison/greater_than.html
    +++ b/doc/html/fusion/sequences/operators/comparison/greater_than.html
    @@ -34,7 +34,7 @@
                 Lexicographically compare two sequences.
               

    - + Synopsis
    @@ -43,7 +43,7 @@
     operator>(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -53,22 +53,43 @@ - - - + + + - - +

    + a, + b +

    + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    a, - bInstances - of Sequence - -_sequence_s to compare +

    + Instances of Sequence +

    +
    +

    + _sequence_s to compare +

    +
    - + Expression Semantics
    @@ -96,14 +117,14 @@ Semantics: Returns b < a.

    - + Header
     #include <boost/fusion/sequence/comparison/less_equal.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html b/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html
    index 2a66a1e3..a5628872 100644
    --- a/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html
    +++ b/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html
    @@ -33,7 +33,7 @@
                 Lexicographically compare two sequences.
               

    - + Synopsis
    @@ -42,7 +42,7 @@
     operator>=(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -52,22 +52,43 @@ - - - + + + - - +

    + a, + b +

    + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    a, - bInstances - of Sequence - -_sequence_s to compare +

    + Instances of Sequence +

    +
    +

    + _sequence_s to compare +

    +
    - + Expression Semantics
    @@ -95,14 +116,14 @@ Semantics: Returns !(a < b).

    - + Header
     #include <boost/fusion/sequence/comparison/greater_equal.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/operators/comparison/less_than.html b/doc/html/fusion/sequences/operators/comparison/less_than.html
    index 1a9a8ab4..8e636fd1 100644
    --- a/doc/html/fusion/sequences/operators/comparison/less_than.html
    +++ b/doc/html/fusion/sequences/operators/comparison/less_than.html
    @@ -34,7 +34,7 @@
                 Lexicographically compare two sequences.
               

    - + Synopsis
    @@ -43,7 +43,7 @@
     operator<(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -53,22 +53,43 @@ - - - + + + - - +

    + a, + b +

    + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    a, - bInstances - of Sequence - -_sequence_s to compare +

    + Instances of Sequence +

    +
    +

    + _sequence_s to compare +

    +
    - + Expression Semantics
    @@ -98,14 +119,14 @@ and b.

    - + Header
     #include <boost/fusion/sequence/comparison/less.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/operators/comparison/less_than_equal.html b/doc/html/fusion/sequences/operators/comparison/less_than_equal.html
    index 0137445c..2df0e419 100644
    --- a/doc/html/fusion/sequences/operators/comparison/less_than_equal.html
    +++ b/doc/html/fusion/sequences/operators/comparison/less_than_equal.html
    @@ -34,7 +34,7 @@
                 Lexicographically compare two sequences.
               

    - + Synopsis
    @@ -43,7 +43,7 @@
     operator<=(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -53,22 +53,43 @@ - - - + + + - - +

    + a, + b +

    + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    a, - bInstances - of Sequence - -_sequence_s to compare +

    + Instances of Sequence +

    +
    +

    + _sequence_s to compare +

    +
    - + Expression Semantics
    @@ -96,14 +117,14 @@ Semantics: Returns !(b < a).

    - + Header
     #include <boost/fusion/sequence/comparison/less_equal.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/operators/comparison/not_equal.html b/doc/html/fusion/sequences/operators/comparison/not_equal.html
    index eae92c5f..2f93f959 100644
    --- a/doc/html/fusion/sequences/operators/comparison/not_equal.html
    +++ b/doc/html/fusion/sequences/operators/comparison/not_equal.html
    @@ -33,7 +33,7 @@
                 Compare two sequences for inequality.
               

    - + Synopsis
    @@ -42,7 +42,7 @@
     operator!=(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -52,22 +52,43 @@ - - - + + + - - +

    + a, + b +

    + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    a, - bInstances - of Sequence - -_sequence_s to compare +

    + Instances of Sequence +

    +
    +

    + _sequence_s to compare +

    +
    - + Expression Semantics
    @@ -98,14 +119,14 @@ Returns !(a == b).

    - + Header
     #include <boost/fusion/sequence/comparison/not_equal_to.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/operators/i_o.html b/doc/html/fusion/sequences/operators/i_o.html
    index 1a569ef1..e18176a2 100644
    --- a/doc/html/fusion/sequences/operators/i_o.html
    +++ b/doc/html/fusion/sequences/operators/i_o.html
    @@ -45,7 +45,7 @@
             

     vector<float, int, std::string> a(1.0f, 2, std::string("Howdy folks!");
    -cout << a; 
    +cout << a;
     

    outputs the vector as: (1.0 2 Howdy folks!) @@ -115,7 +115,7 @@ representation may not be unambiguously parseable.

    - + Header
    diff --git a/doc/html/fusion/sequences/operators/i_o/in.html b/doc/html/fusion/sequences/operators/i_o/in.html
    index 55b5eef9..8bbc70ae 100644
    --- a/doc/html/fusion/sequences/operators/i_o/in.html
    +++ b/doc/html/fusion/sequences/operators/i_o/in.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -34,7 +34,7 @@ stream.

    - + Synopsis
    @@ -43,7 +43,7 @@
     operator>>(IStream& is, Sequence& seq);
     
    - + Parameters
    @@ -53,27 +53,61 @@ - - - + + + - - - + + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    isAn input stream.Stream to - extract information from. +

    + is +

    +
    +

    + An input stream. +

    +
    +

    + Stream to extract information from. +

    +
    seqA Sequence.The - sequence to read. +

    + seq +

    +
    +

    + A Sequence. +

    +
    +

    + The sequence to read. +

    +
    - + Expression Semantics
    @@ -89,14 +123,14 @@ e.

    - + Header
     #include <boost/fusion/sequence/io/in.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/operators/i_o/out.html b/doc/html/fusion/sequences/operators/i_o/out.html
    index 7403c697..764f0163 100644
    --- a/doc/html/fusion/sequences/operators/i_o/out.html
    +++ b/doc/html/fusion/sequences/operators/i_o/out.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -34,7 +34,7 @@ stream.

    - + Synopsis
    @@ -43,7 +43,7 @@
     operator<<(OStream& os, Sequence& seq);
     
    - + Parameters
    @@ -53,27 +53,61 @@ - - - + + + - - - + + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    osAn output stream.Stream - to write information to. +

    + os +

    +
    +

    + An output stream. +

    +
    +

    + Stream to write information to. +

    +
    seqA Sequence.The - sequence to write. +

    + seq +

    +
    +

    + A Sequence. +

    +
    +

    + The sequence to write. +

    +
    - + Expression Semantics
    @@ -89,14 +123,14 @@ e.

    - + Header
     #include <boost/fusion/sequence/io/out.hpp>
     
    - + Example
    diff --git a/doc/html/fusion/sequences/views.html b/doc/html/fusion/sequences/views.html
    index cf44cfa9..b0f5053d 100644
    --- a/doc/html/fusion/sequences/views.html
    +++ b/doc/html/fusion/sequences/views.html
    @@ -44,7 +44,7 @@
             very cheap to copy and be passed around by value.
           

    - + Header

    diff --git a/doc/html/fusion/sequences/views/filter_view.html b/doc/html/fusion/sequences/views/filter_view.html
    index 85931ef9..6fbed0b9 100644
    --- a/doc/html/fusion/sequences/views/filter_view.html
    +++ b/doc/html/fusion/sequences/views/filter_view.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -37,14 +37,14 @@ only those elements for which its predicate evaluates to mpl::true_.

    - + Header
     #include <boost/fusion/sequence/view/filter_view.hpp>
     
    - + Synopsis
    @@ -52,7 +52,7 @@
     struct filter_view;
     
    - + Template parameters
    @@ -63,31 +63,61 @@ -Parameter -Description -Default + +

    + Parameter +

    + + +

    + Description +

    + + +

    + Default +

    + -Sequence -A - Sequence +

    + + +

    + A Forward - Sequence - -  + Sequence +

    + + +

    +

    + -Pred -Unary - Metafunction returning an mpl::bool_ - -  + +

    + Pred +

    + + +

    + Unary Metafunction returning an mpl::bool_ +

    + + +

    +

    +
    - + Model of
    • - + Expression Semantics
      @@ -129,35 +159,64 @@ -Expression -Semantics + +

      + Expression +

      + + +

      + Semantics +

      + -F(s) -Creates - a filter_view given - a sequence, s. + +

      + F(s) +

      + + +

      + Creates a filter_view + given a sequence, s. +

      + -F(f) -Copy - constructs a filter_view - from another filter_view, - f. + +

      + F(f) +

      + + +

      + Copy constructs a filter_view + from another filter_view, + f. +

      + -f = - f2 -Assigns - to a filter_view, - f, from another - filter_view, f2. + +

      + f = + f2 +

      + + +

      + Assigns to a filter_view, + f, from another + filter_view, f2. +

      +
    - + Example
    diff --git a/doc/html/fusion/sequences/views/iterator_range.html b/doc/html/fusion/sequences/views/iterator_range.html
    index 7be159c2..bb573ff7 100644
    --- a/doc/html/fusion/sequences/views/iterator_range.html
    +++ b/doc/html/fusion/sequences/views/iterator_range.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -34,14 +34,14 @@ a sub-range of its underlying sequence delimited by a pair of iterators.

    - + Header
     #include <boost/fusion/sequence/view/iterator_range.hpp>
     
    - + Synopsis
    @@ -49,7 +49,7 @@
     struct iterator_range;
     
    - + Template parameters
    @@ -60,33 +60,72 @@ -Parameter -Description -Default + +

    + Parameter +

    + + +

    + Description +

    + + +

    + Default +

    + -First -A - fusion Iterator - -  + +

    + First +

    + + +

    + A fusion Iterator +

    + + +

    +

    + -Last -A - fusion Iterator - -  + +

    + Last +

    + + +

    + A fusion Iterator +

    + + +

    +

    +
    - + Model of
    - +

    Notation

    @@ -110,7 +149,7 @@
    - + Expression Semantics
    @@ -126,37 +165,67 @@ -Expression -Semantics + +

    + Expression +

    + + +

    + Semantics +

    + -IR(f, l) -Creates - an iterator_range - given iterators, f - and l. + +

    + IR(f, + l) +

    + + +

    + Creates an iterator_range + given iterators, f + and l. +

    + -IR(ir) -Copy - constructs an iterator_range - from another iterator_range, - ir. + +

    + IR(ir) +

    + + +

    + Copy constructs an iterator_range + from another iterator_range, + ir. +

    + -ir = - ir2 -Assigns - to a iterator_range, - ir, from another - iterator_range, - ir2. + +

    + ir = + ir2 +

    + + +

    + Assigns to a iterator_range, + ir, from another + iterator_range, + ir2. +

    +
    - + Example
    diff --git a/doc/html/fusion/sequences/views/joint_view.html b/doc/html/fusion/sequences/views/joint_view.html
    index 67eca342..f1fbd8d1 100644
    --- a/doc/html/fusion/sequences/views/joint_view.html
    +++ b/doc/html/fusion/sequences/views/joint_view.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -34,14 +34,14 @@ which is a concatenation of two sequences.

    - + Header
     #include <boost/fusion/sequence/view/joint_view.hpp>
     
    - + Synopsis
    @@ -49,7 +49,7 @@
     struct joint_view;
     
    - + Template parameters
    @@ -60,33 +60,63 @@ -Parameter -Description -Default + +

    + Parameter +

    + + +

    + Description +

    + + +

    + Default +

    + -Sequence1 -A - Sequence1 +

    + + +

    + A Forward - Sequence - -  + Sequence +

    + + +

    +

    + -Sequence2 -A - Sequence2 +

    + + +

    + A Forward - Sequence - -  + Sequence +

    + + +

    +

    +
    - + Model of
    • - + Expression Semantics
      @@ -130,36 +160,66 @@ -Expression -Semantics + +

      + Expression +

      + + +

      + Semantics +

      + -JV(s1, s2) -Creates - a joint_view given - sequences, s1 and - s2. + +

      + JV(s1, + s2) +

      + + +

      + Creates a joint_view + given sequences, s1 + and s2. +

      + -JV(jv) -Copy - constructs a joint_view - from another joint_view, - jv. + +

      + JV(jv) +

      + + +

      + Copy constructs a joint_view + from another joint_view, + jv. +

      + -jv = - jv2 -Assigns - to a joint_view, - jv, from another - joint_view, jv2. + +

      + jv = + jv2 +

      + + +

      + Assigns to a joint_view, + jv, from another + joint_view, jv2. +

      +
    - + Example
    diff --git a/doc/html/fusion/sequences/views/reverse_view.html b/doc/html/fusion/sequences/views/reverse_view.html
    index f83d7e95..2aeaf398 100644
    --- a/doc/html/fusion/sequences/views/reverse_view.html
    +++ b/doc/html/fusion/sequences/views/reverse_view.html
    @@ -31,14 +31,14 @@
               and the last element will be its first.
             

    - + Header
     #include <boost/fusion/sequence/view/reverse_view.hpp>
     
    - + Synopsis
    @@ -46,7 +46,7 @@
     struct reverse_view;
     
    - + Template parameters
    @@ -57,22 +57,43 @@ -Parameter -Description -Default + +

    + Parameter +

    + + +

    + Description +

    + + +

    + Default +

    + -Sequence -A - Sequence +

    + + +

    + A Bidirectional - Sequence - -  + Sequence +

    + + +

    +

    +
    - + Model of
    • - + Expression Semantics
      @@ -113,35 +134,65 @@ -Expression -Semantics + +

      + Expression +

      + + +

      + Semantics +

      + -RV(s) -Creates - a unary reverse_view - given sequence, s. + +

      + RV(s) +

      + + +

      + Creates a unary reverse_view + given sequence, s. +

      + -RV(rv) -Copy - constructs a reverse_view - from another reverse_view, - rv. + +

      + RV(rv) +

      + + +

      + Copy constructs a reverse_view + from another reverse_view, + rv. +

      + -rv = - rv2 -Assigns - to a reverse_view, - rv, from another - reverse_view, rv2. + +

      + rv = + rv2 +

      + + +

      + Assigns to a reverse_view, + rv, from another + reverse_view, + rv2. +

      +
    - + Example
    diff --git a/doc/html/fusion/sequences/views/single_view.html b/doc/html/fusion/sequences/views/single_view.html
    index c796811d..78c70b20 100644
    --- a/doc/html/fusion/sequences/views/single_view.html
    +++ b/doc/html/fusion/sequences/views/single_view.html
    @@ -30,14 +30,14 @@
               a value as a single element sequence.
             

    - + Header
     #include <boost/fusion/sequence/view/single_view.hpp>
     
    - + Synopsis
    @@ -45,7 +45,7 @@
     struct single_view;
     
    - + Template parameters
    @@ -56,19 +56,41 @@ -Parameter -Description -Default + +

    + Parameter +

    + + +

    + Description +

    + + +

    + Default +

    + -T -Any - type -  + +

    + T +

    + + +

    + Any type +

    + + +

    +

    +
    - + Model of
    • - + Expression Semantics
      @@ -108,35 +130,64 @@ -Expression -Semantics + +

      + Expression +

      + + +

      + Semantics +

      + -S(x) -Creates - a single_view from - x. + +

      + S(x) +

      + + +

      + Creates a single_view + from x. +

      + -S(s) -Copy - constructs a single_view - from another single_view, - s. + +

      + S(s) +

      + + +

      + Copy constructs a single_view + from another single_view, + s. +

      + -s = - s2 -Assigns - to a single_view, - s, from another - single_view, s2. + +

      + s = + s2 +

      + + +

      + Assigns to a single_view, + s, from another + single_view, s2. +

      +
    - + Example
    diff --git a/doc/html/fusion/sequences/views/transform_view.html b/doc/html/fusion/sequences/views/transform_view.html
    index 3896a1bb..1f8234ec 100644
    --- a/doc/html/fusion/sequences/views/transform_view.html
    +++ b/doc/html/fusion/sequences/views/transform_view.html
    @@ -34,14 +34,14 @@
               Traversal Concept) of its underlying sequence.
             

    - + Header
     #include <boost/fusion/sequence/view/transform_view.hpp>
     
    - + Synopsis

    @@ -59,7 +59,7 @@ struct transform_view;

    - + Template parameters
    @@ -70,51 +70,99 @@ -Parameter -Description -Default + +

    + Parameter +

    + + +

    + Description +

    + + +

    + Default +

    + -Sequence -A - Sequence +

    + + +

    + A Forward - Sequence - -  + Sequence +

    + + +

    +

    + -Sequence1 -A - Sequence1 +

    + + +

    + A Forward - Sequence - -  + Sequence +

    + + +

    +

    + -Sequence2 -A - Sequence2 +

    + + +

    + A Forward - Sequence - -  + Sequence +

    + + +

    +

    + -F -A - F +

    + + +

    + A Polymorphic Function - Object - -  + Object +

    + + +

    +

    +
    - + Model of
    • @@ -169,7 +217,7 @@
    - + Expression Semantics
    @@ -191,49 +239,88 @@ -Expression -Semantics + +

    + Expression +

    + + +

    + Semantics +

    + -UTV(s, f) -Creates - a unary transform_view - given sequence, s - and unary UTV(s, + f) +

    + + +

    + Creates a unary transform_view + given sequence, s + and unary Polymorphic - Function Object, f. + Function Object, f. +

    + -BTV(s1, s2, f) -Creates - a binary transform_view - given sequences, s1 - and s2 and unary - BTV(s1, + s2, + f) +

    + + +

    + Creates a binary transform_view + given sequences, s1 + and s2 and unary + Polymorphic Function - Object, f. + Object, f. +

    + -TV(tv) -Copy - constructs a transform_view - from another transform_view, - tv. + +

    + TV(tv) +

    + + +

    + Copy constructs a transform_view + from another transform_view, + tv. +

    + -tv = - tv2 -Assigns - to a transform_view, - tv, from another - transform_view, - tv2. + +

    + tv = + tv2 +

    + + +

    + Assigns to a transform_view, + tv, from another + transform_view, + tv2. +

    +
    - + Example
    diff --git a/doc/html/fusion/sequences/views/zip_view.html b/doc/html/fusion/sequences/views/zip_view.html
    index f5d8b54a..a7b7e97d 100644
    --- a/doc/html/fusion/sequences/views/zip_view.html
    +++ b/doc/html/fusion/sequences/views/zip_view.html
    @@ -26,7 +26,7 @@
     
     
    - + Description

    @@ -37,14 +37,14 @@ of references to the component _sequence_s.

    - + Header
     #include <boost/fusion/sequence/view/zip_view.hpp>
     
    - + Synopsis
    @@ -52,7 +52,7 @@
     struct zip_view;
     
    - + Template parameters
    @@ -63,25 +63,56 @@ -Parameter -Description -Default + +

    + Parameter +

    + + +

    + Description +

    + + +

    + Default +

    + -Sequences -A - Sequences +

    + + +

    + A Forward - Sequence of references to other Fusion _sequence_s -  + Sequence of references to other Fusion _sequence_s +

    + + +

    +

    +
    - + Model of
    - +

    Notation

    @@ -101,7 +132,7 @@
    - + Expression Semantics
    @@ -117,33 +148,64 @@ -Expression -Semantics + +

    + Expression +

    + + +

    + Semantics +

    + -ZV(s) -Creates - a zip_view given - a sequence of references to the component _sequence_s. + +

    + ZV(s) +

    + + +

    + Creates a zip_view + given a sequence of references to the component _sequence_s. +

    + -ZV(zv1) -Copy - constructs a zip_view - from another zip_view, - zv. + +

    + ZV(zv1) +

    + + +

    + Copy constructs a zip_view + from another zip_view, + zv. +

    + -zv1 = - zv2 -Assigns - to a zip_view, zv, from another zip_view, zv2. + +

    + zv1 = + zv2 +

    + + +

    + Assigns to a zip_view, + zv, from another + zip_view, zv2. +

    +
    - + Example
    diff --git a/doc/html/fusion/support/category_of.html b/doc/html/fusion/support/category_of.html
    index f5ec8856..97d9a6af 100644
    --- a/doc/html/fusion/support/category_of.html
    +++ b/doc/html/fusion/support/category_of.html
    @@ -26,7 +26,7 @@
     
     

    - + Description

    @@ -36,7 +36,7 @@ Sequence Concepts).

    - + Synopsis

    @@ -50,7 +50,7 @@
     }
     

    - + Parameters

    @@ -60,19 +60,42 @@ - - - + + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    TAny - typeThe type to query. +

    + T +

    +
    +

    + Any type +

    +
    +

    + The type to query. +

    +

    - + Expression Semantics

    @@ -138,14 +161,14 @@ of a particular Sequence or Iterator.

    - + Header

     #include <boost/fusion/support/category_of.hpp>
     

    - + Example

    diff --git a/doc/html/fusion/support/deduce.html b/doc/html/fusion/support/deduce.html
    index 67787840..3b1de522 100644
    --- a/doc/html/fusion/support/deduce.html
    +++ b/doc/html/fusion/support/deduce.html
    @@ -26,7 +26,7 @@
     
     

    - + Description

    @@ -39,14 +39,14 @@ Reference wrappers are removed (see boost::ref).

    - + Header

     #include <boost/fusion/support/deduce.hpp>
     

    - + Synopsis

    @@ -60,7 +60,7 @@
     }
     

    - + Example

    @@ -81,7 +81,7 @@
     }
     

    - + See also

    diff --git a/doc/html/fusion/support/deduce_sequence.html b/doc/html/fusion/support/deduce_sequence.html index 4e645efb..4fbb1200 100644 --- a/doc/html/fusion/support/deduce_sequence.html +++ b/doc/html/fusion/support/deduce_sequence.html @@ -26,7 +26,7 @@

    - + Description

    @@ -39,14 +39,14 @@ original type as its argument.

    - + Header

     #include <boost/fusion/support/deduce_sequence.hpp>
     

    - + Synopsis

    @@ -60,7 +60,7 @@
     }
     

    - + Example

    @@ -83,7 +83,7 @@
     }
     

    - + See also

    diff --git a/doc/html/fusion/support/is_sequence.html b/doc/html/fusion/support/is_sequence.html index b55277f1..4dc9736d 100644 --- a/doc/html/fusion/support/is_sequence.html +++ b/doc/html/fusion/support/is_sequence.html @@ -26,7 +26,7 @@

    - + Description

    @@ -37,7 +37,7 @@ conforming sequences.

    - + Synopsis

    @@ -51,7 +51,7 @@
     }
     

    - + Parameters

    @@ -61,19 +61,42 @@ - - - + + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    TAny - typeThe type to query. +

    + T +

    +
    +

    + Any type +

    +
    +

    + The type to query. +

    +

    - + Expression Semantics

    @@ -91,14 +114,14 @@ otherwise.

    - + Header

     #include <boost/fusion/support/is_sequence.hpp>
     

    - + Example

    diff --git a/doc/html/fusion/support/is_view.html b/doc/html/fusion/support/is_view.html
    index e5385608..90460c1a 100644
    --- a/doc/html/fusion/support/is_view.html
    +++ b/doc/html/fusion/support/is_view.html
    @@ -26,7 +26,7 @@
     
     

    - + Description

    @@ -40,7 +40,7 @@ specialized to accomodate clients providing Fusion conforming views.

    - + Synopsis

    @@ -54,7 +54,7 @@
     }
     

    - + Parameters

    @@ -64,19 +64,42 @@ - - - + + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    TAny - typeThe type to query. +

    + T +

    +
    +

    + Any type +

    +
    +

    + The type to query. +

    +

    - + Expression Semantics

    @@ -93,14 +116,14 @@
             otherwise.
           

    - + Header

     #include <boost/fusion/support/is_view.hpp>
     

    - + Example

    diff --git a/doc/html/fusion/support/pair.html b/doc/html/fusion/support/pair.html
    index 0a1088c1..2ab835a5 100644
    --- a/doc/html/fusion/support/pair.html
    +++ b/doc/html/fusion/support/pair.html
    @@ -26,7 +26,7 @@
     
     

    - + Description

    @@ -37,7 +37,7 @@ for example.

    - + Synopsis

    @@ -61,7 +61,7 @@
     make_pair(Second const &);
     

    - + Template parameters

    @@ -70,18 +70,41 @@ - - + + - - + + - - + +
    ParameterDescription +

    + Parameter +

    +
    +

    + Description +

    +
    FirstThe first type. This is purely a type. No - data is held. +

    + First +

    +
    +

    + The first type. This is purely a type. No data is held. +

    +
    SecondThe second type. This contains data. +

    + Second +

    +
    +

    + The second type. This contains data. +

    +
    @@ -117,7 +140,7 @@

    - + Expression Semantics

    @@ -126,86 +149,172 @@ - - + + - - + - - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + +
    ExpressionSemantics +

    + Expression +

    +
    +

    + Semantics +

    +
    P::first_typeThe type - of the first template parameter, F, - equivalent to result_of::first<P>::type. + +

    + P::first_type +

    +
    +

    + The type of the first template parameter, F, + equivalent to result_of::first<P>::type. +

    P::second_typeThe type - of the second template parameter, S, - equivalent to result_of::second<P>::type. + +

    + P::second_type +

    +
    +

    + The type of the second template parameter, S, + equivalent to result_of::second<P>::type. +

    P()Default - construction. +

    + P() +

    +
    +

    + Default construction. +

    +
    P(s)Construct - a pair given value for the second type, s. +

    + P(s) +

    +
    +

    + Construct a pair given value for the second type, s. +

    +
    P(p2)Copy - constructs a pair from another pair, p2. +

    + P(p2) +

    +
    +

    + Copy constructs a pair from another pair, p2. +

    +
    p = - p2Assigns - a pair, p1, from another pair, p2. +

    + p = + p2 +

    +
    +

    + Assigns a pair, p1, from another pair, p2. +

    +
    make_pair<F>(s)Make a pair given the first - type, F, and a value - for the second type, s. - The second type assumes the type of s - +

    + make_pair<F>(s) +

    +
    +

    + Make a pair given the first type, F, + and a value for the second type, s. + The second type assumes the type of s +

    +
    o << - pOutput p to output stream, o. +

    + o << + p +

    +
    +

    + Output p to output + stream, o. +

    +
    i >> - pInput p from input stream, i. +

    + i >> + p +

    +
    +

    + Input p from input + stream, i. +

    +
    p == - p2Tests two - pairs for equality. +

    + p == + p2 +

    +
    +

    + Tests two pairs for equality. +

    +
    p != - p2Tests two - pairs for inequality. +

    + p != + p2 +

    +
    +

    + Tests two pairs for inequality. +

    +

    - + Header

     #include <boost/fusion/support/pair.hpp>
     

    - + Example

    diff --git a/doc/html/fusion/support/tag_of.html b/doc/html/fusion/support/tag_of.html
    index 38b60373..5a54227d 100644
    --- a/doc/html/fusion/support/tag_of.html
    +++ b/doc/html/fusion/support/tag_of.html
    @@ -26,7 +26,7 @@
     
     

    - + Description

    @@ -40,7 +40,7 @@ conforming sequences.

    - + Synopsis

    @@ -54,7 +54,7 @@
     }
     

    - + Parameters

    @@ -64,19 +64,42 @@ - - - + + + - - - + + +
    ParameterRequirementDescription +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    TAny - typeThe type to query. +

    + T +

    +
    +

    + Any type +

    +
    +

    + The type to query. +

    +

    - + Expression Semantics

    @@ -90,14 +113,14 @@
             with T.
           

    - + Header

     #include <boost/fusion/support/tag_of.hpp>
     

    - + Example

    diff --git a/doc/html/fusion/tuples/class_template_tuple.html b/doc/html/fusion/tuples/class_template_tuple.html
    index 958312cf..2401cb95 100644
    --- a/doc/html/fusion/tuples/class_template_tuple.html
    +++ b/doc/html/fusion/tuples/class_template_tuple.html
    @@ -48,7 +48,7 @@
             in future releases of fusion.
           

    - + Synopsis

    @@ -60,7 +60,7 @@
     class tuple;
     

    - + Header

    diff --git a/doc/html/fusion/tuples/class_template_tuple/construction.html b/doc/html/fusion/tuples/class_template_tuple/construction.html
    index 965177b6..97034129 100644
    --- a/doc/html/fusion/tuples/class_template_tuple/construction.html
    +++ b/doc/html/fusion/tuples/class_template_tuple/construction.html
    @@ -27,7 +27,7 @@
     
     
    - + Description

    @@ -38,7 +38,7 @@ in this section.

    - + Specification
    diff --git a/doc/html/fusion/tuples/class_template_tuple/element_access.html b/doc/html/fusion/tuples/class_template_tuple/element_access.html index 6f0eaa92..18529aa1 100644 --- a/doc/html/fusion/tuples/class_template_tuple/element_access.html +++ b/doc/html/fusion/tuples/class_template_tuple/element_access.html @@ -31,7 +31,7 @@ access">Element access
    - + Description

    @@ -40,7 +40,7 @@ function to provide access to it's elements by zero based numeric index.

    - + Specification
    diff --git a/doc/html/fusion/tuples/class_template_tuple/relational_operators.html b/doc/html/fusion/tuples/class_template_tuple/relational_operators.html
    index d4f7fadd..111cfefc 100644
    --- a/doc/html/fusion/tuples/class_template_tuple/relational_operators.html
    +++ b/doc/html/fusion/tuples/class_template_tuple/relational_operators.html
    @@ -30,7 +30,7 @@
             operators">Relational
             operators
    - + Description

    @@ -38,7 +38,7 @@ Tuple provides the standard boolean relational operators.

    - + Specification
    diff --git a/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html b/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html index 3cceb9e1..8dbf5f5f 100644 --- a/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html +++ b/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html @@ -30,7 +30,7 @@ creation functions">Tuple creation functions
    - + Description

    @@ -40,7 +40,7 @@ functions are described in this section.

    - + Specification
    diff --git a/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html b/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html
    index e0ae8c78..331d8521 100644
    --- a/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html
    +++ b/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html
    @@ -31,7 +31,7 @@
             helper classes">Tuple
             helper classes
    - + Description

    @@ -40,7 +40,7 @@ tuple size, and the element types.

    - + Specification
    diff --git a/doc/html/fusion/tuples/pairs.html b/doc/html/fusion/tuples/pairs.html
    index c2e7c94a..dfe8badc 100644
    --- a/doc/html/fusion/tuples/pairs.html
    +++ b/doc/html/fusion/tuples/pairs.html
    @@ -27,7 +27,7 @@
     
     

    - + Description

    @@ -36,7 +36,7 @@ as if it were a 2 element tuple.

    - + Specification

    diff --git a/doc/html/index.html b/doc/html/index.html
    index 447d82a1..625828a2 100644
    --- a/doc/html/index.html
    +++ b/doc/html/index.html
    @@ -22,16 +22,10 @@
     

    Chapter 1. Fusion 2.0

    -

    -Joel de Guzman -

    -

    -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)

    @@ -195,10 +189,12 @@
    Concepts
    Callable Object
    -
    Polymorphic Function +
    Regular Callable Object
    Deferred Callable Object
    +
    Polymorphic Function + Object
    Invocation
    @@ -229,7 +225,7 @@
    - +

    Last revised: February 25, 2007 at 21:53:50 GMT

    Last revised: July 13, 2007 at 19:08:46 GMT


    From b4fe17385cc971b6a316db076b716739a8387a6c Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Fri, 13 Jul 2007 21:27:35 +0000 Subject: [PATCH 204/234] silences msvc warning when used with infinite sequences [SVN r38211] --- include/boost/fusion/sequence/view/zip_view/zip_view.hpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/boost/fusion/sequence/view/zip_view/zip_view.hpp b/include/boost/fusion/sequence/view/zip_view/zip_view.hpp index 23ef2e05..563d853f 100644 --- a/include/boost/fusion/sequence/view/zip_view/zip_view.hpp +++ b/include/boost/fusion/sequence/view/zip_view/zip_view.hpp @@ -54,15 +54,15 @@ namespace boost { namespace fusion { template struct result { - static int const int_max = static_cast( - static_cast(~0) >> 1); + static int const high_int = static_cast( + (static_cast(~0) >> 1) - 1); typedef typename remove_reference::type SeqClass; typedef typename mpl::eval_if< traits::is_forward, result_of::size, - mpl::int_ >::type type; + mpl::int_ >::type type; }; }; From 1ed9b6204b42fd6b2c85a44027a929e6834ba9a3 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Fri, 13 Jul 2007 21:36:02 +0000 Subject: [PATCH 205/234] fixes compilation problems with msvc [SVN r38212] --- .../boost/fusion/functional/adapter/unfused_typed.hpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/include/boost/fusion/functional/adapter/unfused_typed.hpp b/include/boost/fusion/functional/adapter/unfused_typed.hpp index 7a48b5ab..e8ded64f 100644 --- a/include/boost/fusion/functional/adapter/unfused_typed.hpp +++ b/include/boost/fusion/functional/adapter/unfused_typed.hpp @@ -44,8 +44,7 @@ namespace boost { namespace fusion namespace detail { - template ::value > + template struct unfused_typed_impl; } @@ -53,15 +52,16 @@ namespace boost { namespace fusion class unfused_typed : public detail::unfused_typed_impl < unfused_typed, typename detail::uncr::type, - Sequence > + Sequence, result_of::size::value > { Function fnc_transformed; typedef typename detail::uncr::type function; typedef typename detail::call_param::type func_const_fwd_t; - typedef typename detail::unfused_typed_impl< - unfused_typed,function,Sequence > base; + typedef typename detail::unfused_typed_impl< + unfused_typed,function,Sequence, + result_of::size::value > base; template friend struct detail::unfused_typed_impl; From a83c9b89a3738e406a9c8384e857ccb6ffcda558 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Sat, 14 Jul 2007 20:17:38 +0000 Subject: [PATCH 206/234] removes unnecessary #include [SVN r38217] --- test/functional/make_unfused_generic.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/test/functional/make_unfused_generic.cpp b/test/functional/make_unfused_generic.cpp index 0e7e81c8..4dcc7449 100644 --- a/test/functional/make_unfused_generic.cpp +++ b/test/functional/make_unfused_generic.cpp @@ -10,7 +10,6 @@ #include #include -#include #include #include From aebd8a01cb3ccddf838557a24e42696f5bec972b Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Sat, 14 Jul 2007 20:20:28 +0000 Subject: [PATCH 207/234] removes unnecessary #includeS [SVN r38218] --- example/cookbook/do_the_bind.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/example/cookbook/do_the_bind.cpp b/example/cookbook/do_the_bind.cpp index d824c67f..e63556a9 100644 --- a/example/cookbook/do_the_bind.cpp +++ b/example/cookbook/do_the_bind.cpp @@ -38,9 +38,7 @@ #include #include -#include #include -#include #include #include From 50d52fa1c4862b5596e25ef2e74d873c41260ca2 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Sat, 14 Jul 2007 20:21:54 +0000 Subject: [PATCH 208/234] code tidying [SVN r38219] --- .../adapter/detail/Attic/has_type.hpp | 21 ------------------- .../functional/adapter/detail/access.hpp | 5 ----- 2 files changed, 26 deletions(-) delete mode 100644 include/boost/fusion/functional/adapter/detail/Attic/has_type.hpp diff --git a/include/boost/fusion/functional/adapter/detail/Attic/has_type.hpp b/include/boost/fusion/functional/adapter/detail/Attic/has_type.hpp deleted file mode 100644 index 98056a26..00000000 --- a/include/boost/fusion/functional/adapter/detail/Attic/has_type.hpp +++ /dev/null @@ -1,21 +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). -==============================================================================*/ - -#if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_DETAIL_HAS_TYPE_HPP_INCLUDED) -#define BOOST_FUSION_FUNCTIONAL_ADAPTER_DETAIL_HAS_TYPE_HPP_INCLUDED - -#include - -namespace boost { namespace fusion { namespace detail -{ - // Actually it's a sin... But MSVC's weird interpretation of ADL makes - // me do this - tosh. - using boost::mpl::aux::has_type; -}}} - -#endif diff --git a/include/boost/fusion/functional/adapter/detail/access.hpp b/include/boost/fusion/functional/adapter/detail/access.hpp index 7860515f..2e1f075b 100644 --- a/include/boost/fusion/functional/adapter/detail/access.hpp +++ b/include/boost/fusion/functional/adapter/detail/access.hpp @@ -26,11 +26,6 @@ namespace boost { namespace fusion { namespace detail template struct gref { typedef T & type; }; template struct gref { typedef T const& type; }; - // boost::result_of to Fusion PFO parameter - template struct r2fp { typedef T const type; }; - template struct r2fp { typedef T const type; }; - template struct r2fp { typedef T type; }; - // remove_const< remove_reference<_> > template struct uncr { typedef T type; }; template struct uncr { typedef T type; }; From 76bb8db5b7e3d2ead7ddc128263f9ae3fa7af41e Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Sat, 14 Jul 2007 20:22:30 +0000 Subject: [PATCH 209/234] code tidying (insignificant changes) [SVN r38220] --- .../boost/fusion/functional/adapter/unfused_generic.hpp | 5 +---- .../fusion/functional/adapter/unfused_lvalue_args.hpp | 7 +------ .../fusion/functional/adapter/unfused_rvalue_args.hpp | 7 +------ include/boost/fusion/functional/adapter/unfused_typed.hpp | 3 --- 4 files changed, 3 insertions(+), 19 deletions(-) diff --git a/include/boost/fusion/functional/adapter/unfused_generic.hpp b/include/boost/fusion/functional/adapter/unfused_generic.hpp index 47b37268..b687e4ad 100644 --- a/include/boost/fusion/functional/adapter/unfused_generic.hpp +++ b/include/boost/fusion/functional/adapter/unfused_generic.hpp @@ -25,7 +25,6 @@ #include #include -#include namespace boost { namespace fusion { @@ -33,14 +32,12 @@ namespace boost { namespace fusion //----- ---- --- -- - - - - - struct void_; - template class unfused_generic { Function fnc_transformed; - typedef typename remove_const::type>::type function; + typedef typename detail::uncr::type function; typedef typename detail::call_param::type func_const_fwd_t; public: diff --git a/include/boost/fusion/functional/adapter/unfused_lvalue_args.hpp b/include/boost/fusion/functional/adapter/unfused_lvalue_args.hpp index 26f79c4e..93841a64 100644 --- a/include/boost/fusion/functional/adapter/unfused_lvalue_args.hpp +++ b/include/boost/fusion/functional/adapter/unfused_lvalue_args.hpp @@ -15,9 +15,6 @@ #include #include -#include -#include - #include #include @@ -31,13 +28,11 @@ namespace boost { namespace fusion //----- ---- --- -- - - - - - struct void_; - template class unfused_lvalue_args { Function fnc_transformed; - typedef typename remove_const::type>::type function; + typedef typename detail::uncr::type function; typedef typename detail::call_param::type func_const_fwd_t; public: diff --git a/include/boost/fusion/functional/adapter/unfused_rvalue_args.hpp b/include/boost/fusion/functional/adapter/unfused_rvalue_args.hpp index 9a95804a..26afd539 100644 --- a/include/boost/fusion/functional/adapter/unfused_rvalue_args.hpp +++ b/include/boost/fusion/functional/adapter/unfused_rvalue_args.hpp @@ -15,9 +15,6 @@ #include #include -#include -#include - #include #include @@ -31,13 +28,11 @@ namespace boost { namespace fusion //----- ---- --- -- - - - - - struct void_; - template class unfused_rvalue_args { Function fnc_transformed; - typedef typename remove_const::type>::type function; + typedef typename detail::uncr::type function; typedef typename detail::call_param::type func_const_fwd_t; public: diff --git a/include/boost/fusion/functional/adapter/unfused_typed.hpp b/include/boost/fusion/functional/adapter/unfused_typed.hpp index e8ded64f..e892bd9a 100644 --- a/include/boost/fusion/functional/adapter/unfused_typed.hpp +++ b/include/boost/fusion/functional/adapter/unfused_typed.hpp @@ -21,9 +21,6 @@ #include -#include -#include - #include #include #include From 50bd63adcdba1ca9dd32fccdb49bbc5fe0bc9082 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Sun, 15 Jul 2007 16:25:11 +0000 Subject: [PATCH 210/234] fixes const-correctness [SVN r38222] --- .../functional/adapter/detail/access.hpp | 14 ++++--- .../boost/fusion/functional/adapter/fused.hpp | 6 +-- .../adapter/fused_function_object.hpp | 6 +-- .../functional/adapter/fused_procedure.hpp | 6 +-- .../functional/adapter/unfused_generic.hpp | 14 ++++--- .../adapter/unfused_lvalue_args.hpp | 14 ++++--- .../adapter/unfused_rvalue_args.hpp | 14 ++++--- .../functional/adapter/unfused_typed.hpp | 39 +++++++++++-------- 8 files changed, 64 insertions(+), 49 deletions(-) diff --git a/include/boost/fusion/functional/adapter/detail/access.hpp b/include/boost/fusion/functional/adapter/detail/access.hpp index 2e1f075b..ee03ffd0 100644 --- a/include/boost/fusion/functional/adapter/detail/access.hpp +++ b/include/boost/fusion/functional/adapter/detail/access.hpp @@ -26,11 +26,15 @@ namespace boost { namespace fusion { namespace detail template struct gref { typedef T & type; }; template struct gref { typedef T const& type; }; - // remove_const< remove_reference<_> > - template struct uncr { typedef T type; }; - template struct uncr { typedef T type; }; - template struct uncr { typedef T type; }; - template struct uncr { typedef T type; }; + // appropriately qualified target function in const context + template struct qf_c { typedef T const type; }; + template struct qf_c { typedef T const type; }; + template struct qf_c { typedef T type; }; + + // appropriately qualified target function in non-const context + template struct qf { typedef T type; }; + template struct qf { typedef T const type; }; + template struct qf { typedef T type; }; }}} #endif diff --git a/include/boost/fusion/functional/adapter/fused.hpp b/include/boost/fusion/functional/adapter/fused.hpp index 78ddf2ef..08e8897a 100644 --- a/include/boost/fusion/functional/adapter/fused.hpp +++ b/include/boost/fusion/functional/adapter/fused.hpp @@ -11,7 +11,7 @@ #include -#include +#include #include namespace boost { namespace fusion @@ -25,8 +25,8 @@ namespace boost { namespace fusion { Function fnc_transformed; - typedef typename boost::add_reference::type func_fwd_t; - typedef typename detail::call_param::type func_const_fwd_t; + typedef typename detail::qf_c::type & func_const_fwd_t; + typedef typename detail::qf::type & func_fwd_t; public: diff --git a/include/boost/fusion/functional/adapter/fused_function_object.hpp b/include/boost/fusion/functional/adapter/fused_function_object.hpp index 600d3a9a..12cd1e27 100644 --- a/include/boost/fusion/functional/adapter/fused_function_object.hpp +++ b/include/boost/fusion/functional/adapter/fused_function_object.hpp @@ -11,7 +11,7 @@ #include -#include +#include #include namespace boost { namespace fusion @@ -25,8 +25,8 @@ namespace boost { namespace fusion { Function fnc_transformed; - typedef typename boost::add_reference::type func_fwd_t; - typedef typename detail::call_param::type func_const_fwd_t; + typedef typename detail::qf_c::type & func_const_fwd_t; + typedef typename detail::qf::type & func_fwd_t; public: diff --git a/include/boost/fusion/functional/adapter/fused_procedure.hpp b/include/boost/fusion/functional/adapter/fused_procedure.hpp index f0f8bac4..78034b97 100644 --- a/include/boost/fusion/functional/adapter/fused_procedure.hpp +++ b/include/boost/fusion/functional/adapter/fused_procedure.hpp @@ -11,7 +11,7 @@ #include -#include +#include #include namespace boost { namespace fusion @@ -25,8 +25,8 @@ namespace boost { namespace fusion { Function fnc_transformed; - typedef typename boost::add_reference::type func_fwd_t; - typedef typename detail::call_param::type func_const_fwd_t; + typedef typename detail::qf_c::type & func_const_fwd_t; + typedef typename detail::qf::type & func_fwd_t; public: diff --git a/include/boost/fusion/functional/adapter/unfused_generic.hpp b/include/boost/fusion/functional/adapter/unfused_generic.hpp index b687e4ad..f609ab49 100644 --- a/include/boost/fusion/functional/adapter/unfused_generic.hpp +++ b/include/boost/fusion/functional/adapter/unfused_generic.hpp @@ -37,7 +37,9 @@ namespace boost { namespace fusion { Function fnc_transformed; - typedef typename detail::uncr::type function; + typedef typename detail::qf_c::type function_c; + typedef typename detail::qf::type function; + typedef typename detail::call_param::type func_const_fwd_t; public: @@ -50,7 +52,7 @@ namespace boost { namespace fusion struct result; typedef typename boost::result_of< - function const (fusion::vector0 &) >::type call_const_0_result; + function_c(fusion::vector0 &) >::type call_const_0_result; inline call_const_0_result operator()() const { @@ -69,7 +71,7 @@ namespace boost { namespace fusion #define BOOST_FUSION_CODE(tpl_params,arg_types,params,args) \ template \ - inline typename boost::result_of & )>::type \ operator()(params) const \ { \ @@ -127,7 +129,7 @@ namespace boost template struct result < Self const (BOOST_PP_ENUM_PARAMS(N,T)) > - : boost::result_of::type BOOST_PP_INTERCEPT) > & )> { }; @@ -135,7 +137,7 @@ namespace boost template struct result < Self(BOOST_PP_ENUM_PARAMS(N,T)) > - : boost::result_of::type BOOST_PP_INTERCEPT) > & )> { }; @@ -143,7 +145,7 @@ namespace boost #if BOOST_WORKAROUND(BOOST_MSVC,BOOST_TESTED_AT(1400)) template - inline typename boost::result_of & )>::type operator()(BOOST_PP_ENUM_BINARY_PARAMS(N,PT,a)) const { diff --git a/include/boost/fusion/functional/adapter/unfused_lvalue_args.hpp b/include/boost/fusion/functional/adapter/unfused_lvalue_args.hpp index 93841a64..7b801cf7 100644 --- a/include/boost/fusion/functional/adapter/unfused_lvalue_args.hpp +++ b/include/boost/fusion/functional/adapter/unfused_lvalue_args.hpp @@ -32,7 +32,9 @@ namespace boost { namespace fusion { Function fnc_transformed; - typedef typename detail::uncr::type function; + typedef typename detail::qf_c::type function_c; + typedef typename detail::qf::type function; + typedef typename detail::call_param::type func_const_fwd_t; public: @@ -45,7 +47,7 @@ namespace boost { namespace fusion struct result; typedef typename boost::result_of< - function const (fusion::vector0 &) >::type call_const_0_result; + function_c(fusion::vector0 &) >::type call_const_0_result; inline call_const_0_result operator()() const { @@ -54,7 +56,7 @@ namespace boost { namespace fusion } typedef typename boost::result_of< - function (fusion::vector0 &) >::type call_0_result; + function(fusion::vector0 &) >::type call_0_result; inline call_0_result operator()() { @@ -95,20 +97,20 @@ namespace boost template struct result< Self const (BOOST_PP_ENUM_PARAMS(N,T)) > - : boost::result_of< function const ( + : boost::result_of< function_c( BOOST_PP_CAT(fusion::vector,N)< BOOST_PP_ENUM_BINARY_PARAMS(N, typename detail::mref::type BOOST_PP_INTERCEPT) > & )> { }; template struct result< Self(BOOST_PP_ENUM_PARAMS(N,T)) > - : boost::result_of< function ( + : boost::result_of< function( BOOST_PP_CAT(fusion::vector,N)< BOOST_PP_ENUM_BINARY_PARAMS(N, typename detail::mref::type BOOST_PP_INTERCEPT) > & )> { }; template - inline typename boost::result_of & )>::type operator()(BOOST_PP_ENUM_BINARY_PARAMS(N,T,& a)) const { diff --git a/include/boost/fusion/functional/adapter/unfused_rvalue_args.hpp b/include/boost/fusion/functional/adapter/unfused_rvalue_args.hpp index 26afd539..eea0fec9 100644 --- a/include/boost/fusion/functional/adapter/unfused_rvalue_args.hpp +++ b/include/boost/fusion/functional/adapter/unfused_rvalue_args.hpp @@ -32,7 +32,9 @@ namespace boost { namespace fusion { Function fnc_transformed; - typedef typename detail::uncr::type function; + typedef typename detail::qf_c::type function_c; + typedef typename detail::qf::type function; + typedef typename detail::call_param::type func_const_fwd_t; public: @@ -45,7 +47,7 @@ namespace boost { namespace fusion struct result; typedef typename boost::result_of< - function const (fusion::vector0 &) >::type call_const_0_result; + function_c(fusion::vector0 &) >::type call_const_0_result; inline call_const_0_result operator()() const { @@ -54,7 +56,7 @@ namespace boost { namespace fusion } typedef typename boost::result_of< - function (fusion::vector0 &) >::type call_0_result; + function(fusion::vector0 &) >::type call_0_result; inline call_0_result operator()() { @@ -95,20 +97,20 @@ namespace boost template struct result< Self const (BOOST_PP_ENUM_PARAMS(N,T)) > - : boost::result_of< function const ( + : boost::result_of< function_c( BOOST_PP_CAT(fusion::vector,N)< BOOST_PP_ENUM_BINARY_PARAMS(N, typename detail::cref::type BOOST_PP_INTERCEPT) > & )> { }; template struct result< Self (BOOST_PP_ENUM_PARAMS(N,T)) > - : boost::result_of< function ( + : boost::result_of< function( BOOST_PP_CAT(fusion::vector,N)< BOOST_PP_ENUM_BINARY_PARAMS(N, typename detail::cref::type BOOST_PP_INTERCEPT) > & )> { }; template - inline typename boost::result_of & )>::type operator()(BOOST_PP_ENUM_BINARY_PARAMS(N,T,const& a)) const { diff --git a/include/boost/fusion/functional/adapter/unfused_typed.hpp b/include/boost/fusion/functional/adapter/unfused_typed.hpp index e892bd9a..3b463569 100644 --- a/include/boost/fusion/functional/adapter/unfused_typed.hpp +++ b/include/boost/fusion/functional/adapter/unfused_typed.hpp @@ -41,26 +41,29 @@ namespace boost { namespace fusion namespace detail { - template + template struct unfused_typed_impl; } template class unfused_typed : public detail::unfused_typed_impl - < unfused_typed, typename detail::uncr::type, - Sequence, result_of::size::value > + < unfused_typed, typename detail::qf_c::type, + typename detail::qf::type, Sequence, result_of::size::value > { Function fnc_transformed; - typedef typename detail::uncr::type function; + typedef typename detail::qf_c::type function_c; + typedef typename detail::qf::type function; + typedef typename detail::call_param::type func_const_fwd_t; typedef typename detail::unfused_typed_impl< - unfused_typed,function,Sequence, + unfused_typed,function_c,function,Sequence, result_of::size::value > base; - template + template friend struct detail::unfused_typed_impl; public: @@ -75,21 +78,22 @@ namespace boost { namespace fusion namespace detail { - template - struct unfused_typed_impl + template + struct unfused_typed_impl { typedef fusion::vector0 arg_vector_t; public: typedef typename boost::result_of< - Function const (arg_vector_t &) > call_const_0_result; + FunctionC (arg_vector_t &) > call_const_0_result; typedef typename boost::result_of< Function(arg_vector_t &) > call_0_result; inline typename boost::result_of< - Function const (arg_vector_t &) >::type + FunctionC (arg_vector_t &) >::type operator()() const { arg_vector_t arg; @@ -139,9 +143,10 @@ namespace boost namespace detail { - template - struct unfused_typed_impl - : unfused_typed_impl + struct unfused_typed_impl + : unfused_typed_impl::type, BOOST_PP_DEC(N) > { typedef typename result_of::as_vector::type arg_vector_t; @@ -149,14 +154,14 @@ namespace boost protected: typedef typename boost::result_of< - Function const (arg_vector_t &) > BOOST_PP_CAT(rc,N); + FunctionC(arg_vector_t &) > BOOST_PP_CAT(rc,N); typedef typename boost::result_of< Function(arg_vector_t &) > BOOST_PP_CAT(r,N); public: - using unfused_typed_impl< Derived,Function, + using unfused_typed_impl< Derived,FunctionC,Function, typename result_of::pop_back::type, BOOST_PP_DEC(N) >::operator(); @@ -164,7 +169,7 @@ namespace boost typename call_param::type>::type a##i inline typename boost::result_of< - Function const (arg_vector_t &) >::type + FunctionC(arg_vector_t &) >::type operator()(BOOST_PP_ENUM(N,M,arg_vector_t)) const { arg_vector_t arg(BOOST_PP_ENUM_PARAMS(N,a)); @@ -173,7 +178,7 @@ namespace boost #if !BOOST_WORKAROUND(BOOST_MSVC, < 1400) inline typename boost::result_of< - Function (arg_vector_t &) >::type + Function(arg_vector_t &) >::type operator()(BOOST_PP_ENUM(N,M,arg_vector_t)) { arg_vector_t arg(BOOST_PP_ENUM_PARAMS(N,a)); From 97a49614f9cfd953b7ac2ddd233ff99e0d9232dc Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Tue, 17 Jul 2007 21:43:14 +0000 Subject: [PATCH 211/234] removes unnecessary #includeS [SVN r38255] --- include/boost/fusion/functional/adapter/unfused_generic.hpp | 1 - include/boost/fusion/functional/adapter/unfused_typed.hpp | 2 -- 2 files changed, 3 deletions(-) diff --git a/include/boost/fusion/functional/adapter/unfused_generic.hpp b/include/boost/fusion/functional/adapter/unfused_generic.hpp index f609ab49..69191ef3 100644 --- a/include/boost/fusion/functional/adapter/unfused_generic.hpp +++ b/include/boost/fusion/functional/adapter/unfused_generic.hpp @@ -13,7 +13,6 @@ #include #include -#include #include #include #include diff --git a/include/boost/fusion/functional/adapter/unfused_typed.hpp b/include/boost/fusion/functional/adapter/unfused_typed.hpp index 3b463569..1858cc45 100644 --- a/include/boost/fusion/functional/adapter/unfused_typed.hpp +++ b/include/boost/fusion/functional/adapter/unfused_typed.hpp @@ -13,8 +13,6 @@ #include #include #include -#include -#include #include #include From 367a572f548e9059ac1844a64698f80f1429bc9d Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Tue, 17 Jul 2007 21:44:36 +0000 Subject: [PATCH 212/234] qualifies lookup of type traits names [SVN r38256] --- include/boost/fusion/functional/invocation/invoke.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/boost/fusion/functional/invocation/invoke.hpp b/include/boost/fusion/functional/invocation/invoke.hpp index 259b83b7..bac695cc 100644 --- a/include/boost/fusion/functional/invocation/invoke.hpp +++ b/include/boost/fusion/functional/invocation/invoke.hpp @@ -127,8 +127,8 @@ namespace boost { namespace fusion typedef typename result_of::front::type that; - typedef mpl::or_< is_convertible, - is_convertible, + typedef mpl::or_< boost::is_convertible, + boost::is_convertible, non_const_pointee > non_const_cond; typedef typename mpl::eval_if< non_const_cond, From 1484ae8e0615a981a6666ee03d094a1a19239b12 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Sun, 22 Jul 2007 08:29:54 +0000 Subject: [PATCH 213/234] adjusts test to semantic changes: unfused_typed only contains operator() overloads for one arity now [SVN r38267] --- test/functional/unfused_typed.cpp | 64 +++++++++++++++++++++++-------- 1 file changed, 47 insertions(+), 17 deletions(-) diff --git a/test/functional/unfused_typed.cpp b/test/functional/unfused_typed.cpp index 7c1e3270..7c5fa856 100644 --- a/test/functional/unfused_typed.cpp +++ b/test/functional/unfused_typed.cpp @@ -26,7 +26,9 @@ using mpl::placeholders::_; using boost::noncopyable; -typedef fusion::vector types; +typedef fusion::vector<> types0; +typedef fusion::vector types1; +typedef fusion::vector types3; template struct test_func @@ -79,9 +81,10 @@ void result_type_tests() { using boost::is_same; - typedef fusion::unfused_typed< test_func<>, types > t; - BOOST_TEST(( is_same< boost::result_of< t () >::type, long >::value )); - BOOST_TEST(( is_same< boost::result_of< t (int) >::type, long >::value )); + typedef fusion::unfused_typed< test_func<>, types0 > t0; + BOOST_TEST(( is_same< boost::result_of< t0 () >::type, long >::value )); + typedef fusion::unfused_typed< test_func<>, types1 > t1; + BOOST_TEST(( is_same< boost::result_of< t1 (int) >::type, long >::value )); } #if defined(BOOST_MSVC) && BOOST_MSVC < 1400 @@ -90,22 +93,30 @@ void result_type_tests() # define BOOST_TEST_NO_VC71(cond) BOOST_TEST(cond) #endif -int main() +void nullary_tests() { - result_type_tests(); - test_func f; - fusion::unfused_typed< test_func<>, types > unfused_func; - fusion::unfused_typed< test_func &, types > unfused_func_ref(f); - fusion::unfused_typed< test_func<> const, types > unfused_func_c; - fusion::unfused_typed< test_func<>, types > const unfused_func_c2; - fusion::unfused_typed< test_func const &, types > unfused_func_c_ref(f); + fusion::unfused_typed< test_func<>, types0 > unfused_func; + fusion::unfused_typed< test_func &, types0 > unfused_func_ref(f); + fusion::unfused_typed< test_func<> const, types0 > unfused_func_c; + fusion::unfused_typed< test_func<>, types0 > const unfused_func_c2; + fusion::unfused_typed< test_func const &, types0 > 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); +} + +void unary_tests() +{ + test_func f; + fusion::unfused_typed< test_func<>, types1 > unfused_func; + fusion::unfused_typed< test_func &, types1 > unfused_func_ref(f); + fusion::unfused_typed< test_func<> const, types1 > unfused_func_c; + fusion::unfused_typed< test_func<>, types1 > const unfused_func_c2; + fusion::unfused_typed< test_func const &, types1 > unfused_func_c_ref(f); long lvalue = 1; BOOST_TEST_NO_VC71(unfused_func(lvalue) == 100); @@ -118,18 +129,37 @@ int main() BOOST_TEST(lvalue == 1 + 4*sizeof(lvalue)); BOOST_TEST(unfused_func_c_ref(lvalue) == 0); BOOST_TEST(lvalue == 1 + 5*sizeof(lvalue)); +} +void ternary_tests() +{ + test_func f; + fusion::unfused_typed< test_func<>, types3 > unfused_func; + fusion::unfused_typed< test_func &, types3 > unfused_func_ref(f); + fusion::unfused_typed< test_func<> const, types3 > unfused_func_c; + fusion::unfused_typed< test_func<>, types3 > const unfused_func_c2; + fusion::unfused_typed< test_func const &, types3 > unfused_func_c_ref(f); + + long lvalue = 1; static const long expected = 2*sizeof(int) + 7*sizeof(char); BOOST_TEST_NO_VC71(unfused_func(lvalue,2,'\007') == 100 + expected); - BOOST_TEST(lvalue == 1 + 6*sizeof(lvalue)); + BOOST_TEST(lvalue == 1 + 1*sizeof(lvalue)); BOOST_TEST(unfused_func_ref(lvalue,2,'\007') == 100 + expected); - BOOST_TEST(lvalue == 1 + 7*sizeof(lvalue)); + BOOST_TEST(lvalue == 1 + 2*sizeof(lvalue)); BOOST_TEST(unfused_func_c(lvalue,2,'\007') == 0 + expected); - BOOST_TEST(lvalue == 1 + 8*sizeof(lvalue)); + BOOST_TEST(lvalue == 1 + 3*sizeof(lvalue)); BOOST_TEST(unfused_func_c2(lvalue,2,'\007') == 0 + expected); - BOOST_TEST(lvalue == 1 + 9*sizeof(lvalue)); + BOOST_TEST(lvalue == 1 + 4*sizeof(lvalue)); BOOST_TEST(unfused_func_c_ref(lvalue,2,'\007') == 0 + expected); - BOOST_TEST(lvalue == 1 + 10*sizeof(lvalue)); + BOOST_TEST(lvalue == 1 + 5*sizeof(lvalue)); +} + +int main() +{ + result_type_tests(); + nullary_tests(); + unary_tests(); + ternary_tests(); return boost::report_errors(); } From f6b7afa27782c2c848d618a2db60fd1f49bcb183 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Sun, 22 Jul 2007 08:30:58 +0000 Subject: [PATCH 214/234] changes semantics to contain only operator() overloads for one arity [SVN r38268] --- .../functional/adapter/unfused_typed.hpp | 132 +++++------------- 1 file changed, 37 insertions(+), 95 deletions(-) diff --git a/include/boost/fusion/functional/adapter/unfused_typed.hpp b/include/boost/fusion/functional/adapter/unfused_typed.hpp index 1858cc45..94385a35 100644 --- a/include/boost/fusion/functional/adapter/unfused_typed.hpp +++ b/include/boost/fusion/functional/adapter/unfused_typed.hpp @@ -13,9 +13,9 @@ #include #include #include +#include #include -#include #include @@ -24,7 +24,6 @@ #include #include #include -#include #include #include @@ -39,7 +38,7 @@ namespace boost { namespace fusion namespace detail { - template struct unfused_typed_impl; } @@ -47,71 +46,25 @@ namespace boost { namespace fusion template class unfused_typed : public detail::unfused_typed_impl - < unfused_typed, typename detail::qf_c::type, - typename detail::qf::type, Sequence, result_of::size::value > + < unfused_typed, Function, Sequence, + result_of::size::value > { Function fnc_transformed; - typedef typename detail::qf_c::type function_c; - typedef typename detail::qf::type function; + template + friend struct detail::unfused_typed_impl; typedef typename detail::call_param::type func_const_fwd_t; - typedef typename detail::unfused_typed_impl< - unfused_typed,function_c,function,Sequence, - result_of::size::value > base; - - template - friend struct detail::unfused_typed_impl; - public: inline explicit unfused_typed(func_const_fwd_t f = Function()) : fnc_transformed(f) { } - - template - struct result; }; - namespace detail - { - template - struct unfused_typed_impl - { - typedef fusion::vector0 arg_vector_t; - - public: - - typedef typename boost::result_of< - FunctionC (arg_vector_t &) > call_const_0_result; - - typedef typename boost::result_of< - Function(arg_vector_t &) > call_0_result; - - inline typename boost::result_of< - FunctionC (arg_vector_t &) >::type - operator()() const - { - arg_vector_t arg; - return static_cast(this)->fnc_transformed(arg); - } - -#if !BOOST_WORKAROUND(BOOST_MSVC, < 1400) - inline typename boost::result_of< - Function (arg_vector_t &) >::type - operator()() - { - arg_vector_t arg; - return static_cast(this)->fnc_transformed(arg); - } -#endif - }; - } - #define BOOST_PP_FILENAME_1 - #define BOOST_PP_ITERATION_LIMITS (1,BOOST_FUSION_UNFUSED_TYPED_MAX_ARITY) + #define BOOST_PP_ITERATION_LIMITS (0,BOOST_FUSION_UNFUSED_TYPED_MAX_ARITY) #include BOOST_PP_ITERATE() }} @@ -120,11 +73,13 @@ namespace boost { template struct result_of< boost::fusion::unfused_typed const () > - : boost::fusion::unfused_typed::call_const_0_result + : boost::fusion::unfused_typed::template result< + boost::fusion::unfused_typed const () > { }; template struct result_of< boost::fusion::unfused_typed() > - : boost::fusion::unfused_typed::call_0_result + : boost::fusion::unfused_typed::template result< + boost::fusion::unfused_typed () > { }; } @@ -141,72 +96,59 @@ namespace boost namespace detail { - template - struct unfused_typed_impl - : unfused_typed_impl::type, BOOST_PP_DEC(N) > + template + struct unfused_typed_impl { + typedef typename detail::qf_c::type function_c; + typedef typename detail::qf::type function; typedef typename result_of::as_vector::type arg_vector_t; - protected: - - typedef typename boost::result_of< - FunctionC(arg_vector_t &) > BOOST_PP_CAT(rc,N); - - typedef typename boost::result_of< - Function(arg_vector_t &) > BOOST_PP_CAT(r,N); - public: - using unfused_typed_impl< Derived,FunctionC,Function, - typename result_of::pop_back::type, BOOST_PP_DEC(N) - >::operator(); - #define M(z,i,s) \ typename call_param::type>::type a##i inline typename boost::result_of< - FunctionC(arg_vector_t &) >::type + function_c(arg_vector_t &) >::type operator()(BOOST_PP_ENUM(N,M,arg_vector_t)) const { +#if N > 0 arg_vector_t arg(BOOST_PP_ENUM_PARAMS(N,a)); +#else + arg_vector_t arg; +#endif return static_cast(this)->fnc_transformed(arg); } -#if !BOOST_WORKAROUND(BOOST_MSVC, < 1400) inline typename boost::result_of< - Function(arg_vector_t &) >::type + function(arg_vector_t &) >::type operator()(BOOST_PP_ENUM(N,M,arg_vector_t)) { +#if N > 0 arg_vector_t arg(BOOST_PP_ENUM_PARAMS(N,a)); +#else + arg_vector_t arg; +#endif return static_cast(this)->fnc_transformed(arg); } -#endif #undef M + + template struct result { typedef void type; }; + + template + struct result< Self const (BOOST_PP_ENUM_PARAMS(N,T)) > + : boost::result_of< function_c(arg_vector_t &) > + { }; + + template + struct result< Self (BOOST_PP_ENUM_PARAMS(N,T)) > + : boost::result_of< function(arg_vector_t &) > + { }; }; } // namespace detail -#if N > 0 - template - template - struct unfused_typed::result< - Self const (BOOST_PP_ENUM_PARAMS(N,T)) > - : BOOST_PP_CAT(base::rc,N) - { }; - -# if !BOOST_WORKAROUND(BOOST_MSVC, < 1400) - template - template - struct unfused_typed::result< - Self (BOOST_PP_ENUM_PARAMS(N,T)) > - : BOOST_PP_CAT(base::r,N) - { }; -# endif -#endif - #undef N #endif // defined(BOOST_PP_IS_ITERATING) #endif From 887906aa697157e16aca69fe55bc7f0a2b37a674 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Sun, 22 Jul 2007 08:35:29 +0000 Subject: [PATCH 215/234] changes docs to reflect changed semantics of unfused_type (operator() overloads for only onw arity now) [SVN r38269] --- doc/functional.qbk | 6 ++---- doc/html/fusion/functional.html | 4 ++-- .../fusion/functional/adapters/fused.html | 6 +++--- .../adapters/fused_function_object.html | 6 +++--- .../functional/adapters/fused_procedure.html | 2 +- .../adapters/unfused_rvalue_args.html | 4 ++-- .../functional/adapters/unfused_typed.html | 21 ++++++++----------- .../fusion/functional/concepts/callable.html | 2 +- doc/html/fusion/functional/concepts/poly.html | 2 +- .../generation/functions/mk_fused.html | 14 ++++++------- .../generation/functions/mk_fused_fobj.html | 14 ++++++------- .../generation/functions/mk_fused_proc.html | 14 ++++++------- .../functions/mk_unfused_genrc.html | 14 ++++++------- .../functions/mk_unfused_lvargs.html | 14 ++++++------- .../functions/mk_unfused_rvargs.html | 14 ++++++------- .../generation/metafunctions/mk_fused.html | 8 +++---- .../metafunctions/mk_fused_fobj.html | 8 +++---- .../metafunctions/mk_fused_proc.html | 8 +++---- .../metafunctions/mk_unfused_genrc.html | 8 +++---- .../metafunctions/mk_unfused_lvargs.html | 8 +++---- .../metafunctions/mk_unfused_rvargs.html | 8 +++---- .../invocation/functions/invoke.html | 2 +- .../invocation/functions/invoke_fobj.html | 8 +++---- .../invocation/functions/invoke_proc.html | 6 +++--- .../invocation/metafunctions/invoke.html | 2 +- .../invocation/metafunctions/invoke_proc.html | 2 +- doc/html/fusion/notes.html | 16 +++++++------- doc/html/index.html | 2 +- 28 files changed, 109 insertions(+), 114 deletions(-) diff --git a/doc/functional.qbk b/doc/functional.qbk index a2e566a3..2a3c6428 100644 --- a/doc/functional.qbk +++ b/doc/functional.qbk @@ -58,7 +58,7 @@ templates or function call operators. The library provides several adapter variants that implement this transformation, ranging from strictly typed to fully generic. The latter -provides a reusable solution to __the_forwarding_problem__. +provides a reusable, approximate solution to __the_forwarding_problem__. Every generic variant has a corresponding generator function template that returns an adapter instance for the given argument. @@ -1019,10 +1019,8 @@ An n-ary __poly_func_obj__ adapter template for an unary __poly_func_obj__ target function. When called, its arguments are bundled to a __random_access_sequence__ that is passed to the target function object. -The call operators of the resulting function object are strictly typed +The call operators of esulting function objects are strictly typed (in other words, non-templatized) with the types from a __sequence__. -By default, call operators with zero to N parameters are generated to, -where N is the size of the __sequence__ that specifies the types. The type of the target function is allowed to be const qualified or a reference. Const qualification is preserved and propagated appropriately diff --git a/doc/html/fusion/functional.html b/doc/html/fusion/functional.html index ebea3b3c..025520fe 100644 --- a/doc/html/fusion/functional.html +++ b/doc/html/fusion/functional.html @@ -146,8 +146,8 @@

    The library provides several adapter variants that implement this transformation, - ranging from strictly typed to fully generic. The latter provides a reusable - solution to The + ranging from strictly typed to fully generic. The latter provides a reusable, + approximate solution to The Forwarding Problem. Every generic variant has a corresponding generator function template that returns an adapter instance for the given argument.

    diff --git a/doc/html/fusion/functional/adapters/fused.html b/doc/html/fusion/functional/adapters/fused.html index 07bf5f99..e5c75988 100644 --- a/doc/html/fusion/functional/adapters/fused.html +++ b/doc/html/fusion/functional/adapters/fused.html @@ -154,7 +154,7 @@
    - + Expression Semantics
    @@ -218,7 +218,7 @@
    - + Example
    @@ -226,7 +226,7 @@
     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 abf82ab0..765cbc65 100644 --- a/doc/html/fusion/functional/adapters/fused_function_object.html +++ b/doc/html/fusion/functional/adapters/fused_function_object.html @@ -26,7 +26,7 @@
      - + Description

      @@ -46,7 +46,7 @@ object is held by value, the adapter is const).

      - + Header
      @@ -247,7 +247,7 @@
       }
       
      - + See also
      diff --git a/doc/html/fusion/functional/adapters/fused_procedure.html b/doc/html/fusion/functional/adapters/fused_procedure.html index ba7db6af..49f24708 100644 --- a/doc/html/fusion/functional/adapters/fused_procedure.html +++ b/doc/html/fusion/functional/adapters/fused_procedure.html @@ -63,7 +63,7 @@ case is not implemented).

      - + Header
      diff --git a/doc/html/fusion/functional/adapters/unfused_rvalue_args.html b/doc/html/fusion/functional/adapters/unfused_rvalue_args.html
      index a87ea7a5..0975ce97 100644
      --- a/doc/html/fusion/functional/adapters/unfused_rvalue_args.html
      +++ b/doc/html/fusion/functional/adapters/unfused_rvalue_args.html
      @@ -26,7 +26,7 @@
       
       
      - + Description

      @@ -215,7 +215,7 @@

    - + Example
    diff --git a/doc/html/fusion/functional/adapters/unfused_typed.html b/doc/html/fusion/functional/adapters/unfused_typed.html
    index ef08f4a9..0c9badef 100644
    --- a/doc/html/fusion/functional/adapters/unfused_typed.html
    +++ b/doc/html/fusion/functional/adapters/unfused_typed.html
    @@ -40,11 +40,8 @@
               Access Sequence that is passed to the target function object.
             

    - The call operators of the resulting function object are strictly typed - (in other words, non-templatized) with the types from a Sequence. - By default, call operators with zero to N parameters are generated to, - where N is the size of the Sequence - that specifies the types. + The call operators of esulting function objects are strictly typed (in + other words, non-templatized) with the types from a Sequence.

    The type of the target function is allowed to be const qualified or a reference. @@ -65,14 +62,14 @@ signature is optimized automatically to avoid by-value parameters.

    - + Header
     #include <boost/fusion/functional/adapter/unfused_typed.hpp>
     
    - + Synopsis
    @@ -80,7 +77,7 @@
     class unfused_typed;
     
    - + Template parameters
    @@ -145,7 +142,7 @@
    - + Model of
    @@ -191,7 +188,7 @@
    - + Expression Semantics
    @@ -257,7 +254,7 @@
    - + Example
    @@ -326,7 +323,7 @@
     }
     
    - + See also
      diff --git a/doc/html/fusion/functional/concepts/callable.html b/doc/html/fusion/functional/concepts/callable.html index 9d53e5d7..bf26f10a 100644 --- a/doc/html/fusion/functional/concepts/callable.html +++ b/doc/html/fusion/functional/concepts/callable.html @@ -36,7 +36,7 @@ of a function call operator.

      - + Models
        diff --git a/doc/html/fusion/functional/concepts/poly.html b/doc/html/fusion/functional/concepts/poly.html index f1552c6b..685fa1f2 100644 --- a/doc/html/fusion/functional/concepts/poly.html +++ b/doc/html/fusion/functional/concepts/poly.html @@ -39,7 +39,7 @@ Callable Object type.

        - + Refinement of
        diff --git a/doc/html/fusion/functional/generation/functions/mk_fused.html b/doc/html/fusion/functional/generation/functions/mk_fused.html index 05e64daf..4d2001b2 100644 --- a/doc/html/fusion/functional/generation/functions/mk_fused.html +++ b/doc/html/fusion/functional/generation/functions/mk_fused.html @@ -30,7 +30,7 @@ make_fused"> make_fused
    - + Description

    @@ -40,7 +40,7 @@ conversion is applied to the target function.

    - + Synopsis
    @@ -50,7 +50,7 @@
     make_fused(F const & f);
     
    - + Parameters
    @@ -97,7 +97,7 @@
    - + Expression Semantics
    @@ -111,14 +111,14 @@ Semantics: Returns a fused adapter for f.

    - + Header
     #include <boost/fusion/functional/generation/make_fused.hpp>
     
    - + Example
    @@ -134,7 +134,7 @@
     }
     
    - + 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 cc51038f..253671e5 100644 --- a/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html +++ b/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html @@ -31,7 +31,7 @@ make_fused_function_object"> make_fused_function_object
    - + Description

    @@ -42,7 +42,7 @@ conversion is applied to the target function.

    - + Synopsis
    @@ -52,7 +52,7 @@
     make_fused_function_object(F const & f);
     
    - + Parameters
    @@ -99,7 +99,7 @@
    - + Expression Semantics
    @@ -114,14 +114,14 @@ for f.

    - + Header
     #include <boost/fusion/functional/generation/make_fused_function_object.hpp>
     
    - + Example
    @@ -150,7 +150,7 @@
     }
     
    - + 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 1baa3d4d..d63a85d1 100644 --- a/doc/html/fusion/functional/generation/functions/mk_fused_proc.html +++ b/doc/html/fusion/functional/generation/functions/mk_fused_proc.html @@ -31,7 +31,7 @@ make_fused_procedure"> make_fused_procedure
    - + Description

    @@ -42,7 +42,7 @@ conversion applied to the target function.

    - + Synopsis
    @@ -52,7 +52,7 @@
     make_fused_procedure(F const & f);
     
    - + Parameters
    @@ -98,7 +98,7 @@
    - + Expression Semantics
    @@ -113,14 +113,14 @@ f.

    - + Header
     #include <boost/fusion/functional/generation/make_fused_procedure.hpp>
     
    - + Example
    @@ -130,7 +130,7 @@
     assert(front(v) == 0);
     
    - + See also
    diff --git a/doc/html/fusion/functional/generation/functions/mk_unfused_genrc.html b/doc/html/fusion/functional/generation/functions/mk_unfused_genrc.html index 4506086e..ed66d70b 100644 --- a/doc/html/fusion/functional/generation/functions/mk_unfused_genrc.html +++ b/doc/html/fusion/functional/generation/functions/mk_unfused_genrc.html @@ -31,7 +31,7 @@ make_unfused_generic"> make_unfused_generic
    - + Description

    @@ -42,7 +42,7 @@ conversion is applied to the target function.

    - + Synopsis
    @@ -52,7 +52,7 @@
     make_unfused_generic(F const & f);
     
    - + Parameters
    @@ -99,7 +99,7 @@
    - + Expression Semantics
    @@ -114,14 +114,14 @@ f.

    - + Header
     #include <boost/fusion/functional/generation/make_unfused_generic.hpp>
     
    - + Example
    @@ -157,7 +157,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/generation/functions/mk_unfused_lvargs.html b/doc/html/fusion/functional/generation/functions/mk_unfused_lvargs.html index 19a41235..fba0fb6b 100644 --- a/doc/html/fusion/functional/generation/functions/mk_unfused_lvargs.html +++ b/doc/html/fusion/functional/generation/functions/mk_unfused_lvargs.html @@ -31,7 +31,7 @@ make_unfused_lvalue_args"> make_unfused_lvalue_args
    - + Description

    @@ -42,7 +42,7 @@ conversion is applied to the target function.

    - + Synopsis
    @@ -52,7 +52,7 @@
     make_unfused_lvalue_args(F const & f);
     
    - + Parameters
    @@ -99,7 +99,7 @@
    - + Expression Semantics
    @@ -114,14 +114,14 @@ for f.

    - + Header
     #include <boost/fusion/functional/generation/make_unfused_lvalue_args.hpp>
     
    - + Example
    @@ -148,7 +148,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/generation/functions/mk_unfused_rvargs.html b/doc/html/fusion/functional/generation/functions/mk_unfused_rvargs.html index c45e3291..8ac6bb87 100644 --- a/doc/html/fusion/functional/generation/functions/mk_unfused_rvargs.html +++ b/doc/html/fusion/functional/generation/functions/mk_unfused_rvargs.html @@ -30,7 +30,7 @@ make_unfused_rvalue_args"> make_unfused_rvalue_args
    - + Description

    @@ -41,7 +41,7 @@ conversion is applied to the target function.

    - + Synopsis
    @@ -51,7 +51,7 @@
     make_unfused_rvalue_args(F const & f);
     
    - + Parameters
    @@ -98,7 +98,7 @@
    - + Expression Semantics
    @@ -113,14 +113,14 @@ for f.

    - + Header
     #include <boost/fusion/functional/generation/make_unfused_rvalue_args.hpp>
     
    - + Example
    @@ -146,7 +146,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/generation/metafunctions/mk_fused.html b/doc/html/fusion/functional/generation/metafunctions/mk_fused.html index 8e7dfa64..40139391 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused.html @@ -30,7 +30,7 @@ make_fused"> make_fused
    - + Description

    @@ -38,14 +38,14 @@ make_fused">make_fused.

    - + Header
     #include <boost/fusion/functional/generation/make_fused.hpp>
     
    - + Synopsis
    @@ -59,7 +59,7 @@
     }
     
    - + 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 abbb7c23..e44bf15e 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html @@ -31,7 +31,7 @@ make_fused_function_object"> make_fused_function_object
    - + Description

    @@ -39,14 +39,14 @@ make_fused_function_object">make_fused_function_object.

    - + Header
     #include <boost/fusion/functional/generation/make_fused_function_object.hpp>
     
    - + Synopsis
    @@ -60,7 +60,7 @@
     }
     
    - + 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 91ab1a74..b920ac1e 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html @@ -31,7 +31,7 @@ make_fused_procedure"> make_fused_procedure
    - + Description

    @@ -39,14 +39,14 @@ make_fused_procedure">make_fused_procedure.

    - + Header
     #include <boost/fusion/functional/generation/make_fused_procedure.hpp>
     
    - + Synopsis
    @@ -60,7 +60,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/generation/metafunctions/mk_unfused_genrc.html b/doc/html/fusion/functional/generation/metafunctions/mk_unfused_genrc.html index 4ffc6a94..ad0cb762 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_unfused_genrc.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_unfused_genrc.html @@ -31,7 +31,7 @@ make_unfused_generic"> make_unfused_generic
    - + Description

    @@ -39,14 +39,14 @@ make_unfused_generic">make_unfused_generic.

    - + Header
     #include <boost/fusion/functional/generation/make_unfused_generic.hpp>
     
    - + Synopsis
    @@ -60,7 +60,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/generation/metafunctions/mk_unfused_lvargs.html b/doc/html/fusion/functional/generation/metafunctions/mk_unfused_lvargs.html index 01e07602..8bd81bd2 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_unfused_lvargs.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_unfused_lvargs.html @@ -31,7 +31,7 @@ make_unfused_lvalue_args"> make_unfused_lvalue_args
    - + Description

    @@ -39,14 +39,14 @@ make_unfused_lvalue_args">make_unfused_lvalue_args.

    - + Header
     #include <boost/fusion/functional/generation/make_unfused_lvalue_args.hpp>
     
    - + Synopsis
    @@ -60,7 +60,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/generation/metafunctions/mk_unfused_rvargs.html b/doc/html/fusion/functional/generation/metafunctions/mk_unfused_rvargs.html index 232be8eb..5d5983a4 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_unfused_rvargs.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_unfused_rvargs.html @@ -30,7 +30,7 @@ make_unfused_rvalue_args"> make_unfused_rvalue_args
    - + Description

    @@ -38,14 +38,14 @@ make_unfused_rvalue_args">make_unfused_rvalue_args.

    - + Header
     #include <boost/fusion/functional/generation/make_unfused_rvalue_args.hpp>
     
    - + Synopsis
    @@ -59,7 +59,7 @@
     }
     
    - + See also
    diff --git a/doc/html/fusion/functional/invocation/functions/invoke.html b/doc/html/fusion/functional/invocation/functions/invoke.html index b92863dc..53c4281b 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke.html +++ b/doc/html/fusion/functional/invocation/functions/invoke.html @@ -151,7 +151,7 @@ as arguments and returns the result of the call expression.

    - + Header
    diff --git a/doc/html/fusion/functional/invocation/functions/invoke_fobj.html b/doc/html/fusion/functional/invocation/functions/invoke_fobj.html
    index a692f19d..4de4083e 100644
    --- a/doc/html/fusion/functional/invocation/functions/invoke_fobj.html
    +++ b/doc/html/fusion/functional/invocation/functions/invoke_fobj.html
    @@ -64,7 +64,7 @@
     invoke_function_object(Function f, Sequence const & s);
     
    - + Parameters
    @@ -132,7 +132,7 @@
    - + Expression Semantics
    @@ -149,7 +149,7 @@ as arguments and returns the result of the call expression.

    - + Header
    @@ -183,7 +183,7 @@
     }
     
    - + 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 e6380ecf..b3b80e45 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke_proc.html +++ b/doc/html/fusion/functional/invocation/functions/invoke_proc.html @@ -30,7 +30,7 @@ invoke_procedure"> invoke_procedure
    - + Description

    @@ -142,7 +142,7 @@

    - + Expression Semantics
    @@ -175,7 +175,7 @@ assert(front(v) == 3);
    - + See also
    diff --git a/doc/html/fusion/functional/invocation/metafunctions/invoke.html b/doc/html/fusion/functional/invocation/metafunctions/invoke.html index 9ad25597..603abc43 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke.html @@ -34,7 +34,7 @@ Returns the result type of invoke.

    - + Synopsis
    diff --git a/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html b/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html
    index 9515b169..149b5acf 100644
    --- a/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html
    +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html
    @@ -38,7 +38,7 @@
               invoke_procedure">invoke_procedure.
               

    - + Synopsis
    diff --git a/doc/html/fusion/notes.html b/doc/html/fusion/notes.html
    index 9f7aef89..e46e0dc6 100644
    --- a/doc/html/fusion/notes.html
    +++ b/doc/html/fusion/notes.html
    @@ -27,7 +27,7 @@
     
     

    - + Recursive Inlined Functions

    @@ -40,7 +40,7 @@ compiler limit of course). Compile time complexity remains linear.

    - + Overloaded Functions

    @@ -50,7 +50,7 @@ given a key, k.

    - + Tag Dispatching

    @@ -102,7 +102,7 @@

    - + Extensibility

    @@ -137,7 +137,7 @@ it very cheap to pass around.

    - + Element Conversion

    @@ -160,7 +160,7 @@

    Array arguments are deduced to reference to const types. For example - [14] + [14] :

    @@ -193,7 +193,7 @@
     list<void (*)(int)>
     

    - + boost::ref

    @@ -236,7 +236,7 @@



    -

    [14] +

    [14] 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 diff --git a/doc/html/index.html b/doc/html/index.html index 625828a2..b9d501ba 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -225,7 +225,7 @@

    - +

    Last revised: July 13, 2007 at 19:08:46 GMT

    Last revised: July 22, 2007 at 08:27:13 GMT


    From 0bb0d5798bf7d37a9c4c0e4e949b78e8b1f71261 Mon Sep 17 00:00:00 2001 From: Eric Niebler Date: Sun, 22 Jul 2007 16:38:18 +0000 Subject: [PATCH 216/234] accomodate recent fusion result_of changes [SVN r38275] --- include/boost/fusion/sequence/intrinsic/ext_/size_s.hpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/include/boost/fusion/sequence/intrinsic/ext_/size_s.hpp b/include/boost/fusion/sequence/intrinsic/ext_/size_s.hpp index b2603fc5..d3c31ccc 100755 --- a/include/boost/fusion/sequence/intrinsic/ext_/size_s.hpp +++ b/include/boost/fusion/sequence/intrinsic/ext_/size_s.hpp @@ -25,11 +25,14 @@ namespace boost { namespace fusion { struct size_plus { - template - struct result + template + struct result; + + template + struct result : mpl::plus< segmented_size::type> - , State + , typename remove_reference::type > {}; }; From fac8e082b8e362aa71dd46c65b710a6624d678d5 Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Thu, 2 Aug 2007 20:10:01 +0000 Subject: [PATCH 217/234] removing dead file recovered by cvs transfer [SVN r38405] --- .../fusion/algorithm/query/detail/none.hpp | 39 ------------------- 1 file changed, 39 deletions(-) delete mode 100644 include/boost/fusion/algorithm/query/detail/none.hpp diff --git a/include/boost/fusion/algorithm/query/detail/none.hpp b/include/boost/fusion/algorithm/query/detail/none.hpp deleted file mode 100644 index 1a633fca..00000000 --- a/include/boost/fusion/algorithm/query/detail/none.hpp +++ /dev/null @@ -1,39 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - Distributed under the 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_NONE_07062005_1126) -#define FUSION_NONE_07062005_1126 - -#include -#include -#include -#include - -namespace boost { namespace fusion { namespace detail -{ - template - inline bool - none(First const&, Last const&, F const&, mpl::true_) - { - return true; - } - - template - inline bool - none(First const& first, Last const& last, F& f, mpl::false_) - { - typename result_of::deref::type x = *first; - return !f(x) && - detail::none( - fusion::next(first) - , last - , f - , result_of::equal_to::type, Last>()); - } -}}} - -#endif - From 2536037ff72e793fe228f9dc46791a4e3c35abef Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Thu, 2 Aug 2007 20:24:47 +0000 Subject: [PATCH 218/234] removing another dead file from the cvs import [SVN r38406] --- .../adapter/detail/gen_result_of_spec.hpp | 102 ------------------ 1 file changed, 102 deletions(-) delete mode 100644 include/boost/fusion/functional/adapter/detail/gen_result_of_spec.hpp diff --git a/include/boost/fusion/functional/adapter/detail/gen_result_of_spec.hpp b/include/boost/fusion/functional/adapter/detail/gen_result_of_spec.hpp deleted file mode 100644 index 29335dc3..00000000 --- a/include/boost/fusion/functional/adapter/detail/gen_result_of_spec.hpp +++ /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). -==============================================================================*/ - -// No include guard - this file is included multiple times intentionally. - -#if !defined(BOOST_PP_IS_ITERATING) - -# if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_DETAIL_GEN_RESULT_OF_SPEC_HPP_INCLUDED) - -# include -# include -# include -# include -# include - -# include - -# include - -# define BOOST_FUSION_FUNCTIONAL_ADAPTER_DETAIL_GEN_RESULT_OF_SPEC_HPP_INCLUDED -# endif - -# if !defined(BOOST_FUSION_CLASS_TPL_PARAMS) -# error "BOOST_FUSION_CLASS_TPL_PARAMS undefined" -# endif -# if !defined(BOOST_FUSION_CLASS_TPL_SPEC) -# error "BOOST_FUSION_CLASS_TPL_SPEC undefined" -# endif - -# if !defined(BOOST_FUSION_FUNC_OBJ_ARITY) -# define BOOST_PP_ITERATION_LIMITS (1,1) -# else -# define BOOST_PP_ITERATION_LIMITS (0,BOOST_FUSION_FUNC_OBJ_ARITY) -# endif -# define BOOST_PP_FILENAME_1 \ - - -namespace boost -{ - #include BOOST_PP_ITERATE() -} - -# undef BOOST_FUSION_CLASS_TPL_PARAMS -# undef BOOST_FUSION_CLASS_TPL_SPEC -# if defined(BOOST_FUSION_FUNC_OBJ_ARITY) -# undef BOOST_FUSION_FUNC_OBJ_ARITY -# endif - -#else // defined(BOOST_PP_IS_ITERATING) -/////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// -/////////////////////////////////////////////////////////////////////////////// - -# define N BOOST_PP_ITERATION() - - template< BOOST_FUSION_CLASS_TPL_PARAMS - BOOST_PP_ENUM_TRAILING_PARAMS(N, typename A) > - struct result_of< BOOST_FUSION_CLASS_TPL_SPEC (BOOST_PP_ENUM_PARAMS(N,A)) > - { - typedef typename BOOST_FUSION_CLASS_TPL_SPEC ::template result - ::type BOOST_PP_INTERCEPT)>::type type; - }; - - template< BOOST_FUSION_CLASS_TPL_PARAMS - BOOST_PP_ENUM_TRAILING_PARAMS(N, typename A) > - struct result_of< BOOST_FUSION_CLASS_TPL_SPEC & (BOOST_PP_ENUM_PARAMS(N,A)) > - { - typedef typename BOOST_FUSION_CLASS_TPL_SPEC ::template result - ::type BOOST_PP_INTERCEPT)>::type type; - }; - - template< BOOST_FUSION_CLASS_TPL_PARAMS - BOOST_PP_ENUM_TRAILING_PARAMS(N, typename A) > - struct result_of< BOOST_FUSION_CLASS_TPL_SPEC const (BOOST_PP_ENUM_PARAMS(N,A)) > - { - typedef typename BOOST_FUSION_CLASS_TPL_SPEC ::template result - ::type BOOST_PP_INTERCEPT)>::type type; - }; - - template< BOOST_FUSION_CLASS_TPL_PARAMS - BOOST_PP_ENUM_TRAILING_PARAMS(N, typename A) > - struct result_of< BOOST_FUSION_CLASS_TPL_SPEC const & (BOOST_PP_ENUM_PARAMS(N,A)) > - { - typedef typename BOOST_FUSION_CLASS_TPL_SPEC ::template result - ::type BOOST_PP_INTERCEPT)>::type type; - }; - -# undef N - -#endif - From e90a217a2c5bebbc4f4c7d53bc9ad5770011bc8d Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Thu, 2 Aug 2007 20:34:13 +0000 Subject: [PATCH 219/234] removing files added by the cvs import incorrectly [SVN r38407] --- .../functional/adapter/detail/has_type.hpp | 21 ------ .../adapter/detail/nullary_call_base.hpp | 69 ------------------- 2 files changed, 90 deletions(-) delete mode 100644 include/boost/fusion/functional/adapter/detail/has_type.hpp delete mode 100644 include/boost/fusion/functional/adapter/detail/nullary_call_base.hpp diff --git a/include/boost/fusion/functional/adapter/detail/has_type.hpp b/include/boost/fusion/functional/adapter/detail/has_type.hpp deleted file mode 100644 index 98056a26..00000000 --- a/include/boost/fusion/functional/adapter/detail/has_type.hpp +++ /dev/null @@ -1,21 +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). -==============================================================================*/ - -#if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_DETAIL_HAS_TYPE_HPP_INCLUDED) -#define BOOST_FUSION_FUNCTIONAL_ADAPTER_DETAIL_HAS_TYPE_HPP_INCLUDED - -#include - -namespace boost { namespace fusion { namespace detail -{ - // Actually it's a sin... But MSVC's weird interpretation of ADL makes - // me do this - tosh. - using boost::mpl::aux::has_type; -}}} - -#endif diff --git a/include/boost/fusion/functional/adapter/detail/nullary_call_base.hpp b/include/boost/fusion/functional/adapter/detail/nullary_call_base.hpp deleted file mode 100644 index c089a697..00000000 --- a/include/boost/fusion/functional/adapter/detail/nullary_call_base.hpp +++ /dev/null @@ -1,69 +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). -==============================================================================*/ - -#if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_DETAIL_NULLARY_CALL_BASE_HPP_INCLUDED) -#define BOOST_FUSION_FUNCTIONAL_ADAPTER_DETAIL_NULLARY_CALL_BASE_HPP_INCLUDED - -#include - -#include -#include - -#include -#include - -#include - -namespace boost { namespace fusion { namespace detail -{ - struct reserved { }; - - template - struct get_result_spec - { - typedef typename remove_const::type>::type function; - typedef typename function::template result type; - }; - - template ::type>::value> - struct nullary_call_base - { - template inline void operator()(T reserved::*) const { } - protected: - typedef boost::blank r0; - }; - - template - struct nullary_call_base - { - private: - typedef typename remove_const::type>::type function; - protected: - typedef typename function::template result r0; - public: - - inline typename r0::type - operator()() const - { - fusion::vector0 arg; - return static_cast(this)->fnc_transformed(arg); - } - - inline typename r0::type - operator()() - { - fusion::vector0 arg; - return static_cast(this)->fnc_transformed(arg); - } - }; - -}}} - -#endif - From f8e8b4bbf564c1d4c3d5572ec865c6d28f21f5bd Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Fri, 10 Aug 2007 01:45:05 +0000 Subject: [PATCH 220/234] push/pop pragma warning [SVN r38559] --- .../fusion/sequence/container/map/detail/map_lookup.hpp | 8 +++++++- .../fusion/sequence/container/set/detail/set_lookup.hpp | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/include/boost/fusion/sequence/container/map/detail/map_lookup.hpp b/include/boost/fusion/sequence/container/map/detail/map_lookup.hpp index 62d23d8c..aef42c62 100644 --- a/include/boost/fusion/sequence/container/map/detail/map_lookup.hpp +++ b/include/boost/fusion/sequence/container/map/detail/map_lookup.hpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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) ==============================================================================*/ #ifndef BOOST_PP_IS_ITERATING @@ -15,6 +15,7 @@ #include #if defined(BOOST_MSVC) && (BOOST_MSVC == 1310) +#pragma warning (push) #pragma warning(disable: 4348) // redefinition of default parameter #endif @@ -119,5 +120,10 @@ } #undef N + +#if defined(BOOST_MSVC) && (BOOST_MSVC == 1310) +#pragma warning (pop) +#endif + #endif // defined(BOOST_PP_IS_ITERATING) diff --git a/include/boost/fusion/sequence/container/set/detail/set_lookup.hpp b/include/boost/fusion/sequence/container/set/detail/set_lookup.hpp index b6c59994..fd300457 100644 --- a/include/boost/fusion/sequence/container/set/detail/set_lookup.hpp +++ b/include/boost/fusion/sequence/container/set/detail/set_lookup.hpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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) ==============================================================================*/ #ifndef BOOST_PP_IS_ITERATING @@ -15,6 +15,7 @@ #include #if defined(BOOST_MSVC) && (BOOST_MSVC == 1310) +#pragma warning (push) #pragma warning(disable: 4348) // redefinition of default parameter #endif @@ -119,5 +120,10 @@ } #undef N + +#if defined(BOOST_MSVC) && (BOOST_MSVC == 1310) +#pragma warning (pop) +#endif + #endif // defined(BOOST_PP_IS_ITERATING) From 6b56ded55a40030d7f7ae83b5240dee1e52487bf Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Tue, 18 Sep 2007 00:18:56 +0000 Subject: [PATCH 221/234] bugfix tuples::null_type and tuples::tuple<> iterators not comparing ok. [SVN r39359] --- .../boost_tuple/boost_tuple_iterator.hpp | 63 ++++++++++++++++--- 1 file changed, 55 insertions(+), 8 deletions(-) diff --git a/include/boost/fusion/sequence/adapted/boost_tuple/boost_tuple_iterator.hpp b/include/boost/fusion/sequence/adapted/boost_tuple/boost_tuple_iterator.hpp index f92ef8b6..2becfbd5 100644 --- a/include/boost/fusion/sequence/adapted/boost_tuple/boost_tuple_iterator.hpp +++ b/include/boost/fusion/sequence/adapted/boost_tuple/boost_tuple_iterator.hpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_BOOST_TUPLE_ITERATOR_09262006_1851) @@ -19,6 +19,24 @@ namespace boost { namespace fusion { struct forward_traversal_tag; + namespace detail + { + template + struct boost_tuple_is_empty : mpl::false_ {}; + + template <> + struct boost_tuple_is_empty : mpl::true_ {}; + + template <> + struct boost_tuple_is_empty : mpl::true_ {}; + + template <> + struct boost_tuple_is_empty > : mpl::true_ {}; + + template <> + struct boost_tuple_is_empty const> : mpl::true_ {}; + } + template struct boost_tuple_iterator : iterator_facade, forward_traversal_tag> @@ -36,13 +54,13 @@ namespace boost { namespace fusion struct deref { typedef typename value_of::type element; - - typedef typename + + typedef typename mpl::if_< is_const , typename tuples::access_traits::const_type , typename tuples::access_traits::non_const_type - >::type + >::type type; static type @@ -72,11 +90,40 @@ namespace boost { namespace fusion return type(iter.cons.get_tail()); } }; + + template + struct equal_to + : mpl::or_< + is_same + , mpl::and_< + detail::boost_tuple_is_empty + , detail::boost_tuple_is_empty + > + > + {}; + }; + + template + struct boost_tuple_null_iterator + : iterator_facade, forward_traversal_tag> + { + typedef Null cons_type; + + template + struct equal_to + : mpl::or_< + is_same + , mpl::and_< + detail::boost_tuple_is_empty + , detail::boost_tuple_is_empty + > + > + {}; }; template <> struct boost_tuple_iterator - : iterator_facade, forward_traversal_tag> + : boost_tuple_null_iterator { template explicit boost_tuple_iterator(Cons const&) {} @@ -84,7 +131,7 @@ namespace boost { namespace fusion template <> struct boost_tuple_iterator - : iterator_facade, forward_traversal_tag> + : boost_tuple_null_iterator { template explicit boost_tuple_iterator(Cons const&) {} @@ -92,7 +139,7 @@ namespace boost { namespace fusion template <> struct boost_tuple_iterator > - : iterator_facade >, forward_traversal_tag> + : boost_tuple_null_iterator > { template explicit boost_tuple_iterator(Cons const&) {} @@ -100,7 +147,7 @@ namespace boost { namespace fusion template <> struct boost_tuple_iterator const> - : iterator_facade const>, forward_traversal_tag> + : boost_tuple_null_iterator const> { template explicit boost_tuple_iterator(Cons const&) {} From 63440967092b824fd24d3e09e81118ff8c1b704e Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Fri, 21 Sep 2007 15:44:57 +0000 Subject: [PATCH 222/234] fixing result of related fusion docs issues for fold, accumulate, and transform view/alg [SVN r39448] --- doc/algorithms.qbk | 104 ++++++++++++++++++++++++++------------------- doc/sequences.qbk | 42 ++++++++++-------- 2 files changed, 85 insertions(+), 61 deletions(-) diff --git a/doc/algorithms.qbk b/doc/algorithms.qbk index 43b848ab..44c46073 100644 --- a/doc/algorithms.qbk +++ b/doc/algorithms.qbk @@ -50,7 +50,7 @@ a sequence repeatedly applying an operation to its elements. [section fold] [heading Description] -Repeatedly applies binary __poly_func_obj__ `f` to each element of a sequence and the previous state. +For a sequence `Seq`, initial state, and binary function object or function pointer `f`, fold repeatedly applies binary `f` to each element of `Seq` and the previous state. [heading Synopsis] template< @@ -63,9 +63,9 @@ Repeatedly applies binary __poly_func_obj__ `f` to each element of a sequence an [table Parameters [[Parameter][Requirement][Description]] - [[`seq`][A model of __forward_sequence__,`f(e)` must be a valid expression for each element `e` in `seq`][Operation's argument]] + [[`seq`][A model of __forward_sequence__,`f(e,s)` must be a valid expression for each element `e` in `seq`, and current state `s`][Operation's argument]] [[`initial_state`][Any type][Initial state]] - [[`f`][A model of binary __poly_func_obj__][Operation's argument]] + [[`f`][`__boost_result_of_call__::type` is the return type of `f(e,s)` for each element `e` of type `E` in `seq`, and current state `s` of type `S`][Operation's argument]] ] [heading Expression Semantics] @@ -84,11 +84,7 @@ Linear, exactly `__result_of_size__::value` applications of `f`. [heading Example] struct make_string { - template - struct result - { - typedef std::string type; - }; + typedef std::string result_type; template std::string operator()(const T& t, const std::string& str) const @@ -105,8 +101,7 @@ Linear, exactly `__result_of_size__::value` applications of `f`. [section accumulate] [heading Description] -Repeatedly applies binary __poly_func_obj__ `f` to each element of a sequence and the previous state. -__accumulate__ is equivalent to __fold__. +For a sequence `Seq`, initial state, and binary function object or function pointer `f`, accumulate repeatedly applies binary `f` to each element of `Seq` and the previous state. [heading Synopsis] template< @@ -121,7 +116,7 @@ __accumulate__ is equivalent to __fold__. [[Parameter][Requirement][Description]] [[`seq`][A model of __forward_sequence__, `f(eN ....f(e2,f(e1,initial_state)))` must be a valid expression for each element `e1` to `eN` in `seq`][Operation's argument]] [[`initial_state`][Any type][Initial state]] - [[`f`][A model of binary __poly_func_obj__][Operation's argument]] + [[`f`][`__boost_result_of_call__::type` is the return type of `f(e,s)` for each element `e` of type `E` in `seq`, and current state `s` of type `S`][Operation's argument]] ] [heading Expression Semantics] @@ -140,11 +135,7 @@ Linear, exactly `__result_of_size__::value` applications of `f`. [heading Example] struct make_string { - template - struct result - { - typedef std::string type; - }; + typedef std::string result_type; template std::string operator()(const T& t, const std::string& str) const @@ -229,7 +220,7 @@ Returns the result type of __fold__. [[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`] [A model of binary __poly_func_obj__] [The operation to be applied on forward traversal]] + [[`F`] [`__boost_result_of_call__::type` is the return type of `f(e,s)` for each element `e` of type `E` in `seq`, and current state `s` of type `S`] [The operation to be applied on forward traversal]] ] [heading Expression Semantics] @@ -238,7 +229,7 @@ Returns the result type of __fold__. [*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 __poly_func_obj__ of type `F`. +type `State` and binary function object or function pointer of type `F`. [heading Complexity] Linear, exactly `__result_of_size__::value` applications of `F`. @@ -267,7 +258,7 @@ Returns the result type of __accumulate__. [[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`] [A model of binary __poly_func_obj__] [The operation to be applied on forward traversal]] + [[`F`] [`__boost_result_of_call__::type` is the return type of `f(e,s)` for each element `e` of type `E` in `seq`, and current state `s` of type `S`] [The operation to be applied on forward traversal]] ] [heading Expression Semantics] @@ -276,7 +267,7 @@ Returns the result type of __accumulate__. [*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 __poly_func_obj__ of type `F`. +type `State` and binary function object or function pointer of type `F`. [heading Complexity] Linear, exactly `__result_of_size__::value` applications of `F`. @@ -997,8 +988,8 @@ Constant. Returns a view which is lazily evaluated. [section transform] [heading Description] -For a sequence `seq` and __poly_func_obj__ `F`, `transform` returns a new sequence -with elements created by applying `F` to each element of `seq`. +For a sequence `seq` and function object or function pointer `f`, `transform` returns a new sequence +with elements created by applying `f(e)` to each element of `e` of `seq`. [heading Unary version synopsis] template< @@ -1011,7 +1002,7 @@ with elements created by applying `F` to each element of `seq`. [table Parameters [[Parameter][Requirement][Description]] [[`seq`][A model of __forward_sequence__][Operation's argument]] - [[`f`][A model of unary __poly_func_obj__ where `f(e)` is a valid expression for each element `e` of `seq`][Transformation function]] + [[`f`][`f(e)` is a valid expression for each element `e` of `seq`. `__boost_result_of_call__::type` is the return type of `f` when called with a value of each element type `E`.][Transformation function]] ] [heading Expression Semantics] @@ -1034,7 +1025,7 @@ with elements created by applying `F` to each element of `seq`. [[Parameter][Requirement][Description]] [[`seq1`][A model of __forward_sequence__][Operation's argument]] [[`seq2`][A model of __forward_sequence__][Operation's argument]] - [[`f`][A model of binary __poly_func_obj__ where `f(e1, e2)` is a valid expression for each pair of elements `e1` and `e2` of `seq1` and `seq2` respectively][Transformation function]] + [[`f`][`f(e1,e2)` is a valid expression for each pair of elements `e1` of `seq1` and `e2` of `seq2`. `__boost_result_of_call__::type` is the return type of `f` when called with elements of type `E1` and `E2`][Transformation function]] ] [*Return type]: A model of __forward_sequence__. @@ -1050,14 +1041,9 @@ Constant. Returns a view which is lazily evaluated. [heading Example] struct triple { - template - struct result - { - typedef T type; - }; + typedef int result_type; - template - T operator()(T t) const + int operator()(int t) const { return t * 3; }; @@ -1774,37 +1760,69 @@ Constant. [section transform] [heading Description] -Returns the result of type __transform__, given the sequence and __poly_func_obj__ types. +For a sequence `seq` and function object or function pointer `f`, `transform` returns a new sequence +with elements created by applying `f(e)` to each element of `e` of `seq`. -[heading Synopsis] +[heading Unary version synopsis] template< typename Sequence, typename F > - struct transform - { - typedef __unspecified__ type; - }; + typename __result_of_transform__::type transform( + Sequence const& seq, F f); [table Parameters - [[Parameter] [Requirement] [Description]] - [[`Sequence`] [A model of __forward_sequence__ ][Operation's argument]] - [[`F`] [A model of unary __poly_func_obj__][Transformation function object]] + [[Parameter][Requirement][Description]] + [[`seq`][A model of __forward_sequence__][Operation's argument]] + [[`f`][`f(e)` is a valid expression for each element `e` of `seq`. `__boost_result_of_call__::type` is the return type of `f` when called with a value of each element type `E`.][Transformation function]] ] [heading Expression Semantics] - __result_of_transform__::type + __transform__(seq, f); + +[*Return type]: A model of __forward_sequence__ + +[*Semantics]: Returns a new sequence, containing the return values of `f(e)` for each element `e` within `seq`. + +[heading Binary version synopsis] + template< + typename Sequence1, + typename Sequence2, + typename F + > + typename __result_of_transform__::type transform( + Sequence1 const& seq1, Sequence2 const& seq2, F f); + +[table Parameters + [[Parameter][Requirement][Description]] + [[`seq1`][A model of __forward_sequence__][Operation's argument]] + [[`seq2`][A model of __forward_sequence__][Operation's argument]] + [[`f`][`f(e1,e2)` is a valid expression for each pair of elements `e1` of `seq1` and `e2` of `seq2`. `__boost_result_of_call__::type` is the return type of `f` when called with elements of type `E1` and `E2`][Transformation function]] +] [*Return type]: A model of __forward_sequence__. -[*Semantics]: Returns a sequence with values `F::result::type` for each element type `E` in `Sequence`. +[*Semantics]: Returns a new sequence, containing the return values of `f(e1, e2)` for each pair of elements `e1` and `e2` within `seq1` and `seq2` respectively. [heading Complexity] -Constant. +Constant. Returns a view which is lazily evaluated. [heading Header] #include +[heading Example] + struct triple + { + typedef int result_type; + + int operator()(int t) const + { + return t * 3; + }; + }; + ... + assert(__transform__(__make_vector__(1,2,3), triple()) == __make_vector__(3,6,9)); + [endsect] [section replace] diff --git a/doc/sequences.qbk b/doc/sequences.qbk index b8dea5a4..ae1ce0ea 100644 --- a/doc/sequences.qbk +++ b/doc/sequences.qbk @@ -1086,10 +1086,12 @@ defined in __forward_sequence__. [section transform_view] -`transform_view` presents a transformed view of its underlying sequence -given a unary __poly_func_obj__. The `transform_view` inherits the -traversal characteristics (see __traversal_concept__) of its underlying -sequence. +The unary version of `transform_view` presents a view of its underlying +sequence given a unary function object or function pointer. The binary +version of `transform_view` presents a view of 2 underlying sequences, +given a binary function object or function pointer. The `transform_view` +inherits the traversal characteristics (see __traversal_concept__) of +its underlying sequence or sequences. [heading Header] @@ -1099,12 +1101,12 @@ sequence. [*Unary Version] - template + template struct transform_view; [*Binary Version] - template + template struct transform_view; [heading Template parameters] @@ -1114,7 +1116,8 @@ sequence. [[`Sequence`] [A __forward_sequence__] []] [[`Sequence1`] [A __forward_sequence__] []] [[`Sequence2`] [A __forward_sequence__] []] - [[`F`] [A __poly_func_obj__] []] + [[`F1`] [A unary function object or function pointer. `__boost_result_of_call__::type` is the return type of an instance of `F1` when called with a value of each element type `E` in the input sequence.] []] + [[`F2`] [A binary function object or function pointer. `__boost_result_of_call__::type` is the return type of an instance of `F2` when called with a value of each corresponding pair of element type `E1` and `E2` in the input sequences.] []] ] [heading Model of] @@ -1127,7 +1130,8 @@ __traversal_concept__) of its underlying sequence. [[`TV`] [A `transform_view` type]] [[`BTV`] [A binary `transform_view` type]] [[`UTV`] [A unary `transform_view` type]] - [[`f`] [An instance of `F`]] + [[`f1`] [An instance of `F1`]] + [[`f2`] [An instance of `F2`]] [[`s`] [An instance of `Sequence`]] [[`s1`] [An instance of `Sequence1`]] [[`s2`] [An instance of `Sequence2`]] @@ -1139,14 +1143,14 @@ __traversal_concept__) of its underlying sequence. Semantics of an expression is defined only where it differs from, or is not defined in __forward_sequence__, __bidirectional_sequence__ or __random_access_sequence__ depending on the traversal characteristics (see -__traversal_concept__) of its underlying sequence. +__traversal_concept__) of its underlying sequence or sequences. [table [[Expression] [Semantics]] - [[`UTV(s, f)`] [Creates a unary `transform_view` given sequence, - `s` and unary __poly_func_obj__, `f`.]] - [[`BTV(s1, s2, f)`] [Creates a binary `transform_view` given sequences, `s1` and `s2` - and unary __poly_func_obj__, `f`.]] + [[`UTV(s, f1)`] [Creates a unary `transform_view` given sequence, + `s` and unary function object or function pointer, `f1`.]] + [[`BTV(s1, s2, f2)`] [Creates a binary `transform_view` given sequences, `s1` and `s2` + and binary function object or function pointer, `f2`.]] [[`TV(tv)`] [Copy constructs a `transform_view` from another `transform_view`, `tv`.]] [[`tv = tv2`] [Assigns to a `transform_view`, `tv`, from another `transform_view`, `tv2`.]] ] @@ -1155,11 +1159,13 @@ __traversal_concept__) of its underlying sequence. struct square { - template - struct result - { - typedef T type; - }; + template + struct result; + + template + struct result + : remove_reference + {}; template T operator()(T x) const From 1f2087092fe1da6aa4cddf8c6b3d4e99b54d6235 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Sat, 22 Sep 2007 01:05:29 +0000 Subject: [PATCH 223/234] Doc updates [SVN r39468] --- doc/html/fusion/acknowledgements.html | 10 +- doc/html/fusion/algorithms.html | 38 ++-- doc/html/fusion/algorithms/iteration.html | 12 +- .../algorithms/iteration/functions.html | 10 +- .../iteration/functions/accumulate.html | 74 +++--- .../algorithms/iteration/functions/fold.html | 72 +++--- .../iteration/functions/for_each.html | 52 ++--- .../algorithms/iteration/metafunctions.html | 10 +- .../iteration/metafunctions/accumulate.html | 56 +++-- .../iteration/metafunctions/fold.html | 56 +++-- .../iteration/metafunctions/for_each.html | 44 ++-- doc/html/fusion/algorithms/query.html | 12 +- .../fusion/algorithms/query/functions.html | 10 +- .../algorithms/query/functions/all.html | 64 +++--- .../algorithms/query/functions/any.html | 64 +++--- .../algorithms/query/functions/count.html | 54 ++--- .../algorithms/query/functions/count_if.html | 52 ++--- .../algorithms/query/functions/find.html | 50 ++--- .../algorithms/query/functions/find_if.html | 52 ++--- .../algorithms/query/functions/none.html | 64 +++--- .../algorithms/query/metafunctions.html | 10 +- .../algorithms/query/metafunctions/all.html | 42 ++-- .../algorithms/query/metafunctions/any.html | 42 ++-- .../algorithms/query/metafunctions/count.html | 38 ++-- .../query/metafunctions/count_if.html | 38 ++-- .../algorithms/query/metafunctions/find.html | 42 ++-- .../query/metafunctions/find_if.html | 44 ++-- .../algorithms/query/metafunctions/none.html | 42 ++-- .../fusion/algorithms/transformation.html | 30 +-- .../algorithms/transformation/functions.html | 10 +- .../transformation/functions/clear.html | 38 ++-- .../transformation/functions/erase.html | 66 +++--- .../transformation/functions/erase_key.html | 42 ++-- .../transformation/functions/filter.html | 46 ++-- .../transformation/functions/filter_if.html | 50 ++--- .../transformation/functions/insert.html | 46 ++-- .../functions/insert_range.html | 48 ++-- .../transformation/functions/join.html | 46 ++-- .../transformation/functions/pop_back.html | 40 ++-- .../transformation/functions/pop_front.html | 40 ++-- .../transformation/functions/push_back.html | 44 ++-- .../transformation/functions/push_front.html | 44 ++-- .../transformation/functions/remove.html | 46 ++-- .../transformation/functions/remove_if.html | 48 ++-- .../transformation/functions/replace.html | 56 ++--- .../transformation/functions/replace_if.html | 56 ++--- .../transformation/functions/reverse.html | 38 ++-- .../transformation/functions/transform.html | 101 ++++----- .../transformation/functions/zip.html | 54 ++--- .../transformation/metafunctions.html | 10 +- .../transformation/metafunctions/clear.html | 32 +-- .../transformation/metafunctions/erase.html | 48 ++-- .../metafunctions/erase_key.html | 38 ++-- .../transformation/metafunctions/filter.html | 42 ++-- .../metafunctions/filter_if.html | 40 ++-- .../transformation/metafunctions/insert.html | 42 ++-- .../metafunctions/insert_range.html | 42 ++-- .../transformation/metafunctions/join.html | 30 +-- .../metafunctions/pop_back.html | 34 +-- .../metafunctions/pop_front.html | 34 +-- .../metafunctions/push_back.html | 38 ++-- .../metafunctions/push_front.html | 38 ++-- .../transformation/metafunctions/remove.html | 42 ++-- .../metafunctions/remove_if.html | 42 ++-- .../transformation/metafunctions/replace.html | 36 +-- .../metafunctions/replace_if.html | 38 ++-- .../transformation/metafunctions/reverse.html | 34 +-- .../metafunctions/transform.html | 195 +++++++++++++--- .../transformation/metafunctions/zip.html | 42 ++-- doc/html/fusion/change_log.html | 14 +- doc/html/fusion/extension.html | 190 ++++++++-------- doc/html/fusion/functional.html | 32 +-- doc/html/fusion/functional/adapters.html | 10 +- .../fusion/functional/adapters/fused.html | 100 ++++----- .../adapters/fused_function_object.html | 100 ++++----- .../functional/adapters/fused_procedure.html | 106 ++++----- .../functional/adapters/unfused_generic.html | 100 ++++----- .../adapters/unfused_lvalue_args.html | 96 ++++---- .../adapters/unfused_rvalue_args.html | 98 ++++---- .../functional/adapters/unfused_typed.html | 114 +++++----- doc/html/fusion/functional/concepts.html | 10 +- .../fusion/functional/concepts/callable.html | 14 +- .../functional/concepts/def_callable.html | 75 +++---- doc/html/fusion/functional/concepts/poly.html | 79 ++++--- .../functional/concepts/reg_callable.html | 141 ++++++++++++ doc/html/fusion/functional/generation.html | 10 +- .../functional/generation/functions.html | 10 +- .../generation/functions/mk_fused.html | 50 ++--- .../generation/functions/mk_fused_fobj.html | 50 ++--- .../generation/functions/mk_fused_proc.html | 46 ++-- .../functions/mk_unfused_genrc.html | 42 ++-- .../functions/mk_unfused_lvargs.html | 44 ++-- .../functions/mk_unfused_rvargs.html | 42 ++-- .../functional/generation/metafunctions.html | 10 +- .../generation/metafunctions/mk_fused.html | 22 +- .../metafunctions/mk_fused_fobj.html | 22 +- .../metafunctions/mk_fused_proc.html | 22 +- .../metafunctions/mk_unfused_genrc.html | 22 +- .../metafunctions/mk_unfused_lvargs.html | 22 +- .../metafunctions/mk_unfused_rvargs.html | 22 +- doc/html/fusion/functional/invocation.html | 10 +- .../functional/invocation/functions.html | 10 +- .../invocation/functions/invoke.html | 58 ++--- .../invocation/functions/invoke_fobj.html | 50 ++--- .../invocation/functions/invoke_proc.html | 54 ++--- .../functional/invocation/metafunctions.html | 10 +- .../invocation/metafunctions/invoke.html | 22 +- .../invocation/metafunctions/invoke_fobj.html | 22 +- .../invocation/metafunctions/invoke_proc.html | 22 +- doc/html/fusion/introduction.html | 42 ++-- doc/html/fusion/iterators.html | 12 +- doc/html/fusion/iterators/concepts.html | 10 +- .../concepts/bidirectional_iterator.html | 92 ++++---- .../iterators/concepts/forward_iterator.html | 188 ++++++++-------- .../concepts/random_access_iterator.html | 88 ++++---- doc/html/fusion/iterators/functions.html | 10 +- .../fusion/iterators/functions/advance.html | 46 ++-- .../fusion/iterators/functions/advance_c.html | 46 ++-- .../fusion/iterators/functions/deref.html | 42 ++-- .../fusion/iterators/functions/distance.html | 38 ++-- doc/html/fusion/iterators/functions/next.html | 42 ++-- .../fusion/iterators/functions/prior.html | 42 ++-- doc/html/fusion/iterators/metafunctions.html | 10 +- .../iterators/metafunctions/advance.html | 50 ++--- .../iterators/metafunctions/advance_c.html | 52 ++--- .../fusion/iterators/metafunctions/deref.html | 46 ++-- .../iterators/metafunctions/distance.html | 44 ++-- .../iterators/metafunctions/equal_to.html | 48 ++-- .../fusion/iterators/metafunctions/next.html | 40 ++-- .../fusion/iterators/metafunctions/prior.html | 44 ++-- .../iterators/metafunctions/value_of.html | 46 ++-- doc/html/fusion/iterators/operators.html | 10 +- .../operators/operator_equality.html | 30 +-- .../operators/operator_inequality.html | 30 +-- .../operators/operator_unary_star.html | 40 ++-- doc/html/fusion/notes.html | 112 ++++----- doc/html/fusion/organization.html | 30 +-- doc/html/fusion/preface.html | 22 +- doc/html/fusion/quick_start.html | 130 +++++------ doc/html/fusion/references.html | 10 +- doc/html/fusion/sequences.html | 12 +- doc/html/fusion/sequences/adapted.html | 20 +- .../sequences/adapted/boost__array.html | 32 +-- .../sequences/adapted/boost__tuple.html | 22 +- .../sequences/adapted/boost__variant.html | 22 +- .../sequences/adapted/mpl_sequence.html | 26 +-- .../fusion/sequences/adapted/std__pair.html | 32 +-- doc/html/fusion/sequences/concepts.html | 14 +- .../concepts/associative_sequence.html | 118 +++++----- .../concepts/bidirectional_sequence.html | 94 ++++---- .../sequences/concepts/forward_sequence.html | 152 ++++++------- .../concepts/random_access_sequence.html | 118 +++++----- doc/html/fusion/sequences/containers.html | 12 +- .../fusion/sequences/containers/cons.html | 146 ++++++------ .../fusion/sequences/containers/list.html | 122 +++++----- doc/html/fusion/sequences/containers/map.html | 106 ++++----- doc/html/fusion/sequences/containers/set.html | 96 ++++---- .../fusion/sequences/containers/vector.html | 104 ++++----- doc/html/fusion/sequences/conversion.html | 12 +- .../sequences/conversion/functions.html | 10 +- .../conversion/functions/as_list.html | 34 +-- .../conversion/functions/as_map.html | 42 ++-- .../conversion/functions/as_set.html | 36 +-- .../conversion/functions/as_vector.html | 34 +-- .../sequences/conversion/metafunctions.html | 10 +- .../conversion/metafunctions/as_list.html | 36 +-- .../conversion/metafunctions/as_map.html | 44 ++-- .../conversion/metafunctions/as_set.html | 38 ++-- .../conversion/metafunctions/as_vector.html | 36 +-- doc/html/fusion/sequences/generation.html | 12 +- .../sequences/generation/functions.html | 10 +- .../generation/functions/list_tie.html | 48 ++-- .../generation/functions/make_cons.html | 48 ++-- .../generation/functions/make_list.html | 52 ++--- .../generation/functions/make_map.html | 78 +++---- .../generation/functions/make_set.html | 62 ++--- .../generation/functions/make_vector.html | 52 ++--- .../generation/functions/map_tie.html | 170 ++++++++++++++ .../sequences/generation/functions/tiers.html | 38 ++-- .../generation/functions/vector_tie.html | 48 ++-- .../sequences/generation/metafunctions.html | 10 +- .../generation/metafunctions/list_tie.html | 44 ++-- .../generation/metafunctions/make_cons.html | 38 ++-- .../generation/metafunctions/make_list.html | 44 ++-- .../generation/metafunctions/make_map.html | 64 +++--- .../generation/metafunctions/make_set.html | 54 ++--- .../generation/metafunctions/make_vector.html | 44 ++-- .../generation/metafunctions/map_tie.html | 166 ++++++++++++++ .../generation/metafunctions/vector_tie.html | 44 ++-- doc/html/fusion/sequences/intrinsics.html | 16 +- .../sequences/intrinsics/functions.html | 10 +- .../sequences/intrinsics/functions/at.html | 50 ++--- .../sequences/intrinsics/functions/at_c.html | 50 ++--- .../intrinsics/functions/at_key.html | 46 ++-- .../sequences/intrinsics/functions/back.html | 44 ++-- .../sequences/intrinsics/functions/begin.html | 42 ++-- .../sequences/intrinsics/functions/empty.html | 40 ++-- .../sequences/intrinsics/functions/end.html | 42 ++-- .../sequences/intrinsics/functions/front.html | 44 ++-- .../intrinsics/functions/has_key.html | 42 ++-- .../sequences/intrinsics/functions/size.html | 34 +-- .../sequences/intrinsics/functions/swap.html | 135 +++++++++++ .../sequences/intrinsics/metafunctions.html | 10 +- .../intrinsics/metafunctions/at.html | 50 ++--- .../intrinsics/metafunctions/at_c.html | 50 ++--- .../intrinsics/metafunctions/at_key.html | 54 ++--- .../intrinsics/metafunctions/back.html | 36 +-- .../intrinsics/metafunctions/begin.html | 40 ++-- .../intrinsics/metafunctions/empty.html | 42 ++-- .../intrinsics/metafunctions/end.html | 40 ++-- .../intrinsics/metafunctions/front.html | 38 ++-- .../intrinsics/metafunctions/has_key.html | 44 ++-- .../intrinsics/metafunctions/size.html | 36 +-- .../intrinsics/metafunctions/swap.html | 124 ++++++++++ .../intrinsics/metafunctions/value_at.html | 36 +-- .../intrinsics/metafunctions/value_at_c.html | 36 +-- .../metafunctions/value_at_key.html | 38 ++-- doc/html/fusion/sequences/operators.html | 10 +- .../sequences/operators/comparison.html | 20 +- .../sequences/operators/comparison/equal.html | 52 ++--- .../operators/comparison/greater_than.html | 44 ++-- .../comparison/greater_than_equal.html | 44 ++-- .../operators/comparison/less_than.html | 48 ++-- .../operators/comparison/less_than_equal.html | 44 ++-- .../operators/comparison/not_equal.html | 42 ++-- doc/html/fusion/sequences/operators/i_o.html | 70 +++--- .../fusion/sequences/operators/i_o/in.html | 32 +-- .../fusion/sequences/operators/i_o/out.html | 32 +-- doc/html/fusion/sequences/views.html | 12 +- .../fusion/sequences/views/filter_view.html | 90 ++++---- .../sequences/views/iterator_range.html | 104 ++++----- .../fusion/sequences/views/joint_view.html | 100 ++++----- .../fusion/sequences/views/reverse_view.html | 80 +++---- .../fusion/sequences/views/single_view.html | 76 +++---- .../sequences/views/transform_view.html | 212 ++++++++++-------- doc/html/fusion/sequences/views/zip_view.html | 84 +++---- doc/html/fusion/support.html | 10 +- doc/html/fusion/support/category_of.html | 32 +-- doc/html/fusion/support/deduce.html | 28 +-- doc/html/fusion/support/deduce_sequence.html | 26 +-- doc/html/fusion/support/is_sequence.html | 46 ++-- doc/html/fusion/support/is_view.html | 44 ++-- doc/html/fusion/support/pair.html | 138 ++++++------ doc/html/fusion/support/tag_of.html | 38 ++-- doc/html/fusion/tuples.html | 14 +- .../fusion/tuples/class_template_tuple.html | 16 +- .../class_template_tuple/construction.html | 87 +++---- .../class_template_tuple/element_access.html | 48 ++-- .../relational_operators.html | 163 +++++++------- .../tuple_creation_functions.html | 34 +-- .../tuple_helper_classes.html | 38 ++-- doc/html/fusion/tuples/pairs.html | 52 ++--- doc/html/index.html | 14 +- 253 files changed, 6680 insertions(+), 5824 deletions(-) create mode 100644 doc/html/fusion/functional/concepts/reg_callable.html create mode 100644 doc/html/fusion/sequences/generation/functions/map_tie.html create mode 100644 doc/html/fusion/sequences/generation/metafunctions/map_tie.html create mode 100644 doc/html/fusion/sequences/intrinsics/functions/swap.html create mode 100644 doc/html/fusion/sequences/intrinsics/metafunctions/swap.html diff --git a/doc/html/fusion/acknowledgements.html b/doc/html/fusion/acknowledgements.html index f18b0fdb..b889a16a 100644 --- a/doc/html/fusion/acknowledgements.html +++ b/doc/html/fusion/acknowledgements.html @@ -3,24 +3,24 @@ Acknowledgements - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -47,7 +47,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms.html b/doc/html/fusion/algorithms.html index fdfdb81a..5812bdf6 100644 --- a/doc/html/fusion/algorithms.html +++ b/doc/html/fusion/algorithms.html @@ -3,7 +3,7 @@ Algorithms - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -44,7 +44,7 @@

    - + Lazy Evaluation

    @@ -58,39 +58,39 @@ fusion algorithms are functional in nature such that algorithms are non mutating (no side effects). However, due to the high cost of returning full sequences such as vectors and lists, Views are returned from Fusion - algorithms instead. For example, the transform algorithm does not actually - return a transformed version of the original sequence. transform returns a transform_view. This view holds a + algorithms instead. For example, the transform algorithm does not actually + return a transformed version of the original sequence. transform returns a transform_view. This view holds a reference to the original sequence plus the transform function. Iteration over - the transform_view + the transform_view will apply the transform function over the sequence elements on demand. This lazy evaluation scheme allows us to chain as many algorithms as we want without incurring a high runtime penalty.

    - + Sequence Extension

    The lazy evaluation scheme where Algorithms return Views also allows operations - such as push_back to be totally generic. In - Fusion, push_back is actually a generic algorithm - that works on all sequences. Given an input sequence s - and a value x, Fusion's push_back algorithm simply returns - a joint_view: - a view that holds a reference to the original sequence s - and the value x. Functions + such as push_back to be totally generic. In + Fusion, push_back is actually a generic algorithm + that works on all sequences. Given an input sequence s + and a value x, Fusion's push_back 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 + 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 functions to convert back to the original sequence type.

    - + Header

    @@ -104,7 +104,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/iteration.html b/doc/html/fusion/algorithms/iteration.html index 49fd6ae5..2183865c 100644 --- a/doc/html/fusion/algorithms/iteration.html +++ b/doc/html/fusion/algorithms/iteration.html @@ -3,24 +3,24 @@ Iteration - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -34,7 +34,7 @@ a sequence repeatedly applying an operation to its elements.

    - + Header

    @@ -48,7 +48,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/iteration/functions.html b/doc/html/fusion/algorithms/iteration/functions.html index e5767835..2efb8e1e 100644 --- a/doc/html/fusion/algorithms/iteration/functions.html +++ b/doc/html/fusion/algorithms/iteration/functions.html @@ -3,24 +3,24 @@ Functions - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -38,7 +38,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/iteration/functions/accumulate.html b/doc/html/fusion/algorithms/iteration/functions/accumulate.html index 960351da..424e78e1 100644 --- a/doc/html/fusion/algorithms/iteration/functions/accumulate.html +++ b/doc/html/fusion/algorithms/iteration/functions/accumulate.html @@ -3,41 +3,41 @@ accumulate - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Repeatedly applies binary Polymorphic - Function Object f - to each element of a sequence and the previous state. accumulate is equivalent to - fold. + For a sequence Seq, initial + state, and binary function object or function pointer f, + accumulate repeatedly applies binary f + to each element of Seq + and the previous state.

    - + Synopsis
    @@ -46,11 +46,11 @@
         typename State,
         typename F
         >
    -typename result_of::accumulate<Sequence, State, F>::type accumulate(
    +typename result_of::accumulate<Sequence, State, F>::type accumulate(
         Sequence& seq, State const& initial_state, F const& f);
     
    -

    Table 1.34. Parameters

    +

    Table 1.34. Parameters

    @@ -78,17 +78,17 @@

    - seq + seq

    A model of Forward - Sequence, f(eN - ....f(e2,f(e1,initial_state))) must be a valid expression for - each element e1 - to eN in seq + Sequence, f(eN + ....f(e2,f(e1,initial_state))) must be a valid expression for + each element e1 + to eN in seq

    @@ -100,7 +100,7 @@

    - initial_state + initial_state

    @@ -117,14 +117,14 @@

    - f + f

    - A model of binary Polymorphic - Function Object + boost::result_of<F(E,S)>::type is the return type of f(e,s) + for each element e + of type E in seq, and current state s of type S

    @@ -137,7 +137,7 @@
    - + Expression Semantics
    @@ -145,38 +145,34 @@ accumulate(seq, initial_state, f);

    - Return type: Any type + Return type: Any type

    - Semantics: Equivalent to f(eN ....f(e2,f(e1,initial_state))) - where e1 ...eN are the elements of seq. + Semantics: Equivalent to f(eN ....f(e2,f(e1,initial_state))) + where e1 ...eN are the elements of seq.

    - + Complexity

    - Linear, exactly result_of::size<Sequence>::value applications of f. + Linear, exactly result_of::size<Sequence>::value applications of f.

    - + Header
     #include <boost/fusion/algorithm/iteration/accumulate.hpp>
     
    - + Example
     struct make_string
     {
    -    template<typename T, typename State>
    -    struct result
    -    {
    -        typedef std::string type;
    -    };
    +    typedef std::string result_type;
     
         template<typename T>
         std::string operator()(const T& t, const std::string& str) const
    @@ -185,8 +181,8 @@
         }
     };
     ...
    -const vector<int,int> vec(1,2);
    -assert(accumulate(vec,std::string(""), make_string()) == "12");
    +const vector<int,int> vec(1,2);
    +assert(accumulate(vec,std::string(""), make_string()) == "12");
     
    @@ -196,7 +192,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/iteration/functions/fold.html b/doc/html/fusion/algorithms/iteration/functions/fold.html index a682962e..e1e2f911 100644 --- a/doc/html/fusion/algorithms/iteration/functions/fold.html +++ b/doc/html/fusion/algorithms/iteration/functions/fold.html @@ -3,40 +3,41 @@ fold - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Repeatedly applies binary Polymorphic - Function Object f - to each element of a sequence and the previous state. + For a sequence Seq, initial + state, and binary function object or function pointer f, + fold repeatedly applies binary f + to each element of Seq + and the previous state.

    - + Synopsis
    @@ -45,11 +46,11 @@
         typename State,
         typename F
         >
    -typename result_of::fold<Sequence, State, F>::type fold(
    +typename result_of::fold<Sequence, State, F>::type fold(
         Sequence& seq, State const& initial_state, F const& f);
     
    -

    Table 1.33. Parameters

    +

    Table 1.33. Parameters

    @@ -77,16 +78,17 @@

    - seq + seq

    A model of Forward - Sequence,f(e) must be a valid expression for - each element e - in seq + Sequence,f(e,s) must be a valid expression for + each element e + in seq, and current + state s

    @@ -98,7 +100,7 @@

    - initial_state + initial_state

    @@ -115,14 +117,14 @@

    - f + f

    - A model of binary Polymorphic - Function Object + boost::result_of<F(E,S)>::type is the return type of f(e,s) + for each element e + of type E in seq, and current state s of type S

    @@ -135,7 +137,7 @@
    - + Expression Semantics
    @@ -143,38 +145,34 @@ fold(seq, initial_state, f);

    - Return type: Any type + Return type: Any type

    - Semantics: Equivalent to f(eN ....f(e2,f(e1,initial_state))) - where e1 ...eN are the elements of seq. + Semantics: Equivalent to f(eN ....f(e2,f(e1,initial_state))) + where e1 ...eN are the elements of seq.

    - + Complexity

    - Linear, exactly result_of::size<Sequence>::value applications of f. + Linear, exactly result_of::size<Sequence>::value applications of f.

    - + Header
     #include <boost/fusion/algorithm/iteration/fold.hpp>
     
    - + Example
     struct make_string
     {
    -    template<typename T, typename State>
    -    struct result
    -    {
    -        typedef std::string type;
    -    };
    +    typedef std::string result_type;
     
         template<typename T>
         std::string operator()(const T& t, const std::string& str) const
    @@ -183,8 +181,8 @@
         }
     };
     ...
    -const vector<int,int> vec(1,2);
    -assert(fold(vec,std::string(""), make_string()) == "12");
    +const vector<int,int> vec(1,2);
    +assert(fold(vec,std::string(""), make_string()) == "12");
     
    @@ -194,7 +192,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/iteration/functions/for_each.html b/doc/html/fusion/algorithms/iteration/functions/for_each.html index 75854a61..013ff685 100644 --- a/doc/html/fusion/algorithms/iteration/functions/for_each.html +++ b/doc/html/fusion/algorithms/iteration/functions/for_each.html @@ -3,37 +3,37 @@ for_each - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    Applies a unary function object to each element of a sequence.

    - + Synopsis
    @@ -41,11 +41,11 @@
         typename Sequence,
         typename F
         >
    -typename result_of::for_each<Sequence, F>::type for_each(
    +typename result_of::for_each<Sequence, F>::type for_each(
         Sequence& seq, F const& f);
     
    -

    Table 1.35. Parameters

    +

    Table 1.35. Parameters

    @@ -73,16 +73,16 @@

    - seq + seq

    A model of Forward - Sequence, f(e) must be a valid expression for - each element e - in seq + Sequence, f(e) must be a valid expression for + each element e + in seq

    @@ -94,7 +94,7 @@

    - f + f

    @@ -114,36 +114,36 @@
    - + Expression Semantics
    -for_each(seq, f);
    +for_each(seq, f);
     

    - Return type: void + Return type: void

    - Semantics: Calls f(e) for each element e - in seq. + Semantics: Calls f(e) for each element e + in seq.

    - + Complexity

    - Linear, exactly result_of::size<Sequence>::value applications of f. + Linear, exactly result_of::size<Sequence>::value applications of f.

    - + Header
     #include <boost/fusion/algorithm/iteration/for_each.hpp>
     
    - + Example
    @@ -156,9 +156,9 @@
         }
     };
     ...
    -vector<int,int> vec(1,2);
    -for_each(vec, increment());
    -assert(vec == make_vector(2,3));
    +vector<int,int> vec(1,2);
    +for_each(vec, increment());
    +assert(vec == make_vector(2,3));
     
    @@ -168,7 +168,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/iteration/metafunctions.html b/doc/html/fusion/algorithms/iteration/metafunctions.html index 47683514..fd27f8a8 100644 --- a/doc/html/fusion/algorithms/iteration/metafunctions.html +++ b/doc/html/fusion/algorithms/iteration/metafunctions.html @@ -3,24 +3,24 @@ Metafunctions - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -38,7 +38,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html b/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html index 02d9802b..b3a5db47 100644 --- a/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html +++ b/doc/html/fusion/algorithms/iteration/metafunctions/accumulate.html @@ -3,37 +3,37 @@ accumulate - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Returns the result type of accumulate. + Returns the result type of accumulate.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.37. Parameters

    +

    Table 1.37. Parameters

    @@ -75,7 +75,7 @@

    - Sequence + Sequence

    @@ -94,7 +94,7 @@

    - State + State

    @@ -104,21 +104,21 @@

    - The initial state for the first application of F + The initial state for the first application of F

    - F + F

    - A model of binary Polymorphic - Function Object + boost::result_of<F(E,S)>::type is the return type of f(e,s) + for each element e + of type E in seq, and current state s of type S

    @@ -131,34 +131,32 @@
    - + Expression Semantics
    -result_of::accumulate<Sequence, State, F>::type
    +result_of::accumulate<Sequence, State, F>::type
     

    - Return type: Any 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 Polymorphic - Function Object of type F. + 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. + Linear, exactly result_of::size<Sequence>::value applications of F.

    - + Header
    @@ -172,7 +170,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/fold.html b/doc/html/fusion/algorithms/iteration/metafunctions/fold.html index 23daef97..a319ac39 100644 --- a/doc/html/fusion/algorithms/iteration/metafunctions/fold.html +++ b/doc/html/fusion/algorithms/iteration/metafunctions/fold.html @@ -3,37 +3,37 @@ fold - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Returns the result type of fold. + Returns the result type of fold.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.36. Parameters

    +

    Table 1.36. Parameters

    @@ -75,7 +75,7 @@

    - Sequence + Sequence

    @@ -94,7 +94,7 @@

    - State + State

    @@ -104,21 +104,21 @@

    - The initial state for the first application of F + The initial state for the first application of F

    - F + F

    - A model of binary Polymorphic - Function Object + boost::result_of<F(E,S)>::type is the return type of f(e,s) + for each element e + of type E in seq, and current state s of type S

    @@ -131,34 +131,32 @@
    - + Expression Semantics
    -result_of::fold<Sequence, State, F>::type
    +result_of::fold<Sequence, State, F>::type
     

    - Return type: Any 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 Polymorphic - Function Object of type F. + 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. + Linear, exactly result_of::size<Sequence>::value applications of F.

    - + Header
    @@ -172,7 +170,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html b/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html index a6d600c2..09b24b77 100644 --- a/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html +++ b/doc/html/fusion/algorithms/iteration/metafunctions/for_each.html @@ -3,38 +3,38 @@ for_each - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    - A metafunction returning the result type of applying for_each to a sequence. The - return type of for_each is always void. + A metafunction returning the result type of applying for_each to a sequence. The + return type of for_each is always void.

    - + Description
    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.38. Parameters

    +

    Table 1.38. Parameters

    @@ -76,7 +76,7 @@

    - Sequence + Sequence

    @@ -95,7 +95,7 @@

    - F + F

    @@ -113,32 +113,32 @@
    - + Expression Semantics
    -result_of::for_each<Sequence, F>::type
    +result_of::for_each<Sequence, F>::type
     

    - Return type: void. + Return type: void.

    - Semantics: Returns the return type of - for_each for a sequence of type - Sequence and a unary - function object F. The - return type is always void. + Semantics: Returns the return type of + for_each for a sequence of type + Sequence and a unary + function object F. The + return type is always void.

    - + Complexity

    Constant.

    - + Header
    @@ -152,7 +152,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/query.html b/doc/html/fusion/algorithms/query.html index e55d91d0..41aea719 100644 --- a/doc/html/fusion/algorithms/query.html +++ b/doc/html/fusion/algorithms/query.html @@ -3,24 +3,24 @@ Query - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -33,7 +33,7 @@ The query algorithms provide support for searching and analyzing sequences.

    - + Header

    @@ -47,7 +47,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/query/functions.html b/doc/html/fusion/algorithms/query/functions.html index b47227f9..b09e34a4 100644 --- a/doc/html/fusion/algorithms/query/functions.html +++ b/doc/html/fusion/algorithms/query/functions.html @@ -3,24 +3,24 @@ Functions - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -42,7 +42,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/query/functions/all.html b/doc/html/fusion/algorithms/query/functions/all.html index fa6ceda0..52dbfb06 100644 --- a/doc/html/fusion/algorithms/query/functions/all.html +++ b/doc/html/fusion/algorithms/query/functions/all.html @@ -3,41 +3,41 @@ all - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - For a sequence seq and - unary function object f, - all returns true if - f returns true for every - element of seq. + For a sequence seq and + unary function object f, + all returns true if + f returns true for every + element of seq.

    - + Synopsis
    @@ -45,11 +45,11 @@
         typename Sequence,
         typename F
         >
    -typename result_of::all<Sequence,F>::type all(
    +typename result_of::all<Sequence,F>::type all(
         Sequence const& seq, F f);
     
    -

    Table 1.40. Parameters

    +

    Table 1.40. Parameters

    @@ -77,16 +77,16 @@

    - seq + seq

    A model of Forward - Sequence, f(e) is a valid expression, convertible - to bool, for every - element e in seq + Sequence, f(e) is a valid expression, convertible + to bool, for every + element e in seq

    @@ -98,7 +98,7 @@

    - f + f

    @@ -116,38 +116,38 @@
    - + Expression Semantics
    -all(seq, f);
    +all(seq, f);
     

    - Return type: bool + Return type: bool

    - Semantics: Returns true if and only - if f(e) - evaluates to true for every - element e in seq. + Semantics: Returns true if and only + if f(e) + evaluates to true for every + element e in seq.

    - + Complexity

    - Linear. At most result_of::size<Sequence>::value comparisons. + Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
     #include <boost/fusion/algorithm/query/all.hpp>
     
    - + Example
    @@ -160,8 +160,8 @@
         }
     };
     ...
    -assert(all(make_vector(1,3), odd()));
    -assert(!all(make_vector(1,2), odd()));
    +assert(all(make_vector(1,3), odd()));
    +assert(!all(make_vector(1,2), odd()));
     
    @@ -171,7 +171,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/query/functions/any.html b/doc/html/fusion/algorithms/query/functions/any.html index b7d148d3..4ab9512a 100644 --- a/doc/html/fusion/algorithms/query/functions/any.html +++ b/doc/html/fusion/algorithms/query/functions/any.html @@ -3,41 +3,41 @@ any - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - For a sequence seq and - unary function object f, - any returns true if - f returns true for at - least one element of seq. + For a sequence seq and + unary function object f, + any returns true if + f returns true for at + least one element of seq.

    - + Synopsis
    @@ -45,11 +45,11 @@
         typename Sequence,
         typename F
         >
    -typename result_of::any<Sequence,F>::type any(
    +typename result_of::any<Sequence,F>::type any(
         Sequence const& seq, F f);
     
    -

    Table 1.39. Parameters

    +

    Table 1.39. Parameters

    @@ -77,16 +77,16 @@

    - seq + seq

    A model of Forward - Sequence, f(e) must be a valid expression, convertible - to bool, for each - element e in seq + Sequence, f(e) must be a valid expression, convertible + to bool, for each + element e in seq

    @@ -98,7 +98,7 @@

    - f + f

    @@ -116,38 +116,38 @@
    - + Expression semantics
    -any(seq, f);
    +any(seq, f);
     

    - Return type: bool + Return type: bool

    - Semantics: Returns true if and only - if f(e) - evaluates to true for some - element e in seq. + Semantics: Returns true if and only + if f(e) + evaluates to true for some + element e in seq.

    - + Complexity

    - Linear. At most result_of::size<Sequence>::value comparisons. + Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
     #include <boost/fusion/algorithm/query/any.hpp>
     
    - + Example
    @@ -160,8 +160,8 @@
         }
     };
     ...
    -assert(any(make_vector(1,2), odd()));
    -assert(!any(make_vector(2,4), odd()));
    +assert(any(make_vector(1,2), odd()));
    +assert(!any(make_vector(2,4), odd()));
     
    @@ -171,7 +171,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/query/functions/count.html b/doc/html/fusion/algorithms/query/functions/count.html index 4cbb30d2..8d520d6d 100644 --- a/doc/html/fusion/algorithms/query/functions/count.html +++ b/doc/html/fusion/algorithms/query/functions/count.html @@ -3,37 +3,37 @@ count - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    Returns the number of elements of a given type within a sequence.

    - + Synopsis
    @@ -41,11 +41,11 @@
         typename Sequence,
         typename T
         >
    -typename result_of::count<Sequence, T>::type count(
    +typename result_of::count<Sequence, T>::type count(
         Sequence const& seq, T const& t);
     
    -

    Table 1.44. Parameters

    +

    Table 1.44. Parameters

    @@ -73,17 +73,17 @@

    - seq + seq

    A model of Forward - Sequence, e == t - must be a valid expression, convertible to bool, - for each element e - in seq + Sequence, e == t + must be a valid expression, convertible to bool, + for each element e + in seq

    @@ -95,7 +95,7 @@

    - T + T

    @@ -113,42 +113,42 @@
    - + Expression Semantics
    -count(seq, t);
    +count(seq, t);
     

    - Return type: int + Return type: int

    - Semantics: Returns the number of elements - of type T and equal to - t in seq. + Semantics: Returns the number of elements + of type T and equal to + t in seq.

    - + Complexity

    - Linear. At most result_of::size<Sequence>::value comparisons. + Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
     #include <boost/fusion/algorithm/query/count.hpp>
     
    - + Example
    -const vector<double,int,int> vec(1.0,2,3);
    -assert(count(vec,2) == 1);
    +const vector<double,int,int> vec(1.0,2,3);
    +assert(count(vec,2) == 1);
     
    @@ -158,7 +158,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/query/functions/count_if.html b/doc/html/fusion/algorithms/query/functions/count_if.html index 87ab285c..e34b696f 100644 --- a/doc/html/fusion/algorithms/query/functions/count_if.html +++ b/doc/html/fusion/algorithms/query/functions/count_if.html @@ -3,38 +3,38 @@ count_if - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    Returns the number of elements within a sequence with a type for which - a given unary function object evaluates to true. + a given unary function object evaluates to true.

    - + Synopsis
    @@ -42,11 +42,11 @@
         typename Sequence,
         typename F
         >
    -typename result_of::count_if<Sequence, F>::type count_if(
    +typename result_of::count_if<Sequence, F>::type count_if(
         Sequence const& seq, F f);
     
    -

    Table 1.45. Parameters

    +

    Table 1.45. Parameters

    @@ -74,16 +74,16 @@

    - seq + seq

    A model of Forward - Sequence, f(e) is a valid expression, convertible - to bool, for each - element e in seq + Sequence, f(e) is a valid expression, convertible + to bool, for each + element e in seq

    @@ -95,7 +95,7 @@

    - f + f

    @@ -113,41 +113,41 @@
    - + Expression Semantics
    -count_if(seq, f)
    +count_if(seq, f)
     

    - Return type: int + Return type: int

    - Semantics: Returns the number of elements - in seq where f evaluates to true. + Semantics: Returns the number of elements + in seq where f evaluates to true.

    - + Complexity

    - Linear. At most result_of::size<Sequence>::value comparisons. + Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
     #include <boost/fusion/algorithm/query/count_if.hpp>
     
    - + Example
    -const vector<int,int,int> vec(1,2,3);
    -assert(count_if(vec,odd()) == 2);
    +const vector<int,int,int> vec(1,2,3);
    +assert(count_if(vec,odd()) == 2);
     
    @@ -157,7 +157,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/query/functions/find.html b/doc/html/fusion/algorithms/query/functions/find.html index c62dd9b5..ec889050 100644 --- a/doc/html/fusion/algorithms/query/functions/find.html +++ b/doc/html/fusion/algorithms/query/functions/find.html @@ -3,37 +3,37 @@ find - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    Finds the first element of a given type within a sequence.

    - + Synopsis
    @@ -50,7 +50,7 @@
     unspecified find(Sequence& seq);
     
    -

    Table 1.42. Parameters

    +

    Table 1.42. Parameters

    @@ -78,7 +78,7 @@

    - seq + seq

    @@ -97,7 +97,7 @@

    - T + T

    @@ -115,45 +115,45 @@
    - + Expression Semantics
    -find<T>(seq)
    +find<T>(seq)
     

    - Return type: A model of the same iterator - category as the iterators of seq. + Return type: A model of the same iterator + category as the iterators of seq.

    - Semantics: Returns an iterator to the - first element of seq - of type T, or end(seq) if there is no such element. Equivalent - to find_if<boost::is_same<_, T> >(seq) + Semantics: Returns an iterator to the + first element of seq + of type T, or end(seq) if there is no such element. Equivalent + to find_if<boost::is_same<_, T> >(seq)

    - + Complexity

    - Linear. At most result_of::size<Sequence>::value comparisons. + Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
     #include <boost/fusion/algorithm/query/find.hpp>
     
    - + Example
    -const vector<char,int> vec('a','0');
    -assert(*find<int>(vec) == '0');
    -assert(find<double>(vec) == end(vec));
    +const vector<char,int> vec('a','0');
    +assert(*find<int>(vec) == '0');
    +assert(find<double>(vec) == end(vec));
     
    @@ -163,7 +163,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/query/functions/find_if.html b/doc/html/fusion/algorithms/query/functions/find_if.html index 67e4e84b..7c237c4e 100644 --- a/doc/html/fusion/algorithms/query/functions/find_if.html +++ b/doc/html/fusion/algorithms/query/functions/find_if.html @@ -3,24 +3,24 @@ find_if - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    @@ -28,14 +28,14 @@

    Finds the first element within a sequence with a type for which a given MPL - Lambda Expression evaluates to boost::mpl::true_. + Lambda Expression evaluates to boost::mpl::true_.

    - + Description
    - + Synopsis
    @@ -52,7 +52,7 @@
     unspecified find_if(Sequence& seq);
     
    -

    Table 1.43. Parameters

    +

    Table 1.43. Parameters

    @@ -80,7 +80,7 @@

    - seq + seq

    @@ -99,7 +99,7 @@

    - F + F

    @@ -118,46 +118,46 @@
    - + Expression Semantics
    -find_if<F>(seq)
    +find_if<F>(seq)
     

    - Return type: An iterator of the same - iterator category as the iterators of seq. + Return type: An iterator of the same + iterator category as the iterators of seq.

    - Semantics: Returns the first element - of seq for which MPL - Lambda Expression F - evaluates to boost::mpl::true_, or end(seq) + Semantics: Returns the first element + of seq for which MPL + Lambda Expression F + evaluates to boost::mpl::true_, or end(seq) if there is no such element.

    - + Complexity

    - Linear. At most result_of::size<Sequence>::value comparisons. + Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
     #include <boost/fusion/algorithm/query/find_if.hpp>
     
    - + Example
    -const vector<double,int> vec(1.0,2);
    -assert(*find_if<is_integral<mpl::_> >(vec) == 2);
    -assert(find_if<is_class<mpl::_> >(vec) == end(vec));
    +const vector<double,int> vec(1.0,2);
    +assert(*find_if<is_integral<mpl::_> >(vec) == 2);
    +assert(find_if<is_class<mpl::_> >(vec) == end(vec));
     
    @@ -167,7 +167,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/query/functions/none.html b/doc/html/fusion/algorithms/query/functions/none.html index b99a3660..c99c944a 100644 --- a/doc/html/fusion/algorithms/query/functions/none.html +++ b/doc/html/fusion/algorithms/query/functions/none.html @@ -3,41 +3,41 @@ none - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - For a sequence seq and - unary function object f, - none returns true if - f returns false for every - element of seq. + For a sequence seq and + unary function object f, + none returns true if + f returns false for every + element of seq.

    - + Synopsis
    @@ -45,11 +45,11 @@
         typename Sequence,
         typename F
         >
    -typename result_of::none<Sequence,F>::type none(
    +typename result_of::none<Sequence,F>::type none(
         Sequence const& seq, F f);
     
    -

    Table 1.41. Parameters

    +

    Table 1.41. Parameters

    @@ -77,16 +77,16 @@

    - seq + seq

    A model of Forward - Sequence, f(e) is a valid expression, convertible - to bool, for every - element e in seq + Sequence, f(e) is a valid expression, convertible + to bool, for every + element e in seq

    @@ -98,7 +98,7 @@

    - f + f

    @@ -116,38 +116,38 @@
    - + Expression Semantics
    -none(seq, f);
    +none(seq, f);
     

    - Return type: bool + Return type: bool

    - Semantics: Returns true if and only - if f(e) - evaluates to false for every - element e in seq. Result equivalent to !any(seq, f). + Semantics: Returns true if and only + if f(e) + evaluates to false for every + element e in seq. Result equivalent to !any(seq, f).

    - + Complexity

    - Linear. At most result_of::size<Sequence>::value comparisons. + Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
     #include <boost/fusion/algorithm/query/none.hpp>
     
    - + Example
    @@ -160,8 +160,8 @@
         }
     };
     ...
    -assert(none(make_vector(2,4), odd()));
    -assert(!none(make_vector(1,2), odd()));
    +assert(none(make_vector(2,4), odd()));
    +assert(!none(make_vector(1,2), odd()));
     
    @@ -171,7 +171,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/query/metafunctions.html b/doc/html/fusion/algorithms/query/metafunctions.html index 1d5e7e0e..be03b74c 100644 --- a/doc/html/fusion/algorithms/query/metafunctions.html +++ b/doc/html/fusion/algorithms/query/metafunctions.html @@ -3,24 +3,24 @@ Metafunctions - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -42,7 +42,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/query/metafunctions/all.html b/doc/html/fusion/algorithms/query/metafunctions/all.html index 5d463a4f..394d74f6 100644 --- a/doc/html/fusion/algorithms/query/metafunctions/all.html +++ b/doc/html/fusion/algorithms/query/metafunctions/all.html @@ -3,37 +3,37 @@ all - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - A metafunction returning the result type of all. + A metafunction returning the result type of all.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.47. Parameters

    +

    Table 1.47. Parameters

    @@ -75,7 +75,7 @@

    - Sequence + Sequence

    @@ -94,7 +94,7 @@

    - F + F

    @@ -114,34 +114,34 @@
    - + Expression Semantics
    -result_of::all<Sequence, F>::type
    +result_of::all<Sequence, F>::type
     

    - Return type: bool. + Return type: bool.

    - Semantics: Returns the return type of - all - given a sequence of type Sequence + Semantics: Returns the return type of + all + given a sequence of type Sequence and a unary Polymorphic - Function Object of type F. - The return type is always bool. + Function Object of type F. + The return type is always bool.

    - + Complexity

    Constant.

    - + Header
    @@ -155,7 +155,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/query/metafunctions/any.html b/doc/html/fusion/algorithms/query/metafunctions/any.html index 0e097efe..79b3c1ab 100644 --- a/doc/html/fusion/algorithms/query/metafunctions/any.html +++ b/doc/html/fusion/algorithms/query/metafunctions/any.html @@ -3,37 +3,37 @@ any - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - A metafunction returning the result type of any. + A metafunction returning the result type of any.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.46. Parameters

    +

    Table 1.46. Parameters

    @@ -75,7 +75,7 @@

    - Sequence + Sequence

    @@ -94,7 +94,7 @@

    - F + F

    @@ -114,34 +114,34 @@
    - + Expression Semantics
    -result_of::any<Sequence, F>::type
    +result_of::any<Sequence, F>::type
     

    - Return type: bool. + Return type: bool.

    - Semantics: Returns the return type of - any - given a sequence of type Sequence + Semantics: Returns the return type of + any + given a sequence of type Sequence and a unary Polymorphic - Function Object of type F. - The return type is always bool. + Function Object of type F. + The return type is always bool.

    - + Complexity

    Constant.

    - + Header
    @@ -155,7 +155,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/query/metafunctions/count.html b/doc/html/fusion/algorithms/query/metafunctions/count.html index 7a7d81a9..f5992e7c 100644 --- a/doc/html/fusion/algorithms/query/metafunctions/count.html +++ b/doc/html/fusion/algorithms/query/metafunctions/count.html @@ -3,38 +3,38 @@ count - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - A metafunction that returns the result type of count + A metafunction that returns the result type of count given the sequence and search types.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.51. Parameters

    +

    Table 1.51. Parameters

    @@ -76,7 +76,7 @@

    - Sequence + Sequence

    @@ -95,7 +95,7 @@

    - T + T

    @@ -113,30 +113,30 @@
    - + Expression Semantics
    -result_of::count<T>::type
    +result_of::count<T>::type
     

    - Return type: int. + Return type: int.

    - Semantics: Returns the return type of - count. The return type is always - int. + Semantics: Returns the return type of + count. The return type is always + int.

    - + Complexity

    Constant.

    - + Header
    @@ -150,7 +150,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/query/metafunctions/count_if.html b/doc/html/fusion/algorithms/query/metafunctions/count_if.html index 2123dc67..35badef9 100644 --- a/doc/html/fusion/algorithms/query/metafunctions/count_if.html +++ b/doc/html/fusion/algorithms/query/metafunctions/count_if.html @@ -3,38 +3,38 @@ count_if - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - A metafunction that returns the result type of count_if + A metafunction that returns the result type of count_if given the sequence and predicate types.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.52. Parameters

    +

    Table 1.52. Parameters

    @@ -76,7 +76,7 @@

    - Sequence + Sequence

    @@ -95,7 +95,7 @@

    - Pred + Pred

    @@ -113,30 +113,30 @@
    - + Expression Semantics
    -result_of::count_if<Sequence, Pred>::type
    +result_of::count_if<Sequence, Pred>::type
     

    - Return type: int. + Return type: int.

    - Semantics: Returns the return type of - count_if. The return type is - always int. + Semantics: Returns the return type of + count_if. The return type is + always int.

    - + Complexity

    Constant.

    - + Header
    @@ -150,7 +150,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/query/metafunctions/find.html b/doc/html/fusion/algorithms/query/metafunctions/find.html index e0f75b22..da040e90 100644 --- a/doc/html/fusion/algorithms/query/metafunctions/find.html +++ b/doc/html/fusion/algorithms/query/metafunctions/find.html @@ -3,38 +3,38 @@ find - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Returns the result type of find, + Returns the result type of find, given the sequence and search types.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.49. Parameters

    +

    Table 1.49. Parameters

    @@ -76,7 +76,7 @@

    - Sequence + Sequence

    @@ -95,7 +95,7 @@

    - T + T

    @@ -113,31 +113,31 @@
    - + Expression Semantics
    -result_of::find<Sequence, T>::type
    +result_of::find<Sequence, T>::type
     

    - Return type: A model of the same iterator - category as the iterators of Sequence. + Return type: A model of the same iterator + category as the iterators of Sequence.

    - Semantics: Returns an iterator to the - first element of type T - in Sequence, or result_of::end<Sequence>::type if there is no such element. + Semantics: Returns an iterator to the + first element of type T + in Sequence, or result_of::end<Sequence>::type if there is no such element.

    - + Complexity

    - Linear, at most result_of::size<Sequence>::value comparisons. + Linear, at most result_of::size<Sequence>::value comparisons.

    - + Header
    @@ -151,7 +151,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/query/metafunctions/find_if.html b/doc/html/fusion/algorithms/query/metafunctions/find_if.html index a7efa889..8e41a749 100644 --- a/doc/html/fusion/algorithms/query/metafunctions/find_if.html +++ b/doc/html/fusion/algorithms/query/metafunctions/find_if.html @@ -3,38 +3,38 @@ find_if - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Returns the result type of find_if + Returns the result type of find_if given the sequence and predicate types.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.50. Parameters

    +

    Table 1.50. Parameters

    @@ -76,7 +76,7 @@

    - Sequence + Sequence

    @@ -95,7 +95,7 @@

    - Pred + Pred

    @@ -114,32 +114,32 @@
    - + Expression Semantics
    -result_of::find_if<Sequence, Pred>::type
    +result_of::find_if<Sequence, Pred>::type
     

    - Return type: A model of the same iterator - category as the iterators of Sequence. + Return type: A model of the same iterator + category as the iterators of Sequence.

    - Semantics: Returns an iterator to the - first element in Sequence - for which Pred evaluates - to true. Returns result_of::end<Sequence>::type if there is no such element. + Semantics: Returns an iterator to the + first element in Sequence + for which Pred evaluates + to true. Returns result_of::end<Sequence>::type if there is no such element.

    - + Complexity

    - Linear. At most result_of::size<Sequence>::value comparisons. + Linear. At most result_of::size<Sequence>::value comparisons.

    - + Header
    @@ -153,7 +153,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/query/metafunctions/none.html b/doc/html/fusion/algorithms/query/metafunctions/none.html index dfd32b7a..9e8e0644 100644 --- a/doc/html/fusion/algorithms/query/metafunctions/none.html +++ b/doc/html/fusion/algorithms/query/metafunctions/none.html @@ -3,37 +3,37 @@ none - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - A metafunction returning the result type of none. + A metafunction returning the result type of none.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.48. Parameters

    +

    Table 1.48. Parameters

    @@ -75,7 +75,7 @@

    - Sequence + Sequence

    @@ -94,7 +94,7 @@

    - F + F

    @@ -114,34 +114,34 @@
    - + Expression Semantics
    -result_of::none<Sequence, F>::type
    +result_of::none<Sequence, F>::type
     

    - Return type: bool. + Return type: bool.

    - Semantics: Returns the return type of - none given a sequence of type - Sequence and a unary + Semantics: Returns the return type of + none given a sequence of type + Sequence and a unary Polymorphic Function - Object of type F. - The return type is always bool. + Object of type F. + The return type is always bool.

    - + Complexity

    Constant.

    - + Header
    @@ -155,7 +155,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/transformation.html b/doc/html/fusion/algorithms/transformation.html index 81217b02..c7da6318 100644 --- a/doc/html/fusion/algorithms/transformation.html +++ b/doc/html/fusion/algorithms/transformation.html @@ -3,24 +3,24 @@ Transformation - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -36,23 +36,17 @@

    - + - +
    [Note][Note] Note
    -

    -

    -

    - As the transformation algorithms return views onto their input arguments, - it is important that the lifetime of the input arguments is greater than - the period during which you wish to use the results. -

    -

    -

    -

    + As the transformation algorithms return views onto their input arguments, + it is important that the lifetime of the input arguments is greater than + the period during which you wish to use the results. +

    - + Header

    @@ -66,7 +60,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/transformation/functions.html b/doc/html/fusion/algorithms/transformation/functions.html index 3ff862fb..225bfb0b 100644 --- a/doc/html/fusion/algorithms/transformation/functions.html +++ b/doc/html/fusion/algorithms/transformation/functions.html @@ -3,24 +3,24 @@ Functions - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -54,7 +54,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/transformation/functions/clear.html b/doc/html/fusion/algorithms/transformation/functions/clear.html index 19eca3b1..8f351169 100644 --- a/doc/html/fusion/algorithms/transformation/functions/clear.html +++ b/doc/html/fusion/algorithms/transformation/functions/clear.html @@ -3,47 +3,47 @@ clear - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - clear returns an empty sequence. + clear returns an empty sequence.

    - + Synposis
     template<
         typename Sequence
         >
    -typename result_of::clear<Sequence const>::type clear(Sequence const& seq);
    +typename result_of::clear<Sequence const>::type clear(Sequence const& seq);
     
    -

    Table 1.62. Parameters

    +

    Table 1.62. Parameters

    @@ -70,7 +70,7 @@

    - seq + seq

    @@ -89,42 +89,42 @@
    - + Expression Semantics
    -clear(seq);
    +clear(seq);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Expression Semantics: Returns a sequence + Expression Semantics: Returns a sequence with no elements.

    - + Complexity

    Constant.

    - + Header
     #include <boost/fusion/algorithm/transformation/clear.hpp>
     
    - + Example
    -assert(clear(make_vector(1,2,3)) == make_vector());
    +assert(clear(make_vector(1,2,3)) == make_vector());
     
    @@ -134,7 +134,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/transformation/functions/erase.html b/doc/html/fusion/algorithms/transformation/functions/erase.html index c779e300..484fab77 100644 --- a/doc/html/fusion/algorithms/transformation/functions/erase.html +++ b/doc/html/fusion/algorithms/transformation/functions/erase.html @@ -3,30 +3,30 @@ erase - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    @@ -34,7 +34,7 @@ those at a specified iterator, or between two iterators.

    - + Synposis
    @@ -42,7 +42,7 @@
         typename Sequence,
         typename First
         >
    -typename result_of::erase<Sequence const, First>::type erase(
    +typename result_of::erase<Sequence const, First>::type erase(
         Sequence const& seq, First const& it1);
     
     template<
    @@ -50,11 +50,11 @@
         typename First,
         typename Last
         >
    -typename result_of::erase<Sequence const, First, Last>::type erase(
    +typename result_of::erase<Sequence const, First, Last>::type erase(
         Sequence const& seq, First const& it1, Last const& it2);
     
    -

    Table 1.63. Parameters

    +

    Table 1.63. Parameters

    @@ -82,7 +82,7 @@ @@ -141,58 +141,58 @@

    - seq + seq

    @@ -101,7 +101,7 @@

    - it1 + it1

    @@ -113,14 +113,14 @@

    - Iterator into seq + Iterator into seq

    - it2 + it2

    @@ -132,8 +132,8 @@

    - Iterator into seq - after it1 + Iterator into seq + after it1

    - + Expression Semantics
    -erase(seq, pos);
    +erase(seq, pos);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence, containing - all the elements of seq - except the element at pos. + Semantics: Returns a new sequence, containing + all the elements of seq + except the element at pos.

    -erase(seq, first, last);
    +erase(seq, first, last);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence, with - all the elements of seq, - in their original order, except those in the range [first,last). + Semantics: Returns a new sequence, with + all the elements of seq, + 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>
     
    - + Example
    -const vector<int, double, char> vec(1, 2.0, 'c');
    -assert(erase(vec, next(begin(vec))) == make_vector(1, 'c'));
    -assert(erase(vec, next(begin(vec)), end(vec)) == make_vector(1));
    +const vector<int, double, char> vec(1, 2.0, 'c');
    +assert(erase(vec, next(begin(vec))) == make_vector(1, 'c'));
    +assert(erase(vec, next(begin(vec)), end(vec)) == make_vector(1));
     
    @@ -202,7 +202,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/transformation/functions/erase_key.html b/doc/html/fusion/algorithms/transformation/functions/erase_key.html index e0a5aeeb..b9ad0b0e 100644 --- a/doc/html/fusion/algorithms/transformation/functions/erase_key.html +++ b/doc/html/fusion/algorithms/transformation/functions/erase_key.html @@ -3,43 +3,43 @@ erase_key - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    For an Associative - Sequence seq, + Sequence seq, returns a Forward Sequence containing all the elements of the original except those with a given key.

    - + Synposis
    @@ -50,7 +50,7 @@
     typename result_of::erase_key<Sequence const, Key>::type erase_key(Sequence const& seq);
     
    -

    Table 1.64. Parameters

    +

    Table 1.64. Parameters

    @@ -78,7 +78,7 @@

    - seq + seq

    @@ -97,7 +97,7 @@

    - Key + Key

    @@ -115,43 +115,43 @@
    - + Expression Semantics
    -erase_key<Key>(seq);
    +erase_key<Key>(seq);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence, containing - all the elements of seq, - except those with key Key. + Semantics: Returns a new sequence, containing + all the elements of seq, + except those with key Key.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
     #include <boost/fusion/algorithm/transformation/erase_key.hpp>
     
    - + Example
    -assert(erase_key<int>(make_map<int, long>('a', 'b')) == make_map<long>('b'));
    +assert(erase_key<int>(make_map<int, long>('a', 'b')) == make_map<long>('b'));
     
    @@ -161,7 +161,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/transformation/functions/filter.html b/doc/html/fusion/algorithms/transformation/functions/filter.html index 91f95064..02bf4eae 100644 --- a/doc/html/fusion/algorithms/transformation/functions/filter.html +++ b/doc/html/fusion/algorithms/transformation/functions/filter.html @@ -3,30 +3,30 @@ filter - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    @@ -34,7 +34,7 @@ the elements of a specified type.

    - + Synopsis
    @@ -42,10 +42,10 @@
         typename T,
         typename Sequence
         >
    -typename result_of::filter<Sequence const, T>::type filter(Sequence const& seq);
    +typename result_of::filter<Sequence const, T>::type filter(Sequence const& seq);
     
    -

    Table 1.53. Parameters

    +

    Table 1.53. Parameters

    @@ -73,7 +73,7 @@

    - seq + seq

    @@ -92,7 +92,7 @@

    - T + T

    @@ -110,45 +110,45 @@
    - + Expression Semantics
    -filter<T>(seq);
    +filter<T>(seq);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence containing - all the elements of seq - of type T. Equivalent - to filter_if<boost::same_type<_, T> >(seq). + Semantics: Returns a sequence containing + all the elements of seq + of type T. Equivalent + 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>
     
    - + Example
    -const vector<int,int,long,long> vec(1,2,3,4);
    -assert(filter<int>(vec) == make_vector(1,2));
    +const vector<int,int,long,long> vec(1,2,3,4);
    +assert(filter<int>(vec) == make_vector(1,2));
     
    @@ -158,7 +158,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/transformation/functions/filter_if.html b/doc/html/fusion/algorithms/transformation/functions/filter_if.html index edf5d5c4..7142a8c3 100644 --- a/doc/html/fusion/algorithms/transformation/functions/filter_if.html +++ b/doc/html/fusion/algorithms/transformation/functions/filter_if.html @@ -3,39 +3,39 @@ filter_if - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - For a given sequence, filter_if returns a new sequences + For a given sequence, filter_if returns a new sequences containing only the elements with types for which a given MPL - Lambda Expression evaluates to boost::mpl::true_. + Lambda Expression evaluates to boost::mpl::true_.

    - + Synopsis
    @@ -43,10 +43,10 @@
         typename Pred,
         typename Sequence
         >
    -typename result_of::filter_if<Sequence const, Pred>::type filter_if(Sequence const& seq);
    +typename result_of::filter_if<Sequence const, Pred>::type filter_if(Sequence const& seq);
     
    -

    Table 1.54. Parameters

    +

    Table 1.54. Parameters

    @@ -74,7 +74,7 @@

    - seq + seq

    @@ -93,7 +93,7 @@

    - Pred + Pred

    @@ -112,46 +112,46 @@
    - + Expression Semantics
    -filter_if<Pred>(seq);
    +filter_if<Pred>(seq);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence containing - all the elements of seq - with types for which Pred - evaluates to boost::mpl::true_. The order of the retained elements + Semantics: Returns a sequence containing + all the elements of seq + with types for which Pred + evaluates to boost::mpl::true_. The order of the retained elements 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>
     
    - + Example
    -const vector<int,int,double,double> vec(1,2,3.0,4.0);
    -assert(filter_if<is_integral<mpl::_> >(vec) == make_vector(1,2));
    +const vector<int,int,double,double> vec(1,2,3.0,4.0);
    +assert(filter_if<is_integral<mpl::_> >(vec) == make_vector(1,2));
     
    @@ -161,7 +161,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/transformation/functions/insert.html b/doc/html/fusion/algorithms/transformation/functions/insert.html index d7063c5c..812ba362 100644 --- a/doc/html/fusion/algorithms/transformation/functions/insert.html +++ b/doc/html/fusion/algorithms/transformation/functions/insert.html @@ -3,30 +3,30 @@ insert - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    @@ -34,7 +34,7 @@ element inserted the position described by a given iterator.

    - + Synposis
    @@ -46,7 +46,7 @@
     unspecified insert(Sequence const& seq, Pos const& pos, T const& t);
     
    -

    Table 1.65. Parameters

    +

    Table 1.65. Parameters

    @@ -74,7 +74,7 @@

    - seq + seq

    @@ -93,7 +93,7 @@

    - pos + pos

    @@ -112,7 +112,7 @@

    - t + t

    @@ -130,46 +130,46 @@
    - + Expression Semantics
    -insert(seq, p, t);
    +insert(seq, p, t);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence, containing - all the elements of seq, + Semantics: Returns a new sequence, containing + all the elements of seq, in their original order, and a new element with the type and value of - t inserted at iterator - pos. + t inserted at iterator + pos.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
     #include <boost/fusion/algorithm/transformation/insert.hpp>
     
    - + Example
    -const vector<int,int> vec(1,2);
    -assert(insert(vec, next(begin(vec)), 3) == make_vector(1,3,2));
    +const vector<int,int> vec(1,2);
    +assert(insert(vec, next(begin(vec)), 3) == make_vector(1,3,2));
     
    @@ -179,7 +179,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/transformation/functions/insert_range.html b/doc/html/fusion/algorithms/transformation/functions/insert_range.html index 6297295f..b117a4c9 100644 --- a/doc/html/fusion/algorithms/transformation/functions/insert_range.html +++ b/doc/html/fusion/algorithms/transformation/functions/insert_range.html @@ -3,30 +3,30 @@ insert_range - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    @@ -34,7 +34,7 @@ iterator.

    - + Synposis
    @@ -43,11 +43,11 @@
         typename Pos,
         typename Range
         >
    -typename result_of::insert_range<Sequence const, Pos, Range>::type insert_range(
    +typename result_of::insert_range<Sequence const, Pos, Range>::type insert_range(
         Sequence const& seq, Pos const& pos, Range const& range);
     
    -

    Table 1.66. Parameters

    +

    Table 1.66. Parameters

    @@ -75,7 +75,7 @@

    - seq + seq

    @@ -94,7 +94,7 @@

    - pos + pos

    @@ -113,7 +113,7 @@

    - range + range

    @@ -133,46 +133,46 @@
    - + Expression Semantics
    -insert(seq, pos, range);
    +insert(seq, pos, range);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence, containing - all the elements of seq, - and the elements of range - inserted at iterator pos. + Semantics: Returns a new sequence, containing + all the elements of seq, + and the elements of range + inserted at iterator pos. 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>
     
    - + Example
    -const vector<int,int> vec(1,2);
    -assert(insert_range(vec, next(begin(vec)), make_vector(3,4)) == make_vector(1,3,4,2));
    +const vector<int,int> vec(1,2);
    +assert(insert_range(vec, next(begin(vec)), make_vector(3,4)) == make_vector(1,3,4,2));
     
    @@ -182,7 +182,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/transformation/functions/join.html b/doc/html/fusion/algorithms/transformation/functions/join.html index 4be3106d..44bfe402 100644 --- a/doc/html/fusion/algorithms/transformation/functions/join.html +++ b/doc/html/fusion/algorithms/transformation/functions/join.html @@ -3,30 +3,30 @@ join - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    @@ -34,17 +34,17 @@ first followed by the elements of the second.

    - + Synopsis
     template<
         typename LhSequence,
         typename RhSequence>
    -typename result_of::join<LhSequence, RhSequence>::type join(LhSequence const& lhs, RhSequence const& rhs);
    +typename result_of::join<LhSequence, RhSequence>::type join(LhSequence const& lhs, RhSequence const& rhs);
     
    -

    Table 1.67. Parameters

    +

    Table 1.67. Parameters

    @@ -72,7 +72,7 @@

    - lhs + lhs

    @@ -91,7 +91,7 @@

    - rhs + rhs

    @@ -111,46 +111,46 @@
    - + Expression Semantics
    -join(lhs, rhs);
    +join(lhs, rhs);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence containing - all the elements of lhs - followed by all the elements of rhs. + Semantics: Returns a sequence containing + all the elements of lhs + followed by all the elements of rhs. The order of th elements is preserved.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
     #include <boost/fusion/algorithm/transformation/join.hpp>
     
    - + Example
    -vector<int,char> v1(1, 'a');
    -vector<int,char> v2(2, 'b');
    -assert(join(v1, v2) == make_vector(1,'a',2,'b'));
    +vector<int,char> v1(1, 'a');
    +vector<int,char> v2(2, 'b');
    +assert(join(v1, v2) == make_vector(1,'a',2,'b'));
     
    @@ -160,7 +160,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/transformation/functions/pop_back.html b/doc/html/fusion/algorithms/transformation/functions/pop_back.html index f92701c8..58b34be5 100644 --- a/doc/html/fusion/algorithms/transformation/functions/pop_back.html +++ b/doc/html/fusion/algorithms/transformation/functions/pop_back.html @@ -3,47 +3,47 @@ pop_back - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    Returns a new sequence, with the last element of the original removed.

    - + Synopsis
     template<
         typename Sequence
         >
    -typename result_of::pop_back<Sequence const>::type pop_back(Sequence const& seq);
    +typename result_of::pop_back<Sequence const>::type pop_back(Sequence const& seq);
     
    -

    Table 1.69. Parameters

    +

    Table 1.69. Parameters

    @@ -70,7 +70,7 @@

    - seq + seq

    @@ -89,44 +89,44 @@
    - + Expression Semantics
    -pop_back(seq);
    +pop_back(seq);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence containing - all the elements of seq, + Semantics: Returns a new sequence containing + all the elements of seq, except the last element. The elements in the new sequence are in the - same order as they were in seq. + 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>
     
    - + Example
    -assert(___pop_back__(make_vector(1,2,3)) == make_vector(1,2));
    +assert(___pop_back__(make_vector(1,2,3)) == make_vector(1,2));
     
    @@ -136,7 +136,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/transformation/functions/pop_front.html b/doc/html/fusion/algorithms/transformation/functions/pop_front.html index 79e797ad..2177bbbf 100644 --- a/doc/html/fusion/algorithms/transformation/functions/pop_front.html +++ b/doc/html/fusion/algorithms/transformation/functions/pop_front.html @@ -3,47 +3,47 @@ pop_front - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    Returns a new sequence, with the first element of the original removed.

    - + Synopsis
     template<
         typename Sequence
         >
    -typename result_of::pop_front<Sequence const>::type pop_front(Sequence const& seq);
    +typename result_of::pop_front<Sequence const>::type pop_front(Sequence const& seq);
     
    -

    Table 1.70. Parameters

    +

    Table 1.70. Parameters

    @@ -70,7 +70,7 @@

    - seq + seq

    @@ -89,44 +89,44 @@
    - + Expression Semantics
    -pop_front(seq);
    +pop_front(seq);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence containing - all the elements of seq, + Semantics: Returns a new sequence containing + all the elements of seq, except the first element. The elements in the new sequence are in the - same order as they were in seq. + 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>
     
    - + Example
    -assert(pop_front(make_vector(1,2,3)) == make_vector(2,3));
    +assert(pop_front(make_vector(1,2,3)) == make_vector(2,3));
     
    @@ -136,7 +136,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/transformation/functions/push_back.html b/doc/html/fusion/algorithms/transformation/functions/push_back.html index 903c48ca..9d9af052 100644 --- a/doc/html/fusion/algorithms/transformation/functions/push_back.html +++ b/doc/html/fusion/algorithms/transformation/functions/push_back.html @@ -3,37 +3,37 @@ push_back - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    Returns a new sequence with an element added at the end.

    - + Synopsis
    @@ -41,11 +41,11 @@
         typename Sequence,
         typename T
         >
    -typename result_of::push_back<Sequence, T>::type push_back(
    +typename result_of::push_back<Sequence, T>::type push_back(
         Sequence const& seq, T const& t);
     
    -

    Table 1.71. Parameters

    +

    Table 1.71. Parameters

    @@ -73,7 +73,7 @@

    - seq + seq

    @@ -92,7 +92,7 @@

    - t + t

    @@ -110,44 +110,44 @@
    - + Expression Semantics
    -push_back(seq, t);
    +push_back(seq, t);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence, containing - all the elements of seq, - and new element t appended - to the end. The elements are in the same order as they were in seq. + Semantics: Returns a new sequence, containing + all the elements of seq, + and new element t appended + 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>
     
    - + Example
    -assert(push_back(make_vector(1,2,3),4) == make_vector(1,2,3,4));
    +assert(push_back(make_vector(1,2,3),4) == make_vector(1,2,3,4));
     
    @@ -157,7 +157,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/transformation/functions/push_front.html b/doc/html/fusion/algorithms/transformation/functions/push_front.html index d0aeb73d..0a600437 100644 --- a/doc/html/fusion/algorithms/transformation/functions/push_front.html +++ b/doc/html/fusion/algorithms/transformation/functions/push_front.html @@ -3,37 +3,37 @@ push_front - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    Returns a new sequence with an element added at the beginning.

    - + Synopsis
    @@ -41,11 +41,11 @@
         typename Sequence,
         typename T
         >
    -typename result_of::push_front<Sequence, T>::type push_front(
    +typename result_of::push_front<Sequence, T>::type push_front(
         Sequence const& seq, T const& t);
     
    -

    Table 1.72. Parameters

    +

    Table 1.72. Parameters

    @@ -73,7 +73,7 @@

    - seq + seq

    @@ -92,7 +92,7 @@

    - t + t

    @@ -110,45 +110,45 @@
    - + Expression Semantics
    -push_back(seq, t);
    +push_back(seq, t);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence, containing - all the elements of seq, - and new element t appended + Semantics: Returns a new sequence, containing + all the elements of seq, + and new element t appended to the beginning. The elements are in the same order as they were in - seq. + seq.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
     #include <boost/fusion/algorithm/transformation/push_front.hpp>
     
    - + Example
    -assert(push_front(make_vector(1,2,3),0) == make_vector(0,1,2,3));
    +assert(push_front(make_vector(1,2,3),0) == make_vector(0,1,2,3));
     
    @@ -158,7 +158,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/transformation/functions/remove.html b/doc/html/fusion/algorithms/transformation/functions/remove.html index 4e35bf0c..9f6577d2 100644 --- a/doc/html/fusion/algorithms/transformation/functions/remove.html +++ b/doc/html/fusion/algorithms/transformation/functions/remove.html @@ -3,30 +3,30 @@ remove - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    @@ -34,7 +34,7 @@ except those of a given type.

    - + Synopsis
    @@ -42,10 +42,10 @@
         typename T,
         typename Sequence
         >
    -typename result_of::remove<Sequence const, T>::type replace(Sequence const& seq);
    +typename result_of::remove<Sequence const, T>::type replace(Sequence const& seq);
     
    -

    Table 1.59. Parameters

    +

    Table 1.59. Parameters

    @@ -73,7 +73,7 @@

    - seq + seq

    @@ -92,7 +92,7 @@

    - T + T

    @@ -110,45 +110,45 @@
    - + Expression Semantics
    -remove<T>(seq);
    +remove<T>(seq);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence, containing - all the elements of seq, - in their original order, except those of type T. - Equivalent to remove_if<boost::is_same<_,T> >(seq). + Semantics: Returns a new sequence, containing + all the elements of seq, + in their original order, except those of type T. + 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>
     
    - + Example
    -const vector<int,double> vec(1,2.0);
    -assert(remove<double>(vec) == make_vector(1));
    +const vector<int,double> vec(1,2.0);
    +assert(remove<double>(vec) == make_vector(1));
     
    @@ -158,7 +158,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/transformation/functions/remove_if.html b/doc/html/fusion/algorithms/transformation/functions/remove_if.html index 89d4cb02..622500ca 100644 --- a/doc/html/fusion/algorithms/transformation/functions/remove_if.html +++ b/doc/html/fusion/algorithms/transformation/functions/remove_if.html @@ -3,38 +3,38 @@ remove_if - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    Returns a new sequence, containing all the elements of the original except - those where a given unary function object evaluates to true. + those where a given unary function object evaluates to true.

    - + Synopsis
    @@ -42,10 +42,10 @@
         typename Pred,
         typename Sequence
         >
    -typename result_of::remove_if<Sequence const, Pred>::type remove_if(Sequence const& seq);
    +typename result_of::remove_if<Sequence const, Pred>::type remove_if(Sequence const& seq);
     
    -

    Table 1.60. Parameters

    +

    Table 1.60. Parameters

    @@ -73,7 +73,7 @@

    - seq + seq

    @@ -92,7 +92,7 @@

    - Pred + Pred

    @@ -111,46 +111,46 @@
    - + Expression Semantics
    -remove_if<Pred>(seq);
    +remove_if<Pred>(seq);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence, containing - all the elements of seq, + Semantics: Returns a new sequence, containing + all the elements of seq, in their original order, except those elements with types for which - Pred evaluates to boost::mpl::true_. Equivalent to filter<boost::mpl::not_<Pred> - >(seq). + Pred evaluates to boost::mpl::true_. Equivalent to filter<boost::mpl::not_<Pred> + >(seq).

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
     #include <boost/fusion/algorithm/transformation/remove_if.hpp>
     
    - + Example
    -const vector<int,double> vec(1,2.0);
    -assert(remove_if<is_floating_point<mpl::_> >(vec) == make_vector(1));
    +const vector<int,double> vec(1,2.0);
    +assert(remove_if<is_floating_point<mpl::_> >(vec) == make_vector(1));
     
    @@ -160,7 +160,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/transformation/functions/replace.html b/doc/html/fusion/algorithms/transformation/functions/replace.html index c0efe040..1d4e7b04 100644 --- a/doc/html/fusion/algorithms/transformation/functions/replace.html +++ b/doc/html/fusion/algorithms/transformation/functions/replace.html @@ -3,30 +3,30 @@ replace - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    @@ -34,7 +34,7 @@ a new value.

    - + Synopsis
    @@ -42,11 +42,11 @@
         typename Sequence,
         typename T
         >
    -typename result_of::replace<Sequence const, T>::type replace(
    +typename result_of::replace<Sequence const, T>::type replace(
         Sequence const& seq, T const& old_value, T const& new_value);
     
    -

    Table 1.57. Parameters

    +

    Table 1.57. Parameters

    @@ -74,18 +74,18 @@

    - seq + seq

    A model of Forward - Sequence, e == old_value - is a valid expression, convertible to bool, - for each element e - in seq with type - convertible to T + Sequence, e == old_value + is a valid expression, convertible to bool, + for each element e + in seq with type + convertible to T

    @@ -97,7 +97,7 @@

    - old_value + old_value

    @@ -114,7 +114,7 @@

    - new_value + new_value

    @@ -132,44 +132,44 @@
    - + Expression Semantics
    -replace(seq, old_value, new_value);
    +replace(seq, old_value, new_value);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence with - all the values of seq - with new_value assigned - to elements with the same type and equal to old_value. + Semantics: Returns a new sequence with + all the values of seq + with new_value assigned + 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>
     
    - + Example
    -assert(replace(make_vector(1,2), 2, 3) == make_vector(1,3));
    +assert(replace(make_vector(1,2), 2, 3) == make_vector(1,3));
     
    @@ -179,7 +179,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/transformation/functions/replace_if.html b/doc/html/fusion/algorithms/transformation/functions/replace_if.html index fe9d308d..e7462b27 100644 --- a/doc/html/fusion/algorithms/transformation/functions/replace_if.html +++ b/doc/html/fusion/algorithms/transformation/functions/replace_if.html @@ -3,39 +3,39 @@ replace_if - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    Replaces each element of a given sequence for which an unary function - object evaluates to true + object evaluates to true replaced with a new value.

    - + Synopsis
    @@ -43,11 +43,11 @@
         typename Sequence,
         typename F,
         typename T>
    -typename result_of::replace_if<Sequence const, F, T>::type replace_if(
    +typename result_of::replace_if<Sequence const, F, T>::type replace_if(
         Sequence const& seq, F f, T const& new_value);
     
    -

    Table 1.58. Parameters

    +

    Table 1.58. Parameters

    @@ -75,7 +75,7 @@

    - seq + seq

    @@ -94,14 +94,14 @@

    - f + f

    - A function object for which f(e) is a valid expression, convertible - to bool, for each - element e in seq + A function object for which f(e) is a valid expression, convertible + to bool, for each + element e in seq

    @@ -113,7 +113,7 @@

    - new_value + new_value

    @@ -131,41 +131,41 @@
    - + Expression Semantics
    -replace_if(seq, f, new_value);
    +replace_if(seq, f, new_value);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence with - all the elements of seq, - with new_value assigned - to each element for which f - evaluates to true. + Semantics: Returns a new sequence with + all the elements of seq, + with new_value assigned + to each element for which f + evaluates to true.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
     #include <boost/fusion/algorithm/transformation/replace_if.hpp>
     
    - + Example
    @@ -178,7 +178,7 @@
         }
     };
     ...
    -assert(replace_if(make_vector(1,2), odd(), 3) == make_vector(3,2));
    +assert(replace_if(make_vector(1,2), odd(), 3) == make_vector(3,2));
     
    @@ -188,7 +188,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/transformation/functions/reverse.html b/doc/html/fusion/algorithms/transformation/functions/reverse.html index 4133ff04..cbe0dcde 100644 --- a/doc/html/fusion/algorithms/transformation/functions/reverse.html +++ b/doc/html/fusion/algorithms/transformation/functions/reverse.html @@ -3,47 +3,47 @@ reverse - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    Returns a new sequence with the elements of the original in reverse order.

    - + Synposis
     template<
         typename Sequence
         >
    -typename result_of::reverse<Sequence const>::type reverse(Sequence const& seq);
    +typename result_of::reverse<Sequence const>::type reverse(Sequence const& seq);
     
    -

    Table 1.61. Parameters

    +

    Table 1.61. Parameters

    @@ -70,7 +70,7 @@

    - seq + seq

    @@ -89,43 +89,43 @@
    - + Expression Semantics
    -reverse(seq);
    +reverse(seq);
     

    - Return type: A model of Return type: A model of Bidirectional Sequence.

    - Semantics: Returns a new sequence containing - all the elements of seq + Semantics: Returns a new sequence containing + all the elements of seq in reverse order.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
     #include <boost/fusion/algorithm/transformation/reverse.hpp>
     
    - + Example
    -assert(reverse(make_vector(1,2,3)) == make_vector(3,2,1));
    +assert(reverse(make_vector(1,2,3)) == make_vector(3,2,1));
     
    @@ -135,7 +135,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/transformation/functions/transform.html b/doc/html/fusion/algorithms/transformation/functions/transform.html index bccc7f4f..081723b7 100644 --- a/doc/html/fusion/algorithms/transformation/functions/transform.html +++ b/doc/html/fusion/algorithms/transformation/functions/transform.html @@ -3,42 +3,41 @@ transform - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - For a sequence seq and - Polymorphic Function - Object F, transform returns a new sequence with - elements created by applying F - to each element of seq. + For a sequence seq and + function object or function pointer f, + transform returns a new + sequence with elements created by applying f(e) to each element of e + of seq.

    - + Unary version synopsis
    @@ -47,11 +46,11 @@ typename Sequence, typename F > -typename result_of::transform<Sequence const, F>::type transform( +typename result_of::transform<Sequence const, F>::type transform( Sequence const& seq, F f);

    -

    Table 1.55. Parameters

    +

    Table 1.55. Parameters

    @@ -79,7 +78,7 @@

    - seq + seq

    @@ -98,15 +97,15 @@

    - f + f

    - A model of unary Polymorphic - Function Object where f(e) is a valid expression for each - element e of seq + f(e) + is a valid expression for each element e + of seq. boost::result_of<F(E)>::type is the return type of f when called with a value of + each element type E.

    @@ -119,25 +118,25 @@
    - + Expression Semantics
    -transform(seq, f);
    +transform(seq, f);
     

    - Return type: A model of Return type: A model of Forward Sequence

    - Semantics: Returns a new sequence, containing - the return values of f(e) for each element e - within seq. + Semantics: Returns a new sequence, containing + the return values of f(e) for each element e + within seq.

    - + Binary version synopsis
    @@ -147,11 +146,11 @@ typename Sequence2, typename F > -typename result_of::transform<Sequence1 const, Sequence2 const, F>::type transform( +typename result_of::transform<Sequence1 const, Sequence2 const, F>::type transform( Sequence1 const& seq1, Sequence2 const& seq2, F f);
    -

    Table 1.56. Parameters

    +

    Table 1.56. Parameters

    @@ -179,7 +178,7 @@

    - seq1 + seq1

    @@ -198,7 +197,7 @@

    - seq2 + seq2

    @@ -217,17 +216,16 @@

    - f + f

    - A model of binary Polymorphic - Function Object where f(e1, e2) is a valid expression for each - pair of elements e1 - and e2 of seq1 and seq2 - respectively + f(e1,e2) + is a valid expression for each pair of elements e1 + of seq1 and e2 of seq2. + boost::result_of<F(E1,E2)>::type is the return type of f when called with elements of + type E1 and E2

    @@ -240,50 +238,45 @@

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence, containing - the return values of f(e1, e2) for each pair of elements e1 and e2 - within seq1 and seq2 respectively. + Semantics: Returns a new sequence, containing + the return values of f(e1, e2) for each pair of elements e1 and e2 + within seq1 and seq2 respectively.

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
     #include <boost/fusion/algorithm/transformation/transform.hpp>
     
    - + Example
     struct triple
     {
    -    template<typename T>
    -    struct result
    -    {
    -        typedef T type;
    -    };
    +    typedef int result_type;
     
    -    template<typename T>
    -    T operator()(T t) const
    +    int operator()(int t) const
         {
             return t * 3;
         };
     };
     ...
    -assert(transform(make_vector(1,2,3), triple()) == make_vector(3,6,9));
    +assert(transform(make_vector(1,2,3), triple()) == make_vector(3,6,9));
     
    @@ -293,7 +286,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/transformation/functions/zip.html b/doc/html/fusion/algorithms/transformation/functions/zip.html index 85f84acd..d4f8fa0f 100644 --- a/doc/html/fusion/algorithms/transformation/functions/zip.html +++ b/doc/html/fusion/algorithms/transformation/functions/zip.html @@ -3,30 +3,30 @@ zip - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    @@ -34,7 +34,7 @@ of the members of the component sequences.

    - + Synopsis
    @@ -44,11 +44,11 @@
         ...
         typename SequenceN
         >
    -typename result_of::zip<Sequence1, Sequence2, ... SequenceN>::type 
    +typename result_of::zip<Sequence1, Sequence2, ... SequenceN>::type 
     zip(Sequence1 const& seq1, Sequence2 const& seq2, ... SequenceN const& seqN);
     
    -

    Table 1.68. Parameters

    +

    Table 1.68. Parameters

    @@ -75,7 +75,7 @@

    - seq1 to seqN + seq1 to seqN

    @@ -94,50 +94,50 @@
    - + Expression Semantics
    -zip(seq1, seq2, ... seqN);
    +zip(seq1, seq2, ... seqN);
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence containing - tuples of elements from sequences seq1 - to seqN. For example, - applying zip to tuples (1, 2, 3) - and ('a', 'b', - 'c') - would return ((1, 'a'),(2, 'b'),(3, - 'c')) + Semantics: Returns a sequence containing + tuples of elements from sequences seq1 + to seqN. For example, + applying zip to tuples (1, 2, 3) + and ('a', 'b', + 'c') + would return ((1, 'a'),(2, 'b'),(3, + 'c'))

    - + Complexity

    Constant. Returns a view which is lazily evaluated.

    - + Header
     #include <boost/fusion/algorithm/transformation/zip.hpp>
     
    - + Example
    -vector<int,char> v1(1, 'a');
    -vector<int,char> v2(2, 'b');
    -assert(zip(v1, v2) == make_vector(make_vector(1, 2),make_vector('a', 'b'));
    +vector<int,char> v1(1, 'a');
    +vector<int,char> v2(2, 'b');
    +assert(zip(v1, v2) == make_vector(make_vector(1, 2),make_vector('a', 'b'));
     
    @@ -147,7 +147,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions.html b/doc/html/fusion/algorithms/transformation/metafunctions.html index c4de0434..0f2ff997 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions.html @@ -3,24 +3,24 @@ Metafunctions - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -54,7 +54,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/clear.html b/doc/html/fusion/algorithms/transformation/metafunctions/clear.html index 03814118..848d0a47 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions/clear.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions/clear.html @@ -3,38 +3,38 @@ clear - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Returns the result type of clear, given the input sequence + Returns the result type of clear, given the input sequence type.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.81. Parameters

    +

    Table 1.82. Parameters

    @@ -74,7 +74,7 @@

    - Sequence + Sequence

    @@ -91,30 +91,30 @@
    - + Expression Semantics
    -result_of::clear<Sequence>::type
    +result_of::clear<Sequence>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns an empty sequence. + Semantics: Returns an empty sequence.

    - + Complexity

    Constant.

    - + Header
    @@ -128,7 +128,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/erase.html b/doc/html/fusion/algorithms/transformation/metafunctions/erase.html index 96a5b17e..31344d05 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions/erase.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions/erase.html @@ -3,38 +3,38 @@ erase - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    - Returns the result type of erase, given the input sequence + Returns the result type of erase, given the input sequence and range delimiting iterator types.

    - + Description
    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.82. Parameters

    +

    Table 1.83. Parameters

    @@ -76,7 +76,7 @@

    - Sequence + Sequence

    @@ -95,7 +95,7 @@

    - It1 + It1

    @@ -114,7 +114,7 @@

    - It2 + It2

    @@ -134,44 +134,44 @@
    - + Expression Semantics
    -result_of::erase<Sequence, It1>::type
    +result_of::erase<Sequence, It1>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence with - the element at It1 removed. + Semantics: Returns a new sequence with + the element at It1 removed.

    -result_of::erase<Sequence, It1, It2>::type
    +result_of::erase<Sequence, It1, It2>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a new sequence with - the elements between It1 - and It2 removed. + Semantics: Returns a new sequence with + the elements between It1 + and It2 removed.

    - + Complexity

    Constant.

    - + Header
    @@ -185,7 +185,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html b/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html index 73d9f525..dd6dd245 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions/erase_key.html @@ -3,38 +3,38 @@ erase_key - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Returns the result type of erase_key, given the sequence + Returns the result type of erase_key, given the sequence and key types.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.83. Parameters

    +

    Table 1.84. Parameters

    @@ -76,7 +76,7 @@

    - Sequence + Sequence

    @@ -95,7 +95,7 @@

    - Key + Key

    @@ -113,32 +113,32 @@
    - + Expression Semantics
    -result_of::erase_key<Sequence, Key>::type
    +result_of::erase_key<Sequence, Key>::type
     

    - Return type: A model of Return type: A model of Associative Sequence.

    - Semantics: Returns a sequence with the - elements of Sequence, - except those with key Key. + Semantics: Returns a sequence with the + elements of Sequence, + except those with key Key.

    - + Complexity

    Constant.

    - + Header
    @@ -152,7 +152,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/filter.html b/doc/html/fusion/algorithms/transformation/metafunctions/filter.html index 88495f1b..f15bf0a2 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions/filter.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions/filter.html @@ -3,38 +3,38 @@ filter - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Returns the result type of filter given the sequence type + Returns the result type of filter given the sequence type and type to retain.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.73. Parameter

    +

    Table 1.73. Parameter

    @@ -76,7 +76,7 @@

    - Sequence + Sequence

    @@ -95,7 +95,7 @@

    - T + T

    @@ -113,34 +113,34 @@
    - + Expression Semantics
    -result_of::filter<Sequence, T>::type
    +result_of::filter<Sequence, T>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence containing - the elements of Sequence - that are of type T. Equivalent - to result_of::filter_if<Sequence, - boost::is_same<mpl::_, T> >::type. + Semantics: Returns a sequence containing + the elements of Sequence + that are of type T. Equivalent + to result_of::filter_if<Sequence, + boost::is_same<mpl::_, T> >::type.

    - + Complexity

    Constant.

    - + Header
    @@ -154,7 +154,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html index 924d6d59..8906392b 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions/filter_if.html @@ -3,39 +3,39 @@ filter_if - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Returns the result type of filter_if given the sequence + Returns the result type of filter_if given the sequence and unary MPL Lambda Expression predicate type.

    - + Synopsis
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.74. Parameter

    +

    Table 1.74. Parameter

    @@ -77,7 +77,7 @@

    - Sequence + Sequence

    @@ -96,7 +96,7 @@

    - Pred + Pred

    @@ -115,33 +115,33 @@
    - + Expression Semantics
    -result_of::filter_if<Sequence, Pred>::type
    +result_of::filter_if<Sequence, Pred>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence containing - the elements of Sequence - for which Pred evaluates - to boost::mpl::true_. + Semantics: Returns a sequence containing + the elements of Sequence + for which Pred evaluates + to boost::mpl::true_.

    - + Complexity

    Constant.

    - + Header
    @@ -155,7 +155,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/insert.html b/doc/html/fusion/algorithms/transformation/metafunctions/insert.html index 0be4e506..20a5d409 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions/insert.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions/insert.html @@ -3,38 +3,38 @@ insert - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Returns the result type of insert, given the sequence, + Returns the result type of insert, given the sequence, position iterator and insertion types.

    - + Synopsis
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.84. Parameters

    +

    Table 1.85. Parameters

    @@ -77,7 +77,7 @@

    - Sequence + Sequence

    @@ -96,7 +96,7 @@

    - Position + Position

    @@ -115,7 +115,7 @@

    - T + T

    @@ -133,33 +133,33 @@
    - + Expression Semantics
    -result_of::insert<Sequence, Position, T>::type
    +result_of::insert<Sequence, Position, T>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence with an - element of type T inserted - at position Position - in Sequence. + Semantics: Returns a sequence with an + element of type T inserted + at position Position + in Sequence.

    - + Complexity

    Constant.

    - + Header
    @@ -173,7 +173,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html b/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html index f527f3bb..a6482a74 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions/insert_range.html @@ -3,38 +3,38 @@ insert_range - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Returns the result type of insert_range, given the input + Returns the result type of insert_range, given the input sequence, position iterator and insertion range types.

    - + Synopsis
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.85. Parameters

    +

    Table 1.86. Parameters

    @@ -77,7 +77,7 @@

    - Sequence + Sequence

    @@ -96,7 +96,7 @@

    - Position + Position

    @@ -115,7 +115,7 @@

    - Range + Range

    @@ -135,33 +135,33 @@
    - + Expression Semantics
    -result_of::insert_range<Sequence, Position, Range>::type
    +result_of::insert_range<Sequence, Position, Range>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence with the - elements of Range inserted - at position Position - into Sequence. + Semantics: Returns a sequence with the + elements of Range inserted + at position Position + into Sequence.

    - + Complexity

    Constant.

    - + Header
    @@ -175,7 +175,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/join.html b/doc/html/fusion/algorithms/transformation/metafunctions/join.html index fff63a5f..756668ab 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions/join.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions/join.html @@ -3,37 +3,37 @@ join - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    Returns the result of joining 2 sequences, given the sequence types.

    - + Synopsis
    @@ -47,33 +47,33 @@
     };
     
    - + Expression Semantics
    -result_of::join<LhSequence, RhSequence>::type
    +result_of::join<LhSequence, RhSequence>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence containing - the elements of LhSequence - followed by the elements of RhSequence. + Semantics: Returns a sequence containing + the elements of LhSequence + followed by the elements of RhSequence. The order of the elements in the 2 sequences is preserved.

    - + Complexity

    Constant.

    - + Header
    @@ -87,7 +87,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html b/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html index 1c00e9f1..86a05857 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions/pop_back.html @@ -3,38 +3,38 @@ pop_back - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Returns the result type of pop_back, given the input sequence + Returns the result type of pop_back, given the input sequence type.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.86. Parameters

    +

    Table 1.87. Parameters

    @@ -74,7 +74,7 @@

    - Sequence + Sequence

    @@ -93,32 +93,32 @@
    - + Expression Semantics
    -result_of::pop_back<Sequence>::type
    +result_of::pop_back<Sequence>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence with all - the elements of Sequence + Semantics: Returns a sequence with all + the elements of Sequence except the last element.

    - + Complexity

    Constant.

    - + Header
    @@ -132,7 +132,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html b/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html index 7d71fe88..309d7ff8 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions/pop_front.html @@ -3,38 +3,38 @@ pop_front - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Returns the result type of pop_front, given the input sequence + Returns the result type of pop_front, given the input sequence type.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.87. Parameters

    +

    Table 1.88. Parameters

    @@ -74,7 +74,7 @@

    - Sequence + Sequence

    @@ -93,32 +93,32 @@
    - + Expression Semantics
    -result_of::pop_front<Sequence>::type
    +result_of::pop_front<Sequence>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence with all - the elements of Sequence + Semantics: Returns a sequence with all + the elements of Sequence except the first element.

    - + Complexity

    Constant.

    - + Header
    @@ -132,7 +132,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html b/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html index 272a506b..651aef5d 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions/push_back.html @@ -3,38 +3,38 @@ push_back - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Returns the result type of push_back, given the types of + Returns the result type of push_back, given the types of the input sequence and element to push.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.88. Parameters

    +

    Table 1.89. Parameters

    @@ -76,7 +76,7 @@

    - Sequence + Sequence

    @@ -95,7 +95,7 @@

    - T + T

    @@ -113,33 +113,33 @@
    - + Expression Semantics
    -result_of::push_back<Sequence, T>::type
    +result_of::push_back<Sequence, T>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence with the - elements of Sequence - and an element of type T + Semantics: Returns a sequence with the + elements of Sequence + and an element of type T added to the end.

    - + Complexity

    Constant.

    - + Header
    @@ -153,7 +153,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html b/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html index a415378a..ea40b769 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions/push_front.html @@ -3,38 +3,38 @@ push_front - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Returns the result type of push_front, given the types + Returns the result type of push_front, given the types of the input sequence and element to push.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.89. Parameters

    +

    Table 1.90. Parameters

    @@ -76,7 +76,7 @@

    - Sequence + Sequence

    @@ -95,7 +95,7 @@

    - T + T

    @@ -113,33 +113,33 @@
    - + Expression Semantics
    -result_of::push_front<Sequence, T>::type
    +result_of::push_front<Sequence, T>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence with the - elements of Sequence - and an element of type T + Semantics: Returns a sequence with the + elements of Sequence + and an element of type T added to the beginning.

    - + Complexity

    Constant.

    - + Header
    @@ -153,7 +153,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/remove.html b/doc/html/fusion/algorithms/transformation/metafunctions/remove.html index af5c8dde..e7fcd282 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions/remove.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions/remove.html @@ -3,38 +3,38 @@ remove - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Returns the result type of remove, given the sequence and + Returns the result type of remove, given the sequence and removal types.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.78. Parameters

    +

    Table 1.79. Parameters

    @@ -76,7 +76,7 @@

    - Sequence + Sequence

    @@ -95,7 +95,7 @@

    - T + T

    @@ -113,34 +113,34 @@
    - + Expression Semantics
    -result_of::remove<Sequence, T>::type
    +result_of::remove<Sequence, T>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence containing - the elements of Sequence - not of type T. Equivalent - to result_of::replace_if<Sequence, - boost::is_same<mpl::_, T> >::type. + Semantics: Returns a sequence containing + the elements of Sequence + not of type T. Equivalent + to result_of::replace_if<Sequence, + boost::is_same<mpl::_, T> >::type.

    - + Complexity

    Constant.

    - + Header
    @@ -154,7 +154,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html index 2ddbba4f..c872fb81 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions/remove_if.html @@ -3,39 +3,39 @@ remove_if - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Returns the result type of remove_if, given the input sequence + Returns the result type of remove_if, given the input sequence and unary MPL Lambda Expression predicate types.

    - + Synopsis
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.79. Parameters

    +

    Table 1.80. Parameters

    @@ -77,7 +77,7 @@ @@ -115,33 +115,33 @@

    - Sequence + Sequence

    @@ -96,7 +96,7 @@

    - Pred + Pred

    @@ -107,7 +107,7 @@

    - Remove elements which evaluate to boost::mpl::true_ + Remove elements which evaluate to boost::mpl::true_

    - + Expression Semantics
    -result_of::remove_if<Sequence, Pred>::type
    +result_of::remove_if<Sequence, Pred>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence containing - the elements of Sequence - for which Pred evaluates - to boost::mpl::false_. + Semantics: Returns a sequence containing + the elements of Sequence + for which Pred evaluates + to boost::mpl::false_.

    - + Complexity

    Constant.

    - + Header
    @@ -155,7 +155,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/replace.html b/doc/html/fusion/algorithms/transformation/metafunctions/replace.html index 377e3fab..e294e80d 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions/replace.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions/replace.html @@ -3,38 +3,38 @@ replace - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Returns the result type of replace, given the types of + Returns the result type of replace, given the types of the input sequence and element to replace.

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.76. Parameters

    +

    Table 1.77. Parameters

    @@ -76,7 +76,7 @@

    - Sequence + Sequence

    @@ -95,7 +95,7 @@

    - T + T

    @@ -113,31 +113,31 @@
    - + Expression Semantics
    -result_of::replace<Sequence,T>::type
    +result_of::replace<Sequence,T>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns the return type of - replace. + Semantics: Returns the return type of + replace.

    - + Complexity

    Constant.

    - + Header
    @@ -151,7 +151,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html b/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html index 7c2bc12a..11a76dd0 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions/replace_if.html @@ -3,40 +3,40 @@ replace_if - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Returns the result type of replace_if, given the types + Returns the result type of replace_if, given the types of the sequence, Polymorphic Function Object predicate and replacement object.

    - + Synopsis
    @@ -50,7 +50,7 @@
     };
     
    -

    Table 1.77. Parameters

    +

    Table 1.78. Parameters

    @@ -78,7 +78,7 @@

    - Sequence + Sequence

    @@ -97,7 +97,7 @@

    - F + F

    @@ -116,7 +116,7 @@

    - T + T

    @@ -134,31 +134,31 @@
    - + Expression Semantics
    -result_of::replace_if<Sequence,F,T>::type
    +result_of::replace_if<Sequence,F,T>::type
     

    - Return type: A model of Return type: A model of Forward Sequence.

    - Semantics: Returns the return type of - replace_if. + Semantics: Returns the return type of + replace_if.

    - + Complexity

    Constant.

    - + Header
    @@ -172,7 +172,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html b/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html index 611743f9..9cab050a 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions/reverse.html @@ -3,38 +3,38 @@ reverse - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Returns the result type of reverse, given the input sequence + Returns the result type of reverse, given the input sequence type.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.80. Parameters

    +

    Table 1.81. Parameters

    @@ -74,7 +74,7 @@

    - Sequence + Sequence

    @@ -93,31 +93,31 @@
    - + Expression Semantics
    -result_of::reverse<Sequence>::type
    +result_of::reverse<Sequence>::type
     

    - Return type: A model of Return type: A model of Bidirectional Sequence.

    - Semantics: Returns a sequence with the - elements in the reverse order to Sequence. + Semantics: Returns a sequence with the + elements in the reverse order to Sequence.

    - + Complexity

    Constant.

    - + Header
    @@ -131,7 +131,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/transform.html b/doc/html/fusion/algorithms/transformation/metafunctions/transform.html index c540e017..dc21f9c4 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions/transform.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions/transform.html @@ -3,54 +3,54 @@ transform - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Returns the result of type transform, given the sequence - and Polymorphic Function - Object types. + For a sequence seq and + function object or function pointer f, + transform returns a new + sequence with elements created by applying f(e) to each element of e + of seq.

    -
    - - Synopsis +
    + + Unary + version synopsis
     template<
         typename Sequence,
         typename F
         >
    -struct transform
    -{
    -    typedef unspecified type;
    -};
    +typename result_of::transform<Sequence const, F>::type transform(
    +    Sequence const& seq, F f);
     
    -

    Table 1.75. Parameters

    +

    Table 1.75. Parameters

    @@ -78,7 +78,7 @@ @@ -117,36 +118,166 @@

    - Sequence + seq

    @@ -97,19 +97,20 @@

    - F + f

    - A model of unary Polymorphic - Function Object + f(e) + is a valid expression for each element e + of seq. boost::result_of<F(E)>::type is the return type of f when called with a value of + each element type E.

    - Transformation function object + Transformation function

    - + Expression Semantics
    -result_of::transform<Sequence, F>::type
    +transform(seq, f);
     

    - Return type: A model of Return type: A model of Forward + Sequence +

    +

    + Semantics: Returns a new sequence, containing + the return values of f(e) for each element e + within seq. +

    +
    + + Binary + version synopsis +
    +
    +template<
    +    typename Sequence1,
    +    typename Sequence2,
    +    typename F
    +    >
    +typename result_of::transform<Sequence1 const, Sequence2 const, F>::type transform(
    +    Sequence1 const& seq1, Sequence2 const& seq2, F f);
    +
    +
    +

    Table 1.76. Parameters

    + +++++ + + + + + + + + + + + + + + + + + + + + + + +
    +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    +

    + seq1 +

    +
    +

    + A model of Forward + Sequence +

    +
    +

    + Operation's argument +

    +
    +

    + seq2 +

    +
    +

    + A model of Forward + Sequence +

    +
    +

    + Operation's argument +

    +
    +

    + f +

    +
    +

    + f(e1,e2) + is a valid expression for each pair of elements e1 + of seq1 and e2 of seq2. + boost::result_of<F(E1,E2)>::type is the return type of f when called with elements of + type E1 and E2 +

    +
    +

    + Transformation function +

    +
    +
    +

    + Return type: A model of Forward Sequence.

    - Semantics: Returns a sequence with values - F::result<E>::type for each element type E in Sequence. + Semantics: Returns a new sequence, containing + the return values of f(e1, e2) for each pair of elements e1 and e2 + within seq1 and seq2 respectively.

    - + Complexity

    - Constant. + Constant. Returns a view which is lazily evaluated.

    - + Header
     #include <boost/fusion/algorithm/transformation/transform.hpp>
     
    +
    + + Example +
    +
    +struct triple
    +{
    +    typedef int result_type;
    +
    +    int operator()(int t) const
    +    {
    +        return t * 3;
    +    };
    +};
    +...
    +assert(transform(make_vector(1,2,3), triple()) == make_vector(3,6,9));
    +
    @@ -155,7 +286,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/algorithms/transformation/metafunctions/zip.html b/doc/html/fusion/algorithms/transformation/metafunctions/zip.html index 79584652..9a629d83 100644 --- a/doc/html/fusion/algorithms/transformation/metafunctions/zip.html +++ b/doc/html/fusion/algorithms/transformation/metafunctions/zip.html @@ -3,30 +3,30 @@ zip - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    @@ -34,7 +34,7 @@ of the members of the component sequences.

    - + Synopsis
    @@ -50,37 +50,37 @@
     };
     
    - + Expression Semantics
    -result_of::zip<Sequence1, Sequence2, ... SequenceN>::type
    +result_of::zip<Sequence1, Sequence2, ... SequenceN>::type
     

    - Return type: A model of the most restrictive - traversal category of sequences Sequence1 - to SequenceN. + Return type: A model of the most restrictive + traversal category of sequences Sequence1 + to SequenceN.

    - Semantics: Return a sequence containing + Semantics: Return a sequence containing tuples of elements from each sequence. For example, applying zip to tuples - (1, 2, - 3) - and ('a', 'b', - 'c') - would return ((1, 'a'),(2, 'b'),(3, - 'c')) + (1, 2, + 3) + and ('a', 'b', + 'c') + would return ((1, 'a'),(2, 'b'),(3, + 'c'))

    - + Complexity

    Constant.

    - + Header
    @@ -94,7 +94,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/change_log.html b/doc/html/fusion/change_log.html index 8a3fbe13..b21a629f 100644 --- a/doc/html/fusion/change_log.html +++ b/doc/html/fusion/change_log.html @@ -3,24 +3,24 @@ Change log - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -30,11 +30,11 @@

    • - Sep 27, 2006: Added boost::tuple + Sep 27, 2006: Added boost::tuple support.
    • - Nov 17, 2006: Added boost::variant + Nov 17, 2006: Added boost::variant support.
    • @@ -49,7 +49,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/extension.html b/doc/html/fusion/extension.html index 711094bc..6187ce86 100644 --- a/doc/html/fusion/extension.html +++ b/doc/html/fusion/extension.html @@ -3,32 +3,32 @@ Extension - + - +
      -
      Boost C++ Libraries Home Libraries People FAQ More
      +
      -PrevUpHomeNext +PrevUpHomeNext

      The Fusion library is designed to be extensible, new sequences types can easily - be added. In fact, the library support for std::pair, - boost::array and MPL + be added. In fact, the library support for std::pair, + boost::array and MPL sequences is entirely provided using the extension mechanism.

      @@ -48,7 +48,7 @@

    - + Our example

    @@ -73,14 +73,14 @@

    We are going to pretend that this type has been provided by a 3rd party library, and therefore cannot be modified. We shall work through all the necessary steps - to enable example_struct to + to enable example_struct to serve as an Associative Sequence as described in the Quick Start guide.

    - + Enabling Tag Dispatching

    @@ -95,9 +95,9 @@ }

    - Next we need to enable the traits::tag_of + Next we need to enable the traits::tag_of metafunction to return our newly chosen tag type for operations involving our - sequence. This is done by specializing traits::tag_of + sequence. This is done by specializing traits::tag_of for our sequence type.

    @@ -112,8 +112,8 @@
     }}}
     

    - traits::tag_of also has a second template argument, - that can be used in conjuction with boost::enable_if + traits::tag_of also has a second template argument, + that can be used in conjuction with boost::enable_if to provide tag support for groups of related types. This feature is not necessary for our sequence, but for an example see the code in:

    @@ -121,7 +121,7 @@ #include <boost/fusion/sequence/adapted/mpl/tag_of.hpp>

    - + Designing a suitable iterator

    @@ -131,9 +131,9 @@ access iterator in our example.

    - We will use a simple design, in which the 2 members of example_struct - are given numbered indices, 0 for name - and 1 for age respectively. + We will use a simple design, in which the 2 members of example_struct + are given numbered indices, 0 for name + and 1 for age respectively.

     template<typename Struct, int Pos>
    @@ -160,37 +160,37 @@
             of the current element.
           
     
  • - The typedefs struct_type - and index provide convenient + The typedefs struct_type + and index provide convenient access to information we will need later in the implementation.
  • - The typedef category allows - the traits::category_of + The typedef category allows + the traits::category_of metafunction to establish the traversal category of the iterator.
  • - The constructor stores a reference to the example_struct + The constructor stores a reference to the example_struct being iterated over.
  • We also need to enable tag dispatching for our iterator type, with another specialization - of traits::tag_of. + of traits::tag_of.

    In isolation, the iterator implementation is pretty dry. Things should become clearer as we add features to our implementation.

    - + A first couple of instructive features

    - To start with, we will get the result_of::value_of metafunction working. To - do this, we provide a specialization of the boost::fusion::extension::value_of_impl + To start with, we will get the result_of::value_of metafunction working. To + do this, we provide a specialization of the boost::fusion::extension::value_of_impl template for our iterator's tag type.

    @@ -215,22 +215,22 @@
     

    The implementation itself is pretty simple, it just uses 2 partial specializations - to provide the type of the 2 different members of example_struct, + to provide the type of the 2 different members of example_struct, based on the index of the iterator.

    - To understand how value_of_impl - is used by the library we will look at the implementation of value_of: + To understand how value_of_impl + is used by the library we will look at the implementation of value_of:

     template <typename Iterator>
    -struct value_of
    +struct value_of
         : extension::value_of_impl<typename detail::tag_of<Iterator>::type>::
             template apply<Iterator>
     {};
     

    - So value_of + So value_of uses tag dispatching to select an MPL Metafunction Class to provide its functionality. You will notice this @@ -238,7 +238,7 @@

    Ok, lets enable dereferencing of our iterator. In this case we must provide - a suitable specialization of deref_impl. + a suitable specialization of deref_impl.

     template<>
    @@ -276,17 +276,17 @@
     }
     

    - The use of deref_impl is very - similar to that of value_of_impl, - but it also provides some runtime functionality this time via the call static member function. To see how - deref_impl is used, lets have - a look at the implementation of deref: + The use of deref_impl is very + similar to that of value_of_impl, + but it also provides some runtime functionality this time via the call static member function. To see how + deref_impl is used, lets have + a look at the implementation of deref:

     namespace result_of
     {
         template <typename Iterator>
    -    struct deref
    +    struct deref
             : extension::deref_impl<typename detail::tag_of<Iterator>::type>::
                 template apply<Iterator>
         {};
    @@ -294,54 +294,48 @@
     
     template <typename Iterator>
     typename result_of::deref<Iterator>::type
    -deref(Iterator const& i)
    +deref(Iterator const& i)
     {
         typedef result_of::deref<Iterator> deref_meta;
         return deref_meta::call(i);
     }
     

    - So again result_of::deref uses tag - dispatching in exactly the same way as the value_of implementation. The runtime - functionality used by deref is provided by the call static function of the selected MPL + So again result_of::deref uses tag + dispatching in exactly the same way as the value_of implementation. The runtime + functionality used by deref is provided by the call static function of the selected MPL Metafunction Class.

    - The actual implementation of deref_impl - is slightly more complex than that of value_of_impl. - We also need to implement the call + The actual implementation of deref_impl + is slightly more complex than that of value_of_impl. + We also need to implement the call function, which returns a reference to the appropriate member of the underlying - sequence. We also require a little bit of metaprogramming to return const references if the underlying sequence + sequence. We also require a little bit of metaprogramming to return const references if the underlying sequence is const.

    - + - +
    [Note][Note] Note
    -

    -

    -

    - Although there is a fair amount of left to do to produce a fully fledged - Fusion sequence, value_of and deref illustrate all the signficant - concepts required. The remainder of the process is very repetitive, simply - requiring implementation of a suitable xxxx_impl - for each feature xxxx. -

    -

    -

    -

    + Although there is a fair amount of left to do to produce a fully fledged + Fusion sequence, value_of and deref illustrate all the signficant + concepts required. The remainder of the process is very repetitive, simply + requiring implementation of a suitable xxxx_impl + for each feature xxxx. +

    - + Implementing the remaining iterator functionality

    - Ok, now we have seen the way value_of and deref work, everything else will work + Ok, now we have seen the way value_of and deref work, everything else will work in pretty much the same way. Lets start with forward iteration, by providing - a next_impl: + a next_impl:

     template<>
    @@ -363,40 +357,40 @@
     };
     

    - This should be very familiar from our deref_impl + This should be very familiar from our deref_impl implementation, we will be using this approach again and again now. Our design - is simply to increment the index + is simply to increment the index counter to move on to the next element. The various other iterator manipulations - we need to perform will all just involve simple calculations with the index variables. + we need to perform will all just involve simple calculations with the index variables.

    - We also need to provide a suitable equal_to_impl + We also need to provide a suitable equal_to_impl so that iterators can be correctly compared. A Bidirectional - Iterator will also need an implementation of prior_impl. + Iterator will also need an implementation of prior_impl. For a Random - Access Iterator distance_impl - and advance_impl also need + Access Iterator distance_impl + and advance_impl also need to be provided in order to satisfy the necessary complexity guarantees. As our iterator is a Random Access Iterator we will have to implement all of these functions.

    - Full implementations of prior_impl, - advance_impl, distance_impl and equal_to_impl + Full implementations of prior_impl, + advance_impl, distance_impl and equal_to_impl are provided in the example code.

    - + Implementing the intrinsic functions of the sequence

    In order that Fusion can correctly identify our sequence as a Fusion sequence, - we need to enable is_sequence - for our sequence type. As usual we just create an impl + we need to enable is_sequence + for our sequence type. As usual we just create an impl type specialized for our sequence tag:

    @@ -408,14 +402,14 @@
     };
     

    - We've some similar formalities to complete, providing category_of_impl - so Fusion can correctly identify our sequence type, and is_view_impl + We've some similar formalities to complete, providing category_of_impl + so Fusion can correctly identify our sequence type, and is_view_impl so Fusion can correctly identify our sequence as not being a View type. Implementations are provide in the example code.

    Now we've completed some formalities, on to more interesting features. Lets - get begin working so that we can get an + get begin working so that we can get an iterator to start accessing the data in our sequence.

    @@ -438,32 +432,32 @@
     

    The implementation uses the same ideas we have applied throughout, in this case we are just creating one of the iterators we developed earlier, pointing - to the first element in the sequence. The implementation of end is very similar, and is provided + to the first element in the sequence. The implementation of end is very similar, and is provided in the example code.

    For our Random - Access Sequence we will also need to implement size_impl, - value_at_impl and at_impl. + Access Sequence we will also need to implement size_impl, + value_at_impl and at_impl.

    - + Enabling our type as an associative container

    - In order for example_struct + In order for example_struct to serve as an associative container, we need to enable 3 lookup features, - at_key, value_at_key and has_key. We also need to provide an - implementation of the is_associative + at_key, value_at_key and has_key. We also need to provide an + implementation of the is_associative trait so that our sequence can be correctly identified as an associative container.

    - To implement at_key_impl we - need to associate the fields::age and - fields::age types described in the Quick - Start guide with the appropriate members of example_struct. + To implement at_key_impl we + need to associate the fields::age and + fields::age types described in the Quick + Start guide with the appropriate members of example_struct. Our implementation is as follows:

    @@ -506,15 +500,15 @@
     

    Its all very similar to the implementations we've seen previously, such as - deref_impl and value_of_impl. Instead of identifying the - members by index or position, we are now selecting them using the types fields::name and fields::age. The - implementations of value_at_key_impl - and has_key_impl are equally + deref_impl and value_of_impl. Instead of identifying the + members by index or position, we are now selecting them using the types fields::name and fields::age. The + implementations of value_at_key_impl + and has_key_impl are equally straightforward, and are provided in the example code, along with an implementation - of is_associative_impl. + of is_associative_impl.

    - + Summary

    @@ -524,8 +518,8 @@ pattern.

    - The support for std::pair, MPL - sequences, and boost::array all use the same approach, and provide + The support for std::pair, MPL + sequences, and boost::array all use the same approach, and provide additional examples of the approach for a variety of types.

    @@ -536,7 +530,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional.html b/doc/html/fusion/functional.html index 025520fe..be17d634 100644 --- a/doc/html/fusion/functional.html +++ b/doc/html/fusion/functional.html @@ -3,24 +3,24 @@ Functional - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -62,14 +62,14 @@ through a function object interface.

    - + Header

     #include <boost/fusion/functional.hpp>
     

    - + Fused and unfused forms

    @@ -83,7 +83,7 @@ It is a name and a tuple written next to each other, left-to-right.

    - Although the C++ syntax does not allow to replace (a,b,c) + Although the C++ syntax does not allow to replace (a,b,c) with some Fusion Sequence, introducing yet another function provides a solution:

    @@ -91,22 +91,22 @@ invoke(f,my_sequence)

    - Alternatively it is possible to apply a simple transformation to f + Alternatively it is possible to apply a simple transformation to f in order to achieve the same effect:

     f tuple <=> f' (tuple)
     

    - Now, f' is an unary function that takes the arguments to - f as a tuple; f' - is the fused form of f. + Now, f' is an unary function that takes the arguments to + f as a tuple; f' + is the fused form of f. Reading the above equivalence right-to-left to get the inverse transformation, - f is the unfused - form of f'. + f is the unfused + form of f'.

    - + Calling functions and function objects

    @@ -134,7 +134,7 @@ instance for the given argument.

    - + Making Fusion code callable through a function object interface

    @@ -159,7 +159,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/adapters.html b/doc/html/fusion/functional/adapters.html index b435b48c..ae619462 100644 --- a/doc/html/fusion/functional/adapters.html +++ b/doc/html/fusion/functional/adapters.html @@ -3,7 +3,7 @@ Adapters - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -46,7 +46,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/adapters/fused.html b/doc/html/fusion/functional/adapters/fused.html index e5c75988..11971f4b 100644 --- a/doc/html/fusion/functional/adapters/fused.html +++ b/doc/html/fusion/functional/adapters/fused.html @@ -3,30 +3,30 @@ fused - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    @@ -41,29 +41,29 @@

    The type of the target function is allowed to be const qualified or a reference. Const qualification is preserved and propagated appropriately (in other - words, only const versions of operator() can be used + words, only const versions of operator() can be used for a target function object that is const or, if the target function object is held by value, the adapter is const - these semantics have nothing to do with the const qualification of a member function, which is referring - to the type of object pointed to by this which is specified + to the type of object pointed to by this which is specified with the first element in the sequence passed to the adapter).

    If the target function is a pointer to a class members, the corresponding object can be specified as a reference, pointer, or smart pointer. In case - of the latter, a freestanding get_pointer function must - be defined (Boost provides this function for std::auto_ptr - and boost::shared_ptr). + of the latter, a freestanding get_pointer function must + be defined (Boost provides this function for std::auto_ptr + and boost::shared_ptr).

    - + Header
     #include <boost/fusion/functional/adapter/fused.hpp>
     
    - + Synopsis
    @@ -71,7 +71,7 @@
     class fused;
     
    - + Template parameters
    @@ -101,7 +101,7 @@

    - Function + Function

    @@ -118,7 +118,7 @@

    - + Model of
      @@ -132,29 +132,29 @@

      Notation

      -
      R
      -
      - A possibly const qualified R +

      + A possibly const qualified Deferred - Callable Object type or reference type thereof -

      -
      r
      -
      - An object convertible to R -
      -
      s
      -
      - A Sequence of arguments that - are accepted by r -
      -
      f
      -
      - An instance of fused<R> -
      + Callable Object type or reference type thereof +

      +
      r
      +

      + An object convertible to R +

      +
      s
      +

      + A Sequence of arguments that + are accepted by r +

      +
      f
      +

      + An instance of fused<R> +

      - + Expression Semantics
      @@ -179,38 +179,38 @@

      - fused<R>(r) + fused<R>(r)

      Creates a fused function as described above, initializes the target - function with r. + function with r.

      - fused<R>() + fused<R>()

      - Creates a fused function as described above, attempts to use R's default constructor. + Creates a fused function as described above, attempts to use R's default constructor.

      - f(s) + f(s)

      - Calls r with the - elements in s as + Calls r with the + elements in s as its arguments.

      @@ -218,22 +218,22 @@
    - + Example
    -fused< std::plus<long> > f;
    -assert(f(make_vector(1,2l)) == 3l);
    +fused< std::plus<long> > f;
    +assert(f(make_vector(1,2l)) == 3l);
     
    - + See also
    @@ -243,7 +243,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/adapters/fused_function_object.html b/doc/html/fusion/functional/adapters/fused_function_object.html index 765cbc65..29f32254 100644 --- a/doc/html/fusion/functional/adapters/fused_function_object.html +++ b/doc/html/fusion/functional/adapters/fused_function_object.html @@ -3,30 +3,30 @@ fused_function_object - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    @@ -41,19 +41,19 @@

    The type of the target function is allowed to be const qualified or a reference. Const qualification is preserved and propagated appropriately (in other - words, only const versions of operator() can be used + words, only const versions of operator() can be used for an target function object that is const or, if the target function object is held by value, the adapter is const).

    - + Header
     #include <boost/fusion/functional/adapter/fused_function_object.hpp>
     
    - + Synopsis
    @@ -61,7 +61,7 @@
     class fused_function_object;
     
    - + Template parameters
    @@ -91,7 +91,7 @@

    - Function + Function

    @@ -108,7 +108,7 @@
    - + Model of
    @@ -123,29 +123,29 @@

    Notation

    -
    R
    -
    - A possibly const qualified R +

    + A possibly const qualified Polymorphic - Function Object type or reference type thereof -

    -
    r
    -
    - An object convertible to R -
    -
    s
    -
    - A Sequence of arguments that - are accepted by r -
    -
    f
    -
    - An instance of fused<R> -
    + Function Object type or reference type thereof +

    +
    r
    +

    + An object convertible to R +

    +
    s
    +

    + A Sequence of arguments that + are accepted by r +

    +
    f
    +

    + An instance of fused<R> +

    - + Expression Semantics
    @@ -170,38 +170,38 @@

    - fused_function_object<R>(r) + fused_function_object<R>(r)

    Creates a fused function as described above, initializes the target - function with r. + function with r.

    - fused_function_object<R>() + fused_function_object<R>()

    - Creates a fused function as described above, attempts to use R's default constructor. + Creates a fused function as described above, attempts to use R's default constructor.

    - f(s) + f(s)

    - Calls r with the - elements in s as + Calls r with the + elements in s as its arguments.

    @@ -209,16 +209,16 @@
    - + Example
     template<class SeqOfSeqs, class Func>
    -typename result_of::transform< zip_view<SeqOfSeqs> const,
    +typename result_of::transform< zip_view<SeqOfSeqs> const,
         fused_function_object<Func const &> >::type
     n_ary_transform(SeqOfSeqs const & s, Func const & f)
     {
    -    return transform(zip_view<SeqOfSeqs>(s), 
    +    return transform(zip_view<SeqOfSeqs>(s), 
             fused_function_object<Func const &>(f));
     } 
     
    @@ -240,23 +240,23 @@
     
     void try_it()
     {
    -    vector<int,float> a(2,2.0f);
    -    vector<int,float> b(1,1.5f);
    -    vector<int,float> c(1,0.5f);
    -    assert(c == n_ary_transform(vector_tie(a,b), sub()));
    +    vector<int,float> a(2,2.0f);
    +    vector<int,float> b(1,1.5f);
    +    vector<int,float> c(1,0.5f);
    +    assert(c == n_ary_transform(vector_tie(a,b), sub()));
     }
     
    - + See also
    @@ -266,7 +266,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/adapters/fused_procedure.html b/doc/html/fusion/functional/adapters/fused_procedure.html index 49f24708..d8a83368 100644 --- a/doc/html/fusion/functional/adapters/fused_procedure.html +++ b/doc/html/fusion/functional/adapters/fused_procedure.html @@ -3,30 +3,30 @@ fused_procedure - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    @@ -38,24 +38,24 @@ Sequence that contains the arguments for the target function.

    - The result is discared and the adapter's return type is void. + The result is discared and the adapter's return type is void.

    The type of the target function is allowed to be const qualified or a reference. Const qualification is preserved and propagated appropriately (in other - words, only const versions of operator() can be used + words, only const versions of operator() can be used for a target function object that is const or, if the target function object is held by value, the adapter is const - these semantics have nothing to do with the const qualification of a member function, which is referring - to the type of object pointed to by this which is specified + to the type of object pointed to by this which is specified with the first element in the sequence passed to the adapter).

    If the target function is a pointer to a members function, the corresponding object can be specified as a reference, pointer, or smart pointer. In case - of the latter, a freestanding get_pointer function must - be defined (Boost provides this function for std::auto_ptr - and boost::shared_ptr). + of the latter, a freestanding get_pointer function must + be defined (Boost provides this function for std::auto_ptr + and boost::shared_ptr).

    The target function must not be a pointer to a member object (dereferencing @@ -63,14 +63,14 @@ case is not implemented).

    - + Header
     #include <boost/fusion/functional/adapter/fused_procedure.hpp>
     
    - + Synopsis
    @@ -78,7 +78,7 @@
     class fused_procedure;
     
    - + Template parameters
    @@ -108,7 +108,7 @@

    - Function + Function

    @@ -124,7 +124,7 @@
    - + Model of
    @@ -139,28 +139,28 @@

    Notation

    -
    R
    -
    - A possibly const qualified Callable - Object type or reference type thereof -
    -
    r
    -
    - An object convertible to R -
    -
    s
    -
    - A Sequence of arguments that - are accepted by r -
    -
    f
    -
    - An instance of fused<R> -
    +
    R
    +

    + A possibly const qualified Callable + Object type or reference type thereof +

    +
    r
    +

    + An object convertible to R +

    +
    s
    +

    + A Sequence of arguments that + are accepted by r +

    +
    f
    +

    + An instance of fused<R> +

    - + Expression Semantics
    @@ -185,38 +185,38 @@

    - fused_procedure<R>(r) + fused_procedure<R>(r)

    Creates a fused function as described above, initializes the target - function with r. + function with r.

    - fused_procedure<R>() + fused_procedure<R>()

    - Creates a fused function as described above, attempts to use R's default constructor. + Creates a fused function as described above, attempts to use R's default constructor.

    - f(s) + f(s)

    - Calls r with the - elements in s as + Calls r with the + elements in s as its arguments.

    @@ -224,36 +224,36 @@
    - + Example
     template<class SequenceOfSequences, class Func>
     void n_ary_for_each(SequenceOfSequences const & s, Func const & f)
     {
    -    for_each(zip_view<SequenceOfSequences>(s), 
    +    for_each(zip_view<SequenceOfSequences>(s), 
             fused_procedure<Func const &>(f));
     } 
     
     void try_it()
     {
    -    vector<int,float> a(2,2.0f);
    -    vector<int,float> b(1,1.5f);
    +    vector<int,float> a(2,2.0f);
    +    vector<int,float> b(1,1.5f);
         using namespace boost::lambda;
    -    n_ary_for_each(vector_tie(a,b), _1 -= _2);
    -    assert(a == make_vector(1,0.5f));
    +    n_ary_for_each(vector_tie(a,b), _1 -= _2);
    +    assert(a == make_vector(1,0.5f));
     }
     
    - + See also
    @@ -263,7 +263,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/adapters/unfused_generic.html b/doc/html/fusion/functional/adapters/unfused_generic.html index 6a9a3b56..cb2e3738 100644 --- a/doc/html/fusion/functional/adapters/unfused_generic.html +++ b/doc/html/fusion/functional/adapters/unfused_generic.html @@ -3,30 +3,30 @@ unfused_generic - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    @@ -45,24 +45,24 @@ tip Detecting mutable LValues on a per-argument basis is currently a compile time expensive operation (see The Forwarding Problem for details). Therefore, there are two, lightweight - and more restricted variants of this class template, unfused_lvalue_args and unfused_rvalue_args. + and more restricted variants of this class template, unfused_lvalue_args and unfused_rvalue_args.

    The type of the target function is allowed to be const qualified or a reference. Const qualification is preserved and propagated appropriately (in other - words, only const versions of operator() can be used + words, only const versions of operator() can be used if the target function object is const - or, in case the target function object is held by value, the adapter is const).

    - + Header
     #include <boost/fusion/functional/adapter/unfused_generic.hpp>
     
    - + Synopsis
    @@ -70,7 +70,7 @@
     class unfused_generic;
     
    - + Template parameters
    @@ -100,7 +100,7 @@

    - Function + Function

    @@ -117,7 +117,7 @@
    - + Model of
    @@ -132,33 +132,33 @@

    Notation

    -
    F
    -
    - A possibly const qualified, unary F +

    + A possibly const qualified, unary Polymorphic - Function Object type or reference type thereof -

    -
    f
    -
    - An object convertible to F -
    -
    UG
    -
    - The type unfused_generic<F> -
    -
    ug
    -
    - An instance of UG, initialized - with f -
    -
    a0...aN
    -
    - Arguments to ug -
    + Function Object type or reference type thereof +

    +
    f
    +

    + An object convertible to F +

    +
    UG
    +

    + The type unfused_generic<F> +

    +
    ug
    +

    + An instance of UG, + initialized with f +

    +
    a0...aN
    +

    + Arguments to ug +

    - + Expression Semantics
    @@ -183,46 +183,46 @@

    - UG(f) + UG(f)

    Creates a fused function as described above, initializes the target - function with f. + function with f.

    - UG() + UG()

    - Creates a fused function as described above, attempts to use F's default constructor. + Creates a fused function as described above, attempts to use F's default constructor.

    - ug(a0...aN) + ug(a0...aN)

    - Calls f with a + Calls f with a Sequence that contains - references to the arguments a0...aN. + references to the arguments a0...aN.

    - + Example
    @@ -273,16 +273,16 @@
     }
     
    - + See also
    @@ -292,7 +292,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/adapters/unfused_lvalue_args.html b/doc/html/fusion/functional/adapters/unfused_lvalue_args.html index d78a7649..af36414c 100644 --- a/doc/html/fusion/functional/adapters/unfused_lvalue_args.html +++ b/doc/html/fusion/functional/adapters/unfused_lvalue_args.html @@ -3,30 +3,30 @@ unfused_lvalue_args - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    @@ -43,19 +43,19 @@

    The type of the target function is allowed to be const qualified or a reference. Const qualification is preserved and propagated appropriately (in other - words, only const versions of operator() can be used + words, only const versions of operator() can be used if the target function object is const - or, in case the target function object is held by value, the adapter is const).

    - + Header
     #include <boost/fusion/functional/adapter/unfused_lvalue_args.hpp>
     
    - + Synopsis
    @@ -63,7 +63,7 @@
     class unfused_lvalue_args;
     
    - + Template parameters
    @@ -93,7 +93,7 @@

    - Function + Function

    @@ -110,7 +110,7 @@
    - + Model of
    @@ -125,33 +125,33 @@

    Notation

    -
    F
    -
    - A possibly const qualified, unary F +

    + A possibly const qualified, unary Polymorphic - Function Object type or reference type thereof -

    -
    f
    -
    - An object convertible to F -
    -
    UL
    -
    - The type unfused_lvalue_args<F> -
    -
    ul
    -
    - An instance of UL, initialized - with f -
    -
    a0...aN
    -
    - Arguments to ul -
    + Function Object type or reference type thereof +

    +
    f
    +

    + An object convertible to F +

    +
    UL
    +

    + The type unfused_lvalue_args<F> +

    +
    ul
    +

    + An instance of UL, + initialized with f +

    +
    a0...aN
    +

    + Arguments to ul +

    - + Expression Semantics
    @@ -176,46 +176,46 @@

    - UL(f) + UL(f)

    Creates a fused function as described above, initializes the target - function with f. + function with f.

    - UL() + UL()

    - Creates a fused function as described above, attempts to use F's default constructor. + Creates a fused function as described above, attempts to use F's default constructor.

    - ul(a0...aN) + ul(a0...aN)

    - Calls f with a + Calls f with a Sequence that contains - references to the arguments a0...aN. + references to the arguments a0...aN.

    - + Example
    @@ -230,7 +230,7 @@
         template <class Seq>
         void operator()(Seq const & s) const
         {
    -        for_each(s,++boost::lambda::_1);
    +        for_each(s,++boost::lambda::_1);
         }
     };
     
    @@ -243,14 +243,14 @@
     }
     
    - + See also
    @@ -260,7 +260,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/adapters/unfused_rvalue_args.html b/doc/html/fusion/functional/adapters/unfused_rvalue_args.html index 0975ce97..c7a3dedc 100644 --- a/doc/html/fusion/functional/adapters/unfused_rvalue_args.html +++ b/doc/html/fusion/functional/adapters/unfused_rvalue_args.html @@ -3,30 +3,30 @@ unfused_rvalue_args - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    @@ -43,19 +43,19 @@

    The type of the target function is allowed to be const qualified or a reference. Const qualification is preserved and propagated appropriately (in other - words, only const versions of operator() can be used + words, only const versions of operator() can be used if the target function object is const - or, in case the target function object is held by value, the adapter is const).

    - + Header
     #include <boost/fusion/functional/adapter/unfused_rvalue_args.hpp>
     
    - + Synopsis
    @@ -63,7 +63,7 @@
     class unfused_rvalue_args;
     
    - + Template parameters
    @@ -93,7 +93,7 @@

    - Function + Function

    @@ -110,7 +110,7 @@
    - + Model of
    @@ -125,33 +125,33 @@

    Notation

    -
    F
    -
    - A possibly const qualified, unary F +

    + A possibly const qualified, unary Polymorphic - Function Object type or reference type thereof -

    -
    f
    -
    - An object convertible to F -
    -
    UR
    -
    - The type unfused_rvalue_args<F> -
    -
    ur
    -
    - An instance of UR, initialized - with f -
    -
    a0...aN
    -
    - Arguments to ur -
    + Function Object type or reference type thereof +

    +
    f
    +

    + An object convertible to F +

    +
    UR
    +

    + The type unfused_rvalue_args<F> +

    +
    ur
    +

    + An instance of UR, + initialized with f +

    +
    a0...aN
    +

    + Arguments to ur +

    - + Expression Semantics
    @@ -176,46 +176,46 @@

    - UR(f) + UR(f)

    Creates a fused function as described above, initializes the target - function with f. + function with f.

    - UR() + UR()

    - Creates a fused function as described above, attempts to use F's default constructor. + Creates a fused function as described above, attempts to use F's default constructor.

    - ur(a0...aN) + ur(a0...aN)

    - Calls f with a + Calls f with a Sequence that contains - references to the arguments a0...aN. + references to the arguments a0...aN.

    - + Example
    @@ -241,16 +241,16 @@
     }
     
    - + See also
    @@ -260,7 +260,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/adapters/unfused_typed.html b/doc/html/fusion/functional/adapters/unfused_typed.html index 0c9badef..22c18ac2 100644 --- a/doc/html/fusion/functional/adapters/unfused_typed.html +++ b/doc/html/fusion/functional/adapters/unfused_typed.html @@ -3,30 +3,30 @@ unfused_typed - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    @@ -46,7 +46,7 @@

    The type of the target function is allowed to be const qualified or a reference. Const qualification is preserved and propagated appropriately (in other - words, only const versions of operator() can be used + words, only const versions of operator() can be used if the target function object is const - or, in case the target function object is held by value, the adapter is const).

    @@ -62,14 +62,14 @@ signature is optimized automatically to avoid by-value parameters.

    - + Header
     #include <boost/fusion/functional/adapter/unfused_typed.hpp>
     
    - + Synopsis
    @@ -77,7 +77,7 @@
     class unfused_typed;
     
    - + Template parameters
    @@ -108,7 +108,7 @@

    - Function + Function

    @@ -126,7 +126,7 @@

    - Sequence + Sequence

    @@ -142,7 +142,7 @@
    - + Model of
    @@ -157,38 +157,38 @@

    Notation

    -
    F
    -
    - A possibly const qualified, unary F +

    + A possibly const qualified, unary Polymorphic - Function Object type or reference type thereof -

    -
    f
    -
    - An object convertible to F -
    -
    S
    -
    - A Sequence of parameter types -
    -
    UT
    -
    - The type unfused_typed<F,S> -
    -
    ut
    -
    - An instance of UT, initialized - with f -
    -
    a0...aN
    -
    - Arguments to ut, convertible - to the types in S -
    + Function Object type or reference type thereof +

    +
    f
    +

    + An object convertible to F +

    +
    S
    +

    + A Sequence of parameter types +

    +
    UT
    +

    + The type unfused_typed<F,S> +

    +
    ut
    +

    + An instance of UT, + initialized with f +

    +
    a0...aN
    +

    + Arguments to ut, convertible + to the types in S +

    - + Expression Semantics
    @@ -213,48 +213,48 @@

    - UT(f) + UT(f)

    Creates a fused function as described above, initializes the target - function with f. + function with f.

    - UT() + UT()

    - Creates a fused function as described above, attempts to use F's default constructor. + Creates a fused function as described above, attempts to use F's default constructor.

    - ut(a0...aN) + ut(a0...aN)

    - Calls f with an - instance of S (or - a subsequence of S + Calls f with an + instance of S (or + a subsequence of S starting at the first element, if fewer arguments are given and - the overload hasn't been disabled) initialized with a0...aN. + the overload hasn't been disabled) initialized with a0...aN.

    - + Example
    @@ -323,15 +323,15 @@
     }
     
    - + See also
    @@ -341,7 +341,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/concepts.html b/doc/html/fusion/functional/concepts.html index 5d37381f..57f2d4ec 100644 --- a/doc/html/fusion/functional/concepts.html +++ b/doc/html/fusion/functional/concepts.html @@ -3,24 +3,24 @@ Concepts - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -42,7 +42,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/concepts/callable.html b/doc/html/fusion/functional/concepts/callable.html index bf26f10a..7173fa39 100644 --- a/doc/html/fusion/functional/concepts/callable.html +++ b/doc/html/fusion/functional/concepts/callable.html @@ -3,7 +3,7 @@ Callable Object - + @@ -11,23 +11,23 @@ Object"> - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    @@ -36,7 +36,7 @@ of a function call operator.

    - + Models
      @@ -58,7 +58,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/functional/concepts/def_callable.html b/doc/html/fusion/functional/concepts/def_callable.html index 379490a5..3b1dcfea 100644 --- a/doc/html/fusion/functional/concepts/def_callable.html +++ b/doc/html/fusion/functional/concepts/def_callable.html @@ -4,7 +4,7 @@ Deferred Callable Object - + - +
      -
      Boost C++ Libraries Home Libraries People FAQ More
      +
      -PrevUpHomeNext +PrevUpHomeNext

      @@ -31,7 +31,7 @@ Callable Object"> Deferred Callable Object

      - + Description

      @@ -40,49 +40,48 @@ to determine the result of a call.

      - + Refinement of

      Notation

      -
      F
      -
      - A possibly const qualified Deferred Callable Object type -
      -
      A1 - ...AN
      -
      - Argument types -
      -
      a1 - ...aN
      -
      - Objects or references to objects with types A1 - ...AN -
      -
      T1 - ...TN
      -
      -Ti is Ai - & if ai - is an LValue, same as Ai, - otherwise -
      +
      F
      +

      + A possibly const qualified Deferred Callable Object type +

      +
      A1 + ...AN
      +

      + Argument types +

      +
      a1 + ...aN
      +

      + Objects or references to objects with types A1 + ...AN +

      +
      T1 + ...TN
      +

      + Ti is Ai & + if ai is an LValue, + same as Ai, otherwise +

      - + Expression requirements
      @@ -106,21 +105,21 @@

      - boost::result_of< F(T1 - ...TN) >::type + boost::result_of< F(T1 + ...TN) >::type

      - Result of a call with A1 - ...AN-typed + Result of a call with A1 + ...AN-typed arguments

      - + Models
        @@ -141,7 +140,7 @@
        -PrevUpHomeNext +PrevUpHomeNext
        diff --git a/doc/html/fusion/functional/concepts/poly.html b/doc/html/fusion/functional/concepts/poly.html index 685fa1f2..51d40c94 100644 --- a/doc/html/fusion/functional/concepts/poly.html +++ b/doc/html/fusion/functional/concepts/poly.html @@ -4,7 +4,7 @@ Polymorphic Function Object - + - +
        -
        Boost C++ Libraries Home Libraries People FAQ More
        +
        -PrevUpHomeNext +PrevUpHomeNext

        @@ -30,7 +30,7 @@ Object"> Polymorphic Function Object

        - + Description

        @@ -39,7 +39,7 @@ Callable Object type.

        - + Refinement of
        @@ -54,37 +54,36 @@

        Notation

        -
        F
        -
        - A possibly const-qualified Polymorphic Function Object type -
        -
        f
        -
        - An object or reference to an object of type F -
        -
        A1 - ...AN
        -
        - Argument types -
        -
        a1 - ...aN
        -
        - Objects or references to objects with types A1 - ...AN -
        -
        T1 - ...TN
        -
        -Ti is Ai - & if ai - is an LValue, same as Ai, - otherwise -
        +
        F
        +

        + A possibly const-qualified Polymorphic Function Object type +

        +
        f
        +

        + An object or reference to an object of type F +

        +
        A1 + ...AN
        +

        + Argument types +

        +
        a1 + ...aN
        +

        + Objects or references to objects with types A1 + ...AN +

        +
        T1 + ...TN
        +

        + Ti is Ai & + if ai is an LValue, + same as Ai, otherwise +

        - + Expression requirements
        @@ -114,15 +113,15 @@

        - f(a1, - ...aN) + f(a1, + ...aN)

        - result_of< + result_of< F(T1, - ...TN) >::type + ...TN) >::type

        @@ -133,7 +132,7 @@
        - + Models
          @@ -155,7 +154,7 @@
          -PrevUpHomeNext +PrevUpHomeNext
          diff --git a/doc/html/fusion/functional/concepts/reg_callable.html b/doc/html/fusion/functional/concepts/reg_callable.html new file mode 100644 index 00000000..9c77799e --- /dev/null +++ b/doc/html/fusion/functional/concepts/reg_callable.html @@ -0,0 +1,141 @@ + + + + Regular Callable + Object + + + + + + + + + + + + + + + +
          Boost C++ LibrariesHomeLibrariesPeopleFAQMore
          +
          +
          +PrevUpHomeNext +
          +
          + +
          + + Description +
          +

          + A non-member-pointer Callable + Object type: A pointer to a function or a class type whose objects + can appear immediately to the left of a function call operator. +

          +
          + + Refinement + of +
          + +
          +

          Notation

          +
          +
          F
          +

          + A possibly const qualified Deferred Callable Object type +

          +
          f
          +

          + An object or reference to an object of type F +

          +
          A1 + ...AN
          +

          + Argument types +

          +
          a1 + ...aN
          +

          + Objects or references to objects with types A1 + ...AN +

          +
          +
          +
          + + Expression + requirements +
          +
          +++++ + + + + + + + + + + +
          +

          + Expression +

          +
          +

          + Return Type +

          +
          +

          + Runtime Complexity +

          +
          +

          + f(a1, + ...aN) +

          +
          +

          + Unspecified +

          +
          +

          + Unspecified +

          +
          +
          + + Models +
          +
            +
          • + function pointer types +
          • +
          • + all kinds of function objects +
          • +
          +
          + + + +
          Copyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger
          +
          +
          +PrevUpHomeNext +
          + + diff --git a/doc/html/fusion/functional/generation.html b/doc/html/fusion/functional/generation.html index 42593339..e1357a8f 100644 --- a/doc/html/fusion/functional/generation.html +++ b/doc/html/fusion/functional/generation.html @@ -3,24 +3,24 @@ Generation - + - +
          -
          Boost C++ Libraries Home Libraries People FAQ More
          +
          -PrevUpHomeNext +PrevUpHomeNext

          @@ -37,7 +37,7 @@
          -PrevUpHomeNext +PrevUpHomeNext
          diff --git a/doc/html/fusion/functional/generation/functions.html b/doc/html/fusion/functional/generation/functions.html index 116327be..34884793 100644 --- a/doc/html/fusion/functional/generation/functions.html +++ b/doc/html/fusion/functional/generation/functions.html @@ -3,7 +3,7 @@ Functions - + @@ -11,17 +11,17 @@ make_fused"> - +
          -
          Boost C++ Libraries Home Libraries People FAQ More
          +
          -PrevUpHomeNext +PrevUpHomeNext

          @@ -48,7 +48,7 @@
          -PrevUpHomeNext +PrevUpHomeNext
          diff --git a/doc/html/fusion/functional/generation/functions/mk_fused.html b/doc/html/fusion/functional/generation/functions/mk_fused.html index 4d2001b2..90d094bd 100644 --- a/doc/html/fusion/functional/generation/functions/mk_fused.html +++ b/doc/html/fusion/functional/generation/functions/mk_fused.html @@ -4,7 +4,7 @@ make_fused - + @@ -12,17 +12,17 @@ make_fused_procedure"> - +
          -
          Boost C++ Libraries Home Libraries People FAQ More
          +
          -PrevUpHomeNext +PrevUpHomeNext
          @@ -30,27 +30,27 @@ make_fused"> make_fused
          - + Description

          - Creates a fused adapter for a given fused adapter for a given Deferred Callable Object. The usual element conversion is applied to the target function.

          - + Synopsis
           template <typename F>
           inline typename make_fused<F>::type
          +          make_fused">make_fused<F>::type
           make_fused(F const & f);
           
          - + Parameters
          @@ -79,7 +79,7 @@

          - f + f

          @@ -97,7 +97,7 @@
          - + Expression Semantics
          @@ -105,20 +105,20 @@ make_fused(f);

    - Return type: A specialization of fused. + Return type: A specialization of fused.

    - Semantics: Returns a fused adapter for f. + Semantics: Returns a fused adapter for f.

    - + Header
     #include <boost/fusion/functional/generation/make_fused.hpp>
     
    - + Example
    @@ -126,23 +126,23 @@
     
     void try_it()
     {
    -    vector<int,float> a(2,2.0f);
    -    vector<int,float> b(1,1.5f);
    -    vector<float,float> c(1.0f,0.5f);
    -    assert(c == transform(zip(a,b), make_fused(& sub)));
    -    assert(c == transform(zip(a,b), make_fused(std::minus<float>())));
    +    vector<int,float> a(2,2.0f);
    +    vector<int,float> b(1,1.5f);
    +    vector<float,float> c(1.0f,0.5f);
    +    assert(c == transform(zip(a,b), make_fused(& sub)));
    +    assert(c == transform(zip(a,b), make_fused(std::minus<float>())));
     }
     
    - + See also
    @@ -152,7 +152,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    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 253671e5..ce3e0273 100644 --- a/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html +++ b/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html @@ -4,7 +4,7 @@ make_fused_function_object - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    @@ -31,28 +31,28 @@ make_fused_function_object"> make_fused_function_object
    - + Description

    - Creates a fused_function_object adapter + Creates a fused_function_object adapter for a given Deferred Callable Object. The usual element conversion is applied to the target function.

    - + Synopsis
     template <typename F>
     inline typename make_fused_function_object<F>::type
    +          make_fused_function_object">make_fused_function_object<F>::type
     make_fused_function_object(F const & f);
     
    - + Parameters
    @@ -81,7 +81,7 @@

    - f + f

    @@ -99,7 +99,7 @@
    - + Expression Semantics
    @@ -107,21 +107,21 @@ make_fused_function_object(f);

    - Return type: A specialization of fused_function_object. + Return type: A specialization of fused_function_object.

    - Semantics: Returns a fused_function_object adapter - for f. + Semantics: Returns a fused_function_object adapter + for f.

    - + Header
     #include <boost/fusion/functional/generation/make_fused_function_object.hpp>
     
    - + Example
    @@ -143,22 +143,22 @@
     
     void try_it()
     {
    -    vector<int,float> a(2,2.0f);
    -    vector<int,float> b(1,1.5f);
    -    vector<int,float> c(1,0.5f);
    -    assert(c == transform(zip(a,b), make_fused_function_object(sub())));
    +    vector<int,float> a(2,2.0f);
    +    vector<int,float> b(1,1.5f);
    +    vector<int,float> c(1,0.5f);
    +    assert(c == transform(zip(a,b), make_fused_function_object(sub())));
     }
     
    - + See also
    @@ -168,7 +168,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    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 d63a85d1..595d4989 100644 --- a/doc/html/fusion/functional/generation/functions/mk_fused_proc.html +++ b/doc/html/fusion/functional/generation/functions/mk_fused_proc.html @@ -4,7 +4,7 @@ make_fused_procedure - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    @@ -31,28 +31,28 @@ make_fused_procedure"> make_fused_procedure
    - + Description

    - Creates a fused_procedure adapter for + Creates a fused_procedure adapter for a given Deferred Callable Object. The usual element conversion applied to the target function.

    - + Synopsis
     template <typename F>
     inline typename make_fused_procedure<F>::type
    +          make_fused_procedure">make_fused_procedure<F>::type
     make_fused_procedure(F const & f);
     
    - + Parameters
    @@ -81,7 +81,7 @@

    - f + f

    @@ -98,7 +98,7 @@
    - + Expression Semantics
    @@ -106,39 +106,39 @@ make_fused_procedure(f);

    - Return type: A specialization of fused_procedure. + Return type: A specialization of fused_procedure.

    - Semantics: Returns a fused_procedure adapter for - f. + Semantics: Returns a fused_procedure adapter for + f.

    - + Header
     #include <boost/fusion/functional/generation/make_fused_procedure.hpp>
     
    - + Example
    -vector<int,int,int> v(1,2,3);
    +vector<int,int,int> v(1,2,3);
     using namespace boost::lambda;
     make_fused_procedure(_1 += _2 - _3)(v);
    -assert(front(v) == 0);
    +assert(front(v) == 0);
     
    - + See also
    @@ -148,7 +148,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/generation/functions/mk_unfused_genrc.html b/doc/html/fusion/functional/generation/functions/mk_unfused_genrc.html index ed66d70b..80bbc223 100644 --- a/doc/html/fusion/functional/generation/functions/mk_unfused_genrc.html +++ b/doc/html/fusion/functional/generation/functions/mk_unfused_genrc.html @@ -4,7 +4,7 @@ make_unfused_generic - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    @@ -31,28 +31,28 @@ make_unfused_generic"> make_unfused_generic
    - + Description

    - Creates a unfused_generic adapter for + Creates a unfused_generic adapter for a given, unary Polymorphic Function Object. The usual element conversion is applied to the target function.

    - + Synopsis
     template <typename F>
     inline typename make_unfused_generic<F>::type
    +          make_unfused_generic">make_unfused_generic<F>::type
     make_unfused_generic(F const & f);
     
    - + Parameters
    @@ -81,7 +81,7 @@

    - f + f

    @@ -99,7 +99,7 @@
    - + Expression Semantics
    @@ -107,21 +107,21 @@ make_unfused_generic(f);

    - Return type: A specialization of unfused_generic. + Return type: A specialization of unfused_generic.

    - Semantics: Returns a unfused_generic adapter for - f. + Semantics: Returns a unfused_generic adapter for + f.

    - + Header
     #include <boost/fusion/functional/generation/make_unfused_generic.hpp>
     
    - + Example
    @@ -157,15 +157,15 @@
     }
     
    - + See also
    @@ -175,7 +175,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/generation/functions/mk_unfused_lvargs.html b/doc/html/fusion/functional/generation/functions/mk_unfused_lvargs.html index fba0fb6b..52a2e9ab 100644 --- a/doc/html/fusion/functional/generation/functions/mk_unfused_lvargs.html +++ b/doc/html/fusion/functional/generation/functions/mk_unfused_lvargs.html @@ -4,7 +4,7 @@ make_unfused_lvalue_args - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    @@ -31,28 +31,28 @@ make_unfused_lvalue_args"> make_unfused_lvalue_args
    - + Description

    - Creates a unfused_lvalue_args adapter + Creates a unfused_lvalue_args adapter for a given, unary Polymorphic Function Object. The usual element conversion is applied to the target function.

    - + Synopsis
     template <typename F>
     inline typename make_unfused_lvalue_args<F>::type
    +          make_unfused_lvalue_args">make_unfused_lvalue_args<F>::type
     make_unfused_lvalue_args(F const & f);
     
    - + Parameters
    @@ -81,7 +81,7 @@

    - f + f

    @@ -99,7 +99,7 @@
    - + Expression Semantics
    @@ -107,21 +107,21 @@ make_unfused_lvalue_args(f);

    - Return type: A specialization of unfused_lvalue_args. + Return type: A specialization of unfused_lvalue_args.

    - Semantics: Returns a unfused_lvalue_args adapter - for f. + Semantics: Returns a unfused_lvalue_args adapter + for f.

    - + Header
     #include <boost/fusion/functional/generation/make_unfused_lvalue_args.hpp>
     
    - + Example
    @@ -136,7 +136,7 @@
         template <class Seq>
         void operator()(Seq const & s) const
         {
    -        for_each(s,++boost::lambda::_1);
    +        for_each(s,++boost::lambda::_1);
         }
     };
     
    @@ -148,15 +148,15 @@
     }
     
    - + See also
    @@ -166,7 +166,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/generation/functions/mk_unfused_rvargs.html b/doc/html/fusion/functional/generation/functions/mk_unfused_rvargs.html index 8ac6bb87..81f544ec 100644 --- a/doc/html/fusion/functional/generation/functions/mk_unfused_rvargs.html +++ b/doc/html/fusion/functional/generation/functions/mk_unfused_rvargs.html @@ -4,7 +4,7 @@ make_unfused_rvalue_args - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    @@ -30,28 +30,28 @@ make_unfused_rvalue_args"> make_unfused_rvalue_args
    - + Description

    - Creates a unfused_rvalue_args adapter + Creates a unfused_rvalue_args adapter for a given, unary Polymorphic Function Object. The usual element conversion is applied to the target function.

    - + Synopsis
     template <typename F>
     inline typename make_unfused_rvalue_args<F>::type
    +          make_unfused_rvalue_args">make_unfused_rvalue_args<F>::type
     make_unfused_rvalue_args(F const & f);
     
    - + Parameters
    @@ -80,7 +80,7 @@

    - f + f

    @@ -98,7 +98,7 @@
    - + Expression Semantics
    @@ -106,21 +106,21 @@ make_unfused_rvalue_args(f);

    - Return type: A specialization of unfused_rvalue_args. + Return type: A specialization of unfused_rvalue_args.

    - Semantics: Returns a unfused_rvalue_args adapter - for f. + Semantics: Returns a unfused_rvalue_args adapter + for f.

    - + Header
     #include <boost/fusion/functional/generation/make_unfused_rvalue_args.hpp>
     
    - + Example
    @@ -146,15 +146,15 @@
     }
     
    - + See also
    @@ -164,7 +164,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/generation/metafunctions.html b/doc/html/fusion/functional/generation/metafunctions.html index a7afa343..affc3033 100644 --- a/doc/html/fusion/functional/generation/metafunctions.html +++ b/doc/html/fusion/functional/generation/metafunctions.html @@ -3,7 +3,7 @@ Metafunctions - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -49,7 +49,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/generation/metafunctions/mk_fused.html b/doc/html/fusion/functional/generation/metafunctions/mk_fused.html index 40139391..783bf3f4 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused.html @@ -4,7 +4,7 @@ make_fused - + @@ -12,17 +12,17 @@ make_fused_procedure"> - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    @@ -30,22 +30,22 @@ make_fused"> make_fused
    - + Description

    Returns the result type of make_fused. + make_fused">make_fused.

    - + Header
     #include <boost/fusion/functional/generation/make_fused.hpp>
     
    - + Synopsis
    @@ -59,12 +59,12 @@
     }
     
    - + See also
    + make_fused">make_fused

    @@ -73,7 +73,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    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 e44bf15e..dc086afa 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html @@ -4,7 +4,7 @@ make_fused_function_object - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    @@ -31,22 +31,22 @@ make_fused_function_object"> make_fused_function_object
    - + Description

    Returns the result type of make_fused_function_object. + make_fused_function_object">make_fused_function_object.

    - + Header
     #include <boost/fusion/functional/generation/make_fused_function_object.hpp>
     
    - + Synopsis
    @@ -60,12 +60,12 @@
     }
     
    - + See also
    + make_fused_function_object">make_fused_function_object
    @@ -74,7 +74,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    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 b920ac1e..311b2e53 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html @@ -4,7 +4,7 @@ make_fused_procedure - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    @@ -31,22 +31,22 @@ make_fused_procedure"> make_fused_procedure
    - + Description

    Returns the result type of make_fused_procedure. + make_fused_procedure">make_fused_procedure.

    - + Header
     #include <boost/fusion/functional/generation/make_fused_procedure.hpp>
     
    - + Synopsis
    @@ -60,12 +60,12 @@
     }
     
    - + See also
    + make_fused_procedure">make_fused_procedure
    @@ -74,7 +74,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/generation/metafunctions/mk_unfused_genrc.html b/doc/html/fusion/functional/generation/metafunctions/mk_unfused_genrc.html index ad0cb762..22902a51 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_unfused_genrc.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_unfused_genrc.html @@ -4,7 +4,7 @@ make_unfused_generic - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    @@ -31,22 +31,22 @@ make_unfused_generic"> make_unfused_generic
    - + Description

    Returns the result type of make_unfused_generic. + make_unfused_generic">make_unfused_generic.

    - + Header
     #include <boost/fusion/functional/generation/make_unfused_generic.hpp>
     
    - + Synopsis
    @@ -60,12 +60,12 @@
     }
     
    - + See also
    + make_unfused_generic">make_unfused_generic
    @@ -74,7 +74,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/generation/metafunctions/mk_unfused_lvargs.html b/doc/html/fusion/functional/generation/metafunctions/mk_unfused_lvargs.html index 8bd81bd2..e4f19295 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_unfused_lvargs.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_unfused_lvargs.html @@ -4,7 +4,7 @@ make_unfused_lvalue_args - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    @@ -31,22 +31,22 @@ make_unfused_lvalue_args"> make_unfused_lvalue_args
    - + Description

    Returns the result type of make_unfused_lvalue_args. + make_unfused_lvalue_args">make_unfused_lvalue_args.

    - + Header
     #include <boost/fusion/functional/generation/make_unfused_lvalue_args.hpp>
     
    - + Synopsis
    @@ -60,12 +60,12 @@
     }
     
    - + See also
    + make_unfused_lvalue_args">make_unfused_lvalue_args
    @@ -74,7 +74,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/generation/metafunctions/mk_unfused_rvargs.html b/doc/html/fusion/functional/generation/metafunctions/mk_unfused_rvargs.html index 5d5983a4..ea4497e6 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_unfused_rvargs.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_unfused_rvargs.html @@ -4,7 +4,7 @@ make_unfused_rvalue_args - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    @@ -30,22 +30,22 @@ make_unfused_rvalue_args"> make_unfused_rvalue_args
    - + Description

    Returns the result type of make_unfused_rvalue_args. + make_unfused_rvalue_args">make_unfused_rvalue_args.

    - + Header
     #include <boost/fusion/functional/generation/make_unfused_rvalue_args.hpp>
     
    - + Synopsis
    @@ -59,12 +59,12 @@
     }
     
    - + See also
    + make_unfused_rvalue_args">make_unfused_rvalue_args
    @@ -73,7 +73,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/invocation.html b/doc/html/fusion/functional/invocation.html index f3ed7372..8c6f38ef 100644 --- a/doc/html/fusion/functional/invocation.html +++ b/doc/html/fusion/functional/invocation.html @@ -3,7 +3,7 @@ Invocation - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -38,7 +38,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/invocation/functions.html b/doc/html/fusion/functional/invocation/functions.html index 1a440dc9..c7abfbba 100644 --- a/doc/html/fusion/functional/invocation/functions.html +++ b/doc/html/fusion/functional/invocation/functions.html @@ -3,24 +3,24 @@ Functions - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -40,7 +40,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/invocation/functions/invoke.html b/doc/html/fusion/functional/invocation/functions/invoke.html index 53c4281b..8c5f16a7 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke.html +++ b/doc/html/fusion/functional/invocation/functions/invoke.html @@ -3,7 +3,7 @@ invoke - + @@ -11,23 +11,23 @@ invoke_procedure"> - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    @@ -42,12 +42,12 @@

    If the target function is a pointer to a class members, the corresponding object can be specified as a reference, pointer, or smart pointer. In - case of the latter, a freestanding get_pointer function - must be defined (Boost provides this function for std::auto_ptr - and boost::shared_ptr). + case of the latter, a freestanding get_pointer function + must be defined (Boost provides this function for std::auto_ptr + and boost::shared_ptr).

    - + Synopsis
    @@ -55,18 +55,18 @@
         typename Function, 
         class Sequence
         >
    -typename result_of::invoke<Function, Sequence>::type
    +typename result_of::invoke<Function, Sequence>::type
     invoke(Function f, Sequence & s);
     
     template<
         typename Function, 
         class Sequence
         >
    -typename result_of::invoke<Function, Sequence const>::type 
    +typename result_of::invoke<Function, Sequence const>::type 
     invoke(Function f, Sequence const & s);
     
    - + Parameters
    @@ -96,7 +96,7 @@

    - f + f

    @@ -115,7 +115,7 @@

    - s + s

    @@ -134,7 +134,7 @@
    - + Expression Semantics
    @@ -142,41 +142,41 @@ invoke(f,s);

    - Return type: Return type of f when invoked with the elements in - s as its arguments. + Return type: Return type of f when invoked with the elements in + s as its arguments.

    - Semantics: Invokes f - with the elements in s + Semantics: Invokes f + with the elements in s 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);
    +std::plus<int> add;
    +assert(invoke(add,make_vector(1,1)) == 2);
     
    - + See also
    @@ -186,7 +186,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/invocation/functions/invoke_fobj.html b/doc/html/fusion/functional/invocation/functions/invoke_fobj.html index 4de4083e..6df89ed8 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke_fobj.html +++ b/doc/html/fusion/functional/invocation/functions/invoke_fobj.html @@ -4,7 +4,7 @@ invoke_function_object - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    @@ -30,7 +30,7 @@ invoke_function_object"> invoke_function_object
    - + Description

    @@ -43,7 +43,7 @@ and/or to control the const qualification of a function object.

    - + Synopsis
    @@ -52,7 +52,7 @@
         class Sequence
         >
     typename result_of::invoke_function_object<Function, Sequence>::type
    +          invoke_function_object">result_of::invoke_function_object<Function, Sequence>::type
     invoke_function_object(Function f, Sequence & s);
     
     template<
    @@ -60,11 +60,11 @@
         class Sequence
         >
     typename result_of::invoke_function_object<Function, Sequence const>::type
    +          invoke_function_object">result_of::invoke_function_object<Function, Sequence const>::type
     invoke_function_object(Function f, Sequence const & s);
     
    - + Parameters
    @@ -94,7 +94,7 @@

    - f + f

    @@ -113,7 +113,7 @@

    - s + s

    @@ -132,7 +132,7 @@
    - + Expression Semantics
    @@ -140,23 +140,23 @@ invoke_function_object(f,s);

    - Return type: Return type of f when invoked with the elements in - s as its arguments. + Return type: Return type of f when invoked with the elements in + s as its arguments.

    - Semantics: Invokes f - with the elements in s + Semantics: Invokes f + with the elements in s as arguments and returns the result of the call expression.

    - + Header
     #include <boost/fusion/functional/invocation/invoke_function_object.hpp>
     
    - + Example
    @@ -179,21 +179,21 @@
     void try_it()
     {
         sub f;
    -    assert(f(2,1) == invoke_function_object(f,make_vector(2,1)));
    +    assert(f(2,1) == invoke_function_object(f,make_vector(2,1)));
     }
     
    - + See also
    @@ -203,7 +203,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/invocation/functions/invoke_proc.html b/doc/html/fusion/functional/invocation/functions/invoke_proc.html index b3b80e45..aa841307 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke_proc.html +++ b/doc/html/fusion/functional/invocation/functions/invoke_proc.html @@ -4,7 +4,7 @@ invoke_procedure - + @@ -12,17 +12,17 @@ invoke_function_object"> - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    @@ -30,7 +30,7 @@ invoke_procedure"> invoke_procedure
    - + Description

    @@ -45,8 +45,8 @@

    For pointers to class members corresponding object can be specified as a reference, pointer, or smart pointer. In case of the latter, a freestanding - get_pointer function must be defined (Boost provides - this function for std::auto_ptr and boost::shared_ptr). + get_pointer function must be defined (Boost provides + this function for std::auto_ptr and boost::shared_ptr).

    The target function must not be a pointer to a member object (dereferencing @@ -54,7 +54,7 @@ isn't implemented).

    - + Synopsis
    @@ -63,7 +63,7 @@
         class Sequence
         >
     typename result_of::invoke_procedure<Function, Sequence>::type
    +          invoke_procedure">result_of::invoke_procedure<Function, Sequence>::type
     invoke_procedure(Function f, Sequence & s);
     
     template<
    @@ -71,11 +71,11 @@
         class Sequence
         >
     typename result_of::invoke_procedure<Function, Sequence const>::type
    +          invoke_procedure">result_of::invoke_procedure<Function, Sequence const>::type
     invoke_procedure(Function f, Sequence const & s);
     
    - + Parameters
    @@ -105,7 +105,7 @@

    - f + f

    @@ -123,7 +123,7 @@

    - s + s

    @@ -142,7 +142,7 @@
    - + Expression Semantics
    @@ -150,42 +150,42 @@ invoke_procedure(f,s);

    - Return type: void + Return type: void

    - Semantics: Invokes f - with the elements in s + Semantics: Invokes f + with the elements in s as arguments.

    - + Header
     #include <boost/fusion/functional/invocation/invoke_procedure.hpp>
     
    - + Example
    -vector<int,int> v(1,2);
    +vector<int,int> v(1,2);
     using namespace boost::lambda;
     invoke_procedure(_1 += _2, v);
    -assert(front(v) == 3);
    +assert(front(v) == 3);
     
    - + See also
    @@ -195,7 +195,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/invocation/metafunctions.html b/doc/html/fusion/functional/invocation/metafunctions.html index 44c33781..e9df0740 100644 --- a/doc/html/fusion/functional/invocation/metafunctions.html +++ b/doc/html/fusion/functional/invocation/metafunctions.html @@ -3,7 +3,7 @@ Metafunctions - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -41,7 +41,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/invocation/metafunctions/invoke.html b/doc/html/fusion/functional/invocation/metafunctions/invoke.html index 603abc43..b50b8089 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke.html @@ -3,7 +3,7 @@ invoke - + @@ -11,30 +11,30 @@ invoke_procedure"> - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Returns the result type of invoke. + Returns the result type of invoke.

    - + Synopsis
    @@ -51,13 +51,13 @@
     }
     
    - + See also
    @@ -67,7 +67,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html b/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html index eac2912f..e1e7a2a4 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html @@ -4,7 +4,7 @@ invoke_function_object - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    @@ -30,15 +30,15 @@ invoke_function_object"> invoke_function_object
    - + Description

    Returns the result type of invoke_function_object. + invoke_function_object">invoke_function_object.

    - + Synopsis
    @@ -55,14 +55,14 @@
     }
     
    - + See also
    @@ -72,7 +72,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html b/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html index 149b5acf..cf9a65ef 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html @@ -4,7 +4,7 @@ invoke_procedure - + @@ -12,17 +12,17 @@ invoke_function_object"> - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    @@ -30,15 +30,15 @@ invoke_procedure"> invoke_procedure
    - + Description

    Returns the result type of invoke_procedure. + invoke_procedure">invoke_procedure.

    - + Synopsis
    @@ -55,14 +55,14 @@
     }
     
    - + See also
    @@ -72,7 +72,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/introduction.html b/doc/html/fusion/introduction.html index 40b58039..ec7fdb70 100644 --- a/doc/html/fusion/introduction.html +++ b/doc/html/fusion/introduction.html @@ -3,24 +3,24 @@ Introduction - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -29,9 +29,9 @@ An advantage other languages such as Python and Lisp/ Scheme, ML and Haskell, etc., over C++ is the ability to have heterogeneous containers that can hold arbitrary element types. All the containers in the standard library can only - hold a specific type. A vector<int> - can only hold ints. A list<X> can - only hold elements of type X, + hold a specific type. A vector<int> + can only hold ints. A list<X> can + only hold elements of type X, and so on.

    @@ -41,8 +41,8 @@ on virtual functions to provide polymorphic behavior since the actual type is erased as soon as you store a pointer to a derived class to a pointer to its base. The held objects must be related: you cannot hold objects of unrelated - types such as char, int, class - X, float, + types such as char, int, class + X, float, etc. Oh sure you can use something like Boost.Any to hold arbitrary types, but then you pay more in terms of runtime costs and due to the fact that you practically erased all type information, you'll have @@ -51,7 +51,7 @@

    The Boost.Tuple library written by Jaakko - Jarvi provides heterogeneous containers in C++. The tuple + Jarvi provides heterogeneous containers in C++. The tuple is a basic data structure that can hold heterogeneous types. It's a good first step, but it's not complete. What's missing are the algorithms. It's nice that we can store and retrieve data to and from tuples, pass them around as arguments @@ -89,23 +89,23 @@ fusion algorithms are functional in nature such that algorithms are non mutating (no side effects). However, due to the high cost of returning full sequences such as vectors and lists, Views are returned from Fusion - algorithms instead. For example, the transform algorithm does not actually - return a transformed version of the original sequence. transform returns a transform_view. This view holds a + algorithms instead. For example, the transform algorithm does not actually + return a transformed version of the original sequence. transform returns a transform_view. This view holds a reference to the original sequence plus the transform function. Iteration over - the transform_view + the transform_view will apply the transform function over the sequence elements on demand. This lazy evaluation scheme allows us to chain as many algorithms as we want without incurring a high runtime penalty.

    The lazy evaluation scheme where algorithms return views - allows operations such as push_back to be totally generic. In - Fusion, push_back is actually a generic algorithm - that works on all sequences. Given an input sequence s - and a value x, Fusion's push_back algorithm simply returns - a joint_view: - a view that holds a reference to the original sequence s - and the value x. Functions + allows operations such as push_back to be totally generic. In + Fusion, push_back is actually a generic algorithm + that works on all sequences. Given an input sequence s + and a value x, Fusion's push_back 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.

    @@ -135,7 +135,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/iterators.html b/doc/html/fusion/iterators.html index ec1ea8d1..48583fa5 100644 --- a/doc/html/fusion/iterators.html +++ b/doc/html/fusion/iterators.html @@ -3,24 +3,24 @@ Iterators - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -74,7 +74,7 @@ Sequence.

    - + Header

    @@ -88,7 +88,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/iterators/concepts.html b/doc/html/fusion/iterators/concepts.html index 71fa0586..2ec27b7e 100644 --- a/doc/html/fusion/iterators/concepts.html +++ b/doc/html/fusion/iterators/concepts.html @@ -3,7 +3,7 @@ Concepts - + @@ -11,17 +11,17 @@ Iterator"> - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -55,7 +55,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/iterators/concepts/bidirectional_iterator.html b/doc/html/fusion/iterators/concepts/bidirectional_iterator.html index 31e8d406..d0331405 100644 --- a/doc/html/fusion/iterators/concepts/bidirectional_iterator.html +++ b/doc/html/fusion/iterators/concepts/bidirectional_iterator.html @@ -4,7 +4,7 @@ Bidirectional Iterator - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -31,7 +31,7 @@ Iterator">Bidirectional Iterator

    - + Description

    @@ -41,27 +41,27 @@

    Notation

    -
    i
    -
    - A Bidirectional Iterator -
    -
    I
    -
    - A Bidirectional Iterator type -
    -
    M
    -
    - An MPL - integral constant -
    -
    N
    -
    - An integral constant -
    +
    i
    +

    + A Bidirectional Iterator +

    +
    I
    +

    + A Bidirectional Iterator type +

    +
    M
    +

    + An MPL + integral constant +

    +
    N
    +

    + An integral constant +

    - + Refinement of
    @@ -70,7 +70,7 @@ Iterator">Forward Iterator

    - + Expression requirements
    @@ -106,7 +106,7 @@

    - next(i) + next(i)

    @@ -125,7 +125,7 @@

    - prior(i) + prior(i)

    @@ -144,7 +144,7 @@

    - advance_c<N>(i) + advance_c<N>(i)

    @@ -163,7 +163,7 @@

    - advance<M>(i) + advance<M>(i)

    @@ -182,7 +182,7 @@

    - + Meta Expressions
    @@ -206,7 +206,7 @@

    - result_of::prior<I>::type + result_of::prior<I>::type

    @@ -217,7 +217,7 @@
    - + Expression Semantics
    @@ -247,18 +247,18 @@

    - prior(i) + prior(i)

    - An iterator to the element preceding i + An iterator to the element preceding i

    - + Invariants

    @@ -267,44 +267,44 @@ Iterator, the following invariants always hold:

    - + Models
    @@ -314,7 +314,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/iterators/concepts/forward_iterator.html b/doc/html/fusion/iterators/concepts/forward_iterator.html index 83c845a3..428c454e 100644 --- a/doc/html/fusion/iterators/concepts/forward_iterator.html +++ b/doc/html/fusion/iterators/concepts/forward_iterator.html @@ -4,7 +4,7 @@ Forward Iterator - + @@ -12,17 +12,17 @@ Iterator"> - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -30,7 +30,7 @@ Iterator">Forward Iterator

    - + Description

    @@ -41,29 +41,29 @@

    Notation

    -
    i, - j
    -
    - Forward Iterators -
    -
    I, - J
    -
    - Forward Iterator types -
    -
    M
    -
    - An MPL - integral constant -
    -
    N
    -
    - An integral constant -
    +
    i, + j
    +

    + Forward Iterators +

    +
    I, + J
    +

    + Forward Iterator types +

    +
    M
    +

    + An MPL + integral constant +

    +
    N
    +

    + An integral constant +

    - + Expression requirements
    @@ -98,7 +98,7 @@

    - next(i) + next(i)

    @@ -117,8 +117,8 @@

    - i == - j + i == + j

    @@ -135,8 +135,8 @@

    - i != - j + i != + j

    @@ -153,7 +153,7 @@

    - advance_c<N>(i) + advance_c<N>(i)

    @@ -172,7 +172,7 @@

    - advance<M>(i) + advance<M>(i)

    @@ -191,14 +191,14 @@

    - distance(i, - j) + distance(i, + j)

    - result_of::distance<I, - J>::type + result_of::distance<I, + J>::type

    @@ -210,12 +210,12 @@

    - deref(i) + deref(i)

    - result_of::deref<I>::type + result_of::deref<I>::type

    @@ -227,12 +227,12 @@

    - *i + *i

    - result_of::deref<I>::type + result_of::deref<I>::type

    @@ -244,7 +244,7 @@
    - + Meta Expressions
    @@ -269,7 +269,7 @@

    - result_of::next<I>::type + result_of::next<I>::type

    @@ -281,8 +281,8 @@

    - result_of::equal_to<I, - J>::type + result_of::equal_to<I, + J>::type

    @@ -294,8 +294,8 @@

    - result_of::advance_c<I, - N>::type + result_of::advance_c<I, + N>::type

    @@ -307,7 +307,7 @@

    - result_of::advance<I ,M>::type + result_of::advance<I ,M>::type

    @@ -319,7 +319,7 @@

    - result_of::distance<I ,J>::type + result_of::distance<I ,J>::type

    @@ -331,7 +331,7 @@

    - result_of::deref<I>::type + result_of::deref<I>::type

    @@ -343,7 +343,7 @@

    - result_of::value_of<I>::type + result_of::value_of<I>::type

    @@ -355,7 +355,7 @@
    - + Expression Semantics
    @@ -380,20 +380,20 @@

    - next(i) + next(i)

    - An iterator to the element following i + An iterator to the element following i

    - i == - j + i == + j

    @@ -405,8 +405,8 @@

    - i != - j + i != + j

    @@ -418,12 +418,12 @@

    - advance_c<N>(i) + advance_c<N>(i)

    - An iterator n elements after i + An iterator n elements after i in the sequence

    @@ -431,135 +431,135 @@

    - advance<M>(i) + advance<M>(i)

    - Equivalent to advance_c<M::value>(i) + Equivalent to advance_c<M::value>(i)

    - distance(i, - j) + distance(i, + j)

    - The number of elements between i - and j + The number of elements between i + and j

    - deref(i) + deref(i)

    - The element at positioni + The element at positioni

    - *i + *i

    - Equivalent to deref(i) + Equivalent to deref(i)

    - + Invariants

    The following invariants always hold:

      -
    • !(i - == j) == (i != j)
    • -
    • next(i) == advance_c<1>(i)
    • -
    • distance(i, advance_c<N>(i)) == N
    • +
    • !(i + == j) == (i != j)
    • +
    • next(i) == advance_c<1>(i)
    • +
    • distance(i, advance_c<N>(i)) == N
    • - Using next to traverse the + Using next to traverse the sequence will never return to a previously seen position
    • -deref(i) - is equivalent to *i +deref(i) + is equivalent to *i
    • - If i == - j then *i is equivalent to *j + If i == + j then *i is equivalent to *j
    - + Models
    @@ -571,7 +571,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/iterators/concepts/random_access_iterator.html b/doc/html/fusion/iterators/concepts/random_access_iterator.html index e355e36d..ce0ebfe2 100644 --- a/doc/html/fusion/iterators/concepts/random_access_iterator.html +++ b/doc/html/fusion/iterators/concepts/random_access_iterator.html @@ -4,7 +4,7 @@ Random Access Iterator - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -30,7 +30,7 @@ Access Iterator">Random Access Iterator

    - + Description

    @@ -41,29 +41,29 @@

    Notation

    -
    i, - j
    -
    - Random Access Iterators -
    -
    I, - J
    -
    - Random Access Iterator types -
    -
    M
    -
    - An MPL - integral constant -
    -
    N
    -
    - An integral constant -
    +
    i, + j
    +

    + Random Access Iterators +

    +
    I, + J
    +

    + Random Access Iterator types +

    +
    M
    +

    + An MPL + integral constant +

    +
    N
    +

    + An integral constant +

    - + Refinement of
    @@ -73,7 +73,7 @@ Iterator

    - + Expression requirements
    @@ -109,7 +109,7 @@

    - next(i) + next(i)

    @@ -128,7 +128,7 @@

    - prior(i) + prior(i)

    @@ -147,7 +147,7 @@

    - advance_c<N>(i) + advance_c<N>(i)

    @@ -166,7 +166,7 @@

    - advance<M>(i) + advance<M>(i)

    @@ -185,7 +185,7 @@
    - + Meta Expressions
    @@ -210,8 +210,8 @@

    - result_of::advance_c<I, - N>::type + result_of::advance_c<I, + N>::type

    @@ -223,8 +223,8 @@

    - result_of::advance<I, - M>::type + result_of::advance<I, + M>::type

    @@ -236,7 +236,7 @@

    - result_of::distance<I ,J>::type + result_of::distance<I ,J>::type

    @@ -248,36 +248,36 @@
    - + Models
    • -vector +vector iterator
    • -std::pair +std::pair iterator
    • -boost::array +boost::array iterator
    • -iterator_range +iterator_range iterator (where adapted sequence is a Random Access Sequence)
    • -transform_view +transform_view iterator (where adapted sequence is a Random Access Sequence)
    • -reverse_view +reverse_view iterator (where adapted sequence is a Random Access Sequence) @@ -291,7 +291,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/iterators/functions.html b/doc/html/fusion/iterators/functions.html index 2456ca31..773ec877 100644 --- a/doc/html/fusion/iterators/functions.html +++ b/doc/html/fusion/iterators/functions.html @@ -3,7 +3,7 @@ Functions - + - +
      -
      Boost C++ Libraries Home Libraries People FAQ More
      +
      -PrevUpHomeNext +PrevUpHomeNext

      @@ -47,7 +47,7 @@
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/iterators/functions/advance.html b/doc/html/fusion/iterators/functions/advance.html index 1290ec3b..dc7ee092 100644 --- a/doc/html/fusion/iterators/functions/advance.html +++ b/doc/html/fusion/iterators/functions/advance.html @@ -3,37 +3,37 @@ advance - + - +
      -
      Boost C++ Libraries Home Libraries People FAQ More
      +
      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Moves an iterator by a specified distance.

      - + Synopsis
      @@ -41,10 +41,10 @@
           typename I,
           typename M
           >
      -typename result_of::advance<I, M>::type advance(I const& i); 
      +typename result_of::advance<I, M>::type advance(I const& i); 
       
      -

      Table 1.6. Parameters

      +

      Table 1.6. Parameters

      @@ -72,7 +72,7 @@

      - i + i

      @@ -91,7 +91,7 @@

      - N + N

      @@ -110,42 +110,42 @@
      - + Expression Semantics
      -advance<M>(i);
      +advance<M>(i);
       

      - Return type: A model of the same iterator - concept as i. + Return type: A model of the same iterator + concept as i.

      - Semantics: Returns an iterator to the - element M positions from - i. If i + Semantics: Returns an iterator to the + element M positions from + i. If i is a Bidirectional - Iterator then M + Iterator then M may be negative.

      - + Header
       #include <boost/fusion/iterator/advance.hpp>
       
      - + Example
      -typedef vector<int,int,int> vec;
      +typedef vector<int,int,int> vec;
       
       vec v(1,2,3);
      -assert(deref(advance<mpl::int_<2> >(begin(v))) == 3);
      +assert(deref(advance<mpl::int_<2> >(begin(v))) == 3);
       
      @@ -155,7 +155,7 @@

      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/iterators/functions/advance_c.html b/doc/html/fusion/iterators/functions/advance_c.html index 27994e78..f4f402ce 100644 --- a/doc/html/fusion/iterators/functions/advance_c.html +++ b/doc/html/fusion/iterators/functions/advance_c.html @@ -3,37 +3,37 @@ advance_c - + - +
      -
      Boost C++ Libraries Home Libraries People FAQ More
      +
      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Moves an iterator by a specified distance.

      - + Synopsis
      @@ -41,10 +41,10 @@
           typename I,
           int N
           >
      -typename result_of::advance_c<I, N>::type advance_c(I const& i); 
      +typename result_of::advance_c<I, N>::type advance_c(I const& i); 
       
      -

      Table 1.7. Parameters

      +

      Table 1.7. Parameters

      @@ -72,7 +72,7 @@

      - i + i

      @@ -91,7 +91,7 @@

      - N + N

      @@ -109,42 +109,42 @@
      - + Expression Semantics
      -advance_c<N>(i);
      +advance_c<N>(i);
       

      - Return type: A model of the same iterator - concept as i. + Return type: A model of the same iterator + concept as i.

      - Semantics: Returns an iterator to the - element N positions from - i. If i + Semantics: Returns an iterator to the + element N positions from + i. If i is a Bidirectional - Iterator then N + Iterator then N may be negative.

      - + Header
       #include <boost/fusion/iterator/advance.hpp>
       
      - + Example
      -typedef vector<int,int,int> vec;
      +typedef vector<int,int,int> vec;
       
       vec v(1,2,3);
      -assert(deref(advance_c<2>(begin(v))) == 3);
      +assert(deref(advance_c<2>(begin(v))) == 3);
       
      @@ -154,7 +154,7 @@

      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/iterators/functions/deref.html b/doc/html/fusion/iterators/functions/deref.html index 7e53a07f..10629ccb 100644 --- a/doc/html/fusion/iterators/functions/deref.html +++ b/doc/html/fusion/iterators/functions/deref.html @@ -3,47 +3,47 @@ deref - + - +
      -
      Boost C++ Libraries Home Libraries People FAQ More
      +
      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Deferences an iterator.

      - + Synopsis
       template<
           typename I
           >
      -typename result_of::deref<I>::type deref(I const& i);
      +typename result_of::deref<I>::type deref(I const& i);
       
      -

      Table 1.2. Parameters

      +

      Table 1.2. Parameters

      @@ -70,7 +70,7 @@

      - i + i

      @@ -89,39 +89,39 @@
      - + Expression Semantics
      -deref(i);
      +deref(i);
       

      - Return type: result_of::deref<I>::type + Return type: result_of::deref<I>::type

      - Semantics: Dereferences the iterator - i. + Semantics: Dereferences the iterator + i.

      - + Header
       #include <boost/fusion/iterator/deref.hpp>
       
      - + Example
      -typedef vector<int,int&> vec;
      +typedef vector<int,int&> vec;
       
       int i(0);
       vec v(1,i);
      -assert(deref(begin(v)) == 1);
      -assert(deref(next(begin(v))) == 0);
      -assert(&(deref(next(begin(v)))) == &i);
      +assert(deref(begin(v)) == 1);
      +assert(deref(next(begin(v))) == 0);
      +assert(&(deref(next(begin(v)))) == &i);
       
      @@ -131,7 +131,7 @@

      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/iterators/functions/distance.html b/doc/html/fusion/iterators/functions/distance.html index 48c9c217..df606479 100644 --- a/doc/html/fusion/iterators/functions/distance.html +++ b/doc/html/fusion/iterators/functions/distance.html @@ -3,37 +3,37 @@ distance - + - +
      -
      Boost C++ Libraries Home Libraries People FAQ More
      +
      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Returns the distance between 2 iterators.

      - + Synopsis
      @@ -41,10 +41,10 @@
           typename I,
           typename J
           >
      -typename result_of::distance<I, J>::type distance(I const& i, J const& j);
      +typename result_of::distance<I, J>::type distance(I const& i, J const& j);
       
      -

      Table 1.5. Parameters

      +

      Table 1.5. Parameters

      @@ -71,7 +71,7 @@

      - i, j + i, j

      @@ -90,36 +90,36 @@
      - + Expression Semantics
      -distance(i,j);
      +distance(i,j);
       

      - Return type: int + Return type: int

      - Semantics: Returns the distance between - iterators i and j. + Semantics: Returns the distance between + iterators i and j.

      - + Header
       #include <boost/fusion/iterator/distance.hpp>
       
      - + Example
      -typedef vector<int,int,int> vec;
      +typedef vector<int,int,int> vec;
       
       vec v(1,2,3);
      -assert(distance(begin(v), next(next(begin(v)))) == 2);
      +assert(distance(begin(v), next(next(begin(v)))) == 2);
       
      @@ -129,7 +129,7 @@

      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/iterators/functions/next.html b/doc/html/fusion/iterators/functions/next.html index 13a97c83..b4dc0827 100644 --- a/doc/html/fusion/iterators/functions/next.html +++ b/doc/html/fusion/iterators/functions/next.html @@ -3,47 +3,47 @@ next - + - +
      -
      Boost C++ Libraries Home Libraries People FAQ More
      +
      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      Moves an iterator 1 position forwards.

      - + Synopsis
       template<
           typename I
           >
      -typename result_of::next<I>::type next(I const& i);
      +typename result_of::next<I>::type next(I const& i);
       
      -

      Table 1.3. Parameters

      +

      Table 1.3. Parameters

      @@ -70,7 +70,7 @@

      - i + i

      @@ -89,7 +89,7 @@
      - + Expression Semantics
      @@ -97,31 +97,31 @@ next(i);

    - Return type: A model of the same iterator - concept as i. + Return type: A model of the same iterator + concept as i.

    - Semantics: Returns an iterator to the - next element after i. + Semantics: Returns an iterator to the + next element after i.

    - + Header
     #include <boost/fusion/iterator/next.hpp>
     
    - + Example
    -typedef vector<int,int,int> vec;
    +typedef vector<int,int,int> vec;
     
     vec v(1,2,3);
    -assert(deref(begin(v)) == 1);
    -assert(deref(next(begin(v))) == 2);
    -assert(deref(next(next(begin(v)))) == 3);
    +assert(deref(begin(v)) == 1);
    +assert(deref(next(begin(v))) == 2);
    +assert(deref(next(next(begin(v)))) == 3);
     
    @@ -131,7 +131,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/iterators/functions/prior.html b/doc/html/fusion/iterators/functions/prior.html index b4f33bba..9eaba7b7 100644 --- a/doc/html/fusion/iterators/functions/prior.html +++ b/doc/html/fusion/iterators/functions/prior.html @@ -3,47 +3,47 @@ prior - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    Moves an iterator 1 position backwards.

    - + Synopsis
     template<
         typename I
         >
    -typename result_of::prior<I>::type prior(I const& i);
    +typename result_of::prior<I>::type prior(I const& i);
     
    -

    Table 1.4. Parameters

    +

    Table 1.4. Parameters

    @@ -70,7 +70,7 @@

    - i + i

    @@ -89,38 +89,38 @@
    - + Expression Semantics
    -prior(i);
    +prior(i);
     

    - Return type: A model of the same iterator - concept as i. + Return type: A model of the same iterator + concept as i.

    - Semantics: Returns an iterator to the - element prior to i. + Semantics: Returns an iterator to the + element prior to i.

    - + Header
     #include <boost/fusion/iterator/prior.hpp>
     
    - + Example
    -typedef vector<int,int> vec;
    +typedef vector<int,int> vec;
     
     vec v(1,2);
    -assert(deref(next(begin(v))) == 2);
    -assert(deref(prior(next(begin(v)))) == 1);
    +assert(deref(next(begin(v))) == 2);
    +assert(deref(prior(next(begin(v)))) == 1);
     
    @@ -130,7 +130,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/iterators/metafunctions.html b/doc/html/fusion/iterators/metafunctions.html index 246bd1ae..22b175b9 100644 --- a/doc/html/fusion/iterators/metafunctions.html +++ b/doc/html/fusion/iterators/metafunctions.html @@ -3,7 +3,7 @@ Metafunctions - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -44,7 +44,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/iterators/metafunctions/advance.html b/doc/html/fusion/iterators/metafunctions/advance.html index caf22919..00b4468f 100644 --- a/doc/html/fusion/iterators/metafunctions/advance.html +++ b/doc/html/fusion/iterators/metafunctions/advance.html @@ -3,37 +3,37 @@ advance - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    Moves an iterator a specified distance.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.17. Parameters

    +

    Table 1.17. Parameters

    @@ -75,7 +75,7 @@

    - I + I

    @@ -94,7 +94,7 @@

    - M + M

    @@ -113,43 +113,43 @@
    - + Expression Semantics
    -result_of::advance<I,M>::type
    +result_of::advance<I,M>::type
     

    - Return type: A model of the same iterator - concept as I. + Return type: A model of the same iterator + concept as I.

    - Semantics: Returns an iterator a distance - M from I. - If I is a Semantics: Returns an iterator a distance + M from I. + If I is a Bidirectional - Iterator then M + Iterator then M may be negative.

    - + Header
     #include <boost/fusion/iterator/advance.hpp>
     
    - + Example
    -typedef vector<int,double,char> vec;
    -typedef result_of::begin<vec>::type first;
    -typedef result_of::next<first>::type second;
    -typedef result_of::next<second>::type third;
    +typedef vector<int,double,char> vec;
    +typedef result_of::begin<vec>::type first;
    +typedef result_of::next<first>::type second;
    +typedef result_of::next<second>::type third;
     
    -BOOST_MPL_ASSERT((result_of::equal_to<result_of::advance<first, boost::mpl::int_<2> >::type, third>));
    +BOOST_MPL_ASSERT((result_of::equal_to<result_of::advance<first, boost::mpl::int_<2> >::type, third>));
     
    @@ -159,7 +159,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/iterators/metafunctions/advance_c.html b/doc/html/fusion/iterators/metafunctions/advance_c.html index 1b866e2c..0f174158 100644 --- a/doc/html/fusion/iterators/metafunctions/advance_c.html +++ b/doc/html/fusion/iterators/metafunctions/advance_c.html @@ -3,37 +3,37 @@ advance_c - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    Moves an iterator by a specified distance.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.18. Parameters

    +

    Table 1.18. Parameters

    @@ -75,7 +75,7 @@

    - I + I

    @@ -94,7 +94,7 @@

    - N + N

    @@ -112,43 +112,43 @@
    - + Expression Semantics
    -result_of::advance_c<I, N>::type
    +result_of::advance_c<I, N>::type
     

    - Return type: A model of the same iterator - concept as I. + Return type: A model of the same iterator + concept as I.

    - Semantics: Returns an iterator a distance - N from I. - If I is a Semantics: Returns an iterator a distance + N from I. + If I is a Bidirectional - Iterator then N - may be negative. Equivalent to result_of::advance<I, boost::mpl::int_<N> >::type. + Iterator then N + may be negative. Equivalent to result_of::advance<I, boost::mpl::int_<N> >::type.

    - + Header
     #include <boost/fusion/iterator/advance.hpp>
     
    - + Example
    -typedef vector<int,double,char> vec;
    -typedef result_of::begin<vec>::type first;
    -typedef result_of::next<first>::type second;
    -typedef result_of::next<second>::type third;
    +typedef vector<int,double,char> vec;
    +typedef result_of::begin<vec>::type first;
    +typedef result_of::next<first>::type second;
    +typedef result_of::next<second>::type third;
     
    -BOOST_MPL_ASSERT((result_of::equal_to<result_of::advance_c<first, 2>::type, third>));
    +BOOST_MPL_ASSERT((result_of::equal_to<result_of::advance_c<first, 2>::type, third>));
     
    @@ -158,7 +158,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/iterators/metafunctions/deref.html b/doc/html/fusion/iterators/metafunctions/deref.html index 31a47bf9..b8d9b5b7 100644 --- a/doc/html/fusion/iterators/metafunctions/deref.html +++ b/doc/html/fusion/iterators/metafunctions/deref.html @@ -3,37 +3,37 @@ deref - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    Returns the type that will be returned by dereferencing an iterator.

    - + Synposis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.12. Parameters

    +

    Table 1.12. Parameters

    @@ -73,7 +73,7 @@

    - I + I

    @@ -92,42 +92,42 @@
    - + Expression Semantics
    -result_of::deref<I>::type
    +result_of::deref<I>::type
     

    - Return type: Any type + Return type: Any type

    - Semantics: Returns the result of dereferencing - an iterator of type I. + Semantics: Returns the result of dereferencing + an iterator of type I.

    - + Header
     #include <boost/fusion/iterator/deref.hpp>
     
    - + Example
    -typedef vector<int,int&> vec;
    +typedef vector<int,int&> vec;
     typedef const vec const_vec;
    -typedef result_of::begin<vec>::type first;
    -typedef result_of::next<first>::type second;
    +typedef result_of::begin<vec>::type first;
    +typedef result_of::next<first>::type second;
     
    -typedef result_of::begin<const_vec>::type const_first;
    -typedef result_of::next<const_first>::type const_second;
    +typedef result_of::begin<const_vec>::type const_first;
    +typedef result_of::next<const_first>::type const_second;
     
    -BOOST_MPL_ASSERT((boost::is_same<result_of::deref<first>::type, int&>));
    -BOOST_MPL_ASSERT((boost::is_same<result_of::deref<second>::type, int&>));
    +BOOST_MPL_ASSERT((boost::is_same<result_of::deref<first>::type, int&>));
    +BOOST_MPL_ASSERT((boost::is_same<result_of::deref<second>::type, int&>));
     
    @@ -137,7 +137,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/iterators/metafunctions/distance.html b/doc/html/fusion/iterators/metafunctions/distance.html index 92b6448b..743318e8 100644 --- a/doc/html/fusion/iterators/metafunctions/distance.html +++ b/doc/html/fusion/iterators/metafunctions/distance.html @@ -3,37 +3,37 @@ distance - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    Returns the distance between two iterators.

    - + Synopsis
    @@ -47,7 +47,7 @@
     };
     
    -

    Table 1.16. Parameters

    +

    Table 1.16. Parameters

    @@ -74,7 +74,7 @@

    - I, J + I, J

    @@ -93,39 +93,39 @@
    - + Expression Semantics
    -result_of::distance<I, J>::type
    +result_of::distance<I, J>::type
     

    - Return type: A model of MPL + Return type: A model of MPL Integral Constant.

    - Semantics: Returns the distance between - iterators of types I and - J. + Semantics: Returns the distance between + iterators of types I and + J.

    - + Header
     #include <boost/fusion/iterator/distance.hpp>
     
    - + Example
    -typedef vector<int,double,char> vec;
    -typedef result_of::begin<vec>::type first;
    -typedef result_of::next<first>::type second;
    -typedef result_of::next<second>::type third;
    -typedef result_of::distance<first,third>::type dist;
    +typedef vector<int,double,char> vec;
    +typedef result_of::begin<vec>::type first;
    +typedef result_of::next<first>::type second;
    +typedef result_of::next<second>::type third;
    +typedef result_of::distance<first,third>::type dist;
     
     BOOST_MPL_ASSERT_RELATION(dist::value, ==, 2);
     
    @@ -137,7 +137,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/iterators/metafunctions/equal_to.html b/doc/html/fusion/iterators/metafunctions/equal_to.html index 2c6c1000..a79af3d5 100644 --- a/doc/html/fusion/iterators/metafunctions/equal_to.html +++ b/doc/html/fusion/iterators/metafunctions/equal_to.html @@ -3,39 +3,39 @@ equal_to - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    Returns a true-valued MPL - Integral Constant if I - and J are equal. + Integral Constant if I + and J are equal.

    - + Synopsis
    @@ -49,7 +49,7 @@
     };
     
    -

    Table 1.15. Parameters

    +

    Table 1.15. Parameters

    @@ -76,7 +76,7 @@

    - I, J + I, J

    @@ -93,39 +93,39 @@
    - + Expression Semantics
    -result_of::equal_to<I, J>::type
    +result_of::equal_to<I, J>::type
     

    - Return type: A model of MPL + Return type: A model of MPL Integral Constant.

    - Semantics: Returns boost::mpl::true_ - if I and J are iterators to the same position. - Returns boost::mpl::false_ otherwise. + Semantics: Returns boost::mpl::true_ + if I and J are iterators to the same position. + Returns boost::mpl::false_ otherwise.

    - + Header
     #include <boost/fusion/iterator/equal_to.hpp>
     
    - + Example
    -typedef vector<int,double> vec;
    -typedef result_of::begin<vec>::type first;
    -typedef result_of::end<vec>::type last;
    -BOOST_MPL_ASSERT((result_of::equal_to<first, first>));
    -BOOST_MPL_ASSERT_NOT((result_of::equal_to<first,last>));
    +typedef vector<int,double> vec;
    +typedef result_of::begin<vec>::type first;
    +typedef result_of::end<vec>::type last;
    +BOOST_MPL_ASSERT((result_of::equal_to<first, first>));
    +BOOST_MPL_ASSERT_NOT((result_of::equal_to<first,last>));
     
    @@ -135,7 +135,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/iterators/metafunctions/next.html b/doc/html/fusion/iterators/metafunctions/next.html index 2aa6e18a..14873188 100644 --- a/doc/html/fusion/iterators/metafunctions/next.html +++ b/doc/html/fusion/iterators/metafunctions/next.html @@ -3,37 +3,37 @@ next - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    Returns the type of the next iterator in a sequence.

    - + Synposis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.13. Parameters

    +

    Table 1.13. Parameters

    @@ -73,7 +73,7 @@

    - I + I

    @@ -92,37 +92,37 @@
    - + Expression Semantics
    -result_of::next<I>::type
    +result_of::next<I>::type
     

    - Return type: A model of the same iterator - concept as I. + Return type: A model of the same iterator + concept as I.

    - Semantics: Returns an iterator to the - next element in the sequence after I. + Semantics: Returns an iterator to the + next element in the sequence after I.

    - + Header
     #include <boost/fusion/iterator/next.hpp>
     
    - + Example
    -typedef vector<int,double> vec;
    -typedef result_of::next<result_of::begin<vec>::type>::type second;
    +typedef vector<int,double> vec;
    +typedef result_of::next<result_of::begin<vec>::type>::type second;
     
    -BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<second>::type, double>));
    +BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<second>::type, double>));
     
    @@ -132,7 +132,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/iterators/metafunctions/prior.html b/doc/html/fusion/iterators/metafunctions/prior.html index 98437f28..108996d0 100644 --- a/doc/html/fusion/iterators/metafunctions/prior.html +++ b/doc/html/fusion/iterators/metafunctions/prior.html @@ -3,37 +3,37 @@ prior - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    Returns the type of the previous iterator in a sequence.

    - + Synopsis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.14. Parameters

    +

    Table 1.14. Parameters

    @@ -73,7 +73,7 @@

    - I + I

    @@ -92,40 +92,40 @@
    - + Expression Semantics
    -result_of::prior<I>::type
    +result_of::prior<I>::type
     

    - Return type: A model of the same iterator - concept as I. + Return type: A model of the same iterator + concept as I.

    - Semantics: Returns an iterator to the - previous element in the sequence before I. + Semantics: Returns an iterator to the + previous element in the sequence before I.

    - + Header
     #include <boost/fusion/iterator/prior.hpp>
     
    - + Example
    -typedef vector<int,double> vec;
    -typedef result_of::next<result_of::begin<vec>::type>::type second;
    +typedef vector<int,double> vec;
    +typedef result_of::next<result_of::begin<vec>::type>::type second;
     
    -BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<second>::type, double>));
    +BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<second>::type, double>));
     
    -typedef result_of::prior<second>::type first;
    -BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<first>::type, int>));
    +typedef result_of::prior<second>::type first;
    +BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<first>::type, int>));
     
    @@ -135,7 +135,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/iterators/metafunctions/value_of.html b/doc/html/fusion/iterators/metafunctions/value_of.html index 0a430352..43183877 100644 --- a/doc/html/fusion/iterators/metafunctions/value_of.html +++ b/doc/html/fusion/iterators/metafunctions/value_of.html @@ -3,37 +3,37 @@ value_of - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    Returns the type stored at the position of an iterator.

    - + Synopsis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.11. Parameters

    +

    Table 1.11. Parameters

    @@ -73,7 +73,7 @@

    - I + I

    @@ -92,40 +92,40 @@
    - + Expression Semantics
    -result_of::value_of<I>::type
    +result_of::value_of<I>::type
     

    - Return type: Any type + Return type: Any type

    - Semantics: Returns the type stored in - a sequence at iterator position I. + Semantics: Returns the type stored in + a sequence at iterator position I.

    - + Header
     #include <boost/fusion/iterator/value_of.hpp>
     
    - + Example
    -typedef vector<int,int&,const int&> vec;
    -typedef result_of::begin<vec>::type first;
    -typedef result_of::next<first>::type second;
    -typedef result_of::next<second>::type third;
    +typedef vector<int,int&,const int&> vec;
    +typedef result_of::begin<vec>::type first;
    +typedef result_of::next<first>::type second;
    +typedef result_of::next<second>::type third;
     
    -BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<first>::type, int>));
    -BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<second>::type, int&>));
    -BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<third>::type, const int&>));
    +BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<first>::type, int>));
    +BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<second>::type, int&>));
    +BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<third>::type, const int&>));
     
    @@ -135,7 +135,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/iterators/operators.html b/doc/html/fusion/iterators/operators.html index 8abfbd6c..5b4fff25 100644 --- a/doc/html/fusion/iterators/operators.html +++ b/doc/html/fusion/iterators/operators.html @@ -3,7 +3,7 @@ Operators - + @@ -11,17 +11,17 @@ *"> - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -46,7 +46,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/iterators/operators/operator_equality.html b/doc/html/fusion/iterators/operators/operator_equality.html index 3279bad6..11217f05 100644 --- a/doc/html/fusion/iterators/operators/operator_equality.html +++ b/doc/html/fusion/iterators/operators/operator_equality.html @@ -4,7 +4,7 @@ Operator == - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -31,14 +31,14 @@ =="> Operator ==

    - + Description

    Compares 2 iterators for equality.

    - + Synopsis
    @@ -49,7 +49,7 @@
     unspecified operator==(I const& i, J const& i);
     
    -

    Table 1.9. Parameters

    +

    Table 1.9. Parameters

    @@ -76,7 +76,7 @@

    - i, j + i, j

    @@ -93,7 +93,7 @@
    - + Expression Semantics
    @@ -101,15 +101,15 @@ i == j

    - Return type: Convertible to bool. + Return type: Convertible to bool.

    - Semantics: Equivalent to result_of::equal_to<I,J>::value - where I and J are the types of i - and j respectively. + Semantics: Equivalent to result_of::equal_to<I,J>::value + where I and J are the types of i + and j respectively.

    - + Header
    @@ -123,7 +123,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/iterators/operators/operator_inequality.html b/doc/html/fusion/iterators/operators/operator_inequality.html index 7485a5e2..b45b56c0 100644 --- a/doc/html/fusion/iterators/operators/operator_inequality.html +++ b/doc/html/fusion/iterators/operators/operator_inequality.html @@ -4,7 +4,7 @@ Operator != - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -30,14 +30,14 @@ !="> Operator !=

    - + Description

    Compares 2 iterators for inequality.

    - + Synopsis
    @@ -48,7 +48,7 @@
     unspecified operator==(I const& i, J const& i);
     
    -

    Table 1.10. Parameters

    +

    Table 1.10. Parameters

    @@ -75,7 +75,7 @@

    - i, j + i, j

    @@ -92,20 +92,20 @@
    - + Expression Semantics

    - Return type: Convertible to bool. + Return type: Convertible to bool.

    - Semantics: Equivalent to !result_of::equal_to<I,J>::value - where I and J are the types of i - and j respectively. + Semantics: Equivalent to !result_of::equal_to<I,J>::value + where I and J are the types of i + and j respectively.

    - + Header
    @@ -119,7 +119,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/iterators/operators/operator_unary_star.html b/doc/html/fusion/iterators/operators/operator_unary_star.html index c1574731..e662dc4b 100644 --- a/doc/html/fusion/iterators/operators/operator_unary_star.html +++ b/doc/html/fusion/iterators/operators/operator_unary_star.html @@ -4,7 +4,7 @@ Operator * - + @@ -12,17 +12,17 @@ =="> - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -30,24 +30,24 @@ *"> Operator *

    - + Description

    Dereferences an iterator.

    - + Synopsis
     template<
         typename I
         >
    -typename result_of::deref<I>::type operator*(unspecified<I> const& i);
    +typename result_of::deref<I>::type operator*(unspecified<I> const& i);
     
    -

    Table 1.8. Parameters

    +

    Table 1.8. Parameters

    @@ -74,7 +74,7 @@

    - i + i

    @@ -93,7 +93,7 @@
    - + Expression Semantics
    @@ -101,31 +101,31 @@ *i

    - Return type: Equivalent to the return - type of deref(i). + Return type: Equivalent to the return + type of deref(i).

    - Semantics: Equivalent to deref(i). + Semantics: Equivalent to deref(i).

    - + Header
     #include <boost/fusion/iterator/deref.hpp>
     
    - + Example
    -typedef vector<int,int&> vec;
    +typedef vector<int,int&> vec;
     
     int i(0);
     vec v(1,i);
    -assert(*begin(v) == 1);
    -assert(*next(begin(v)) == 0);
    -assert(&(*next(begin(v))) == &i);
    +assert(*begin(v) == 1);
    +assert(*next(begin(v)) == 0);
    +assert(&(*next(begin(v))) == &i);
     
    @@ -135,7 +135,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/notes.html b/doc/html/fusion/notes.html index e46e0dc6..cdb87296 100644 --- a/doc/html/fusion/notes.html +++ b/doc/html/fusion/notes.html @@ -3,7 +3,7 @@ Notes - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    - + Recursive Inlined Functions

    - An interesting peculiarity of functions like at when applied to a at when applied to a Forward - Sequence like list is that what could have been + Sequence like list is that what could have been linear runtime complexity effectively becomes constant O(1) due to compiler optimization of C++ inlined functions, however deeply recursive (up to a certain compiler limit of course). Compile time complexity remains linear.

    - + Overloaded Functions

    Associative sequences use function overloading to implement membership testing and type associated key lookup. This amounts to constant runtime and amortized - constant compile time complexities. There is an overloaded function, f(k), for each key type k. The compiler chooses the appropriate function - given a key, k. + constant compile time complexities. There is an overloaded function, f(k), for each key type k. The compiler chooses the appropriate function + given a key, k.

    - + Tag Dispatching

    @@ -69,7 +69,7 @@

    - For example, the fusion result_of::begin metafunction + For example, the fusion result_of::begin metafunction is implemented as follows:

    @@ -87,22 +87,22 @@
         

    1. -Sequence is the type for - which a suitable implementation of result_of::begin_impl +Sequence is the type for + which a suitable implementation of result_of::begin_impl is required
    2. -traits::tag_of is the metafunction that associates - Sequence with an appropriate +traits::tag_of is the metafunction that associates + Sequence with an appropriate tag
    3. -result_of::begin_impl is the template which is specialized +result_of::begin_impl is the template which is specialized to provide an implementation for each tag type

    - + Extensibility

    @@ -114,13 +114,13 @@ and MPL on account of the lazy nature of fusion Algorithms. STL - containers extend themselves in place though member functions such as push_back and insert. MPL + containers extend themselves in place though member functions such as push_back and insert. MPL sequences, on the other hand, are extended through "intrinsic" functions that actually return whole sequences. MPL is purely functional and can not have side effects. For example, MPL's - push_back does not actually - mutate an mpl::vector. It can't do that. Instead, it returns - an extended mpl::vector. + push_back does not actually + mutate an mpl::vector. It can't do that. Instead, it returns + an extended mpl::vector.

    Like MPL, Fusion @@ -130,51 +130,51 @@ are sequences that do not actually contain data, but instead impart an alternative presentation over the data from one or more underlying sequences. Views are proxies. They provide an efficient yet purely functional way to work on - potentially expensive sequence operations. For example, given a vector, Fusion's push_back returns a joint_view, instead of an actual extended - vector. - A joint_view + potentially expensive sequence operations. For example, given a vector, Fusion's push_back returns a joint_view, instead of an actual extended + vector. + A joint_view holds a reference to the original sequence plus the appended data --making it very cheap to pass around.

    - + Element Conversion

    - Functions that take in elemental values to form sequences (e.g. make_list) convert their arguments + Functions that take in elemental values to form sequences (e.g. make_list) convert their arguments to something suitable to be stored as a sequence element. In general, the element types are stored as plain values. Example:

    -make_list(1, 'x')
    +make_list(1, 'x')
     

    - returns a list<int, - char>. + returns a list<int, + char>.

    There are a few exceptions, however.

    - Arrays: + Arrays:

    Array arguments are deduced to reference to const types. For example - [14] + [14] :

    -make_list("Donald", "Daisy")
    +make_list("Donald", "Daisy")
     

    - creates a list + creates a list of type

    -list<const char (&)[7], const char (&)[6]>
    +list<const char (&)[7], const char (&)[6]>
     

    - Function pointers: + Function pointers:

    Function pointers are deduced to the plain non-reference type (i.e. to plain @@ -183,38 +183,38 @@

     void f(int i);
       ...
    -make_list(&f);
    +make_list(&f);
     

    - creates a list + creates a list of type

    -list<void (*)(int)>
    +list<void (*)(int)>
     

    - + boost::ref

    - Fusion's generation functions (e.g. make_list) by default stores the element + Fusion's generation functions (e.g. make_list) by default stores the element types as plain non-reference types. Example:

     void foo(const A& a, B& b) {
         ...
    -    make_list(a, b)
    +    make_list(a, b)
     

    - creates a list + creates a list of type

    -list<A, B>
    +list<A, B>
     

    - Sometimes the plain non-reference type is not desired. You can use boost::ref - and boost::cref to store references or const references + Sometimes the plain non-reference type is not desired. You can use boost::ref + and boost::cref to store references or const references (respectively) instead. The mechanism does not compromise const correctness since a const object wrapped with ref results in a tuple element with const reference type (see the fifth code line below). Examples: @@ -224,11 +224,11 @@

     A a; B b; const A ca = a;
    -make_list(cref(a), b);          // creates list<const A&, B>
    -make_list(ref(a), b);           // creates list<A&, B>
    -make_list(ref(a), cref(b));     // creates list<A&, const B&>
    -make_list(cref(ca));            // creates list<const A&>
    -make_list(ref(ca));             // creates list<const A&>
    +make_list(cref(a), b);          // creates list<const A&, B>
    +make_list(ref(a), b);           // creates list<A&, B>
    +make_list(ref(a), cref(b));     // creates list<A&, const B&>
    +make_list(cref(ca));            // creates list<const A&>
    +make_list(ref(ca));             // creates list<const A&>
     

    See Boost.Ref for @@ -236,11 +236,11 @@



    -

    [14] +

    [14] 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). + 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).

    @@ -251,7 +251,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/organization.html b/doc/html/fusion/organization.html index 650b4ee2..71cb47b9 100644 --- a/doc/html/fusion/organization.html +++ b/doc/html/fusion/organization.html @@ -3,24 +3,24 @@ Organization - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -34,7 +34,7 @@ The library is organized in three layers:

    - + Layers

    @@ -56,7 +56,7 @@ against.

    - + Directory

      @@ -82,7 +82,7 @@
      • adapted -
          +
          • array
          • @@ -99,7 +99,7 @@
          • container -
              +
              • list
              • @@ -131,7 +131,7 @@
              • view -
                  +
                  • filter_view
                  • @@ -165,11 +165,11 @@

                  - + Example

                  - If, for example, you want to use list, + If, for example, you want to use list, depending on the granularity that you desire, you may do so by including one of

                  @@ -180,13 +180,13 @@

    The first includes all sequences. The second includes all of sequence containers. - The third includes only list - [3] + The third includes only list + [3] .



    -

    [3] +

    [3] Modules may contain smaller components. Header file information for each component will be provided as part of the component's documentation.

    @@ -199,7 +199,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/preface.html b/doc/html/fusion/preface.html index 44f6ffbc..889a4b5e 100644 --- a/doc/html/fusion/preface.html +++ b/doc/html/fusion/preface.html @@ -3,24 +3,24 @@ Preface - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -38,13 +38,13 @@

    - --Niklaus Wirth + --Niklaus Wirth

    - + Description

    @@ -62,7 +62,7 @@ of compile time metaprogramming with runtime programming.

    - + Motivation

    @@ -88,7 +88,7 @@ an instant AHA! moment.

    - + How to use this manual

    @@ -96,7 +96,7 @@ icons precede some text to indicate:

    -

    Table 1.1. Icons

    +

    Table 1.1. Icons

    @@ -199,7 +199,7 @@ Tools.

    - + Support

    @@ -220,7 +220,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/quick_start.html b/doc/html/fusion/quick_start.html index 52894bea..f3ca0949 100644 --- a/doc/html/fusion/quick_start.html +++ b/doc/html/fusion/quick_start.html @@ -3,63 +3,63 @@ Quick Start - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    I assume the reader is already familiar with tuples (Boost.Tuple) - and its ancestor std::pair. The tuple is a generalization of std::pair + and its ancestor std::pair. The tuple is a generalization of std::pair for multiple heterogeneous elements (triples, quadruples, etc.). The tuple - is more or less a synonym for fusion's vector. + is more or less a synonym for fusion's vector.

    For starters, we shall include all of Fusion's _sequence_s - [1] + [1] :

     #include <boost/fusion/sequence.hpp>
     

    - Let's begin with a vector - [2] + Let's begin with a vector + [2] :

    -vector<int, char, std::string> stuff(1, 'x', "howdy");
    -int i = at_c<0>(stuff);
    -char ch = at_c<1>(stuff);
    -std::string s = at_c<2>(stuff);
    +vector<int, char, std::string> stuff(1, 'x', "howdy");
    +int i = at_c<0>(stuff);
    +char ch = at_c<1>(stuff);
    +std::string s = at_c<2>(stuff);
     

    - Just replace tuple for vector - and get for at_c and this is exactly like + Just replace tuple for vector + and get for at_c and this is exactly like Boost.Tuple. Actually, either names can be used interchangeably. Yet, the similarity ends - there. You can do a lot more with Fusion vector or tuple. + there. You can do a lot more with Fusion vector or tuple. Let's see some examples.

    - + Print the vector as XML

    @@ -91,44 +91,38 @@ Now, finally:

    -for_each(stuff, print_xml());
    +for_each(stuff, print_xml());
     

    - That's it! for_each is a fusion algorithm. + That's it! for_each is a fusion algorithm. It is a generic algorithm similar to STL's. It iterates over the sequence and calls a user supplied function. In our case, - it calls print_xml's operator() for - each element in stuff. + it calls print_xml's operator() for + each element in stuff.

    - + - +
    [Caution][Caution] Caution
    -

    -

    -

    - The result of typeid(x).name() is platform specific. The code here is - just for exposition. Of course you already know that :-) -

    -

    -

    -

    + The result of typeid(x).name() is platform specific. The code here is + just for exposition. Of course you already know that :-) +

    - for_each is generic. With - print_xml, you can use it to + for_each is generic. With + print_xml, you can use it to print just about any Fusion Sequence.

    - + Print only pointers

    Let's get a little cleverer. Say we wish to write a generic function that takes in an arbitrary sequence and XML prints only those elements - which are pointers. Ah, easy. First, let's include the is_pointer + which are pointers. Ah, easy. First, let's include the is_pointer boost type trait:

    @@ -141,36 +135,36 @@
     template <typename Sequence>
     void xml_print_pointers(Sequence const& seq)
     {
    -    for_each(filter_if<boost::is_pointer<_> >(seq), print_xml());
    +    for_each(filter_if<boost::is_pointer<_> >(seq), print_xml());
     }
     

    - filter_if is another Fusion - algorithm. It returns a filter_view, a conforming Fusion sequence. + filter_if is another Fusion + algorithm. It returns a filter_view, a conforming Fusion sequence. This view reflects only those elements that pass the given predicate. In this - case, the predicate is boost::is_pointer<_>. - This "filtered view" is then passed to the for_each algorithm, which then prints + case, the predicate is boost::is_pointer<_>. + This "filtered view" is then passed to the for_each algorithm, which then prints the "filtered view" as XML.

    Easy, right?

    - + Associative tuples

    Ok, moving on...

    - Apart from vector, fusion has a couple + Apart from vector, fusion has a couple of other sequence types to choose from. Each sequence has its own characteristics. - We have list, set, map, plus a multitude of views that provide various ways to present + We have list, set, map, plus a multitude of views that provide various ways to present the sequences.

    - Fusion's map associate types with elements. - It can be used as a cleverer replacement of the struct. + Fusion's map associate types with elements. + It can be used as a cleverer replacement of the struct. Example:

    @@ -180,32 +174,32 @@
         struct age;
     }
     
    -typedef map<
    -    fusion::pair<fields::name, std::string>
    -  , fusion::pair<fields::age, int> > 
    +typedef map<
    +    fusion::pair<fields::name, std::string>
    +  , fusion::pair<fields::age, int> > 
     person;
     

    - map + map is an associative sequence. Its elements are Fusion pairs which differ somewhat - from std::pair. Fusion pairs only contain one member, + from std::pair. Fusion pairs only contain one member, with the type of their second template parameter. The first type parameter of the pair is used as an index to the associated element in the sequence. - For example, given a a_person - of type, person, you can do: + For example, given a a_person + of type, person, you can do:

     using namespace fields;
    -std::string person_name = at_key<name>(a_person);
    -int person_age = at_key<age>(a_person);
    +std::string person_name = at_key<name>(a_person);
    +int person_age = at_key<age>(a_person);
     

    - Why go through all this trouble, you say? Well, for one, unlike the struct, we are dealing with a generic data structure. + Why go through all this trouble, you say? Well, for one, unlike the struct, we are dealing with a generic data structure. There are a multitude of facilities available at your disposal provided out of the box with fusion or written by others. With these facilities, introspection comes for free, for example. We can write one serialization function (well, two, if you consider loading and saving) that will work for all your fusion - maps. + maps. Example:

    @@ -221,17 +215,17 @@
     template <typename Stuff>
     void save(Stuff const& stuff)
     {
    -    for_each(stuff, saver());
    +    for_each(stuff, saver());
     }
     

    - The save function is generic - and will work for all types of stuff - regardless if it is a person, - a dog or a whole alternate_universe. + The save function is generic + and will work for all types of stuff + regardless if it is a person, + a dog or a whole alternate_universe.

    - + Tip of the Iceberg

    @@ -242,14 +236,14 @@



    -

    [1] +

    [1] There are finer grained header files available if you wish to have more control over which components to include (see section Orgainization for details).

    -

    [2] - 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 +

    [2] + 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.

    @@ -261,7 +255,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/references.html b/doc/html/fusion/references.html index c4c9c77c..452b9622 100644 --- a/doc/html/fusion/references.html +++ b/doc/html/fusion/references.html @@ -3,23 +3,23 @@ References - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHome +PrevUpHome

    @@ -62,7 +62,7 @@
    -PrevUpHome +PrevUpHome
    diff --git a/doc/html/fusion/sequences.html b/doc/html/fusion/sequences.html index 6888e96f..8401c4a8 100644 --- a/doc/html/fusion/sequences.html +++ b/doc/html/fusion/sequences.html @@ -3,24 +3,24 @@ Sequences - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -95,7 +95,7 @@ type that can be used to iterate through the Sequence's elements.

    - + Header

    @@ -109,7 +109,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/adapted.html b/doc/html/fusion/sequences/adapted.html index 061b7d2e..a9c16943 100644 --- a/doc/html/fusion/sequences/adapted.html +++ b/doc/html/fusion/sequences/adapted.html @@ -3,24 +3,24 @@ Adapted - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -33,18 +33,18 @@
    boost::variant

    - Fusion provides a couple of adapters for other sequences such as std::pair, + Fusion provides a couple of adapters for other sequences such as std::pair, MPL sequences, - and boost::array. These adapters are written using + and boost::array. These adapters are written using Fusion's non-intrusive Extension mechanism. If you wish to use these sequences with fusion, simply include the necessary files and they will be regarded as first-class, fully conforming fusion sequences - [4] + [4] .

    - + Header

    @@ -52,7 +52,7 @@
     


    -

    [4] +

    [4] Fusion sequences may also be adapted as fully conforming MPL sequences (see Intrinsics). That way, we can have 2-way adaptation to and from MPL @@ -67,7 +67,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/adapted/boost__array.html b/doc/html/fusion/sequences/adapted/boost__array.html index f7c44a17..7a5ceae1 100644 --- a/doc/html/fusion/sequences/adapted/boost__array.html +++ b/doc/html/fusion/sequences/adapted/boost__array.html @@ -3,64 +3,64 @@ boost::array - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    - This module provides adapters for boost::array. - Including the module header makes boost::array + This module provides adapters for boost::array. + Including the module header makes boost::array a fully conforming Random Access Sequence.

    - + Header
     #include <boost/fusion/sequence/adapted/array.hpp>
     
    - + Model of
    - + Example
     boost::array<int,3> arr = {{1,2,3}};
     
    -std::cout << *begin(arr) << std::endl;
    -std::cout << *next(begin(arr)) << std::endl;
    -std::cout << *advance_c<2>(begin(arr)) << std::endl;
    -std::cout << *prior(end(arr)) << std::endl;
    -std::cout << at_c<2>(arr) << std::endl;
    +std::cout << *begin(arr) << std::endl;
    +std::cout << *next(begin(arr)) << std::endl;
    +std::cout << *advance_c<2>(begin(arr)) << std::endl;
    +std::cout << *prior(end(arr)) << std::endl;
    +std::cout << at_c<2>(arr) << std::endl;
     
    - + See also

    @@ -74,7 +74,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/adapted/boost__tuple.html b/doc/html/fusion/sequences/adapted/boost__tuple.html index 938bac68..18d00ad5 100644 --- a/doc/html/fusion/sequences/adapted/boost__tuple.html +++ b/doc/html/fusion/sequences/adapted/boost__tuple.html @@ -3,50 +3,50 @@ boost::tuple - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    - This module provides adapters for boost::tuple. - Including the module header makes boost::tuple + This module provides adapters for boost::tuple. + Including the module header makes boost::tuple a fully conforming Forward Sequence.

    - + Header
     #include <boost/fusion/sequence/adapted/boost_tuple.hpp>
     
    - + Model of
    - + Example
    @@ -55,7 +55,7 @@
     std::cout << *boost::fusion::next(boost::fusion::begin(example_tuple)) << '\n';
     
    - + See also

    @@ -70,7 +70,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/adapted/boost__variant.html b/doc/html/fusion/sequences/adapted/boost__variant.html index a99f9509..3f91a088 100644 --- a/doc/html/fusion/sequences/adapted/boost__variant.html +++ b/doc/html/fusion/sequences/adapted/boost__variant.html @@ -3,31 +3,31 @@ boost::variant - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    - This module provides adapters for boost::variant. - Including the module header makes boost::variant + This module provides adapters for boost::variant. + Including the module header makes boost::variant a fully conforming Forward Sequence. The variant acts as a sequence of the types that can be @@ -36,21 +36,21 @@ value of that type.

    - + Header
     #include <boost/fusion/sequence/adapted/variant.hpp>
     
    - + Model of
    - + Example
    @@ -60,7 +60,7 @@
     std::cout << example_variant << '\n';
     
    - + See also

    @@ -74,7 +74,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/adapted/mpl_sequence.html b/doc/html/fusion/sequences/adapted/mpl_sequence.html index f9e1f6e6..4a2245ef 100644 --- a/doc/html/fusion/sequences/adapted/mpl_sequence.html +++ b/doc/html/fusion/sequences/adapted/mpl_sequence.html @@ -3,24 +3,24 @@ mpl sequence - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -31,14 +31,14 @@ sequences fully conforming fusion sequences.

    - + Header
     #include <boost/fusion/sequence/adapted/mpl.hpp>
     
    - + Model of
      @@ -62,21 +62,21 @@
    - + Example
     mpl::vector_c<int, 123, 456> vec_c;
     fusion::vector2<int, long> v(vec_c);
    -std::cout << at_c<0>(v) << std::endl;
    -std::cout << at_c<1>(v) << std::endl;
    +std::cout << at_c<0>(v) << std::endl;
    +std::cout << at_c<1>(v) << std::endl;
     
     v = mpl::vector_c<int, 456, 789>();
    -std::cout << at_c<0>(v) << std::endl;
    -std::cout << at_c<1>(v) << std::endl;
    +std::cout << at_c<0>(v) << std::endl;
    +std::cout << at_c<1>(v) << std::endl;
     
    - + See also

    @@ -90,7 +90,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/adapted/std__pair.html b/doc/html/fusion/sequences/adapted/std__pair.html index fe7f5696..33e23443 100644 --- a/doc/html/fusion/sequences/adapted/std__pair.html +++ b/doc/html/fusion/sequences/adapted/std__pair.html @@ -3,67 +3,67 @@ std::pair - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    - This module provides adapters for std::pair. - Including the module header makes std::pair + This module provides adapters for std::pair. + Including the module header makes std::pair a fully conforming Random Access Sequence.

    - + Header
     #include <boost/fusion/sequence/adapted/std_pair.hpp>
     
    - + Model of
    - + Example
     std::pair<int, std::string> p(123, "Hola!!!");
    -std::cout << at_c<0>(p) << std::endl;
    -std::cout << at_c<1>(p) << std::endl;
    +std::cout << at_c<0>(p) << std::endl;
    +std::cout << at_c<1>(p) << std::endl;
     std::cout << p << std::endl;
     
    - + See also

    - std::pair, - TR1 - and std::pair + std::pair, + TR1 + and std::pair

    @@ -73,7 +73,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/concepts.html b/doc/html/fusion/sequences/concepts.html index f87f6f03..82fea73a 100644 --- a/doc/html/fusion/sequences/concepts.html +++ b/doc/html/fusion/sequences/concepts.html @@ -3,7 +3,7 @@ Concepts - + @@ -11,17 +11,17 @@ Sequence"> - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -40,7 +40,7 @@ Fusion Sequences are organized into a hierarchy of concepts.

    - + Traversal

    @@ -58,7 +58,7 @@ Sequence. These concepts pertain to sequence traversal.

    - + Associativity

    @@ -75,7 +75,7 @@


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/concepts/associative_sequence.html b/doc/html/fusion/sequences/concepts/associative_sequence.html index 13f2d6d5..90c5b78f 100644 --- a/doc/html/fusion/sequences/concepts/associative_sequence.html +++ b/doc/html/fusion/sequences/concepts/associative_sequence.html @@ -4,7 +4,7 @@ Associative Sequence - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -30,7 +30,7 @@ Sequence">Associative Sequence

    - + Description

    @@ -48,30 +48,30 @@

    Notation

    -
    s
    -
    - An Associative Sequence -
    -
    S
    -
    - An Associative Sequence type -
    -
    K
    -
    - An arbitrary key type -
    -
    o
    -
    - An arbitrary object -
    -
    e
    -
    - A Sequence element -
    +
    s
    +

    + An Associative Sequence +

    +
    S
    +

    + An Associative Sequence type +

    +
    K
    +

    + An arbitrary key type +

    +
    o
    +

    + An arbitrary object +

    +
    e
    +

    + A Sequence element +

    - + Valid Expressions
    @@ -111,7 +111,7 @@

    - has_key<K>(s) + has_key<K>(s)

    @@ -133,7 +133,7 @@

    - at_key<K>(s) + at_key<K>(s)

    @@ -154,8 +154,8 @@

    - at_key<K>(s) - = o + at_key<K>(s) + = o

    @@ -165,9 +165,9 @@

    - s is mutable and - e = - o, where e is the first element in the + s is mutable and + e = + o, where e is the first element in the sequence, is a valid expression.

    @@ -180,7 +180,7 @@
    - + Result Type Expressions
    @@ -205,8 +205,8 @@

    - result_of::has_key<S, - K>::type + result_of::has_key<S, + K>::type

    @@ -218,8 +218,8 @@

    - result_of::at_key<S, - K>::type + result_of::at_key<S, + K>::type

    @@ -231,8 +231,8 @@

    - result_of::value_at_key<S, - K>::type + result_of::value_at_key<S, + K>::type

    @@ -244,15 +244,15 @@
    - + Expression Semantics
    @@ -277,42 +277,42 @@

    - has_key<K>(s) + has_key<K>(s)

    - A boolean Integral Constant c - such that c::value == - true if and only if there - is one or more elements with the key k - in s; see has_key. + A boolean Integral Constant c + such that c::value == + true if and only if there + is one or more elements with the key k + in s; see has_key.

    - at_key<K>(s) + at_key<K>(s)

    - The element associated with the key K - in the sequence s; - see at. + The element associated with the key K + in the sequence s; + see at.

    - + Models
    @@ -322,7 +322,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/concepts/bidirectional_sequence.html b/doc/html/fusion/sequences/concepts/bidirectional_sequence.html index 02db76e5..ec2bcca6 100644 --- a/doc/html/fusion/sequences/concepts/bidirectional_sequence.html +++ b/doc/html/fusion/sequences/concepts/bidirectional_sequence.html @@ -4,7 +4,7 @@ Bidirectional Sequence - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -31,7 +31,7 @@ Sequence">Bidirectional Sequence

    - + Description

    @@ -42,7 +42,7 @@ Iterator.

    - + Refinement of
    @@ -53,26 +53,26 @@

    Notation

    -
    s
    -
    - A Forward Sequence -
    -
    S
    -
    - A Forward Sequence type -
    -
    o
    -
    - An arbitrary object -
    -
    e
    -
    - A Sequence element -
    +
    s
    +

    + A Forward Sequence +

    +
    S
    +

    + A Forward Sequence type +

    +
    o
    +

    + An arbitrary object +

    +
    e
    +

    + A Sequence element +

    - + Valid Expressions
    @@ -114,7 +114,7 @@

    - begin(s) + begin(s)

    @@ -137,7 +137,7 @@

    - end(s) + end(s)

    @@ -160,7 +160,7 @@

    - back(s) + back(s)

    @@ -181,8 +181,8 @@

    - back(s) - = o + back(s) + = o

    @@ -192,9 +192,9 @@

    - s is mutable and - e = - o, where e is the first element in the + s is mutable and + e = + o, where e is the first element in the sequence, is a valid expression.

    @@ -207,7 +207,7 @@
    - + Result Type Expressions
    @@ -232,7 +232,7 @@

    - result_of::begin<S>::type + result_of::begin<S>::type

    @@ -244,7 +244,7 @@

    - result_of::end<S>::type + result_of::end<S>::type

    @@ -256,7 +256,7 @@

    - result_of::back<S>::type + result_of::back<S>::type

    @@ -268,7 +268,7 @@
    - + Expression Semantics
    @@ -298,35 +298,35 @@

    - back(s) + back(s)

    - The last element in the sequence; see back. + The last element in the sequence; see back.

    - + Models
    @@ -338,7 +338,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/concepts/forward_sequence.html b/doc/html/fusion/sequences/concepts/forward_sequence.html index 87b1b377..6c6f1912 100644 --- a/doc/html/fusion/sequences/concepts/forward_sequence.html +++ b/doc/html/fusion/sequences/concepts/forward_sequence.html @@ -4,7 +4,7 @@ Forward Sequence - + @@ -12,17 +12,17 @@ Sequence"> - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -30,7 +30,7 @@ Sequence">Forward Sequence

    - + Description

    @@ -43,26 +43,26 @@

    Notation

    -
    s
    -
    - A Forward Sequence -
    -
    S
    -
    - A Forward Sequence type -
    -
    o
    -
    - An arbitrary object -
    -
    e
    -
    - A Sequence element -
    +
    s
    +

    + A Forward Sequence +

    +
    S
    +

    + A Forward Sequence type +

    +
    o
    +

    + An arbitrary object +

    +
    e
    +

    + A Sequence element +

    - + Valid Expressions
    @@ -102,7 +102,7 @@

    - begin(s) + begin(s)

    @@ -125,7 +125,7 @@

    - end(s) + end(s)

    @@ -148,7 +148,7 @@

    - size(s) + size(s)

    @@ -170,7 +170,7 @@

    - empty(s) + empty(s)

    @@ -192,7 +192,7 @@

    - front(s) + front(s)

    @@ -213,8 +213,8 @@

    - front(s) - = o + front(s) + = o

    @@ -224,9 +224,9 @@

    - s is mutable and - e = - o, where e is the first element in the + s is mutable and + e = + o, where e is the first element in the sequence, is a valid expression.

    @@ -239,7 +239,7 @@
    - + Result Type Expressions
    @@ -264,7 +264,7 @@

    - result_of::begin<S>::type + result_of::begin<S>::type

    @@ -276,7 +276,7 @@

    - result_of::end<S>::type + result_of::end<S>::type

    @@ -288,7 +288,7 @@

    - result_of::size<S>::type + result_of::size<S>::type

    @@ -300,7 +300,7 @@

    - result_of::empty<S>::type + result_of::empty<S>::type

    @@ -312,7 +312,7 @@

    - result_of::front<S>::type + result_of::front<S>::type

    @@ -324,7 +324,7 @@
    - + Expression Semantics
    @@ -349,70 +349,70 @@

    - begin(s) + begin(s)

    - An iterator to the first element of the sequence; see begin. + An iterator to the first element of the sequence; see begin.

    - end(s) + end(s)

    - A past-the-end iterator to the sequence; see end. + A past-the-end iterator to the sequence; see end.

    - size(s) + size(s)

    - The size of the sequence; see size. + The size of the sequence; see size.

    - empty(s) + empty(s)

    - A boolean Integral Constant c - such that c::value == - true if and only if the - sequence is empty; see empty. + A boolean Integral Constant c + such that c::value == + true if and only if the + sequence is empty; see empty.

    - front(s) + front(s)

    - The first element in the sequence; see front. + The first element in the sequence; see front.

    - + Invariants

    @@ -420,42 +420,42 @@

    • -[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. + 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 + Two different iterations through s will access its elements in the same order.
    - + Models
    @@ -465,7 +465,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/concepts/random_access_sequence.html b/doc/html/fusion/sequences/concepts/random_access_sequence.html index 34dd60ab..284cdab5 100644 --- a/doc/html/fusion/sequences/concepts/random_access_sequence.html +++ b/doc/html/fusion/sequences/concepts/random_access_sequence.html @@ -4,7 +4,7 @@ Random Access Sequence - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -31,7 +31,7 @@ Access Sequence">Random Access Sequence

    - + Description

    @@ -43,7 +43,7 @@ sequence elements.

    - + Refinement of
    @@ -55,31 +55,31 @@

    Notation

    -
    s
    -
    - A Random Access Sequence -
    -
    S
    -
    - A Random Access Sequence type -
    -
    N
    -
    - An MPL - Integral Constant -
    -
    o
    -
    - An arbitrary object -
    -
    e
    -
    - A Sequence element -
    +
    s
    +

    + A Random Access Sequence +

    +
    S
    +

    + A Random Access Sequence type +

    +
    N
    +

    + An MPL + Integral Constant +

    +
    o
    +

    + An arbitrary object +

    +
    e
    +

    + A Sequence element +

    - + Valid Expressions
    @@ -121,7 +121,7 @@

    - begin(s) + begin(s)

    @@ -144,7 +144,7 @@

    - end(s) + end(s)

    @@ -167,7 +167,7 @@

    - at<N>(s) + at<N>(s)

    @@ -188,8 +188,8 @@

    - at<N>(s) - = o + at<N>(s) + = o

    @@ -199,9 +199,9 @@

    - s is mutable and - e = - o, where e is the first element in the + s is mutable and + e = + o, where e is the first element in the sequence, is a valid expression.

    @@ -214,7 +214,7 @@
    - + Result Type Expressions
    @@ -239,7 +239,7 @@

    - result_of::begin<S>::type + result_of::begin<S>::type

    @@ -251,7 +251,7 @@

    - result_of::end<S>::type + result_of::end<S>::type

    @@ -263,8 +263,8 @@

    - result_of::at<S, - N>::type + result_of::at<S, + N>::type

    @@ -276,8 +276,8 @@

    - result_of::value_at<S, - N>::type + result_of::value_at<S, + N>::type

    @@ -289,15 +289,15 @@
    - + Expression Semantics
    @@ -327,35 +327,35 @@

    - at<N>(s) + at<N>(s)

    - The Nth element from the beginning of the sequence; see at. + The Nth element from the beginning of the sequence; see at.

    - + Models
    @@ -367,7 +367,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/containers.html b/doc/html/fusion/sequences/containers.html index bc863188..3aaeab63 100644 --- a/doc/html/fusion/sequences/containers.html +++ b/doc/html/fusion/sequences/containers.html @@ -3,7 +3,7 @@ Containers - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -39,7 +39,7 @@ These containers are more or less counterparts of those in STL.

    - + Header

    @@ -53,7 +53,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/containers/cons.html b/doc/html/fusion/sequences/containers/cons.html index 562e566d..2cfb5359 100644 --- a/doc/html/fusion/sequences/containers/cons.html +++ b/doc/html/fusion/sequences/containers/cons.html @@ -3,52 +3,52 @@ cons - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - cons is a simple cons is a simple Forward Sequence. - It is a lisp style recursive list structure where car - is the head and cdr - is the tail: usually another cons structure or nil: the empty list. Fusion's list is built on top of this more - primitive data structure. It is more efficient than vector when the target sequence + It is a lisp style recursive list structure where car + is the head and cdr + is the tail: usually another cons structure or nil: the empty list. Fusion's list is built on top of this more + primitive data structure. It is more efficient than vector when the target sequence is constructed piecemeal (a data at a time). The runtime cost of access to each element is peculiarly constant (see Recursive Inlined Functions).

    - + Header
     #include <boost/fusion/sequence/container/list/cons.hpp>
     
    - + Synopsis
    @@ -56,7 +56,7 @@
     struct cons;
     
    - + Template parameters
    @@ -87,7 +87,7 @@

    - Car + Car

    @@ -103,7 +103,7 @@

    - Cdr + Cdr

    @@ -113,14 +113,14 @@

    - nil + nil

    - + Model of
    - + Expression Semantics
    @@ -194,7 +194,7 @@

    - nil() + nil()

    @@ -206,7 +206,7 @@

    - C() + C()

    @@ -218,12 +218,12 @@

    - C(car) + C(car)

    - Creates a cons with car + Creates a cons with car head and default constructed tail.

    @@ -231,81 +231,81 @@

    - C(car, - cdr) + C(car, + cdr)

    - Creates a cons with car - head and cdr tail. + Creates a cons with car + head and cdr tail.

    - C(s) + C(s)

    Copy constructs a cons from a Forward - Sequence, s. + Sequence, s.

    - l = - s + l = + s

    - Assigns to a cons, l, + Assigns to a cons, l, from a Forward - Sequence, s. + Sequence, s.

    - at<N>(l) + at<N>(l)

    - The Nth element from the beginning of the sequence; see at. + The Nth element from the beginning of the sequence; see at.

    - + Example
     cons<int, cons<float> > l(12, cons<float>(5.5f));
    -std::cout << at_c<0>(l) << std::endl;
    -std::cout << at_c<1>(l) << std::endl;
    +std::cout << at_c<0>(l) << std::endl;
    +std::cout << at_c<1>(l) << std::endl;
     
    @@ -315,7 +315,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/containers/list.html b/doc/html/fusion/sequences/containers/list.html index d2a8b965..53979305 100644 --- a/doc/html/fusion/sequences/containers/list.html +++ b/doc/html/fusion/sequences/containers/list.html @@ -3,42 +3,42 @@ list - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - list is a list is a Forward - Sequence of heterogenous typed data built on top of cons. It is more efficient than - vector + Sequence of heterogenous typed data built on top of cons. It is more efficient than + vector when the target sequence is constructed piecemeal (a data at a time). The runtime cost of access to each element is peculiarly constant (see Recursive Inlined Functions).

    - + Header
    @@ -46,7 +46,7 @@
     #include <boost/fusion/sequence/container/list/list_forward.hpp>
     
    - + Synopsis
    @@ -60,24 +60,24 @@
     struct list;
     

    - The variadic class interface accepts 0 - to FUSION_MAX_LIST_SIZE - elements, where FUSION_MAX_LIST_SIZE - is a user definable predefined maximum that defaults to 10. + The variadic class interface accepts 0 + to FUSION_MAX_LIST_SIZE + elements, where FUSION_MAX_LIST_SIZE + is a user definable predefined maximum that defaults to 10. Example:

     list<int, char, double>
     

    - You may define the preprocessor constant FUSION_MAX_LIST_SIZE + You may define the preprocessor constant FUSION_MAX_LIST_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_LIST_SIZE 20
     
    - + Template parameters
    @@ -107,7 +107,7 @@

    - T0...TN + T0...TN

    @@ -123,7 +123,7 @@
    - + Model of
    - + Expression Semantics
    @@ -188,7 +188,7 @@

    - L() + L()

    @@ -200,80 +200,80 @@

    - L(e0, + L(e0, e1,... - en) + en)

    - Creates a list with elements e0...en. + Creates a list with elements e0...en.

    - L(s) + L(s)

    Copy constructs a list from a Forward - Sequence, s. + Sequence, s.

    - l = - s + l = + s

    - Assigns to a list, l, + Assigns to a list, l, from a Forward - Sequence, s. + Sequence, s.

    - at<N>(l) + at<N>(l)

    - The Nth element from the beginning of the sequence; see at. + The Nth element from the beginning of the sequence; see at.

    - + Example
     list<int, float> l(12, 5.5f);
    -std::cout << at_c<0>(l) << std::endl;
    -std::cout << at_c<1>(l) << std::endl;
    +std::cout << at_c<0>(l) << std::endl;
    +std::cout << at_c<1>(l) << std::endl;
     
    @@ -283,7 +283,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/containers/map.html b/doc/html/fusion/sequences/containers/map.html index 8edce548..aa008e09 100644 --- a/doc/html/fusion/sequences/containers/map.html +++ b/doc/html/fusion/sequences/containers/map.html @@ -3,37 +3,37 @@ map - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    map is an Associative Sequence of heteregenous typed data elements. Each element is a - key/data pair (see fusion::pair) + key/data pair (see fusion::pair) where the key has no data (type only). Type identity is used to impose an equivalence relation on keys. A map may contain at most one element for each key. Membership testing and element key lookup has constant runtime @@ -41,14 +41,14 @@ Functions).

    - + Header
     #include <boost/fusion/sequence/container/map.hpp>
     
    - + Synopsis
    @@ -62,24 +62,24 @@
     struct map;
     

    - The variadic class interface accepts 0 - to FUSION_MAX_MAP_SIZE - elements, where FUSION_MAX_MAP_SIZE - is a user definable predefined maximum that defaults to 10. + The variadic class interface accepts 0 + to FUSION_MAX_MAP_SIZE + elements, where FUSION_MAX_MAP_SIZE + is a user definable predefined maximum that defaults to 10. Example:

    -map<pair<int, char>, pair<char, char>, pair<double, char> >
    +map<pair<int, char>, pair<char, char>, pair<double, char> >
     

    - You may define the preprocessor constant FUSION_MAX_MAP_SIZE + You may define the preprocessor constant FUSION_MAX_MAP_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_MAP_SIZE 20
     
    - + Template parameters
    @@ -109,7 +109,7 @@

    - T0...TN + T0...TN

    @@ -125,7 +125,7 @@
    - + Model of
    - + Example
     typedef map<
    -    pair<int, char>
    -  , pair<double, std::string> >
    +    pair<int, char>
    +  , pair<double, std::string> >
     map_type;
     
     map_type m(
    -    make_pair<int>('X')
    -  , make_pair<double>("Men"));
    +    make_pair<int>('X')
    +  , make_pair<double>("Men"));
     
    -std::cout << at_key<int>(m) << std::endl;
    -std::cout << at_key<double>(m) << std::endl;
    +std::cout << at_key<int>(m) << std::endl;
    +std::cout << at_key<double>(m) << std::endl;
     
    @@ -272,7 +272,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/containers/set.html b/doc/html/fusion/sequences/containers/set.html index 43b641fb..27a4d5a1 100644 --- a/doc/html/fusion/sequences/containers/set.html +++ b/doc/html/fusion/sequences/containers/set.html @@ -3,30 +3,30 @@ set - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    @@ -39,14 +39,14 @@ Functions).

    - + Header
     #include <boost/fusion/sequence/container/set.hpp>
     
    - + Synopsis
    @@ -60,24 +60,24 @@
     struct set;
     

    - The variadic class interface accepts 0 - to FUSION_MAX_SET_SIZE - elements, where FUSION_MAX_SET_SIZE - is a user definable predefined maximum that defaults to 10. + The variadic class interface accepts 0 + to FUSION_MAX_SET_SIZE + elements, where FUSION_MAX_SET_SIZE + is a user definable predefined maximum that defaults to 10. Example:

     set<int, char, double>
     

    - You may define the preprocessor constant FUSION_MAX_SET_SIZE + You may define the preprocessor constant FUSION_MAX_SET_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_SET_SIZE 20
     
    - + Template parameters
    @@ -107,7 +107,7 @@

    - T0...TN + T0...TN

    @@ -123,7 +123,7 @@
    - + Model of
    - + Example
     typedef set<int, float> S;
     S s(12, 5.5f);
    -std::cout << at_key<int>(s) << std::endl;
    -std::cout << at_key<float>(s) << std::endl;
    -std::cout << result_of::has_key<S, double>::value << std::endl;
    +std::cout << at_key<int>(s) << std::endl;
    +std::cout << at_key<float>(s) << std::endl;
    +std::cout << result_of::has_key<S, double>::value << std::endl;
     
    @@ -264,7 +264,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/containers/vector.html b/doc/html/fusion/sequences/containers/vector.html index f28757ac..3171d7da 100644 --- a/doc/html/fusion/sequences/containers/vector.html +++ b/doc/html/fusion/sequences/containers/vector.html @@ -3,43 +3,43 @@ vector - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - vector is a vector is a Random Access Sequence of heterogenous typed data structured as a simple - struct where each element - is held as a member variable. vector + struct where each element + is held as a member variable. vector is the simplest of the Fusion sequence container, and in many cases the most efficient.

    - + Header
    @@ -54,11 +54,11 @@
     #include <boost/fusion/sequence/container/vector/vector50.hpp>
     
    - + Synopsis

    - Numbered forms + Numbered forms

     template <>
    @@ -79,7 +79,7 @@
     struct vectorN;
     

    - Variadic form + Variadic form

     template <
    @@ -98,24 +98,24 @@
     vector3<int, char, double>
     

    - The variadic form accepts 0 - to FUSION_MAX_VECTOR_SIZE - elements, where FUSION_MAX_VECTOR_SIZE - is a user definable predefined maximum that defaults to 10. + The variadic form accepts 0 + to FUSION_MAX_VECTOR_SIZE + elements, where FUSION_MAX_VECTOR_SIZE + is a user definable predefined maximum that defaults to 10. Example:

     vector<int, char, double>
     

    - You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE + You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Template parameters
    @@ -145,7 +145,7 @@

    - T0...TN + T0...TN

    @@ -161,7 +161,7 @@
    - + Model of
    - + Expression Semantics
    @@ -222,7 +222,7 @@

    - V() + V()

    @@ -234,57 +234,57 @@

    - V(e0, + V(e0, e1,... - en) + en)

    - Creates a vector with elements e0...en. + Creates a vector with elements e0...en.

    - V(s) + V(s)

    Copy constructs a vector from a Forward - Sequence, s. + Sequence, s.

    - v = - s + v = + s

    - Assigns to a vector, v, + Assigns to a vector, v, from a Forward - Sequence, s. + Sequence, s.

    - + Example
     vector<int, float> v(12, 5.5f);
    -std::cout << at_c<0>(v) << std::endl;
    -std::cout << at_c<1>(v) << std::endl;
    +std::cout << at_c<0>(v) << std::endl;
    +std::cout << at_c<1>(v) << std::endl;
     
    @@ -294,7 +294,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/conversion.html b/doc/html/fusion/sequences/conversion.html index dc3da6a4..16a57f79 100644 --- a/doc/html/fusion/sequences/conversion.html +++ b/doc/html/fusion/sequences/conversion.html @@ -3,24 +3,24 @@ Conversion - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -34,7 +34,7 @@ types using one of these conversion functions.

    - + Header

    @@ -48,7 +48,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/conversion/functions.html b/doc/html/fusion/sequences/conversion/functions.html index fc595a49..9f4b7851 100644 --- a/doc/html/fusion/sequences/conversion/functions.html +++ b/doc/html/fusion/sequences/conversion/functions.html @@ -3,24 +3,24 @@ Functions - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -39,7 +39,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/conversion/functions/as_list.html b/doc/html/fusion/sequences/conversion/functions/as_list.html index e10bbfa1..5f215095 100644 --- a/doc/html/fusion/sequences/conversion/functions/as_list.html +++ b/doc/html/fusion/sequences/conversion/functions/as_list.html @@ -3,37 +3,37 @@ as_list - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Convert a fusion sequence to a list. + Convert a fusion sequence to a list.

    - + Synopsis
    @@ -46,7 +46,7 @@
     as_list(Sequence const& seq);
     
    - + Parameters
    @@ -75,7 +75,7 @@

    - seq + seq

    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -99,25 +99,25 @@ as_list(seq);

    - Return type: result_of::as_list<Sequence>::type + Return type: result_of::as_list<Sequence>::type

    - Semantics: Convert a fusion sequence, - seq, to a list. + Semantics: Convert a fusion sequence, + seq, to a list.

    - + Header
     #include <boost/fusion/sequence/conversion/as_list.hpp>
     
    - + Example
    -as_list(make_vector('x', 123, "hello"))
    +as_list(make_vector('x', 123, "hello"))
     
    @@ -127,7 +127,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/conversion/functions/as_map.html b/doc/html/fusion/sequences/conversion/functions/as_map.html index 4a2b0fa9..01786405 100644 --- a/doc/html/fusion/sequences/conversion/functions/as_map.html +++ b/doc/html/fusion/sequences/conversion/functions/as_map.html @@ -3,37 +3,37 @@ as_map - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Convert a fusion sequence to a map. + Convert a fusion sequence to a map.

    - + Synopsis
    @@ -46,7 +46,7 @@
     as_map(Sequence const& seq);
     
    - + Parameters
    @@ -75,7 +75,7 @@

    - seq + seq

    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -99,32 +99,32 @@ as_map(seq);

    - Return type: result_of::as_map<Sequence>::type + Return type: result_of::as_map<Sequence>::type

    - Semantics: Convert a fusion sequence, - seq, to a map. + Semantics: Convert a fusion sequence, + seq, to a map.

    - Precondition: The elements of the sequence + Precondition: The elements of the sequence are assumed to be __fusionpair_s. - There may be no duplicate fusion::pair key types. + There may be no duplicate fusion::pair key types.

    - + Header
     #include <boost/fusion/sequence/conversion/as_map.hpp>
     
    - + Example
    -as_map(make_vector(
    -    make_pair<int>('X')
    -  , make_pair<double>("Men")))
    +as_map(make_vector(
    +    make_pair<int>('X')
    +  , make_pair<double>("Men")))
     
    @@ -134,7 +134,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/conversion/functions/as_set.html b/doc/html/fusion/sequences/conversion/functions/as_set.html index 9fd05e21..1c86ca46 100644 --- a/doc/html/fusion/sequences/conversion/functions/as_set.html +++ b/doc/html/fusion/sequences/conversion/functions/as_set.html @@ -3,37 +3,37 @@ as_set - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Convert a fusion sequence to a set. + Convert a fusion sequence to a set.

    - + Synopsis
    @@ -46,7 +46,7 @@
     as_set(Sequence const& seq);
     
    - + Parameters
    @@ -75,7 +75,7 @@

    - seq + seq

    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -99,29 +99,29 @@ as_set(seq);

    - Return type: result_of::as_set<Sequence>::type + Return type: result_of::as_set<Sequence>::type

    - Semantics: Convert a fusion sequence, - seq, to a set. + Semantics: Convert a fusion sequence, + seq, to a set.

    - Precondition: There may be no duplicate + Precondition: There may be no duplicate key types.

    - + Header
     #include <boost/fusion/sequence/conversion/as_set.hpp>
     
    - + Example
    -as_set(make_vector('x', 123, "hello"))
    +as_set(make_vector('x', 123, "hello"))
     
    @@ -131,7 +131,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/conversion/functions/as_vector.html b/doc/html/fusion/sequences/conversion/functions/as_vector.html index b04dc65f..56a15e55 100644 --- a/doc/html/fusion/sequences/conversion/functions/as_vector.html +++ b/doc/html/fusion/sequences/conversion/functions/as_vector.html @@ -3,37 +3,37 @@ as_vector - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Convert a fusion sequence to a vector. + Convert a fusion sequence to a vector.

    - + Synopsis
    @@ -46,7 +46,7 @@
     as_vector(Sequence const& seq);
     
    - + Parameters
    @@ -75,7 +75,7 @@

    - seq + seq

    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -99,25 +99,25 @@ as_vector(seq);

    - Return type: result_of::as_vector<Sequence>::type + Return type: result_of::as_vector<Sequence>::type

    - Semantics: Convert a fusion sequence, - seq, to a vector. + Semantics: Convert a fusion sequence, + seq, to a vector.

    - + Header
     #include <boost/fusion/sequence/conversion/as_vector.hpp>
     
    - + Example
    -as_vector(make_list('x', 123, "hello"))
    +as_vector(make_list('x', 123, "hello"))
     
    @@ -127,7 +127,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/conversion/metafunctions.html b/doc/html/fusion/sequences/conversion/metafunctions.html index 45706eba..52c1c0ae 100644 --- a/doc/html/fusion/sequences/conversion/metafunctions.html +++ b/doc/html/fusion/sequences/conversion/metafunctions.html @@ -3,24 +3,24 @@ Metafunctions - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -39,7 +39,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_list.html b/doc/html/fusion/sequences/conversion/metafunctions/as_list.html index 209732e7..b3f42288 100644 --- a/doc/html/fusion/sequences/conversion/metafunctions/as_list.html +++ b/doc/html/fusion/sequences/conversion/metafunctions/as_list.html @@ -3,37 +3,37 @@ as_list - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Returns the result type of as_list. + Returns the result type of as_list.

    - + Synopsis
    @@ -41,7 +41,7 @@
     struct as_list;
     
    - + Parameters
    @@ -70,7 +70,7 @@

    - Sequence + Sequence

    @@ -86,7 +86,7 @@
    - + Expression Semantics
    @@ -94,26 +94,26 @@ result_of::as_list<Sequence>::type;

    - Return type: A list with same elements as the - input sequence, Sequence. + Return type: A list with same elements as the + input sequence, Sequence.

    - Semantics: Convert a fusion sequence, - Sequence, to a list. + Semantics: Convert a fusion sequence, + Sequence, to a list.

    - + Header
     #include <boost/fusion/sequence/conversion/as_list.hpp>
     
    - + Example
    -result_of::as_list<vector<char, int> >::type
    +result_of::as_list<vector<char, int> >::type
     
    @@ -123,7 +123,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_map.html b/doc/html/fusion/sequences/conversion/metafunctions/as_map.html index 81624768..9d98539e 100644 --- a/doc/html/fusion/sequences/conversion/metafunctions/as_map.html +++ b/doc/html/fusion/sequences/conversion/metafunctions/as_map.html @@ -3,37 +3,37 @@ as_map - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Returns the result type of as_map. + Returns the result type of as_map.

    - + Synopsis
    @@ -41,7 +41,7 @@
     struct as_map;
     
    - + Parameters
    @@ -70,7 +70,7 @@

    - Sequence + Sequence

    @@ -86,7 +86,7 @@
    - + Expression Semantics
    @@ -94,33 +94,33 @@ result_of::as_map<Sequence>::type;

    - Return type: A map with same elements as the - input sequence, Sequence. + Return type: A map with same elements as the + input sequence, Sequence.

    - Semantics: Convert a fusion sequence, - Sequence, to a map. + Semantics: Convert a fusion sequence, + Sequence, to a map.

    - Precondition: The elements of the sequence + Precondition: The elements of the sequence are assumed to be __fusionpair_s. - There may be no duplicate fusion::pair key types. + There may be no duplicate fusion::pair key types.

    - + Header
     #include <boost/fusion/sequence/conversion/as_map.hpp>
     
    - + Example
    -result_of::as_map<vector<
    -    fusion::pair<int, char>
    -  , fusion::pair<double, std::string> > >::type
    +result_of::as_map<vector<
    +    fusion::pair<int, char>
    +  , fusion::pair<double, std::string> > >::type
     
    @@ -130,7 +130,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_set.html b/doc/html/fusion/sequences/conversion/metafunctions/as_set.html index 80b3c234..eb0bc404 100644 --- a/doc/html/fusion/sequences/conversion/metafunctions/as_set.html +++ b/doc/html/fusion/sequences/conversion/metafunctions/as_set.html @@ -3,37 +3,37 @@ as_set - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Returns the result type of as_set. + Returns the result type of as_set.

    - + Synopsis
    @@ -41,7 +41,7 @@
     struct as_set;
     
    - + Parameters
    @@ -70,7 +70,7 @@

    - Sequence + Sequence

    @@ -86,7 +86,7 @@
    - + Expression Semantics
    @@ -94,30 +94,30 @@ result_of::as_set<Sequence>::type;

    - Return type: A set with same elements as the - input sequence, Sequence. + Return type: A set with same elements as the + input sequence, Sequence.

    - Semantics: Convert a fusion sequence, - Sequence, to a set. + Semantics: Convert a fusion sequence, + Sequence, to a set.

    - Precondition: There may be no duplicate + Precondition: There may be no duplicate key types.

    - + Header
     #include <boost/fusion/sequence/conversion/as_set.hpp>
     
    - + Example
    -result_of::as_set<vector<char, int> >::type
    +result_of::as_set<vector<char, int> >::type
     
    @@ -127,7 +127,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html b/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html index e8331588..289e9464 100644 --- a/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html +++ b/doc/html/fusion/sequences/conversion/metafunctions/as_vector.html @@ -3,37 +3,37 @@ as_vector - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Returns the result type of as_vector. + Returns the result type of as_vector.

    - + Synopsis
    @@ -41,7 +41,7 @@
     struct as_vector;
     
    - + Parameters
    @@ -70,7 +70,7 @@

    - Sequence + Sequence

    @@ -86,7 +86,7 @@
    - + Expression Semantics
    @@ -94,26 +94,26 @@ result_of::as_vector<Sequence>::type;

    - Return type: A vector with same elements as - the input sequence, Sequence. + Return type: A vector with same elements as + the input sequence, Sequence.

    - Semantics: Convert a fusion sequence, - Sequence, to a vector. + Semantics: Convert a fusion sequence, + Sequence, to a vector.

    - + Header
     #include <boost/fusion/sequence/conversion/as_vector.hpp>
     
    - + Example
    -result_of::as_vector<list<char, int> >::type
    +result_of::as_vector<list<char, int> >::type
     
    @@ -123,7 +123,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/generation.html b/doc/html/fusion/sequences/generation.html index b1afe235..78b17c4f 100644 --- a/doc/html/fusion/sequences/generation.html +++ b/doc/html/fusion/sequences/generation.html @@ -3,24 +3,24 @@ Generation - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -33,7 +33,7 @@ These are the functions that you can use to generate various forms of Containers from elemental values.

    - + Header

    @@ -47,7 +47,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/generation/functions.html b/doc/html/fusion/sequences/generation/functions.html index 7fa0f56c..e9bb2325 100644 --- a/doc/html/fusion/sequences/generation/functions.html +++ b/doc/html/fusion/sequences/generation/functions.html @@ -3,24 +3,24 @@ Functions - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -44,7 +44,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/generation/functions/list_tie.html b/doc/html/fusion/sequences/generation/functions/list_tie.html index b5473b07..11fdf647 100644 --- a/doc/html/fusion/sequences/generation/functions/list_tie.html +++ b/doc/html/fusion/sequences/generation/functions/list_tie.html @@ -3,57 +3,57 @@ list_tie - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Constructs a tie using a list sequence. + Constructs a tie using a list sequence.

    - + Synopsis
     template <typename T0, typename T1,... typename TN>
    -list<T0&, T1&,... TN&>
    +list<T0&, T1&,... TN&>
     list_tie(T0& x0, T1& x1... TN& xN);
     

    - The variadic function accepts 0 - to FUSION_MAX_LIST_SIZE - elements, where FUSION_MAX_LIST_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_LIST_SIZE + The variadic function accepts 0 + to FUSION_MAX_LIST_SIZE + elements, where FUSION_MAX_LIST_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_LIST_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -82,25 +82,25 @@

    - x0, + x0, x1,... - xN + xN

    - Instances of T0, T1,... TN + Instances of T0, T1,... TN

    - The arguments to list_tie + The arguments to list_tie

    - + Expression Semantics
    @@ -108,21 +108,21 @@ list_tie(x0, x1,... xN);

    - Return type: list<T0&, T1&,... + Return type: list<T0&, T1&,... TN&>

    - Semantics: Create a list of references from x0, x1,... xN. + Semantics: Create a list of references from x0, x1,... xN.

    - + Header
     #include <boost/fusion/sequence/generation/list_tie.hpp>
     
    - + Example
    @@ -138,7 +138,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/generation/functions/make_cons.html b/doc/html/fusion/sequences/generation/functions/make_cons.html index 36daf73f..e537943c 100644 --- a/doc/html/fusion/sequences/generation/functions/make_cons.html +++ b/doc/html/fusion/sequences/generation/functions/make_cons.html @@ -3,52 +3,52 @@ make_cons - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Create a cons from car - (head) and optional cdr + Create a cons from car + (head) and optional cdr (tail).

    - + Synopsis
     template <typename Car>
    -typename result_of::make_cons<Car>::type
    +typename result_of::make_cons<Car>::type
     make_cons(Car const& car);
     
     template <typename Car, typename Cdr>
    -typename result_of::make_cons<Car, Cdr>::type
    +typename result_of::make_cons<Car, Cdr>::type
     make_cons(Car const& car, Cdr const& cdr);
     
    - + Parameters
    @@ -78,12 +78,12 @@

    - car + car

    - Instance of Car + Instance of Car

    @@ -95,12 +95,12 @@

    - cdr + cdr

    - Instance of Cdr + Instance of Cdr

    @@ -112,7 +112,7 @@
    - + Expression Semantics
    @@ -120,34 +120,34 @@ make_cons(car, cdr);

    - Return type: result_of::make_cons<Car, Cdr>::type or result_of::make_cons<Car>::type + Return type: result_of::make_cons<Car, Cdr>::type or result_of::make_cons<Car>::type

    - Semantics: Create a cons from car - (head) and optional cdr + Semantics: Create a cons from car + (head) and optional cdr (tail).

    - + Header
     #include <boost/fusion/sequence/generation/make_cons.hpp>
     
    - + Example
     make_cons('x', make_cons(123))
     
    - + See also

    - boost::ref + boost::ref

    @@ -157,7 +157,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/generation/functions/make_list.html b/doc/html/fusion/sequences/generation/functions/make_list.html index b336f818..af4a360d 100644 --- a/doc/html/fusion/sequences/generation/functions/make_list.html +++ b/doc/html/fusion/sequences/generation/functions/make_list.html @@ -3,57 +3,57 @@ make_list - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Create a list from one or more values. + Create a list from one or more values.

    - + Synopsis
     template <typename T0, typename T1,... typename TN>
    -typename result_of::make_list<T0, T1,... TN>::type
    +typename result_of::make_list<T0, T1,... TN>::type
     make_list(T0 const& x0, T1 const& x1... TN const& xN);
     

    - The variadic function accepts 0 - to FUSION_MAX_LIST_SIZE - elements, where FUSION_MAX_LIST_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_LIST_SIZE + The variadic function accepts 0 + to FUSION_MAX_LIST_SIZE + elements, where FUSION_MAX_LIST_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_LIST_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -82,25 +82,25 @@

    - x0, + x0, x1,... - xN + xN

    - Instances of T0, T1,... TN + Instances of T0, T1,... TN

    - The arguments to make_list + The arguments to make_list

    - + Expression Semantics
    @@ -108,32 +108,32 @@ make_list(x0, x1,... xN);

    - Return type: result_of::make_list<T0, T1,... TN>::type + Return type: result_of::make_list<T0, T1,... TN>::type

    - Semantics: Create a list from x0, x1,... xN. + Semantics: Create a list from x0, x1,... xN.

    - + Header
     #include <boost/fusion/sequence/generation/make_list.hpp>
     
    - + Example
     make_list(123, "hello", 12.5)
     
    - + See also

    - boost::ref + boost::ref

    @@ -143,7 +143,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/generation/functions/make_map.html b/doc/html/fusion/sequences/generation/functions/make_map.html index b0ade1af..455a52e3 100644 --- a/doc/html/fusion/sequences/generation/functions/make_map.html +++ b/doc/html/fusion/sequences/generation/functions/make_map.html @@ -3,61 +3,61 @@ make_map - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Create a map from one or more key/data + Create a map from one or more key/data pairs.

    - + Synopsis
     template <
         typename K0, typename K1,... typename KN
       , typename T0, typename T1,... typename TN>
    -typename result_of::make_map<K0, K0,... KN, T0, T1,... TN>::type
    +typename result_of::make_map<K0, K0,... KN, T0, T1,... TN>::type
     make_map(T0 const& x0, T1 const& x1... TN const& xN);
     

    - The variadic function accepts 0 - to FUSION_MAX_VECTOR_SIZE - [10] - elements, where FUSION_MAX_VECTOR_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_VECTOR_SIZE + The variadic function accepts 0 + to FUSION_MAX_VECTOR_SIZE + [10] + elements, where FUSION_MAX_VECTOR_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_VECTOR_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -87,9 +87,9 @@

    - K0, + K0, K1,... - KN + KN

    @@ -99,33 +99,33 @@

    - Keys associated with x0, x1,... xN + Keys associated with x0, x1,... xN

    - x0, + x0, x1,... - xN + xN

    - Instances of T0, T1,... TN + Instances of T0, T1,... TN

    - The arguments to make_map + The arguments to make_map

    - + Expression Semantics
    @@ -133,48 +133,48 @@ make_map<K0, K1,... KN>(x0, x1,... xN);

    - Return type: result_of::make_map<K0, K0,... KN, T0, T1,... TN>::type + Return type: result_of::make_map<K0, K0,... KN, T0, T1,... TN>::type

    - Semantics: Create a map from K0, K1,... KN - keys and x0, + Semantics: Create a map from K0, K1,... KN + keys and x0, x1,... - xN data. + xN data.

    - Precondition: There may be no duplicate + Precondition: There may be no duplicate key types.

    - + Header
     #include <boost/fusion/sequence/generation/make_map.hpp>
     
    - + Example
     make_map(
    -    make_pair<int>('X')
    -  , make_pair<double>("Men"))
    +    make_pair<int>('X')
    +  , make_pair<double>("Men"))
     
    - + See also

    - boost::ref, - fusion::pair + boost::ref, + fusion::pair



    -

    [10] - map is implemented - in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE +

    [10] + map is implemented + in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

    @@ -185,7 +185,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/generation/functions/make_set.html b/doc/html/fusion/sequences/generation/functions/make_set.html index 45800668..9651d660 100644 --- a/doc/html/fusion/sequences/generation/functions/make_set.html +++ b/doc/html/fusion/sequences/generation/functions/make_set.html @@ -3,58 +3,58 @@ make_set - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Create a set from one or more values. + Create a set from one or more values.

    - + Synopsis
     template <typename T0, typename T1,... typename TN>
    -typename result_of::make_set<T0, T1,... TN>::type
    +typename result_of::make_set<T0, T1,... TN>::type
     make_set(T0 const& x0, T1 const& x1... TN const& xN);
     

    - The variadic function accepts 0 - to FUSION_MAX_VECTOR_SIZE - [9] - elements, where FUSION_MAX_VECTOR_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_VECTOR_SIZE + The variadic function accepts 0 + to FUSION_MAX_VECTOR_SIZE + [9] + elements, where FUSION_MAX_VECTOR_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_VECTOR_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -83,25 +83,25 @@

    - x0, + x0, x1,... - xN + xN

    - Instances of T0, T1,... TN + Instances of T0, T1,... TN

    - The arguments to make_set + The arguments to make_set

    - + Expression Semantics
    @@ -109,42 +109,42 @@ make_set(x0, x1,... xN);

    - Return type: result_of::make_set<T0, T1,... TN>::type + Return type: result_of::make_set<T0, T1,... TN>::type

    - Semantics: Create a set from x0, x1,... xN. + Semantics: Create a set from x0, x1,... xN.

    - Precondition: There may be no duplicate + Precondition: There may be no duplicate key types.

    - + Header
     #include <boost/fusion/sequence/generation/make_set.hpp>
     
    - + Example
     make_set(123, "hello", 12.5)
     
    - + See also

    - boost::ref + boost::ref



    -

    [9] - set is implemented - in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE +

    [9] + set is implemented + in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

    @@ -155,7 +155,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/generation/functions/make_vector.html b/doc/html/fusion/sequences/generation/functions/make_vector.html index 4c0fe78a..5e749791 100644 --- a/doc/html/fusion/sequences/generation/functions/make_vector.html +++ b/doc/html/fusion/sequences/generation/functions/make_vector.html @@ -3,57 +3,57 @@ make_vector - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Create a vector from one or more values. + Create a vector from one or more values.

    - + Synopsis
     template <typename T0, typename T1,... typename TN>
    -typename result_of::make_vector<T0, T1,... TN>::type
    +typename result_of::make_vector<T0, T1,... TN>::type
     make_vector(T0 const& x0, T1 const& x1... TN const& xN);
     

    - The variadic function accepts 0 - to FUSION_MAX_VECTOR_SIZE - elements, where FUSION_MAX_VECTOR_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_VECTOR_SIZE + The variadic function accepts 0 + to FUSION_MAX_VECTOR_SIZE + elements, where FUSION_MAX_VECTOR_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_VECTOR_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -82,25 +82,25 @@

    - x0, + x0, x1,... - xN + xN

    - Instances of T0, T1,... TN + Instances of T0, T1,... TN

    - The arguments to make_vector + The arguments to make_vector

    - + Expression Semantics
    @@ -108,32 +108,32 @@ make_vector(x0, x1,... xN);

    - Return type: result_of::make_vector<T0, T1,... TN>::type + Return type: result_of::make_vector<T0, T1,... TN>::type

    - Semantics: Create a vector from x0, x1,... xN. + Semantics: Create a vector from x0, x1,... xN.

    - + Header
     #include <boost/fusion/sequence/generation/make_vector.hpp>
     
    - + Example
     make_vector(123, "hello", 12.5)
     
    - + See also

    - boost::ref + boost::ref

    @@ -143,7 +143,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/generation/functions/map_tie.html b/doc/html/fusion/sequences/generation/functions/map_tie.html new file mode 100644 index 00000000..1560fb6a --- /dev/null +++ b/doc/html/fusion/sequences/generation/functions/map_tie.html @@ -0,0 +1,170 @@ + + + +map_tie + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + Constructs a tie using a map sequence. +

    +
    + + Synopsis +
    +
    +template <typename K0, typename K1,... typename KN, typename D0, typename D1,... typename DN>
    +map<pair<K0, D0&>, pair<K1, D1&>,... pair<KN, DN&> >
    +map_tie(D0& d0, D1& d1... DN& dN);
    +
    +

    + The variadic function accepts 0 + to FUSION_MAX_MAP_SIZE + elements, where FUSION_MAX_MAP_SIZE + is a user definable predefined maximum that defaults to 10, and a corresponding number of key types. + You may define the preprocessor constant FUSION_MAX_MAP_SIZE + before including any Fusion header to change the default. Example: +

    +
    +#define FUSION_MAX_MAP_SIZE 20
    +
    +
    + + Parameters +
    +
    +++++ + + + + + + + + + + + + + + + + + +
    +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    +

    + K0, + K1,... + KN +

    +
    +

    + Any type +

    +
    +

    + The key types associated with each of the x1,x2,...,xN + values +

    +
    +

    + x0, + x1,... + xN +

    +
    +

    + Instances of T0, T1,... TN +

    +
    +

    + The arguments to map_tie +

    +
    +
    + + Expression + Semantics +
    +
    +map_tie<K0, K1,... KN>(x0, x1,... xN);
    +
    +

    + Return type: map<pair<K0, D0&>, pair<K1, + D1&>,... pair<KN, + DN&> > +

    +

    + Semantics: Create a map of references from x0, x1,... xN with keys K0, K1,... KN +

    +
    + + Header +
    +
    +#include <boost/fusion/sequence/generation/map_tie.hpp>
    +
    +
    + + Example +
    +
    +struct int_key;
    +struct double_key;
    +...
    +int i = 123;
    +double d = 123.456;
    +map_tie<int_key, double_key>(i, d)
    +
    +
    + + + +
    Copyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/sequences/generation/functions/tiers.html b/doc/html/fusion/sequences/generation/functions/tiers.html index 4832ff8d..26fe3901 100644 --- a/doc/html/fusion/sequences/generation/functions/tiers.html +++ b/doc/html/fusion/sequences/generation/functions/tiers.html @@ -3,24 +3,24 @@ Tiers - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    @@ -32,9 +32,9 @@ flavors.

    Example: @@ -42,14 +42,14 @@

     int i; char c; double d;
       ...
    -vector_tie(i, c, a);
    +vector_tie(i, c, a);
     

    - 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)) - [11] + 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)) + [11] .

    @@ -58,7 +58,7 @@

     int i; char c; double d;
    -vector_tie(i, c, d) = make_vector(1,'a', 5.5);
    +vector_tie(i, c, d) = make_vector(1,'a', 5.5);
     std::cout << i << " " <<  c << " " << d;
     

    @@ -67,7 +67,7 @@ when calling functions which return sequences.

    - + Ignore

    @@ -78,13 +78,13 @@

     char c;
    -vector_tie(ignore, c) = make_vector(1, 'a');
    +vector_tie(ignore, c) = make_vector(1, 'a');
     


    -

    [11] +

    [11] see Boost.Ref - for details about ref + for details about ref

    @@ -95,7 +95,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/generation/functions/vector_tie.html b/doc/html/fusion/sequences/generation/functions/vector_tie.html index a6d78cc8..f355a583 100644 --- a/doc/html/fusion/sequences/generation/functions/vector_tie.html +++ b/doc/html/fusion/sequences/generation/functions/vector_tie.html @@ -3,57 +3,57 @@ vector_tie - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Constructs a tie using a vector sequence. + Constructs a tie using a vector sequence.

    - + Synopsis
     template <typename T0, typename T1,... typename TN>
    -vector<T0&, T1&,... TN&>
    +vector<T0&, T1&,... TN&>
     vector_tie(T0& x0, T1& x1... TN& xN);
     

    - The variadic function accepts 0 - to FUSION_MAX_VECTOR_SIZE - elements, where FUSION_MAX_VECTOR_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_VECTOR_SIZE + The variadic function accepts 0 + to FUSION_MAX_VECTOR_SIZE + elements, where FUSION_MAX_VECTOR_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_VECTOR_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -82,25 +82,25 @@

    - x0, + x0, x1,... - xN + xN

    - Instances of T0, T1,... TN + Instances of T0, T1,... TN

    - The arguments to vector_tie + The arguments to vector_tie

    - + Expression Semantics
    @@ -108,21 +108,21 @@ vector_tie(x0, x1,... xN);

    - Return type: vector<T0&, T1&,... + Return type: vector<T0&, T1&,... TN&>

    - Semantics: Create a vector of references from x0, x1,... xN. + Semantics: Create a vector of references from x0, x1,... xN.

    - + Header
     #include <boost/fusion/sequence/generation/vector_tie.hpp>
     
    - + Example
    @@ -138,7 +138,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/generation/metafunctions.html b/doc/html/fusion/sequences/generation/metafunctions.html index c645d2f2..a1372a3a 100644 --- a/doc/html/fusion/sequences/generation/metafunctions.html +++ b/doc/html/fusion/sequences/generation/metafunctions.html @@ -3,24 +3,24 @@ MetaFunctions - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -43,7 +43,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/generation/metafunctions/list_tie.html b/doc/html/fusion/sequences/generation/metafunctions/list_tie.html index eed67106..c32664db 100644 --- a/doc/html/fusion/sequences/generation/metafunctions/list_tie.html +++ b/doc/html/fusion/sequences/generation/metafunctions/list_tie.html @@ -3,37 +3,37 @@ list_tie - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Returns the result type of list_tie. + Returns the result type of list_tie.

    - + Synopsis
    @@ -41,18 +41,18 @@
     struct list_tie;
     

    - The variadic function accepts 0 - to FUSION_MAX_LIST_SIZE - elements, where FUSION_MAX_LIST_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_LIST_SIZE + The variadic function accepts 0 + to FUSION_MAX_LIST_SIZE + elements, where FUSION_MAX_LIST_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_LIST_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -81,9 +81,9 @@

    - T0, + T0, T1,... - TN + TN

    @@ -93,13 +93,13 @@

    - The arguments to list_tie + The arguments to list_tie

    - + Expression Semantics
    @@ -107,21 +107,21 @@ result_of::list_tie<T0, T1,... TN>::type;

    - Return type: list<T0&, T1&,... + Return type: list<T0&, T1&,... TN&>

    - Semantics: Create a list of references from T0, T1,... TN. + Semantics: Create a list of references from T0, T1,... TN.

    - + Header
     #include <boost/fusion/sequence/generation/list_tie.hpp>
     
    - + Example
    @@ -135,7 +135,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_cons.html b/doc/html/fusion/sequences/generation/metafunctions/make_cons.html index f88a4af1..8bfb8183 100644 --- a/doc/html/fusion/sequences/generation/metafunctions/make_cons.html +++ b/doc/html/fusion/sequences/generation/metafunctions/make_cons.html @@ -3,37 +3,37 @@ make_cons - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Returns the result type of make_cons. + Returns the result type of make_cons.

    - + Synopsis
    @@ -41,7 +41,7 @@
     struct make_cons;
     
    - + Parameters
    @@ -71,7 +71,7 @@

    - Car + Car

    @@ -88,12 +88,12 @@

    - Cdr + Cdr

    - A cons + A cons

    @@ -105,7 +105,7 @@
    - + Expression Semantics
    @@ -113,24 +113,24 @@ result_of::make_cons<Car, Cdr>::type

    - Return type: A cons with head element, Car, of type converted following the + Return type: A cons with head element, Car, of type converted following the rules for element - conversion, and tail, Cdr. + conversion, and tail, Cdr.

    - Semantics: Create a cons from Car - (head) and optional Cdr + Semantics: Create a cons from Car + (head) and optional Cdr (tail).

    - + Header
     #include <boost/fusion/sequence/generation/make_cons.hpp>
     
    - + Example
    @@ -144,7 +144,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_list.html b/doc/html/fusion/sequences/generation/metafunctions/make_list.html index 82e36686..c74b05d0 100644 --- a/doc/html/fusion/sequences/generation/metafunctions/make_list.html +++ b/doc/html/fusion/sequences/generation/metafunctions/make_list.html @@ -3,37 +3,37 @@ make_list - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Returns the result type of make_list. + Returns the result type of make_list.

    - + Synopsis
    @@ -41,18 +41,18 @@
     struct make_list;
     

    - The variadic function accepts 0 - to FUSION_MAX_LIST_SIZE - elements, where FUSION_MAX_LIST_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_LIST_SIZE + The variadic function accepts 0 + to FUSION_MAX_LIST_SIZE + elements, where FUSION_MAX_LIST_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_LIST_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_LIST_SIZE 20
     
    - + Parameters
    @@ -81,9 +81,9 @@

    - T0, + T0, T1,... - TN + TN

    @@ -93,13 +93,13 @@

    - Template arguments to make_list + Template arguments to make_list

    - + Expression Semantics
    @@ -107,22 +107,22 @@ result_of::make_list<T0, T1,... TN>::type

    - Return type: A list with elements of types + Return type: A list with elements of types converted following the rules for element conversion.

    - Semantics: Create a list from T0, T1,... TN. + Semantics: Create a list from T0, T1,... TN.

    - + Header
     #include <boost/fusion/sequence/generation/make_list.hpp>
     
    - + Example
    @@ -136,7 +136,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_map.html b/doc/html/fusion/sequences/generation/metafunctions/make_map.html index 7203df5b..a563385b 100644 --- a/doc/html/fusion/sequences/generation/metafunctions/make_map.html +++ b/doc/html/fusion/sequences/generation/metafunctions/make_map.html @@ -3,37 +3,37 @@ make_map - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Returns the result type of make_map. + Returns the result type of make_map.

    - + Synopsis
    @@ -43,19 +43,19 @@
     struct make_map;
     

    - The variadic function accepts 0 - to FUSION_MAX_VECTOR_SIZE - [13] - elements, where FUSION_MAX_VECTOR_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_VECTOR_SIZE + The variadic function accepts 0 + to FUSION_MAX_VECTOR_SIZE + [13] + elements, where FUSION_MAX_VECTOR_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_VECTOR_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -85,9 +85,9 @@

    - K0, + K0, K1,... - KN + KN

    @@ -97,16 +97,16 @@

    - Keys associated with T0, T1,... TN + Keys associated with T0, T1,... TN

    - T0, + T0, T1,... - TN + TN

    @@ -116,14 +116,14 @@

    - Data associated with keys K0, K1,... KN + Data associated with keys K0, K1,... KN

    - + Expression Semantics
    @@ -131,44 +131,44 @@ resulf_of::make_map<K0, K1,... KN, T0, T1,... TN>::type;

    - Return type: result_of::make_map<K0, K0,... KN, T0, T1,... TN>::type + Return type: result_of::make_map<K0, K0,... KN, T0, T1,... TN>::type

    - Semantics: A map with fusion::pair elements where the second_type is converted following + Semantics: A map with fusion::pair elements where the second_type is converted following the rules for element conversion.

    - Precondition: There may be no duplicate + Precondition: There may be no duplicate key types.

    - + Header
     #include <boost/fusion/sequence/generation/make_map.hpp>
     
    - + Example
     result_of::make_map<int, double, char, double>::type
     
    - + See also

    - fusion::pair + fusion::pair



    -

    [13] - map is implemented - in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE +

    [13] + map is implemented + in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

    @@ -179,7 +179,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_set.html b/doc/html/fusion/sequences/generation/metafunctions/make_set.html index 8bb799d9..a73414fe 100644 --- a/doc/html/fusion/sequences/generation/metafunctions/make_set.html +++ b/doc/html/fusion/sequences/generation/metafunctions/make_set.html @@ -3,37 +3,37 @@ make_set - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Returns the result type of make_set. + Returns the result type of make_set.

    - + Synopsis
    @@ -41,19 +41,19 @@
     struct make_set;
     

    - The variadic function accepts 0 - to FUSION_MAX_VECTOR_SIZE - [12] - elements, where FUSION_MAX_VECTOR_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_VECTOR_SIZE + The variadic function accepts 0 + to FUSION_MAX_VECTOR_SIZE + [12] + elements, where FUSION_MAX_VECTOR_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_VECTOR_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -82,9 +82,9 @@

    - T0, + T0, T1,... - TN + TN

    @@ -94,13 +94,13 @@

    - The arguments to make_set + The arguments to make_set

    - + Expression Semantics
    @@ -108,26 +108,26 @@ result_of::make_set<T0, T1,... TN>::type

    - Return type: A set with elements of types converted + Return type: A set with elements of types converted following the rules for element conversion.

    - Semantics: Create a set from T0, T1,... TN. + Semantics: Create a set from T0, T1,... TN.

    - Precondition: There may be no duplicate + Precondition: There may be no duplicate key types.

    - + Header
     #include <boost/fusion/sequence/generation/make_set.hpp>
     
    - + Example
    @@ -135,9 +135,9 @@
     


    -

    [12] - set is implemented - in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE +

    [12] + set is implemented + in terms of the vector. That is why we reuse FUSION_MAX_VECTOR_SIZE

    @@ -148,7 +148,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/generation/metafunctions/make_vector.html b/doc/html/fusion/sequences/generation/metafunctions/make_vector.html index b694e98f..31b4b56f 100644 --- a/doc/html/fusion/sequences/generation/metafunctions/make_vector.html +++ b/doc/html/fusion/sequences/generation/metafunctions/make_vector.html @@ -3,37 +3,37 @@ make_vector - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Returns the result type of make_vector. + Returns the result type of make_vector.

    - + Synopsis
    @@ -41,18 +41,18 @@
     struct make_vector;
     

    - The variadic function accepts 0 - to FUSION_MAX_VECTOR_SIZE - elements, where FUSION_MAX_VECTOR_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_VECTOR_SIZE + The variadic function accepts 0 + to FUSION_MAX_VECTOR_SIZE + elements, where FUSION_MAX_VECTOR_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_VECTOR_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -81,9 +81,9 @@

    - T0, + T0, T1,... - TN + TN

    @@ -93,13 +93,13 @@

    - Template arguments to make_vector + Template arguments to make_vector

    - + Expression Semantics
    @@ -107,22 +107,22 @@ result_of::make_vector<T0, T1,... TN>::type

    - Return type: A vector with elements of types + Return type: A vector with elements of types converted following the rules for element conversion.

    - Semantics: Create a vector from T0, T1,... TN. + Semantics: Create a vector from T0, T1,... TN.

    - + Header
     #include <boost/fusion/sequence/generation/make_list.hpp>
     
    - + Example
    @@ -136,7 +136,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/generation/metafunctions/map_tie.html b/doc/html/fusion/sequences/generation/metafunctions/map_tie.html new file mode 100644 index 00000000..d1276f4c --- /dev/null +++ b/doc/html/fusion/sequences/generation/metafunctions/map_tie.html @@ -0,0 +1,166 @@ + + + +map_tie + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + Returns the result type of map_tie. +

    +
    + + Synopsis +
    +
    +template <typename K0, typename K1,... typename KN, typename D0, typename D1,... typename DN>
    +struct map_tie;
    +
    +

    + The variadic function accepts 0 + to FUSION_MAX_MAP_SIZE + elements, where FUSION_MAX_MAP_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_MAP_SIZE before + including any Fusion header to change the default. Example: +

    +
    +#define FUSION_MAX_MAP_SIZE 20
    +
    +
    + + Parameters +
    +
    +++++ + + + + + + + + + + + + + + + + + +
    +

    + Parameter +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    +

    + K0, + K1,... + KN +

    +
    +

    + Any type +

    +
    +

    + The key types for map_tie +

    +
    +

    + D0, + D1,... + DN +

    +
    +

    + Any type +

    +
    +

    + The arguments types for map_tie +

    +
    +
    + + Expression + Semantics +
    +
    +result_of::map_tie<K0, K1,... KN, D0, D1,... DN>::type;
    +
    +

    + Return type: map<pair<K0, D0&>, pair<K1, + D1&>,... pair<KN, + DN&> > +

    +

    + Semantics: Create a map of references from D0, D1,... DN with keys K0, K1,... KN +

    +
    + + Header +
    +
    +#include <boost/fusion/sequence/generation/map_tie.hpp>
    +
    +
    + + Example +
    +
    +struct int_key;
    +struct double_key;
    +...
    +result_of::map_tie<int_key, double_key, int, double>::type
    +
    +
    + + + +
    Copyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html b/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html index 1f7d8bf1..2e1fbf21 100644 --- a/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html +++ b/doc/html/fusion/sequences/generation/metafunctions/vector_tie.html @@ -3,37 +3,37 @@ vector_tie - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Returns the result type of vector_tie. + Returns the result type of vector_tie.

    - + Synopsis
    @@ -41,18 +41,18 @@
     struct vector_tie;
     

    - The variadic function accepts 0 - to FUSION_MAX_VECTOR_SIZE - elements, where FUSION_MAX_VECTOR_SIZE - is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant - FUSION_MAX_VECTOR_SIZE + The variadic function accepts 0 + to FUSION_MAX_VECTOR_SIZE + elements, where FUSION_MAX_VECTOR_SIZE + is a user definable predefined maximum that defaults to 10. You may define the preprocessor constant + FUSION_MAX_VECTOR_SIZE before including any Fusion header to change the default. Example:

     #define FUSION_MAX_VECTOR_SIZE 20
     
    - + Parameters
    @@ -81,9 +81,9 @@

    - T0, + T0, T1,... - TN + TN

    @@ -93,13 +93,13 @@

    - The arguments to vector_tie + The arguments to vector_tie

    - + Expression Semantics
    @@ -107,21 +107,21 @@ result_of::vector_tie<T0, T1,... TN>::type;

    - Return type: vector<T0&, T1&,... + Return type: vector<T0&, T1&,... TN&>

    - Semantics: Create a vector of references from T0, T1,... TN. + Semantics: Create a vector of references from T0, T1,... TN.

    - + Header
     #include <boost/fusion/sequence/generation/vector_tie.hpp>
     
    - + Example
    @@ -135,7 +135,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/intrinsics.html b/doc/html/fusion/sequences/intrinsics.html index c737edbe..5581fba4 100644 --- a/doc/html/fusion/sequences/intrinsics.html +++ b/doc/html/fusion/sequences/intrinsics.html @@ -3,24 +3,24 @@ Intrinsics - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -36,11 +36,11 @@ Intrinsic functions, unlike Algorithms, are not generic across the full Sequence repertoire. They need to be implemented for each Fusion Sequence - [5] + [5] .

    - + Header

    @@ -48,7 +48,7 @@
     


    -

    [5] +

    [5] In practice, many of intrinsic functions have default implementations that will work in majority of cases

    @@ -61,7 +61,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/intrinsics/functions.html b/doc/html/fusion/sequences/intrinsics/functions.html index a5564140..b4397075 100644 --- a/doc/html/fusion/sequences/intrinsics/functions.html +++ b/doc/html/fusion/sequences/intrinsics/functions.html @@ -3,24 +3,24 @@ Functions - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -46,7 +46,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/at.html b/doc/html/fusion/sequences/intrinsics/functions/at.html index 53059ea0..1a361356 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/at.html +++ b/doc/html/fusion/sequences/intrinsics/functions/at.html @@ -3,50 +3,50 @@ at - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    Returns the N-th element from the beginning of the sequence.

    - + Synopsis
     template <typename N, typename Sequence>
    -typename result_of::at<Sequence, N>::type
    +typename result_of::at<Sequence, N>::type
     at(Sequence& seq);
     
     template <typename N, typename Sequence>
    -typename result_of::at<Sequence const, N>::type
    +typename result_of::at<Sequence const, N>::type
     at(Sequence const& seq);
     
    - + Parameters
    @@ -76,7 +76,7 @@

    - seq + seq

    @@ -95,7 +95,7 @@

    - N + N

    @@ -113,7 +113,7 @@
    - + Expression Semantics
    @@ -121,38 +121,38 @@ at<N>(seq);

    - Return type: Returns a reference to - the N-th element from the beginning of the sequence seq - if seq is mutable and - e = - o, where e + Return type: Returns a reference to + the N-th element from the beginning of the sequence seq + if seq is mutable and + e = + o, where e is the N-th element from the beginning of the sequence, is a valid expression. Else, returns a type convertable to the N-th element from the beginning of the sequence.

    - Precondition: 0 - <= N::value < size(s) + Precondition: 0 + <= N::value < size(s)

    - Semantics: Equivalent to + Semantics: Equivalent to

    -deref(advance<N>(begin(s)))
    +deref(advance<N>(begin(s)))
     
    - + Header
     #include <boost/fusion/sequence/intrinsic/at.hpp>
     
    - + Example
    -vector<int, int, int> v(1, 2, 3);
    +vector<int, int, int> v(1, 2, 3);
     assert(at<mpl::int_<1> >(v) == 2);
     
    @@ -163,7 +163,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/at_c.html b/doc/html/fusion/sequences/intrinsics/functions/at_c.html index e6be8316..846c7695 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/at_c.html +++ b/doc/html/fusion/sequences/intrinsics/functions/at_c.html @@ -3,50 +3,50 @@ at_c - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    Returns the N-th element from the beginning of the sequence.

    - + Synopsis
     template <int N, typename Sequence>
    -typename result_of::at_c<Sequence, N>::type
    +typename result_of::at_c<Sequence, N>::type
     at_c(Sequence& seq);
     
     template <int N, typename Sequence>
    -typename result_of::at_c<Sequence const, N>::type
    +typename result_of::at_c<Sequence const, N>::type
     at_c(Sequence const& seq);
     
    - + Parameters
    @@ -76,7 +76,7 @@

    - seq + seq

    @@ -95,7 +95,7 @@

    - N + N

    @@ -112,7 +112,7 @@
    - + Expression Semantics
    @@ -120,39 +120,39 @@ at_c<N>(seq);

    - Return type: Returns a reference to - the N-th element from the beginning of the sequence seq - if seq is mutable and - e = - o, where e + Return type: Returns a reference to + the N-th element from the beginning of the sequence seq + if seq is mutable and + e = + o, where e is the N-th element from the beginning of the sequence, is a valid expression. Else, returns a type convertable to the N-th element from the beginning of the sequence.

    - Precondition: 0 + Precondition: 0 <= N - < size(s) + < size(s)

    - Semantics: Equivalent to + Semantics: Equivalent to

    -deref(advance<N>(begin(s)))
    +deref(advance<N>(begin(s)))
     
    - + Header
     #include <boost/fusion/sequence/intrinsic/at_c.hpp>
     
    - + Example
    -vector<int, int, int> v(1, 2, 3);
    +vector<int, int, int> v(1, 2, 3);
     assert(at_c<1>(v) == 2);
     
    @@ -163,7 +163,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/at_key.html b/doc/html/fusion/sequences/intrinsics/functions/at_key.html index feaf24f6..0fd878d9 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/at_key.html +++ b/doc/html/fusion/sequences/intrinsics/functions/at_key.html @@ -3,50 +3,50 @@ at_key - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    Returns the element associated with a Key from the sequence.

    - + Synopsis
     template <typename Key, typename Sequence>
    -typename result_of::at_key<Sequence, Key>::type
    +typename result_of::at_key<Sequence, Key>::type
     at_key(Sequence& seq);
     
     template <typename Key, typename Sequence>
    -typename result_of::at_key<Sequence const, Key>::type
    +typename result_of::at_key<Sequence const, Key>::type
     at_key(Sequence const& seq);
     
    - + Parameters
    @@ -76,7 +76,7 @@

    - seq + seq

    @@ -95,7 +95,7 @@

    - Key + Key

    @@ -112,7 +112,7 @@
    - + Expression Semantics
    @@ -120,34 +120,34 @@ at_key<Key>(seq);

    - Return type: Returns a reference to - the element associated with Key from the sequence seq - if seq is mutable and - e = - o, where e + Return type: Returns a reference to + the element associated with Key from the sequence seq + if seq is mutable and + e = + o, where e is the element associated with Key, is a valid expression. Else, returns a type convertable to the element associated with Key.

    - Precondition: has_key<Key>(seq) == true + Precondition: has_key<Key>(seq) == true

    - Semantics: Returns the element associated + Semantics: Returns the element associated with Key.

    - + Header
     #include <boost/fusion/sequence/intrinsic/at_key.hpp>
     
    - + Example
    -set<int, char, bool> s(1, 'x', true);
    +set<int, char, bool> s(1, 'x', true);
     assert(at_key<char>(s) == 'x');
     
    @@ -158,7 +158,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/back.html b/doc/html/fusion/sequences/intrinsics/functions/back.html index db0fc6fc..d9ee2ca9 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/back.html +++ b/doc/html/fusion/sequences/intrinsics/functions/back.html @@ -3,50 +3,50 @@ back - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    Returns the last element in the sequence.

    - + Synopsis
     template <typename Sequence>
    -typename result_of::back<Sequence>::type
    +typename result_of::back<Sequence>::type
     back(Sequence& seq);
     
     template <typename Sequence>
    -typename result_of::back<Sequence const>::type
    +typename result_of::back<Sequence const>::type
     back(Sequence const& seq);
     
    - + Parameters
    @@ -75,7 +75,7 @@

    - seq + seq

    @@ -93,7 +93,7 @@
    - + Expression Semantics
    @@ -101,34 +101,34 @@ back(seq);

    - Return type: Returns a reference to - the last element in the sequence seq - if seq is mutable and - e = - o, where e + Return type: Returns a reference to + the last element in the sequence seq + if seq is mutable and + e = + o, where e is the last element in the sequence, is a valid expression. Else, returns a type convertable to the last element in the sequence.

    - Precondition: empty(seq) == false + Precondition: empty(seq) == false

    - Semantics: Returns the last element + Semantics: Returns the last element in the sequence.

    - + Header
     #include <boost/fusion/sequence/intrinsic/back.hpp>
     
    - + Example
    -vector<int, int, int> v(1, 2, 3);
    +vector<int, int, int> v(1, 2, 3);
     assert(back(v) == 3);
     
    @@ -139,7 +139,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/begin.html b/doc/html/fusion/sequences/intrinsics/functions/begin.html index 2a427bef..2aad9e16 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/begin.html +++ b/doc/html/fusion/sequences/intrinsics/functions/begin.html @@ -3,50 +3,50 @@ begin - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    Returns an iterator pointing to the first element in the sequence.

    - + Synopsis
     template <typename Sequence>
    -typename result_of::begin<Sequence>::type
    +typename result_of::begin<Sequence>::type
     begin(Sequence& seq);
     
     template <typename Sequence>
    -typename result_of::begin<Sequence const>::type
    +typename result_of::begin<Sequence const>::type
     begin(Sequence const& seq);
     
    - + Parameters
    @@ -75,7 +75,7 @@

    - seq + seq

    @@ -93,7 +93,7 @@
    - + Expression Semantics
    @@ -101,41 +101,41 @@ begin(seq);

    - Return type: Return type: Forward - Iterator if seq + Iterator if seq is a Forward Sequence else, Bidirectional - Iterator if seq + Iterator if seq is a Bidirectional Sequence else, Random - Access Iterator if seq + Access Iterator if seq is a Random Access Sequence.

    - Semantics: Returns an iterator pointing + Semantics: Returns an iterator pointing to the first element in the sequence.

    - + Header
     #include <boost/fusion/sequence/intrinsic/begin.hpp>
     
    - + Example
    -vector<int, int, int> v(1, 2, 3);
    -assert(deref(begin(v)) == 1);
    +vector<int, int, int> v(1, 2, 3);
    +assert(deref(begin(v)) == 1);
     
    @@ -145,7 +145,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/empty.html b/doc/html/fusion/sequences/intrinsics/functions/empty.html index 8188a48c..e4ec9a1a 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/empty.html +++ b/doc/html/fusion/sequences/intrinsics/functions/empty.html @@ -3,48 +3,48 @@ empty - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Returns a type convertible to bool - that evaluates to true if - the sequence is empty, else, evaluates to false. + Returns a type convertible to bool + that evaluates to true if + the sequence is empty, else, evaluates to false.

    - + Synopsis
     template <typename Sequence>
    -typename result_of::empty<Sequence>::type
    +typename result_of::empty<Sequence>::type
     empty(Sequence const& seq);
     
    - + Parameters
    @@ -73,7 +73,7 @@

    - seq + seq

    @@ -91,7 +91,7 @@
    - + Expression Semantics
    @@ -99,25 +99,25 @@ empty(seq);

    - Return type: Convertible to bool. + Return type: Convertible to bool.

    - Semantics: Evaluates to true if the sequence is empty, else, evaluates - to false. + Semantics: Evaluates to true if the sequence is empty, else, evaluates + to false.

    - + Header
     #include <boost/fusion/sequence/intrinsic/empty.hpp>
     
    - + Example
    -vector<int, int, int> v(1, 2, 3);
    +vector<int, int, int> v(1, 2, 3);
     assert(empty(v) == false);
     
    @@ -128,7 +128,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/end.html b/doc/html/fusion/sequences/intrinsics/functions/end.html index a81d8e5c..9ef0558d 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/end.html +++ b/doc/html/fusion/sequences/intrinsics/functions/end.html @@ -3,50 +3,50 @@ end - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    Returns an iterator pointing to one element past the end of the sequence.

    - + Synopsis
     template <typename Sequence>
    -typename result_of::end<Sequence>::type
    +typename result_of::end<Sequence>::type
     end(Sequence& seq);
     
     template <typename Sequence>
    -typename result_of::end<Sequence const>::type
    +typename result_of::end<Sequence const>::type
     end(Sequence const& seq);
     
    - + Parameters
    @@ -75,7 +75,7 @@

    - seq + seq

    @@ -93,7 +93,7 @@
    - + Expression Semantics
    @@ -101,41 +101,41 @@ end(seq);

    - Return type: Return type: Forward - Iterator if seq + Iterator if seq is a Forward Sequence else, Bidirectional - Iterator if seq + Iterator if seq is a Bidirectional Sequence else, Random - Access Iterator if seq + Access Iterator if seq is a Random Access Sequence.

    - Semantics: Returns an iterator pointing + Semantics: Returns an iterator pointing to one element past the end of the sequence.

    - + Header
     #include <boost/fusion/sequence/intrinsic/end.hpp>
     
    - + Example
    -vector<int, int, int> v(1, 2, 3);
    -assert(deref(prior(end(v))) == 3);
    +vector<int, int, int> v(1, 2, 3);
    +assert(deref(prior(end(v))) == 3);
     
    @@ -145,7 +145,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/front.html b/doc/html/fusion/sequences/intrinsics/functions/front.html index ed2778c0..8f2758ac 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/front.html +++ b/doc/html/fusion/sequences/intrinsics/functions/front.html @@ -3,50 +3,50 @@ front - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    Returns the first element in the sequence.

    - + Synopsis
     template <typename Sequence>
    -typename result_of::front<Sequence>::type
    +typename result_of::front<Sequence>::type
     front(Sequence& seq);
     
     template <typename Sequence>
    -typename result_of::front<Sequence const>::type
    +typename result_of::front<Sequence const>::type
     front(Sequence const& seq);
     
    - + Parameters
    @@ -75,7 +75,7 @@

    - seq + seq

    @@ -93,7 +93,7 @@
    - + Expression Semantics
    @@ -101,34 +101,34 @@ front(seq);

    - Return type: Returns a reference to - the first element in the sequence seq - if seq is mutable and - e = - o, where e + Return type: Returns a reference to + the first element in the sequence seq + if seq is mutable and + e = + o, where e is the first element in the sequence, is a valid expression. Else, returns a type convertable to the first element in the sequence.

    - Precondition: empty(seq) == false + Precondition: empty(seq) == false

    - Semantics: Returns the first element + Semantics: Returns the first element in the sequence.

    - + Header
     #include <boost/fusion/sequence/intrinsic/front.hpp>
     
    - + Example
    -vector<int, int, int> v(1, 2, 3);
    +vector<int, int, int> v(1, 2, 3);
     assert(front(v) == 1);
     
    @@ -139,7 +139,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/has_key.html b/doc/html/fusion/sequences/intrinsics/functions/has_key.html index d0f9fb6a..27ee1aa2 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/has_key.html +++ b/doc/html/fusion/sequences/intrinsics/functions/has_key.html @@ -3,49 +3,49 @@ has_key - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Returns a type convertible to bool - that evaluates to true if + Returns a type convertible to bool + that evaluates to true if the sequence contains an element associated with a Key, else, evaluates - to false. + to false.

    - + Synopsis
     template <typename Key, typename Sequence>
    -typename result_of::has_key<Sequence, Key>::type
    +typename result_of::has_key<Sequence, Key>::type
     has_key(Sequence const& seq);
     
    - + Parameters
    @@ -75,7 +75,7 @@

    - seq + seq

    @@ -94,7 +94,7 @@

    - Key + Key

    @@ -111,7 +111,7 @@
    - + Expression Semantics
    @@ -119,25 +119,25 @@ has_key<Key>(seq);

    - Return type: Convertible to bool. + Return type: Convertible to bool.

    - Semantics: Evaluates to true if the sequence contains an element - associated with Key, else, evaluates to false. + Semantics: Evaluates to true if the sequence contains an element + associated with Key, else, evaluates to false.

    - + Header
     #include <boost/fusion/sequence/intrinsic/has_key.hpp>
     
    - + Example
    -set<int, char, bool> s(1, 'x', true);
    +set<int, char, bool> s(1, 'x', true);
     assert(has_key<char>(s) == true);
     
    @@ -148,7 +148,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/size.html b/doc/html/fusion/sequences/intrinsics/functions/size.html index 517a1b56..f3366fd0 100644 --- a/doc/html/fusion/sequences/intrinsics/functions/size.html +++ b/doc/html/fusion/sequences/intrinsics/functions/size.html @@ -3,47 +3,47 @@ size - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Returns a type convertible to int + Returns a type convertible to int that evaluates the number of elements in the sequence.

    - + Synopsis
     template <typename Sequence>
    -typename result_of::size<Sequence>::type
    +typename result_of::size<Sequence>::type
     size(Sequence const& seq);
     
    - + Parameters
    @@ -72,7 +72,7 @@

    - seq + seq

    @@ -90,7 +90,7 @@
    - + Expression Semantics
    @@ -98,25 +98,25 @@ size(seq);

    - Return type: Convertible to int. + Return type: Convertible to int.

    - Semantics: Returns the number of elements + Semantics: Returns the number of elements in the sequence.

    - + Header
     #include <boost/fusion/sequence/intrinsic/size.hpp>
     
    - + Example
    -vector<int, int, int> v(1, 2, 3);
    +vector<int, int, int> v(1, 2, 3);
     assert(size(v) == 3);
     
    @@ -127,7 +127,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/intrinsics/functions/swap.html b/doc/html/fusion/sequences/intrinsics/functions/swap.html new file mode 100644 index 00000000..f152fae1 --- /dev/null +++ b/doc/html/fusion/sequences/intrinsics/functions/swap.html @@ -0,0 +1,135 @@ + + + +swap + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +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 +
    +
    +++++ + + + + + + + + + + +
    +

    + Parameters +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    +

    + seq1, seq2 +

    +
    +

    + Models of Forward + Sequence +

    +
    +

    + The sequences whos elements we wish to swap. +

    +
    +
    + + Expression + Semantics +
    +
    +swap(seq1, seq2);
    +
    +

    + Return type: void +

    +

    + Precondition: size(seq1) == size(seq2) +

    +

    + Semantics: Calls swap(a1, b1) for corresponding elements in seq1 and seq2. +

    +
    + + Header +
    +
    +#include <boost/fusion/sequence/intrinsic/swap.hpp>
    +
    +
    + + Example +
    +
    +vector<int, std::string> v1(1, "hello"), v2(2, "world");
    +swap(v1, v2);
    +assert(v1 == make_vector(2, "world"));
    +assert(v2 == make_vector(1, "hello"));
    +
    +
    + + + +
    Copyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions.html b/doc/html/fusion/sequences/intrinsics/metafunctions.html index aee36bd2..6fad1b69 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions.html @@ -3,24 +3,24 @@ Metafunctions - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -49,7 +49,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/at.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at.html index 167b5153..251efddc 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/at.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/at.html @@ -3,39 +3,39 @@ at - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Returns the result type of at - [6] + Returns the result type of at + [6] .

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.25. Parameters

    +

    Table 1.25. Parameters

    @@ -76,7 +76,7 @@

    - Seq + Seq

    @@ -95,7 +95,7 @@

    - N + N

    @@ -114,7 +114,7 @@
    - + Expression Semantics
    @@ -122,34 +122,34 @@ result_of::at<Seq, N>::type

    - Return type: Any type. + Return type: Any type.

    - Semantics: Returns the result type of - using at to access the Nth element of Seq. + Semantics: Returns the result type of + using at to access the Nth element of Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/at.hpp>
     
    - + Example
    -typedef vector<int,float,char> vec;
    -BOOST_MPL_ASSERT((boost::is_same<result_of::at<vec, boost::mpl::int_<1> >::type, float&>));
    +typedef vector<int,float,char> vec;
    +BOOST_MPL_ASSERT((boost::is_same<result_of::at<vec, boost::mpl::int_<1> >::type, float&>));
     


    -

    [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

    @@ -160,7 +160,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html index d837cbf4..cd3fd5b0 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/at_c.html @@ -3,39 +3,39 @@ at_c - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Returns the result type of at_c - [7] + Returns the result type of at_c + [7] .

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.26. Parameters

    +

    Table 1.26. Parameters

    @@ -76,7 +76,7 @@

    - Seq + Seq

    @@ -95,7 +95,7 @@

    - M + M

    @@ -113,7 +113,7 @@
    - + Expression Semantics
    @@ -121,34 +121,34 @@ result_of::at_c<Seq, M>::type

    - Return type: Any type + Return type: Any type

    - Semantics: Returns the result type of - using at_c to access the Mth element of Seq. + Semantics: Returns the result type of + using at_c to access the Mth element of Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/at.hpp>
     
    - + Example
    -typedef vector<int,float,char> vec;
    -BOOST_MPL_ASSERT((boost::is_same<result_of::at_c<vec, 1>::type, float&>));
    +typedef vector<int,float,char> vec;
    +BOOST_MPL_ASSERT((boost::is_same<result_of::at_c<vec, 1>::type, float&>));
     


    -

    [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

    @@ -159,7 +159,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html index 8a3db14e..cb48e6e0 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/at_key.html @@ -3,39 +3,39 @@ at_key - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Returns the result type of at_key - [8] + Returns the result type of at_key + [8] .

    - + Synopsis
    @@ -48,7 +48,7 @@
     };
     
    -

    Table 1.30. Parameters

    +

    Table 1.30. Parameters

    @@ -76,7 +76,7 @@

    - Seq + Seq

    @@ -95,7 +95,7 @@

    - Key + Key

    @@ -113,7 +113,7 @@
    - + Expression Semantics
    @@ -121,36 +121,36 @@ result_of::at_key<Seq, Key>::type

    - Return type: Any type. + Return type: Any type.

    - Semantics: Returns the result of using - at_key to access the element - with key type Key in - Seq. + Semantics: Returns the result of using + at_key to access the element + with key type Key in + Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/at_key.hpp>
     
    - + Example
    -typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
    -BOOST_MPL_ASSERT((boost::is_same<result_of::at_key<mymap, int>::type, char&>));
    +typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
    +BOOST_MPL_ASSERT((boost::is_same<result_of::at_key<mymap, int>::type, char&>));
     


    -

    [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

    @@ -161,7 +161,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/back.html b/doc/html/fusion/sequences/intrinsics/metafunctions/back.html index 2e52c2f2..d1bf313a 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/back.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/back.html @@ -3,37 +3,37 @@ back - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Returns the result type of back. + Returns the result type of back.

    - + Synopsis
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.23. Parameters

    +

    Table 1.23. Parameters

    @@ -71,7 +71,7 @@

    - Seq + Seq

    @@ -90,7 +90,7 @@
    - + Expression Semantics
    @@ -98,26 +98,26 @@ result_of::back<Seq>::type

    - Return type: Any type + Return type: Any type

    - Semantics: The type returned by dereferencing - an iterator to the last element in the sequence. Equivalent to result_of::deref<result_of::prior<result_of::end<Seq>::type>::type>::type. + Semantics: The type returned by dereferencing + 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>
     
    - + Example
    -typedef vector<int,char> vec;
    -BOOST_MPL_ASSERT((boost::is_same<result_of::back<vec>::type, char&>));
    +typedef vector<int,char> vec;
    +BOOST_MPL_ASSERT((boost::is_same<result_of::back<vec>::type, char&>));
     
    @@ -127,7 +127,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html b/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html index e1c0eecf..26924148 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/begin.html @@ -3,37 +3,37 @@ begin - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Returns the result type of begin. + Returns the result type of begin.

    - + Synopsis
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.19. Parameters

    +

    Table 1.19. Parameters

    @@ -71,7 +71,7 @@

    - Seq + Seq

    @@ -90,7 +90,7 @@
    - + Expression Semantics
    @@ -98,28 +98,28 @@ result_of::begin<Seq>::type

    - Return type: An iterator modelling the - same traversal concept as Seq. + Return type: An iterator modelling the + same traversal concept as Seq.

    - Semantics: Returns the type of an iterator - to the first element of Seq. + Semantics: Returns the type of an iterator + to the first element of Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/begin.hpp>
     
    - + Example
    -typedef vector<int> vec;
    -typedef result_of::begin<vec>::type it;
    -BOOST_MPL_ASSERT((boost::is_same<result_of::deref<it>::type, int&>))
    +typedef vector<int> vec;
    +typedef result_of::begin<vec>::type it;
    +BOOST_MPL_ASSERT((boost::is_same<result_of::deref<it>::type, int&>))
     
    @@ -129,7 +129,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html b/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html index e6a83c3c..76262192 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/empty.html @@ -3,37 +3,37 @@ empty - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Returns the result type of empty. + Returns the result type of empty.

    - + Synopsis
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.21. Parameters

    +

    Table 1.21. Parameters

    @@ -71,7 +71,7 @@

    - Seq + Seq

    @@ -90,7 +90,7 @@
    - + Expression Semantics
    @@ -98,31 +98,31 @@ result_of::empty<Seq>::type

    - Return type: An MPL + Return type: An MPL Integral Constant

    - Semantics: Returns mpl::true_ - if Seq has zero elements, - mpl::false_ otherwise. + Semantics: Returns mpl::true_ + if Seq has zero elements, + mpl::false_ otherwise.

    - + Header
     #include <boost/fusion/sequence/intrinsic/empty.hpp>
     
    - + Example
    -typedef vector<> empty_vec;
    -typedef vector<int,float,char> vec;
    +typedef vector<> empty_vec;
    +typedef vector<int,float,char> vec;
     
    -BOOST_MPL_ASSERT((result_of::empty<empty_vec>));
    -BOOST_MPL_ASSERT_NOT((result_of::empty<vec>));
    +BOOST_MPL_ASSERT((result_of::empty<empty_vec>));
    +BOOST_MPL_ASSERT_NOT((result_of::empty<vec>));
     
    @@ -132,7 +132,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/end.html b/doc/html/fusion/sequences/intrinsics/metafunctions/end.html index 37ba917c..b4faf2c0 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/end.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/end.html @@ -3,37 +3,37 @@ end - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Returns the result type of end. + Returns the result type of end.

    - + Synopsis
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.20. Parameters

    +

    Table 1.20. Parameters

    @@ -71,7 +71,7 @@

    - Seq + Seq

    @@ -90,7 +90,7 @@
    - + Expression Semantics
    @@ -98,28 +98,28 @@ result_of::end<Seq>::type

    - Return type: A model of the same traversal - concept as Seq. + Return type: A model of the same traversal + concept as Seq.

    - Semantics: Returns the type of an iterator - one past the end of Seq. + Semantics: Returns the type of an iterator + one past the end of Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/end.hpp>
     
    - + Example
    -typedef vector<int> vec;
    -typedef result_of::prior<result_of::end<vec>::type>::type first;
    -BOOST_MPL_ASSERT((result_of::equal_to<first, result_of::begin<vec>::type>))
    +typedef vector<int> vec;
    +typedef result_of::prior<result_of::end<vec>::type>::type first;
    +BOOST_MPL_ASSERT((result_of::equal_to<first, result_of::begin<vec>::type>))
     
    @@ -129,7 +129,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/front.html b/doc/html/fusion/sequences/intrinsics/metafunctions/front.html index 9e710263..009c07d6 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/front.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/front.html @@ -3,37 +3,37 @@ front - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Returns the result type of front. + Returns the result type of front.

    - + Synopsis
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.22. Parameters

    +

    Table 1.22. Parameters

    @@ -71,7 +71,7 @@

    - Seq + Seq

    @@ -90,7 +90,7 @@
    - + Expression Semantics
    @@ -98,27 +98,27 @@ result_of::front<Seq>::type

    - Return type: Any type + Return type: Any type

    - Semantics: The type returned by dereferencing - an iterator to the first element in Seq. - Equivalent to result_of::deref<result_of::begin<Seq>::type>::type. + Semantics: The type returned by dereferencing + an iterator to the first element in Seq. + Equivalent to result_of::deref<result_of::begin<Seq>::type>::type.

    - + Header
     #include <boost/fusion/sequence/intrinsic/front.hpp>
     
    - + Example
    -typedef vector<int,char> vec;
    -BOOST_MPL_ASSERT((boost::is_same<result_of::front<vec>::type, int&>));
    +typedef vector<int,char> vec;
    +BOOST_MPL_ASSERT((boost::is_same<result_of::front<vec>::type, int&>));
     
    @@ -128,7 +128,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html index 383d4e5f..03e83d4b 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/has_key.html @@ -3,37 +3,37 @@ has_key - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Returns the result type of has_key. + Returns the result type of has_key.

    - + Synopsis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.29. Parameters

    +

    Table 1.29. Parameters

    @@ -74,7 +74,7 @@

    - Seq + Seq

    @@ -93,7 +93,7 @@

    - Key + Key

    @@ -111,7 +111,7 @@
    - + Expression Semantics
    @@ -119,30 +119,30 @@ result_of::has_key<Seq, Key>::type

    - Return type: An MPL + Return type: An MPL Integral Constant.

    - Semantics: Returns mpl::true_ - if Seq contains an element - with key type Key, returns - mpl::false_ otherwise. + Semantics: Returns mpl::true_ + if Seq contains an element + with key type Key, returns + mpl::false_ otherwise.

    - + Header
     #include <boost/fusion/sequence/intrinsic/has_key.hpp>
     
    - + Example
    -typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
    -BOOST_MPL_ASSERT((result_of::has_key<mymap, int>));
    -BOOST_MPL_ASSERT_NOT((result_of::has_key<mymap, void*>));
    +typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
    +BOOST_MPL_ASSERT((result_of::has_key<mymap, int>));
    +BOOST_MPL_ASSERT_NOT((result_of::has_key<mymap, void*>));
     
    @@ -152,7 +152,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/size.html b/doc/html/fusion/sequences/intrinsics/metafunctions/size.html index c700f677..50cec0bf 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/size.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/size.html @@ -3,37 +3,37 @@ size - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - Returns the result type of size. + Returns the result type of size.

    - + Synopsis
    @@ -44,7 +44,7 @@
     };
     
    -

    Table 1.24. Parameters

    +

    Table 1.24. Parameters

    @@ -71,7 +71,7 @@

    - Seq + Seq

    @@ -90,7 +90,7 @@
    - + Expression Semantics
    @@ -98,27 +98,27 @@ result_of::size<Seq>::type

    - Return type: An MPL + Return type: An MPL Integral Constant.

    - Semantics: Returns the number of elements - in Seq. + Semantics: Returns the number of elements + in Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/size.hpp>
     
    - + Example
    -typedef vector<int,float,char> vec;
    -typedef result_of::size<vec>::type size_mpl_integral_constant;
    +typedef vector<int,float,char> vec;
    +typedef result_of::size<vec>::type size_mpl_integral_constant;
     BOOST_MPL_ASSERT_RELATION(size_mpl_integral_constant::value, ==, 3);
     
    @@ -129,7 +129,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/swap.html b/doc/html/fusion/sequences/intrinsics/metafunctions/swap.html new file mode 100644 index 00000000..01cb7598 --- /dev/null +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/swap.html @@ -0,0 +1,124 @@ + + + +swap + + + + + + + + + + + + + + + +
    Boost C++ LibrariesHomeLibrariesPeopleFAQMore
    +
    +
    +PrevUpHomeNext +
    +
    + +
    + + Description +
    +

    + Returns the return type of swap. +

    +
    + + Synopsis +
    +
    +template<typename Seq1, typename Seq2>
    +struct swap
    +{
    +    typedef void type;
    +};
    +
    +
    +

    Table 1.32. Parameters

    + +++++ + + + + + + + + + + +
    +

    + Parameters +

    +
    +

    + Requirement +

    +
    +

    + Description +

    +
    +

    + Seq1, Seq2 +

    +
    +

    + Models of Forward + Sequence +

    +
    +

    + The sequences being swapped +

    +
    +
    +
    + + Expression + Semantics +
    +
    +result_of::swap<Seq1, Seq2>::type
    +
    +

    + Return type: void. +

    +

    + Semantics: Always returns void. +

    +
    + + Header +
    +
    +#include <boost/fusion/sequence/intrinsic/swap.hpp>
    +
    +
    + + + +
    Copyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias + Schwinger
    +
    +
    +PrevUpHomeNext +
    + + diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html index f93ee091..9c2e2a90 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at.html @@ -3,37 +3,37 @@ value_at - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    Returns the actual type at a given index from the Sequence.

    - + Synopsis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.27. Parameters

    +

    Table 1.27. Parameters

    @@ -74,7 +74,7 @@

    - Seq + Seq

    @@ -93,7 +93,7 @@

    - N + N

    @@ -112,7 +112,7 @@
    - + Expression Semantics
    @@ -120,26 +120,26 @@ result_of::value_at<Seq, N>::type

    - Return type: Any type. + Return type: Any type.

    - Semantics: Returns the actual type at - the Nth element of Seq. + Semantics: Returns the actual type at + the Nth element of Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/value_at.hpp>
     
    - + Example
    -typedef vector<int,float,char> vec;
    -BOOST_MPL_ASSERT((boost::is_same<result_of::value_at<vec, boost::mpl::int_<1> >::type, float>));
    +typedef vector<int,float,char> vec;
    +BOOST_MPL_ASSERT((boost::is_same<result_of::value_at<vec, boost::mpl::int_<1> >::type, float>));
     
    @@ -149,7 +149,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html index 21e64396..beb2a706 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_c.html @@ -3,37 +3,37 @@ value_at_c - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    Returns the actual type at a given index from the Sequence.

    - + Synopsis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.28. Parameters

    +

    Table 1.28. Parameters

    @@ -74,7 +74,7 @@

    - Seq + Seq

    @@ -93,7 +93,7 @@

    - M + M

    @@ -111,7 +111,7 @@
    - + Expression Semantics
    @@ -119,26 +119,26 @@ result_of::value_at_c<Seq, M>::type

    - Return type: Any type + Return type: Any type

    - Semantics: Returns the actual type at - the Mth element of Seq. + Semantics: Returns the actual type at + the Mth element of Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/value_at.hpp>
     
    - + Example
    -typedef vector<int,float,char> vec;
    -BOOST_MPL_ASSERT((boost::is_same<result_of::value_at_c<vec, 1>::type, float>));
    +typedef vector<int,float,char> vec;
    +BOOST_MPL_ASSERT((boost::is_same<result_of::value_at_c<vec, 1>::type, float>));
     
    @@ -148,7 +148,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html index ba33f8ed..f3395e58 100644 --- a/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html +++ b/doc/html/fusion/sequences/intrinsics/metafunctions/value_at_key.html @@ -3,37 +3,37 @@ value_at_key - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    Returns the actual element type associated with a Key from the Sequence.

    - + Synopsis
    @@ -46,7 +46,7 @@
     };
     
    -

    Table 1.31. Parameters

    +

    Table 1.31. Parameters

    @@ -74,7 +74,7 @@

    - Seq + Seq

    @@ -93,7 +93,7 @@

    - Key + Key

    @@ -111,7 +111,7 @@
    - + Expression Semantics
    @@ -119,27 +119,27 @@ result_of::value_at_key<Seq, Key>::type

    - Return type: Any type. + Return type: Any type.

    - Semantics: Returns the actual element - type associated with key type Key - in Seq. + Semantics: Returns the actual element + type associated with key type Key + in Seq.

    - + Header
     #include <boost/fusion/sequence/intrinsic/value_at_key.hpp>
     
    - + Example
    -typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
    -BOOST_MPL_ASSERT((boost::is_same<result_of::at_key<mymap, int>::type, char>));
    +typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
    +BOOST_MPL_ASSERT((boost::is_same<result_of::at_key<mymap, int>::type, char>));
     
    @@ -149,7 +149,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/operators.html b/doc/html/fusion/sequences/operators.html index 40004fc6..b073cf2d 100644 --- a/doc/html/fusion/sequences/operators.html +++ b/doc/html/fusion/sequences/operators.html @@ -3,24 +3,24 @@ Operators - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -42,7 +42,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/operators/comparison.html b/doc/html/fusion/sequences/operators/comparison.html index c8d9a9f0..fe52cb60 100644 --- a/doc/html/fusion/sequences/operators/comparison.html +++ b/doc/html/fusion/sequences/operators/comparison.html @@ -3,24 +3,24 @@ Comparison - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -39,16 +39,16 @@ than equal

    - The Comparison operators: ==, - !=, <, - <=, >= - and >= work generically + The Comparison operators: ==, + !=, <, + <=, >= + and >= work generically on all Fusion sequences. Comparison operators are "short- circuited": elementary comparisons start from the first elements and are performed only until the result is clear.

    - + Header
    @@ -62,7 +62,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/operators/comparison/equal.html b/doc/html/fusion/sequences/operators/comparison/equal.html index 3dd431be..59bfbe55 100644 --- a/doc/html/fusion/sequences/operators/comparison/equal.html +++ b/doc/html/fusion/sequences/operators/comparison/equal.html @@ -3,7 +3,7 @@ equal - + @@ -11,30 +11,30 @@ equal"> - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    Compare two sequences for equality.

    - + Synopsis
    @@ -43,7 +43,7 @@
     operator==(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -72,8 +72,8 @@

    - a, - b + a, + b

    @@ -89,7 +89,7 @@
    - + Expression Semantics
    @@ -97,16 +97,16 @@ a == b

    - Return type: bool + Return type: bool

    - Requirements: + Requirements:

    - For each element, e1, - in sequence a, and for - each element, e2, in - sequence b, a == b is a valid expression returning a + For each element, e1, + in sequence a, and for + each element, e2, in + sequence b, a == b is a valid expression returning a type that is convertible to bool.

    @@ -114,30 +114,30 @@ compile time error.

    - Semantics: + Semantics:

    - For each element, e1, - in sequence a, and for - each element, e2, in - sequence b, e1 == e2 returns true. For any 2 zero length + For each element, e1, + in sequence a, and for + each element, e2, in + sequence b, e1 == e2 returns true. For any 2 zero length _sequence_s, e and f, e == f returns true.

    - + Header
     #include <boost/fusion/sequence/comparison/equal_to.hpp>
     
    - + Example
    -vector<int, char> v1(5, 'a');
    -vector<int, char> v2(5, 'a');
    +vector<int, char> v1(5, 'a');
    +vector<int, char> v2(5, 'a');
     assert(v1 == v2);
     
    @@ -148,7 +148,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/operators/comparison/greater_than.html b/doc/html/fusion/sequences/operators/comparison/greater_than.html index 14868060..ec62de5e 100644 --- a/doc/html/fusion/sequences/operators/comparison/greater_than.html +++ b/doc/html/fusion/sequences/operators/comparison/greater_than.html @@ -4,7 +4,7 @@ greater than - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    @@ -34,7 +34,7 @@ Lexicographically compare two sequences.

    - + Synopsis
    @@ -43,7 +43,7 @@
     operator>(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -72,8 +72,8 @@

    - a, - b + a, + b

    @@ -89,7 +89,7 @@
    - + Expression Semantics
    @@ -97,16 +97,16 @@ a > b

    - Return type: bool + Return type: bool

    - Requirements: + Requirements:

    - For each element, e1, - in sequence a, and for - each element, e2, in - sequence b, a < b is a valid expression returning a + For each element, e1, + in sequence a, and for + each element, e2, in + sequence b, a < b is a valid expression returning a type that is convertible to bool.

    @@ -114,23 +114,23 @@ compile time error.

    - Semantics: Returns b < a. + Semantics: Returns b < a.

    - + Header
     #include <boost/fusion/sequence/comparison/less_equal.hpp>
     
    - + Example
    -vector<int, float> v1(4, 3.3f);
    -vector<short, float> v2(5, 3.3f);
    -vector<long, double> v3(5, 4.4);
    +vector<int, float> v1(4, 3.3f);
    +vector<short, float> v2(5, 3.3f);
    +vector<long, double> v3(5, 4.4);
     assert(v2 > v1);
     assert(v3 > v2);
     
    @@ -142,7 +142,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html b/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html index a5628872..68c5acbb 100644 --- a/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html +++ b/doc/html/fusion/sequences/operators/comparison/greater_than_equal.html @@ -4,7 +4,7 @@ greater than equal - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    @@ -33,7 +33,7 @@ Lexicographically compare two sequences.

    - + Synopsis
    @@ -42,7 +42,7 @@
     operator>=(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -71,8 +71,8 @@

    - a, - b + a, + b

    @@ -88,7 +88,7 @@
    - + Expression Semantics
    @@ -96,16 +96,16 @@ a >= b

    - Return type: bool + Return type: bool

    - Requirements: + Requirements:

    - For each element, e1, - in sequence a, and for - each element, e2, in - sequence b, a < b is a valid expression returning a + For each element, e1, + in sequence a, and for + each element, e2, in + sequence b, a < b is a valid expression returning a type that is convertible to bool.

    @@ -113,23 +113,23 @@ compile time error.

    - Semantics: Returns !(a < b). + Semantics: Returns !(a < b).

    - + Header
     #include <boost/fusion/sequence/comparison/greater_equal.hpp>
     
    - + Example
    -vector<int, float> v1(4, 3.3f);
    -vector<short, float> v2(5, 3.3f);
    -vector<long, double> v3(5, 4.4);
    +vector<int, float> v1(4, 3.3f);
    +vector<short, float> v2(5, 3.3f);
    +vector<long, double> v3(5, 4.4);
     assert(v2 >= v1);
     assert(v3 >= v2);
     
    @@ -141,7 +141,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/operators/comparison/less_than.html b/doc/html/fusion/sequences/operators/comparison/less_than.html index 8e636fd1..ca68920c 100644 --- a/doc/html/fusion/sequences/operators/comparison/less_than.html +++ b/doc/html/fusion/sequences/operators/comparison/less_than.html @@ -4,7 +4,7 @@ less than - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    @@ -34,7 +34,7 @@ Lexicographically compare two sequences.

    - + Synopsis
    @@ -43,7 +43,7 @@
     operator<(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -72,8 +72,8 @@

    - a, - b + a, + b

    @@ -89,7 +89,7 @@
    - + Expression Semantics
    @@ -97,16 +97,16 @@ a < b

    - Return type: bool + Return type: bool

    - Requirements: + Requirements:

    - For each element, e1, - in sequence a, and for - each element, e2, in - sequence b, a < b is a valid expression returning a + For each element, e1, + in sequence a, and for + each element, e2, in + sequence b, a < b is a valid expression returning a type that is convertible to bool.

    @@ -114,25 +114,25 @@ compile time error.

    - Semantics: Returns the lexicographical - comparison of between a - and b. + Semantics: Returns the lexicographical + comparison of between a + and b.

    - + Header
     #include <boost/fusion/sequence/comparison/less.hpp>
     
    - + Example
    -vector<int, float> v1(4, 3.3f);
    -vector<short, float> v2(5, 3.3f);
    -vector<long, double> v3(5, 4.4);
    +vector<int, float> v1(4, 3.3f);
    +vector<short, float> v2(5, 3.3f);
    +vector<long, double> v3(5, 4.4);
     assert(v1 < v2);
     assert(v2 < v3);
     
    @@ -144,7 +144,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/operators/comparison/less_than_equal.html b/doc/html/fusion/sequences/operators/comparison/less_than_equal.html index 2df0e419..13ceddac 100644 --- a/doc/html/fusion/sequences/operators/comparison/less_than_equal.html +++ b/doc/html/fusion/sequences/operators/comparison/less_than_equal.html @@ -4,7 +4,7 @@ less than equal - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    @@ -34,7 +34,7 @@ Lexicographically compare two sequences.

    - + Synopsis
    @@ -43,7 +43,7 @@
     operator<=(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -72,8 +72,8 @@

    - a, - b + a, + b

    @@ -89,7 +89,7 @@
    - + Expression Semantics
    @@ -97,16 +97,16 @@ a <= b

    - Return type: bool + Return type: bool

    - Requirements: + Requirements:

    - For each element, e1, - in sequence a, and for - each element, e2, in - sequence b, a < b is a valid expression returning a + For each element, e1, + in sequence a, and for + each element, e2, in + sequence b, a < b is a valid expression returning a type that is convertible to bool.

    @@ -114,23 +114,23 @@ compile time error.

    - Semantics: Returns !(b < a). + Semantics: Returns !(b < a).

    - + Header
     #include <boost/fusion/sequence/comparison/less_equal.hpp>
     
    - + Example
    -vector<int, float> v1(4, 3.3f);
    -vector<short, float> v2(5, 3.3f);
    -vector<long, double> v3(5, 4.4);
    +vector<int, float> v1(4, 3.3f);
    +vector<short, float> v2(5, 3.3f);
    +vector<long, double> v3(5, 4.4);
     assert(v1 <= v2);
     assert(v2 <= v3);
     
    @@ -142,7 +142,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/operators/comparison/not_equal.html b/doc/html/fusion/sequences/operators/comparison/not_equal.html index 2f93f959..aff5882b 100644 --- a/doc/html/fusion/sequences/operators/comparison/not_equal.html +++ b/doc/html/fusion/sequences/operators/comparison/not_equal.html @@ -4,7 +4,7 @@ not equal - + @@ -12,17 +12,17 @@ than"> - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    @@ -33,7 +33,7 @@ Compare two sequences for inequality.

    - + Synopsis
    @@ -42,7 +42,7 @@
     operator!=(Seq1 const& a, Seq2 const& b);
     
    - + Parameters
    @@ -71,8 +71,8 @@

    - a, - b + a, + b

    @@ -88,7 +88,7 @@
    - + Expression Semantics
    @@ -96,16 +96,16 @@ a != b

    - Return type: bool + Return type: bool

    - Requirements: + Requirements:

    - For each element, e1, - in sequence a, and for - each element, e2, in - sequence b, a == b is a valid expression returning a + For each element, e1, + in sequence a, and for + each element, e2, in + sequence b, a == b is a valid expression returning a type that is convertible to bool.

    @@ -113,25 +113,25 @@ compile time error.

    - Semantics: + Semantics:

    Returns !(a == b).

    - + Header
     #include <boost/fusion/sequence/comparison/not_equal_to.hpp>
     
    - + Example
    -vector<int, char> v3(5, 'b');
    -vector<int, char> t4(2, 'a');
    +vector<int, char> v3(5, 'b');
    +vector<int, char> t4(2, 'a');
     assert(v1 != v3);
     assert(v1 != t4);
     assert(!(v1 != v2));
    @@ -144,7 +144,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/operators/i_o.html b/doc/html/fusion/sequences/operators/i_o.html index e18176a2..baf03cbf 100644 --- a/doc/html/fusion/sequences/operators/i_o.html +++ b/doc/html/fusion/sequences/operators/i_o.html @@ -3,24 +3,24 @@ I/O - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -30,25 +30,25 @@
    out

    - The I/O operators: << - and >> work generically - on all Fusion sequences. The global operator<< has been overloaded for generic + The I/O operators: << + and >> work generically + on all Fusion sequences. The global operator<< has been overloaded for generic output streams such that _sequence_s - are output by recursively calling operator<< for each element. Analogously, - the global operator>> + are output by recursively calling operator<< for each element. Analogously, + the global operator>> has been overloaded to extract _sequence_s - from generic input streams by recursively calling operator>> for each element. + from generic input streams by recursively calling operator>> for each element.

    The default delimiter between the elements is space, and the Sequence is enclosed in parenthesis. For Example:

    -vector<float, int, std::string> a(1.0f, 2, std::string("Howdy folks!");
    +vector<float, int, std::string> a(1.0f, 2, std::string("Howdy folks!");
     cout << a;
     

    - outputs the vector as: (1.0 2 Howdy folks!) + outputs the vector as: (1.0 2 Howdy folks!)

    The library defines three manipulators for changing the default behavior: @@ -56,23 +56,23 @@

    Manipulators

    -
    tuple_open(arg)
    -
    - Defines the character that is output before the first element. -
    -
    tuple_close(arg)
    -
    - Defines the character that is output after the last element. -
    -
    tuple_delimiter(arg)
    -
    - Defines the delimiter character between elements. -
    +
    tuple_open(arg)
    +

    + Defines the character that is output before the first element. +

    +
    tuple_close(arg)
    +

    + Defines the character that is output after the last element. +

    +
    tuple_delimiter(arg)
    +

    + Defines the delimiter character between elements. +

    - The argument to tuple_open, - tuple_close and tuple_delimiter may be a char, wchar_t, + The argument to tuple_open, + tuple_close and tuple_delimiter may be a char, wchar_t, a C-string, or a wide C-string.

    @@ -82,12 +82,12 @@ std::cout << tuple_open('[') << tuple_close(']') << tuple_delimiter(", ") << a;

    - outputs the same vector, a + outputs the same vector, a as: [1.0, 2, Howdy folks!]

    - The same manipulators work with operator>> and istream - as well. Suppose the std::cin + The same manipulators work with operator>> and istream + as well. Suppose the std::cin stream contains the following data:

    @@ -97,8 +97,8 @@
               The code:
             

    -vector<int, int, int> i;
    -vector<int, int> j;
    +vector<int, int, int> i;
    +vector<int, int> j;
     
     std::cin >> i;
     std::cin >> set_open('[') >> set_close(']') >> set_delimiter(':');
    @@ -106,16 +106,16 @@
     

    reads the data into the _vector_s - i and j. + i and j.

    Note that extracting _sequence_s - with std::string or C-style string elements does + with std::string or C-style string elements does not generally work, since the streamed Sequence representation may not be unambiguously parseable.

    - + Header
    @@ -129,7 +129,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/operators/i_o/in.html b/doc/html/fusion/sequences/operators/i_o/in.html index 8bbc70ae..bfac3141 100644 --- a/doc/html/fusion/sequences/operators/i_o/in.html +++ b/doc/html/fusion/sequences/operators/i_o/in.html @@ -3,30 +3,30 @@ in - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    @@ -34,7 +34,7 @@ stream.

    - + Synopsis
    @@ -43,7 +43,7 @@
     operator>>(IStream& is, Sequence& seq);
     
    - + Parameters
    @@ -107,7 +107,7 @@
    - + Expression Semantics
    @@ -115,26 +115,26 @@ is >> seq

    - Return type: IStream& + Return type: IStream&

    - Semantics: For each element, e, in sequence, seq, - call is >> - e. + Semantics: For each element, e, in sequence, seq, + call is >> + e.

    - + Header
     #include <boost/fusion/sequence/io/in.hpp>
     
    - + Example
    -vector<int, std::string, char> v;
    +vector<int, std::string, char> v;
     std::cin >> v;
     
    @@ -145,7 +145,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/operators/i_o/out.html b/doc/html/fusion/sequences/operators/i_o/out.html index 764f0163..80ca62f7 100644 --- a/doc/html/fusion/sequences/operators/i_o/out.html +++ b/doc/html/fusion/sequences/operators/i_o/out.html @@ -3,30 +3,30 @@ out - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    @@ -34,7 +34,7 @@ stream.

    - + Synopsis
    @@ -43,7 +43,7 @@
     operator<<(OStream& os, Sequence& seq);
     
    - + Parameters
    @@ -107,7 +107,7 @@
    - + Expression Semantics
    @@ -115,26 +115,26 @@ os << seq

    - Return type: OStream& + Return type: OStream&

    - Semantics: For each element, e, in sequence, seq, - call os << - e. + Semantics: For each element, e, in sequence, seq, + call os << + e.

    - + Header
     #include <boost/fusion/sequence/io/out.hpp>
     
    - + Example
    -std::cout << make_vector(123, "Hello", 'x') << std::endl;
    +std::cout << make_vector(123, "Hello", 'x') << std::endl;
     
    @@ -144,7 +144,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/views.html b/doc/html/fusion/sequences/views.html index b0f5053d..cf4d2095 100644 --- a/doc/html/fusion/sequences/views.html +++ b/doc/html/fusion/sequences/views.html @@ -3,24 +3,24 @@ Views - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -44,7 +44,7 @@ very cheap to copy and be passed around by value.

    - + Header

    @@ -58,7 +58,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/views/filter_view.html b/doc/html/fusion/sequences/views/filter_view.html index 6fbed0b9..758b9540 100644 --- a/doc/html/fusion/sequences/views/filter_view.html +++ b/doc/html/fusion/sequences/views/filter_view.html @@ -3,48 +3,48 @@ filter_view - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - filter_view is a view into + filter_view is a view into a subset of its underlying sequence's elements satisfying a given predicate (an MPL metafunction). - The filter_view presents - only those elements for which its predicate evaluates to mpl::true_. + The filter_view presents + only those elements for which its predicate evaluates to mpl::true_.

    - + Header
     #include <boost/fusion/sequence/view/filter_view.hpp>
     
    - + Synopsis
    @@ -52,7 +52,7 @@
     struct filter_view;
     
    - + Template parameters
    @@ -83,7 +83,7 @@

    - Sequence + Sequence

    @@ -101,12 +101,12 @@

    - Pred + Pred

    - Unary Metafunction returning an mpl::bool_ + Unary Metafunction returning an mpl::bool_

    @@ -117,7 +117,7 @@
    - + Model of
    - + Expression Semantics
    @@ -174,49 +174,49 @@

    - F(s) + F(s)

    - Creates a filter_view - given a sequence, s. + Creates a filter_view + given a sequence, s.

    - F(f) + F(f)

    - Copy constructs a filter_view - from another filter_view, - f. + Copy constructs a filter_view + from another filter_view, + f.

    - f = - f2 + f = + f2

    - Assigns to a filter_view, - f, from another - filter_view, f2. + Assigns to a filter_view, + f, from another + filter_view, f2.

    - + Example
    @@ -224,7 +224,7 @@
     using boost::mpl::not_;
     using boost::is_class;
     
    -typedef vector<std::string, char, long, bool, double> vector_type;
    +typedef vector<std::string, char, long, bool, double> vector_type;
     
     vector_type v("a-string", '@', 987654, true, 6.6);
     filter_view<vector_type const, not_<is_class<_> > > view(v);
    @@ -238,7 +238,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/views/iterator_range.html b/doc/html/fusion/sequences/views/iterator_range.html index bb573ff7..e53bc815 100644 --- a/doc/html/fusion/sequences/views/iterator_range.html +++ b/doc/html/fusion/sequences/views/iterator_range.html @@ -3,45 +3,45 @@ iterator_range - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - iterator_range presents + iterator_range presents a sub-range of its underlying sequence delimited by a pair of iterators.

    - + Header
     #include <boost/fusion/sequence/view/iterator_range.hpp>
     
    - + Synopsis
    @@ -49,7 +49,7 @@
     struct iterator_range;
     
    - + Template parameters
    @@ -80,7 +80,7 @@

    - First + First

    @@ -96,7 +96,7 @@

    - Last + Last

    @@ -112,7 +112,7 @@
    - + Model of
    • @@ -129,27 +129,27 @@

      Notation

      -
      IR
      -
      - An iterator_range type -
      -
      f
      -
      - An instance of First -
      -
      l
      -
      - An instance of Last -
      -
      ir, - ir2
      -
      - Instances of iterator_range -
      +
      IR
      +

      + An iterator_range type +

      +
      f
      +

      + An instance of First +

      +
      l
      +

      + An instance of Last +

      +
      ir, + ir2
      +

      + Instances of iterator_range +

      - + Expression Semantics
      @@ -180,63 +180,63 @@

      - IR(f, - l) + IR(f, + l)

      - Creates an iterator_range - given iterators, f - and l. + Creates an iterator_range + given iterators, f + and l.

      - IR(ir) + IR(ir)

      - Copy constructs an iterator_range - from another iterator_range, - ir. + Copy constructs an iterator_range + from another iterator_range, + ir.

      - ir = - ir2 + ir = + ir2

      - Assigns to a iterator_range, - ir, from another - iterator_range, - ir2. + Assigns to a iterator_range, + ir, from another + iterator_range, + ir2.

    - + Example
     char const* s = "Ruby";
    -typedef vector<int, char, double, char const*> vector_type;
    +typedef vector<int, char, double, char const*> vector_type;
     vector_type vec(1, 'x', 3.3, s);
     
    -typedef result_of::begin<vector_type>::type A;
    -typedef result_of::end<vector_type>::type B;
    -typedef result_of::next<A>::type C;
    -typedef result_of::prior<B>::type D;
    +typedef result_of::begin<vector_type>::type A;
    +typedef result_of::end<vector_type>::type B;
    +typedef result_of::next<A>::type C;
    +typedef result_of::prior<B>::type D;
     
     C c(vec);
     D d(vec);
    @@ -252,7 +252,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/views/joint_view.html b/doc/html/fusion/sequences/views/joint_view.html index f1fbd8d1..2a1bfd21 100644 --- a/doc/html/fusion/sequences/views/joint_view.html +++ b/doc/html/fusion/sequences/views/joint_view.html @@ -3,45 +3,45 @@ joint_view - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    - joint_view presents a view + joint_view presents a view which is a concatenation of two sequences.

    - + Header
     #include <boost/fusion/sequence/view/joint_view.hpp>
     
    - + Synopsis
    @@ -49,7 +49,7 @@
     struct joint_view;
     
    - + Template parameters
    @@ -80,7 +80,7 @@

    - Sequence1 + Sequence1

    @@ -98,7 +98,7 @@

    - Sequence2 + Sequence2

    @@ -116,7 +116,7 @@
    - + Model of
    - + Expression Semantics
    @@ -175,59 +175,59 @@

    - JV(s1, - s2) + JV(s1, + s2)

    - Creates a joint_view - given sequences, s1 - and s2. + Creates a joint_view + given sequences, s1 + and s2.

    - JV(jv) + JV(jv)

    - Copy constructs a joint_view - from another joint_view, - jv. + Copy constructs a joint_view + from another joint_view, + jv.

    - jv = - jv2 + jv = + jv2

    - Assigns to a joint_view, - jv, from another - joint_view, jv2. + Assigns to a joint_view, + jv, from another + joint_view, jv2.

    - + Example
    -vector<int, char> v1(3, 'x');
    -vector<std::string, int> v2("hello", 123);
    +vector<int, char> v1(3, 'x');
    +vector<std::string, int> v2("hello", 123);
     joint_view<
    -    vector<int, char>
    -  , vector<std::string, int>
    +    vector<int, char>
    +  , vector<std::string, int>
     > view(v1, v2);
     std::cout << view << std::endl;
     
    @@ -239,7 +239,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/views/reverse_view.html b/doc/html/fusion/sequences/views/reverse_view.html index 2aeaf398..f071a5f1 100644 --- a/doc/html/fusion/sequences/views/reverse_view.html +++ b/doc/html/fusion/sequences/views/reverse_view.html @@ -3,42 +3,42 @@ reverse_view - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    - reverse_view presents a + reverse_view presents a reversed view of underlying sequence. The first element will be its last and the last element will be its first.

    - + Header
     #include <boost/fusion/sequence/view/reverse_view.hpp>
     
    - + Synopsis
    @@ -46,7 +46,7 @@
     struct reverse_view;
     
    - + Template parameters
    @@ -76,7 +76,7 @@

    - Sequence + Sequence

    @@ -93,7 +93,7 @@
    - + Model of
    - + Expression Semantics
    @@ -149,54 +149,54 @@

    - RV(s) + RV(s)

    - Creates a unary reverse_view - given sequence, s. + Creates a unary reverse_view + given sequence, s.

    - RV(rv) + RV(rv)

    - Copy constructs a reverse_view - from another reverse_view, - rv. + Copy constructs a reverse_view + from another reverse_view, + rv.

    - rv = - rv2 + rv = + rv2

    - Assigns to a reverse_view, - rv, from another - reverse_view, - rv2. + Assigns to a reverse_view, + rv, from another + reverse_view, + rv2.

    - + Example
    -typedef vector<int, short, double> vector_type;
    +typedef vector<int, short, double> vector_type;
     vector_type vec(2, 5, 3.3);
     
     reverse_view<vector_type> reverse(vec);
    @@ -210,7 +210,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/views/single_view.html b/doc/html/fusion/sequences/views/single_view.html index 78c70b20..ae40751b 100644 --- a/doc/html/fusion/sequences/views/single_view.html +++ b/doc/html/fusion/sequences/views/single_view.html @@ -3,41 +3,41 @@ single_view - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    - single_view is a view into + single_view is a view into a value as a single element sequence.

    - + Header
     #include <boost/fusion/sequence/view/single_view.hpp>
     
    - + Synopsis
    @@ -45,7 +45,7 @@
     struct single_view;
     
    - + Template parameters
    @@ -75,7 +75,7 @@

    - T + T

    @@ -90,7 +90,7 @@
    - + Model of
    - + Expression Semantics
    @@ -145,49 +145,49 @@

    - S(x) + S(x)

    - Creates a single_view - from x. + Creates a single_view + from x.

    - S(s) + S(s)

    - Copy constructs a single_view - from another single_view, - s. + Copy constructs a single_view + from another single_view, + s.

    - s = - s2 + s = + s2

    - Assigns to a single_view, - s, from another - single_view, s2. + Assigns to a single_view, + s, from another + single_view, s2.

    - + Example
    @@ -202,7 +202,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/sequences/views/transform_view.html b/doc/html/fusion/sequences/views/transform_view.html index 1f8234ec..00c990b8 100644 --- a/doc/html/fusion/sequences/views/transform_view.html +++ b/doc/html/fusion/sequences/views/transform_view.html @@ -3,63 +3,64 @@ transform_view - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    - transform_view presents - a transformed view of its underlying sequence given a unary Polymorphic - Function Object. The transform_view + The unary version of transform_view + presents a view of its underlying sequence given a unary function object + or function pointer. The binary version of transform_view + presents a view of 2 underlying sequences, given a binary function object + or function pointer. The transform_view inherits the traversal characteristics (see Sequence - Traversal Concept) of its underlying sequence. + Traversal Concept) of its underlying sequence or sequences.

    - + Header
     #include <boost/fusion/sequence/view/transform_view.hpp>
     
    - + Synopsis

    - Unary Version + Unary Version

    -template <typename Sequence, typename F>
    +template <typename Sequence, typename F1>
     struct transform_view;
     

    - Binary Version + Binary Version

    -template <typename Sequence1, typename Sequence2, typename F>
    +template <typename Sequence1, typename Sequence2, typename F2>
     struct transform_view;
     
    - + Template parameters
    @@ -90,7 +91,7 @@

    - Sequence + Sequence

    @@ -108,7 +109,7 @@

    - Sequence1 + Sequence1

    @@ -126,7 +127,7 @@

    - Sequence2 + Sequence2

    @@ -144,14 +145,35 @@

    - F + F1

    - A Polymorphic Function - Object + A unary function object or function pointer. boost::result_of<F1(E)>::type is the return type of an + instance of F1 + when called with a value of each element type E + in the input sequence. +

    + + +

    +

    + + + + +

    + F2 +

    + + +

    + A binary function object or function pointer. boost::result_of<F2(E1, + E2)>::type is the return type of an + instance of F2 + when called with a value of each corresponding pair of element + type E1 and E2 in the input sequences.

    @@ -162,7 +184,7 @@
    - + Model of
    • @@ -179,45 +201,49 @@

      Notation

      -
      TV
      -
      - A transform_view type -
      -
      BTV
      -
      - A binary transform_view - type -
      -
      UTV
      -
      - A unary transform_view - type -
      -
      f
      -
      - An instance of F -
      -
      s
      -
      - An instance of Sequence -
      -
      s1
      -
      - An instance of Sequence1 -
      -
      s2
      -
      - An instance of Sequence2 -
      -
      tv, - tv2
      -
      - Instances of transform_view -
      +
      TV
      +

      + A transform_view type +

      +
      BTV
      +

      + A binary transform_view + type +

      +
      UTV
      +

      + A unary transform_view + type +

      +
      f1
      +

      + An instance of F1 +

      +
      f2
      +

      + An instance of F2 +

      +
      s
      +

      + An instance of Sequence +

      +
      s1
      +

      + An instance of Sequence1 +

      +
      s2
      +

      + An instance of Sequence2 +

      +
      tv, + tv2
      +

      + Instances of transform_view +

      - + Expression Semantics
      @@ -231,7 +257,7 @@ Access Sequence">Random Access Sequence depending on the traversal characteristics (see Sequence Traversal - Concept) of its underlying sequence. + Concept) of its underlying sequence or sequences.

      @@ -254,83 +280,81 @@

      - UTV(s, - f) + UTV(s, + f1)

      - Creates a unary transform_view - given sequence, s - and unary Polymorphic - Function Object, f. + Creates a unary transform_view + given sequence, s + and unary function object or function pointer, f1.

      - BTV(s1, + BTV(s1, s2, - f) + f2)

      - Creates a binary transform_view - given sequences, s1 - and s2 and unary - Polymorphic Function - Object, f. + Creates a binary transform_view + given sequences, s1 + and s2 and binary + function object or function pointer, f2.

      - TV(tv) + TV(tv)

      - Copy constructs a transform_view - from another transform_view, - tv. + Copy constructs a transform_view + from another transform_view, + tv.

      - tv = - tv2 + tv = + tv2

      - Assigns to a transform_view, - tv, from another - transform_view, - tv2. + Assigns to a transform_view, + tv, from another + transform_view, + tv2.

      - + Example
       struct square
       {
      -    template <typename T>
      -    struct result
      -    {
      -        typedef T type;
      -    };
      +    template<typename Sig>
      +    struct result;
      +
      +    template<typename U>
      +    struct result<square(U)>
      +    : remove_reference<U>
      +    {};
       
           template <typename T>
           T operator()(T x) const
      @@ -339,7 +363,7 @@
           }
       };
       
      -typedef vector<int, short, double> vector_type;
      +typedef vector<int, short, double> vector_type;
       vector_type vec(2, 5, 3.3);
       
       transform_view<vector_type, square> transform(vec, square());
      @@ -353,7 +377,7 @@
       
       
      -PrevUpHomeNext +PrevUpHomeNext
      diff --git a/doc/html/fusion/sequences/views/zip_view.html b/doc/html/fusion/sequences/views/zip_view.html index a7b7e97d..866a7866 100644 --- a/doc/html/fusion/sequences/views/zip_view.html +++ b/doc/html/fusion/sequences/views/zip_view.html @@ -3,48 +3,48 @@ zip_view - + - +
      -
      Boost C++ Libraries Home Libraries People FAQ More
      +
      -PrevUpHomeNext +PrevUpHomeNext
      - + Description

      - zip_view presents a view + zip_view presents a view which iterates over a collection of _sequence_s - in parallel. A zip_view + in parallel. A zip_view is constructed from a Sequence of references to the component _sequence_s.

      - + Header
       #include <boost/fusion/sequence/view/zip_view.hpp>
       
      - + Synopsis
      @@ -52,7 +52,7 @@
       struct zip_view;
       
      - + Template parameters
      @@ -82,7 +82,7 @@

      - Sequences + Sequences

      @@ -99,7 +99,7 @@
      - + Model of
      • @@ -116,23 +116,23 @@

        Notation

        -
        ZV
        -
        - A joint_view type -
        -
        s
        -
        - An instance of Sequences -
        -
        zv1, - zv2
        -
        - Instances of ZV -
        +
        ZV
        +

        + A joint_view type +

        +
        s
        +

        + An instance of Sequences +

        +
        zv1, + zv2
        +

        + Instances of ZV +

        - + Expression Semantics
        @@ -163,12 +163,12 @@

        - ZV(s) + ZV(s)

        - Creates a zip_view + Creates a zip_view given a sequence of references to the component _sequence_s.

        @@ -176,44 +176,44 @@

        - ZV(zv1) + ZV(zv1)

        - Copy constructs a zip_view - from another zip_view, - zv. + Copy constructs a zip_view + from another zip_view, + zv.

        - zv1 = - zv2 + zv1 = + zv2

        - Assigns to a zip_view, - zv, from another - zip_view, zv2. + Assigns to a zip_view, + zv, from another + zip_view, zv2.

      - + Example
      -typedef vector<int,int> vec1;
      -typedef vector<char,char> vec2;
      +typedef vector<int,int> vec1;
      +typedef vector<char,char> vec2;
       vec1 v1(1,2);
       vec2 v2('a','b');
      -typedef vector<vec1&, vec2&> sequences;
      +typedef vector<vec1&, vec2&> sequences;
       std::cout << zip_view<sequences>(sequences(v1, v2)) << std::endl; // ((1 a) (2 b))
       
    @@ -224,7 +224,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/support.html b/doc/html/fusion/support.html index b81fb21c..06a56770 100644 --- a/doc/html/fusion/support.html +++ b/doc/html/fusion/support.html @@ -3,24 +3,24 @@ Support - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -45,7 +45,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/support/category_of.html b/doc/html/fusion/support/category_of.html index 97d9a6af..599c514b 100644 --- a/doc/html/fusion/support/category_of.html +++ b/doc/html/fusion/support/category_of.html @@ -3,30 +3,30 @@ category_of - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    - + Description

    @@ -36,7 +36,7 @@ Sequence Concepts).

    - + Synopsis

    @@ -50,7 +50,7 @@
     }
     

    - + Parameters

    @@ -79,7 +79,7 @@

    - T + T

    @@ -95,7 +95,7 @@

    - + Expression Semantics

    @@ -103,7 +103,7 @@ typedef traits::category_of<T>::type category;

    - Return type: + Return type:

    For Iterators, the return type is derived from one of: @@ -157,24 +157,24 @@ }}

    - Semantics: Establishes the conceptual classification + Semantics: Establishes the conceptual classification of a particular Sequence or Iterator.

    - + Header

     #include <boost/fusion/support/category_of.hpp>
     

    - + Example

     using boost::is_base_of;
    -typedef traits::category_of<list<> >::type list_category;
    -typedef traits::category_of<vector<> >::type vector_category;
    +typedef traits::category_of<list<> >::type list_category;
    +typedef traits::category_of<vector<> >::type vector_category;
     BOOST_MPL_ASSERT(( is_base_of<forward_traversal_tag, list_category> ));
     BOOST_MPL_ASSERT(( is_base_of<random_access_traversal_tag, vector_category> ));
     
    @@ -186,7 +186,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/support/deduce.html b/doc/html/fusion/support/deduce.html index 3b1de522..4b7b035b 100644 --- a/doc/html/fusion/support/deduce.html +++ b/doc/html/fusion/support/deduce.html @@ -3,30 +3,30 @@ deduce - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    - + Description

    @@ -34,19 +34,19 @@ conversion to the full argument type.

    - It removes references to const, - references to array types are kept, even if the array is const. - Reference wrappers are removed (see boost::ref). + It removes references to const, + references to array types are kept, even if the array is const. + Reference wrappers are removed (see boost::ref).

    - + Header

     #include <boost/fusion/support/deduce.hpp>
     

    - + Synopsis

    @@ -60,7 +60,7 @@
     }
     

    - + Example

    @@ -81,10 +81,10 @@
     }
     

    - + See also

    - +
    @@ -93,7 +93,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/support/deduce_sequence.html b/doc/html/fusion/support/deduce_sequence.html index 4fbb1200..c7423807 100644 --- a/doc/html/fusion/support/deduce_sequence.html +++ b/doc/html/fusion/support/deduce_sequence.html @@ -3,30 +3,30 @@ deduce_sequence - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    - + Description

    @@ -39,14 +39,14 @@ original type as its argument.

    - + Header

     #include <boost/fusion/support/deduce_sequence.hpp>
     

    - + Synopsis

    @@ -60,7 +60,7 @@
     }
     

    - + Example

    @@ -75,18 +75,18 @@
     };
     
     template <typename T0, typename T1>
    -holder< vector<T0 const &, T1 const &> > 
    +holder< vector<T0 const &, T1 const &> > 
     make_holder(T0 const & a0, T1 const & a1)
     {
    -    typedef vector<T0 const &, T1 const &> arg_vec_t;
    +    typedef vector<T0 const &, T1 const &> arg_vec_t;
         return holder<arg_vec_t>( arg_vec_t(a0,a1) ); 
     }
     

    - + See also

    - +
    @@ -95,7 +95,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/support/is_sequence.html b/doc/html/fusion/support/is_sequence.html index 4dc9736d..c2e96c86 100644 --- a/doc/html/fusion/support/is_sequence.html +++ b/doc/html/fusion/support/is_sequence.html @@ -3,41 +3,41 @@ is_sequence - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    - + Description

    - Metafunction that evaluates to mpl::true_ - if a certain type T is a - conforming Fusion Sequence, mpl::false_ + Metafunction that evaluates to mpl::true_ + if a certain type T is a + conforming Fusion Sequence, mpl::false_ otherwise. This may be specialized to accomodate clients which provide Fusion conforming sequences.

    - + Synopsis

    @@ -51,7 +51,7 @@
     }
     

    - + Parameters

    @@ -80,7 +80,7 @@

    - T + T

    @@ -96,7 +96,7 @@

    - + Expression Semantics

    @@ -104,33 +104,33 @@ typedef traits::is_sequence<T>::type c;

    - Return type: An MPL + Return type: An MPL Boolean Constant.

    - Semantics: Metafunction that evaluates to - mpl::true_ if a certain type T - is a conforming Fusion sequence, mpl::false_ + Semantics: Metafunction that evaluates to + mpl::true_ if a certain type T + is a conforming Fusion sequence, mpl::false_ otherwise.

    - + Header

     #include <boost/fusion/support/is_sequence.hpp>
     

    - + Example

     BOOST_MPL_ASSERT_NOT(( traits::is_sequence< std::vector<int> > ));
     BOOST_MPL_ASSERT_NOT(( is_sequence< int > ));
    -BOOST_MPL_ASSERT(( traits::is_sequence<list<> > ));
    -BOOST_MPL_ASSERT(( traits::is_sequence<list<int> > ));
    -BOOST_MPL_ASSERT(( traits::is_sequence<vector<> > ));
    -BOOST_MPL_ASSERT(( traits::is_sequence<vector<int> > ));
    +BOOST_MPL_ASSERT(( traits::is_sequence<list<> > ));
    +BOOST_MPL_ASSERT(( traits::is_sequence<list<int> > ));
    +BOOST_MPL_ASSERT(( traits::is_sequence<vector<> > ));
    +BOOST_MPL_ASSERT(( traits::is_sequence<vector<int> > ));
     
    @@ -140,7 +140,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/support/is_view.html b/doc/html/fusion/support/is_view.html index 90460c1a..9f245620 100644 --- a/doc/html/fusion/support/is_view.html +++ b/doc/html/fusion/support/is_view.html @@ -3,44 +3,44 @@ is_view - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    - + Description

    - Metafunction that evaluates to mpl::true_ - if a certain type T is a - conforming Fusion View, mpl::false_ + Metafunction that evaluates to mpl::true_ + if a certain type T is a + conforming Fusion View, mpl::false_ otherwise. A view is a specialized sequence that does not actually contain data. Views hold sequences which may be other views. In general, views are held by other views by value, while non-views are held by other views by - reference. is_view may be + reference. is_view may be specialized to accomodate clients providing Fusion conforming views.

    - + Synopsis

    @@ -54,7 +54,7 @@
     }
     

    - + Parameters

    @@ -83,7 +83,7 @@

    - T + T

    @@ -99,31 +99,31 @@

    - + Expression Semantics

     typedef traits::is_view<T>::type c;
     

    - Return type: An MPL + Return type: An MPL Boolean Constant.

    - Semantics: Metafunction that evaluates to - mpl::true_ if a certain type T - is a conforming Fusion view, mpl::false_ + Semantics: Metafunction that evaluates to + mpl::true_ if a certain type T + is a conforming Fusion view, mpl::false_ otherwise.

    - + Header

     #include <boost/fusion/support/is_view.hpp>
     

    - + Example

    @@ -132,8 +132,8 @@
     
     using boost::mpl::_
     using boost::is_pointer;
    -typedef vector<int*, char, long*, bool, double> vector_type;
    -typedef filter_view<vector_type, is_pointer<_> > filter_view_type;
    +typedef vector<int*, char, long*, bool, double> vector_type;
    +typedef filter_view<vector_type, is_pointer<_> > filter_view_type;
     BOOST_MPL_ASSERT(( traits::is_view<filter_view_type> ));
     
    @@ -144,7 +144,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/support/pair.html b/doc/html/fusion/support/pair.html index 2ab835a5..92548e61 100644 --- a/doc/html/fusion/support/pair.html +++ b/doc/html/fusion/support/pair.html @@ -3,41 +3,41 @@ pair - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    - + Description

    - Fusion pair type is a half - runtime pair. A half runtime pair is similar to a std::pair, - but, unlike std::pair, + Fusion pair type is a half + runtime pair. A half runtime pair is similar to a std::pair, + but, unlike std::pair, the first type does not have data. It is used as elements in _map_s, for example.

    - + Synopsis

    @@ -61,7 +61,7 @@
     make_pair(Second const &);
     

    - + Template parameters

    @@ -111,36 +111,36 @@

    Notation

    -
    P
    -
    - Fusion pair type -
    -
    p, - p2
    -
    - Fusion pairs -
    -
    F, - S
    -
    - Arbitrary types -
    -
    s
    -
    - Value of type S -
    -
    o
    -
    - Output stream -
    -
    i
    -
    - Input stream -
    +
    P
    +

    + Fusion pair type +

    +
    p, + p2
    +

    + Fusion pairs +

    +
    F, + S
    +

    + Arbitrary types +

    +
    s
    +

    + Value of type S +

    +
    o
    +

    + Output stream +

    +
    i
    +

    + Input stream +

    - + Expression Semantics

    @@ -164,33 +164,33 @@ @@ -244,45 +244,45 @@

    - P::first_type + P::first_type

    - The type of the first template parameter, F, - equivalent to result_of::first<P>::type. + The type of the first template parameter, F, + equivalent to result_of::first<P>::type.

    - P::second_type + P::second_type

    - The type of the second template parameter, S, - equivalent to result_of::second<P>::type. + The type of the second template parameter, S, + equivalent to result_of::second<P>::type.

    - P() + P()

    @@ -202,37 +202,37 @@

    - P(s) + P(s)

    - Construct a pair given value for the second type, s. + Construct a pair given value for the second type, s.

    - P(p2) + P(p2)

    - Copy constructs a pair from another pair, p2. + Copy constructs a pair from another pair, p2.

    - p = - p2 + p = + p2

    - Assigns a pair, p1, from another pair, p2. + Assigns a pair, p1, from another pair, p2.

    - Make a pair given the first type, F, - and a value for the second type, s. - The second type assumes the type of s + Make a pair given the first type, F, + and a value for the second type, s. + The second type assumes the type of s

    - o << - p + o << + p

    - Output p to output - stream, o. + Output p to output + stream, o.

    - i >> - p + i >> + p

    - Input p from input - stream, i. + Input p from input + stream, i.

    - p == - p2 + p == + p2

    @@ -294,8 +294,8 @@

    - p != - p2 + p != + p2

    @@ -307,14 +307,14 @@

    - + Header

     #include <boost/fusion/support/pair.hpp>
     

    - + Example

    @@ -331,7 +331,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/support/tag_of.html b/doc/html/fusion/support/tag_of.html index 5a54227d..57404fd6 100644 --- a/doc/html/fusion/support/tag_of.html +++ b/doc/html/fusion/support/tag_of.html @@ -3,30 +3,30 @@ tag_of - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    - + Description

    @@ -40,7 +40,7 @@ conforming sequences.

    - + Synopsis

    @@ -54,7 +54,7 @@
     }
     

    - + Parameters

    @@ -83,7 +83,7 @@

    - T + T

    @@ -99,35 +99,35 @@

    - + Expression Semantics

     typedef traits::tag_of<T>::type tag;
     

    - Return type: Any type. + Return type: Any type.

    - Semantics: Returns the tag type associated - with T. + Semantics: Returns the tag type associated + with T.

    - + Header

     #include <boost/fusion/support/tag_of.hpp>
     

    - + Example

    -typedef traits::tag_of<list<> >::type tag1;
    -typedef traits::tag_of<list<int> >::type tag2;
    -typedef traits::tag_of<vector<> >::type tag3;
    -typedef traits::tag_of<vector<int> >::type tag4;
    +typedef traits::tag_of<list<> >::type tag1;
    +typedef traits::tag_of<list<int> >::type tag2;
    +typedef traits::tag_of<vector<> >::type tag3;
    +typedef traits::tag_of<vector<int> >::type tag4;
     
     BOOST_MPL_ASSERT((boost::is_same<tag1, tag2>));
     BOOST_MPL_ASSERT((boost::is_same<tag3, tag4>));
    @@ -140,7 +140,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/tuples.html b/doc/html/fusion/tuples.html index ad1d5d49..d6045ced 100644 --- a/doc/html/fusion/tuples.html +++ b/doc/html/fusion/tuples.html @@ -3,24 +3,24 @@ Tuples - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -43,12 +43,12 @@

    The TR1 technical report describes extensions to the C++ standard library. Many of these extensions will be considered for the next iteration of the C++ - standard. TR1 describes a tuple type, and support for treating std::pair + standard. TR1 describes a tuple type, and support for treating std::pair as a type of tuple.

    Fusion provides full support for the TR1 - Tuple interface, and the extended uses of std::pair described + Tuple interface, and the extended uses of std::pair described in the TR1 document.

    @@ -59,7 +59,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/tuples/class_template_tuple.html b/doc/html/fusion/tuples/class_template_tuple.html index 2401cb95..2ee19c9a 100644 --- a/doc/html/fusion/tuples/class_template_tuple.html +++ b/doc/html/fusion/tuples/class_template_tuple.html @@ -3,24 +3,24 @@ Class template tuple - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -44,11 +44,11 @@ beyond that required by TR1.

    - Currently tuple is basically a synonym for vector, although this may be changed + Currently tuple is basically a synonym for vector, although this may be changed in future releases of fusion.

    - + Synopsis

    @@ -60,7 +60,7 @@
     class tuple;
     

    - + Header

    @@ -74,7 +74,7 @@
     
     
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/tuples/class_template_tuple/construction.html b/doc/html/fusion/tuples/class_template_tuple/construction.html index 97034129..5577f155 100644 --- a/doc/html/fusion/tuples/class_template_tuple/construction.html +++ b/doc/html/fusion/tuples/class_template_tuple/construction.html @@ -3,7 +3,7 @@ Construction - + @@ -11,23 +11,23 @@ creation functions"> - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext
    - + Description

    @@ -38,82 +38,83 @@ in this section.

    - + Specification

    Notation

    -
    T1 - ... TN, - U1 ... - UN
    -
    - Tuple element types -
    -
    P1 - ... PN
    -
    - Parameter types -
    -
    Ti, - Ui
    -
    - The type of the ith element - of a tuple -
    -
    Pi
    -
    - The type of the ith parameter -
    +
    T1 + ... TN, + U1 ... + UN
    +

    + Tuple element types +

    +
    P1 + ... PN
    +

    + Parameter types +

    +
    Ti, + Ui
    +

    + The type of the ith + element of a tuple +

    +
    Pi
    +

    + The type of the ith + parameter +

     tuple();
     

    - Requirements: Each Ti + Requirements: Each Ti is default constructable.

    - Semantics: Default initializes each element + Semantics: Default initializes each element of the tuple.

     tuple(P1,P2,...,PN);
     

    - Requirements: Each Pi - is Ti if Ti is a reference type, const Ti& otherwise. + Requirements: Each Pi + is Ti if Ti is a reference type, const Ti& otherwise.

    - Semantics: Copy initializes each element + Semantics: Copy initializes each element with the corresponding parameter.

     tuple(const tuple& t);
     

    - Requirements: Each Ti + Requirements: Each Ti should be copy constructable.

    - Semantics: Copy constructs each element - of *this - with the corresponding element of t. + Semantics: Copy constructs each element + of *this + with the corresponding element of t.

     template<typename U1, typename U2, ..., typename UN>
     tuple(const tuple<U1, U2, ..., UN>& t);
     

    - Requirements: Each Ti - shall be constructible from the corresponding Ui. + Requirements: Each Ti + shall be constructible from the corresponding Ui.

    - Semantics: Constructs each element of - *this - with the corresponding element of t. + Semantics: Constructs each element of + *this + with the corresponding element of t.

    @@ -123,7 +124,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/tuples/class_template_tuple/element_access.html b/doc/html/fusion/tuples/class_template_tuple/element_access.html index 18529aa1..119585a2 100644 --- a/doc/html/fusion/tuples/class_template_tuple/element_access.html +++ b/doc/html/fusion/tuples/class_template_tuple/element_access.html @@ -4,7 +4,7 @@ Element access - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -31,16 +31,16 @@ access">Element access

    - + Description

    The TR1 - Tuple provides the get + Tuple provides the get function to provide access to it's elements by zero based numeric index.

    - + Specification
    @@ -48,38 +48,38 @@
     RJ get(T& t);
     

    - Requires: 0 + Requires: 0 < I - <= N. - The program is ill formed if I - is out of bounds. T is - any fusion sequence type, including tuple. + <= N. + The program is ill formed if I + is out of bounds. T is + any fusion sequence type, including tuple.

    - Return type: RJ - is equivalent to result_of::at_c<I,T>::type. + Return type: RJ + is equivalent to result_of::at_c<I,T>::type.

    - Returns: A reference to the Ith element of T. + Returns: A reference to the Ith element of T.

     template<int I, typename T>
     PJ get(T const& t);
     

    - Requires: 0 + Requires: 0 < I - <= N. - The program is ill formed if I - is out of bounds. T is - any fusion sequence type, including tuple. + <= N. + The program is ill formed if I + is out of bounds. T is + any fusion sequence type, including tuple.

    - Return type: PJ - is equivalent to result_of::at_c<I,T>::type. + Return type: PJ + is equivalent to result_of::at_c<I,T>::type.

    - Returns: A const reference to the Ith element of T. + Returns: A const reference to the Ith element of T.

    @@ -89,7 +89,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/tuples/class_template_tuple/relational_operators.html b/doc/html/fusion/tuples/class_template_tuple/relational_operators.html index 111cfefc..90d031bd 100644 --- a/doc/html/fusion/tuples/class_template_tuple/relational_operators.html +++ b/doc/html/fusion/tuples/class_template_tuple/relational_operators.html @@ -4,7 +4,7 @@ Relational operators - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -30,7 +30,7 @@ operators">Relational operators

    - + Description

    @@ -38,34 +38,35 @@ Tuple provides the standard boolean relational operators.

    - + Specification

    Notation

    -
    T1 - ... TN, - U1 ... - UN
    -
    - Tuple element types -
    -
    P1 - ... PN
    -
    - Parameter types -
    -
    Ti, - Ui
    -
    - The type of the ith element - of a tuple -
    -
    Pi
    -
    - The type of the ith parameter -
    +
    T1 + ... TN, + U1 ... + UN
    +

    + Tuple element types +

    +
    P1 + ... PN
    +

    + Parameter types +

    +
    Ti, + Ui
    +

    + The type of the ith + element of a tuple +

    +
    Pi
    +

    + The type of the ith + parameter +

    @@ -76,23 +77,23 @@
         const tuple<U1, U2, ..., UN>& rhs);
     

    - Requirements: For all i, - 1 <= + Requirements: For all i, + 1 <= i < - N, get<i>(lhs) == get<i>(rhs) - is a valid expression returning a type that is convertible to bool. + N, get<i>(lhs) == get<i>(rhs) + is a valid expression returning a type that is convertible to bool.

    - Semantics: Returns true - if and only if get<i>(lhs) == get<i>(rhs) - for all i. For any 2 zero - length tuples e and f, e - == f - returns true. + Semantics: Returns true + if and only if get<i>(lhs) == get<i>(rhs) + for all i. For any 2 zero + length tuples e and f, e + == f + returns true.

     template<typename T1, typename T2, ..., typename TN,
    @@ -102,18 +103,18 @@
         const tuple<U1, U2, ..., UN>& rhs);
     

    - Requirements: For all i, - 1 <= + Requirements: For all i, + 1 <= i < - N, get<i>(lhs) < get<i>(rhs) - is a valid expression returning a type that is convertible to bool. + N, get<i>(lhs) < get<i>(rhs) + is a valid expression returning a type that is convertible to bool.

    - Semantics: Returns the lexicographical - comparison of between lhs - and rhs. + Semantics: Returns the lexicographical + comparison of between lhs + and rhs.

     template<typename T1, typename T2, ..., typename TN,
    @@ -123,16 +124,16 @@
         const tuple<U1, U2, ..., UN>& rhs);
     

    - Requirements: For all i, - 1 <= + Requirements: For all i, + 1 <= i < - N, get<i>(lhs) == get<i>(rhs) - is a valid expression returning a type that is convertible to bool. + N, get<i>(lhs) == get<i>(rhs) + is a valid expression returning a type that is convertible to bool.

    - Semantics: Returns !(lhs == rhs). + Semantics: Returns !(lhs == rhs).

     template<typename T1, typename T2, ..., typename TN,
    @@ -142,16 +143,16 @@
         const tuple<U1, U2, ..., UN>& rhs);
     

    - Requirements: For all i, - 1 <= + Requirements: For all i, + 1 <= i < - N, get<i>(rhs) < get<i>(lhs) - is a valid expression returning a type that is convertible to bool. + N, get<i>(rhs) < get<i>(lhs) + is a valid expression returning a type that is convertible to bool.

    - Semantics: Returns !(rhs < lhs) + Semantics: Returns !(rhs < lhs)

     template<typename T1, typename T2, ..., typename TN,
    @@ -161,17 +162,17 @@
         const tuple<U1, U2, ..., UN>& rhs);
     

    - Requirements: For all i, - 1 <= + Requirements: For all i, + 1 <= i < - N, get<i>(rhs) < get<i>(lhs) - is a valid expression returning a type that is convertible to bool. + N, get<i>(rhs) < get<i>(lhs) + is a valid expression returning a type that is convertible to bool.

    - Semantics: Returns rhs - < lhs. + Semantics: Returns rhs + < lhs.

     template<typename T1, typename T2, ..., typename TN,
    @@ -181,16 +182,16 @@
         const tuple<U1, U2, ..., UN>& rhs);
     

    - Requirements: For all i, - 1 <= + Requirements: For all i, + 1 <= i < - N, get<i>(lhs) < get<i>(rhs) - is a valid expression returning a type that is convertible to bool. + N, get<i>(lhs) < get<i>(rhs) + is a valid expression returning a type that is convertible to bool.

    - Semantics: Returns !(lhs < rhs). + Semantics: Returns !(lhs < rhs).

    @@ -200,7 +201,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html b/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html index 8dbf5f5f..814625bb 100644 --- a/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html +++ b/doc/html/fusion/tuples/class_template_tuple/tuple_creation_functions.html @@ -4,7 +4,7 @@ Tuple creation functions - + @@ -12,17 +12,17 @@ helper classes"> - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -30,17 +30,17 @@ creation functions">Tuple creation functions

    - + Description

    - TR1 describes 2 utility functions for creating _tr1tuple_s. make_tuple - builds a tuple out of it's argument list, and tie + TR1 describes 2 utility functions for creating _tr1tuple_s. make_tuple + builds a tuple out of it's argument list, and tie builds a tuple of references to it's arguments. The details of these creation functions are described in this section.

    - + Specification
    @@ -48,22 +48,22 @@
     tuple<V1, V2, ..., VN> make_tuple(const T1& t1, const T2& t2, ..., const TN& tn);
     

    - Where Vi is X& - if the cv-unqualified type Ti - is reference_wrapper<X>, - otherwise Vi is Ti. + Where Vi is X& + if the cv-unqualified type Ti + is reference_wrapper<X>, + otherwise Vi is Ti.

    - Returns: tuple<V1, V2, ..., VN>(t1, t2, ..., tN) + Returns: tuple<V1, V2, ..., VN>(t1, t2, ..., tN)

     template<typename T1, typename T2, ..., typename TN>
     tuple<T1&, T2&, ..., TN&> tie(T1& t1, T2& t2, ..., TN& tn);
     

    - Returns: tuple<T1&, T2&, ..., - TN&>(t1, t2, ..., tN). When argument ti - is ignore, assigning any + Returns: tuple<T1&, T2&, ..., + TN&>(t1, t2, ..., tN). When argument ti + is ignore, assigning any value to the corresponding tuple element has has no effect.

    @@ -74,7 +74,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html b/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html index 331d8521..1bd436e1 100644 --- a/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html +++ b/doc/html/fusion/tuples/class_template_tuple/tuple_helper_classes.html @@ -4,7 +4,7 @@ Tuple helper classes - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -31,7 +31,7 @@ helper classes">Tuple helper classes

    - + Description

    @@ -40,38 +40,38 @@ tuple size, and the element types.

    - + Specification
     tuple_size<T>::value
     

    - Requires: T - is any fusion sequence type, including tuple. + Requires: T + is any fusion sequence type, including tuple.

    - Type: MPL + Type: MPL Integral Constant

    - Value: The number of elements in the sequence. - Equivalent to result_of::size<T>::type. + Value: The number of elements in the sequence. + Equivalent to result_of::size<T>::type.

     tuple_element<I, T>::type
     

    - Requires: T - is any fusion sequence type, including tuple. - 0 <= + Requires: T + is any fusion sequence type, including tuple. + 0 <= I < - N or the program is ill formed. + N or the program is ill formed.

    - Value: The type of the Ith - element of T. Equivalent - to result_of::value_at<I,T>::type. + Value: The type of the Ith + element of T. Equivalent + to result_of::value_at<I,T>::type.

    @@ -81,7 +81,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/fusion/tuples/pairs.html b/doc/html/fusion/tuples/pairs.html index dfe8badc..5060e796 100644 --- a/doc/html/fusion/tuples/pairs.html +++ b/doc/html/fusion/tuples/pairs.html @@ -3,7 +3,7 @@ Pairs - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -PrevUpHomeNext +PrevUpHomeNext

    - + Description

    The TR1 - Tuple interface is specified to provide uniform access to std::pair + Tuple interface is specified to provide uniform access to std::pair as if it were a 2 element tuple.

    - + Specification

     tuple_size<std::pair<T1, T2> >::value
     

    - Type: An MPL + Type: An MPL Integral Constant

    - Value: Returns 2, the number of elements + Value: Returns 2, the number of elements in a pair.

     tuple_element<0, std::pair<T1, T2> >::type
     

    - Type: T1 + Type: T1

    - Value: Returns the type of the first element + Value: Returns the type of the first element of the pair

     tuple_element<1, std::pair<T1, T2> >::type
     

    - Type: T2 + Type: T2

    - Value: Returns thetype of the second element + Value: Returns thetype of the second element of the pair

    @@ -78,21 +78,21 @@
     const P& get(const std::pair<T1, T2>& pr);
     

    - Type: If I - == 0 - P is T1, - else if I == - 1 P - is T2 else the program is + Type: If I + == 0 + P is T1, + else if I == + 1 P + is T2 else the program is ill-formed.

    - Returns: pr.first - if I == - 0 else pr.second.[*Returns: - pr.first if I - == 0 - else pr.second. + Returns: pr.first + if I == + 0 else pr.second.[*Returns: + pr.first if I + == 0 + else pr.second.

    @@ -102,7 +102,7 @@

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/index.html b/doc/html/index.html index b9d501ba..7be69e34 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -3,21 +3,21 @@ Chapter 1. Fusion 2.0 - + - +
    -
    Boost C++ Libraries Home Libraries People FAQ More
    +
    -
    Next
    +
    Next

    @@ -25,7 +25,7 @@
    -

    +

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    @@ -225,10 +225,10 @@
    - +

    Last revised: July 22, 2007 at 08:27:13 GMT

    Last revised: September 22, 2007 at 01:00:16 GMT


    -
    Next
    +
    Next
    From dbd122cee3729bd15734537958b8b78b15956232 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Sat, 22 Sep 2007 01:08:51 +0000 Subject: [PATCH 224/234] bugfix tuples::null_type and tuples::tuple<> iterators not comparing ok. [SVN r39469] --- .../adapted/boost_tuple/boost_tuple_iterator.hpp | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/include/boost/fusion/sequence/adapted/boost_tuple/boost_tuple_iterator.hpp b/include/boost/fusion/sequence/adapted/boost_tuple/boost_tuple_iterator.hpp index 2becfbd5..8c83e465 100644 --- a/include/boost/fusion/sequence/adapted/boost_tuple/boost_tuple_iterator.hpp +++ b/include/boost/fusion/sequence/adapted/boost_tuple/boost_tuple_iterator.hpp @@ -90,17 +90,6 @@ namespace boost { namespace fusion return type(iter.cons.get_tail()); } }; - - template - struct equal_to - : mpl::or_< - is_same - , mpl::and_< - detail::boost_tuple_is_empty - , detail::boost_tuple_is_empty - > - > - {}; }; template From 3de9048e8a1979a8794dc4db658b040d9d420f63 Mon Sep 17 00:00:00 2001 From: Tobias Schwinger Date: Sat, 22 Sep 2007 11:09:35 +0000 Subject: [PATCH 225/234] adds concept examples [SVN r39474] --- doc/functional.qbk | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/doc/functional.qbk b/doc/functional.qbk index 2a3c6428..afacde35 100644 --- a/doc/functional.qbk +++ b/doc/functional.qbk @@ -80,6 +80,19 @@ function call operator. * member (function or data) pointer types * all kinds of function objects +[heading Examples] + + & a_free_function + & a_class::a_static_member_function + & a_class::a_nonstatic_data_member + & a_class::a_nonstatic_member_function + std::less() + // using namespace boost; + bind(std::less(), _1, 5) + lambda::_1 += lambda::_2; + fusion::__make_fused_function_object__(std::less()) + + [endsect] @@ -111,6 +124,16 @@ type whose objects can appear immediately to the left of a function call operato * function pointer types * all kinds of function objects +[heading Examples] + + & a_free_function + & a_class::a_static_member_function + std::less() + // using namespace boost; + bind(std::less(), _1, 5) + lambda::_1 += lambda::_2; + fusion::__make_fused_function_object__(std::less()) + [endsect] @@ -147,6 +170,18 @@ function objects won't need client-side support for `result_of`. * __poly_func_obj__ types * member (function or data) pointer types +[heading Examples] + + & a_free_function + & a_class::a_static_member_function + & a_class::a_nonstatic_data_member + & a_class::a_nonstatic_member_function + std::less() + // using namespace boost; + bind(std::less(), _1, 5) + // Note: Boost.Lambda expressions don't work with __boost_result_of__ + fusion::__make_fused_function_object__(std::less()) + [endsect] @@ -180,6 +215,16 @@ A non-member-pointer __def_callable_obj__ type. * function objects of the Standard Library * all Fusion __functional_adapters__ +[heading Examples] + + & a_free_function + & a_class::a_static_member_function + std::less() + // using namespace boost; + bind(std::less(), _1, 5) + // Note: Boost.Lambda expressions don't work with __boost_result_of__ + fusion::__make_fused_function_object__(std::less()) + [endsect] From 0f11e531ac6de1a15c3684e62131d8c58c35ad4e Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Sat, 6 Oct 2007 14:10:30 +0000 Subject: [PATCH 226/234] fix for incomplete type is not allowed when tuple is forward declared. fixed the other as_xxx files as well. [SVN r39724] --- .../adapted/boost_tuple/boost_tuple_iterator.hpp | 1 + .../boost/fusion/sequence/conversion/detail/as_map.hpp | 10 +++++----- .../boost/fusion/sequence/conversion/detail/as_set.hpp | 10 +++++----- .../fusion/sequence/conversion/detail/as_vector.hpp | 10 +++++----- 4 files changed, 16 insertions(+), 15 deletions(-) diff --git a/include/boost/fusion/sequence/adapted/boost_tuple/boost_tuple_iterator.hpp b/include/boost/fusion/sequence/adapted/boost_tuple/boost_tuple_iterator.hpp index 8c83e465..fca135e5 100644 --- a/include/boost/fusion/sequence/adapted/boost_tuple/boost_tuple_iterator.hpp +++ b/include/boost/fusion/sequence/adapted/boost_tuple/boost_tuple_iterator.hpp @@ -13,6 +13,7 @@ #include #include #include +#include #include namespace boost { namespace fusion diff --git a/include/boost/fusion/sequence/conversion/detail/as_map.hpp b/include/boost/fusion/sequence/conversion/detail/as_map.hpp index abfada36..d163311c 100644 --- a/include/boost/fusion/sequence/conversion/detail/as_map.hpp +++ b/include/boost/fusion/sequence/conversion/detail/as_map.hpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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) ==============================================================================*/ #ifndef BOOST_PP_IS_ITERATING @@ -15,7 +15,7 @@ #include #include #include -#include +#include #include #include #include @@ -24,7 +24,7 @@ namespace boost { namespace fusion { namespace detail { template struct as_map; - + template <> struct as_map<0> { @@ -33,7 +33,7 @@ namespace boost { namespace fusion { namespace detail { typedef map<> type; }; - + template static typename apply::type call(Iterator) @@ -84,7 +84,7 @@ namespace boost { namespace fusion { namespace detail BOOST_PP_REPEAT(N, BOOST_FUSION_VALUE_OF_ITERATOR, _) typedef map type; }; - + template static typename apply::type call(Iterator const& i0) diff --git a/include/boost/fusion/sequence/conversion/detail/as_set.hpp b/include/boost/fusion/sequence/conversion/detail/as_set.hpp index 717d21ae..bd21f3c0 100644 --- a/include/boost/fusion/sequence/conversion/detail/as_set.hpp +++ b/include/boost/fusion/sequence/conversion/detail/as_set.hpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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) ==============================================================================*/ #ifndef BOOST_PP_IS_ITERATING @@ -15,7 +15,7 @@ #include #include #include -#include +#include #include #include #include @@ -24,7 +24,7 @@ namespace boost { namespace fusion { namespace detail { template struct as_set; - + template <> struct as_set<0> { @@ -33,7 +33,7 @@ namespace boost { namespace fusion { namespace detail { typedef set<> type; }; - + template static typename apply::type call(Iterator) @@ -84,7 +84,7 @@ namespace boost { namespace fusion { namespace detail BOOST_PP_REPEAT(N, BOOST_FUSION_VALUE_OF_ITERATOR, _) typedef set type; }; - + template static typename apply::type call(Iterator const& i0) diff --git a/include/boost/fusion/sequence/conversion/detail/as_vector.hpp b/include/boost/fusion/sequence/conversion/detail/as_vector.hpp index 493b42fe..ffd79df0 100644 --- a/include/boost/fusion/sequence/conversion/detail/as_vector.hpp +++ b/include/boost/fusion/sequence/conversion/detail/as_vector.hpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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) ==============================================================================*/ #ifndef BOOST_PP_IS_ITERATING @@ -15,7 +15,7 @@ #include #include #include -#include +#include #include #include #include @@ -24,7 +24,7 @@ namespace boost { namespace fusion { namespace detail { template struct as_vector; - + template <> struct as_vector<0> { @@ -33,7 +33,7 @@ namespace boost { namespace fusion { namespace detail { typedef vector<> type; }; - + template static typename apply::type call(Iterator) @@ -84,7 +84,7 @@ namespace boost { namespace fusion { namespace detail BOOST_PP_REPEAT(N, BOOST_FUSION_VALUE_OF_ITERATOR, _) typedef vector type; }; - + template static typename apply::type call(Iterator const& i0) From a77599ed49ac217c817a0cf7744693a5b4734162 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Sat, 20 Oct 2007 11:01:50 +0000 Subject: [PATCH 227/234] refactoring for v2.1 [SVN r40208] --- .../fusion/algorithm/transformation/erase.hpp | 15 ++++++++------- .../fusion/algorithm/transformation/insert.hpp | 9 +++++---- .../algorithm/transformation/insert_range.hpp | 5 +++-- .../fusion/iterator/mpl/convert_iterator.hpp | 6 ++++-- .../view/ext_/segmented_iterator_range.hpp | 2 ++ .../view/filter_view/filter_view_iterator.hpp | 3 ++- .../view/iterator_range/iterator_range.hpp | 7 ++++--- .../view/joint_view/joint_view_iterator.hpp | 3 ++- .../repetitive_view_iterator.hpp | 3 ++- .../view/reverse_view/reverse_view_iterator.hpp | 3 ++- .../transform_view/transform_view_iterator.hpp | 3 ++- .../zip_view/detail/strictest_traversal.hpp | 8 ++++---- .../view/zip_view/detail/value_of_impl.hpp | 6 +++--- .../boost/fusion/support/deduce_sequence.hpp | 6 +++--- .../fusion/support/detail/compiler_config.hpp | 17 ----------------- include/boost/fusion/support/iterator_base.hpp | 4 +--- include/boost/fusion/support/pair.hpp | 13 ++++++------- include/boost/fusion/support/sequence_base.hpp | 5 ++--- include/boost/fusion/support/tag_of.hpp | 12 ++++++------ include/boost/fusion/support/tag_of_fwd.hpp | 6 +++--- include/boost/fusion/support/void.hpp | 9 ++++++++- 21 files changed, 72 insertions(+), 73 deletions(-) delete mode 100644 include/boost/fusion/support/detail/compiler_config.hpp diff --git a/include/boost/fusion/algorithm/transformation/erase.hpp b/include/boost/fusion/algorithm/transformation/erase.hpp index 9e78da27..5cd8069a 100644 --- a/include/boost/fusion/algorithm/transformation/erase.hpp +++ b/include/boost/fusion/algorithm/transformation/erase.hpp @@ -1,20 +1,21 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_ERASE_07232005_0534) #define FUSION_ERASE_07232005_0534 +#include +#include #include #include #include #include #include #include -#include -#include +#include namespace boost { namespace fusion { @@ -25,7 +26,7 @@ namespace boost { namespace fusion { typedef typename result_of::end::type seq_last_type; typedef typename convert_iterator::type first_type; - typedef typename + typedef typename mpl::if_< result_of::equal_to , first_type @@ -33,19 +34,19 @@ namespace boost { namespace fusion >::type type; - static type + static type call(First const& first, mpl::false_) { return fusion::next(convert_iterator::call(first)); } - static type + static type call(First const& first, mpl::true_) { return convert_iterator::call(first); } - static type + static type call(First const& first) { return call(first, result_of::equal_to()); diff --git a/include/boost/fusion/algorithm/transformation/insert.hpp b/include/boost/fusion/algorithm/transformation/insert.hpp index ebe06f14..9894062c 100644 --- a/include/boost/fusion/algorithm/transformation/insert.hpp +++ b/include/boost/fusion/algorithm/transformation/insert.hpp @@ -1,20 +1,21 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_INSERT_07222005_0730) #define FUSION_INSERT_07222005_0730 +#include +#include #include #include #include #include -#include #include #include -#include +#include namespace boost { namespace fusion { @@ -42,7 +43,7 @@ namespace boost { namespace fusion insert(Sequence const& seq, Position const& pos, T const& x) { typedef result_of::insert< - Sequence const, Position, T> + Sequence const, Position, T> result_of; typedef typename result_of::left_type left_type; typedef typename result_of::right_type right_type; diff --git a/include/boost/fusion/algorithm/transformation/insert_range.hpp b/include/boost/fusion/algorithm/transformation/insert_range.hpp index 4db840aa..93251e55 100644 --- a/include/boost/fusion/algorithm/transformation/insert_range.hpp +++ b/include/boost/fusion/algorithm/transformation/insert_range.hpp @@ -1,19 +1,20 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_INSERT_RANGE_009172005_1147) #define FUSION_INSERT_RANGE_009172005_1147 +#include #include #include #include #include #include #include -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/iterator/mpl/convert_iterator.hpp b/include/boost/fusion/iterator/mpl/convert_iterator.hpp index fc2efacf..5716ce4e 100644 --- a/include/boost/fusion/iterator/mpl/convert_iterator.hpp +++ b/include/boost/fusion/iterator/mpl/convert_iterator.hpp @@ -1,19 +1,21 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_CONVERT_ITERATOR_05062005_1218) #define FUSION_CONVERT_ITERATOR_05062005_1218 #include -#include #include #include namespace boost { namespace fusion { + template + struct mpl_iterator; // forward declaration + // Test T. If it is a fusion iterator, return a reference to it. // else, assume it is an mpl iterator. diff --git a/include/boost/fusion/sequence/view/ext_/segmented_iterator_range.hpp b/include/boost/fusion/sequence/view/ext_/segmented_iterator_range.hpp index 7bab8789..df06c125 100755 --- a/include/boost/fusion/sequence/view/ext_/segmented_iterator_range.hpp +++ b/include/boost/fusion/sequence/view/ext_/segmented_iterator_range.hpp @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -19,6 +20,7 @@ #include #include #include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/sequence/view/filter_view/filter_view_iterator.hpp b/include/boost/fusion/sequence/view/filter_view/filter_view_iterator.hpp index aaf1d6e0..8af0776c 100644 --- a/include/boost/fusion/sequence/view/filter_view/filter_view_iterator.hpp +++ b/include/boost/fusion/sequence/view/filter_view/filter_view_iterator.hpp @@ -1,13 +1,14 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_FILTER_VIEW_ITERATOR_05062005_0849) #define FUSION_FILTER_VIEW_ITERATOR_05062005_0849 #include +#include #include #include #include diff --git a/include/boost/fusion/sequence/view/iterator_range/iterator_range.hpp b/include/boost/fusion/sequence/view/iterator_range/iterator_range.hpp index dee6c00a..8b0a3793 100644 --- a/include/boost/fusion/sequence/view/iterator_range/iterator_range.hpp +++ b/include/boost/fusion/sequence/view/iterator_range/iterator_range.hpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_ITERATOR_RANGE_05062005_1224) @@ -10,12 +10,13 @@ #include #include #include +#include +#include #include #include #include #include -#include -#include +#include #include namespace boost { namespace fusion diff --git a/include/boost/fusion/sequence/view/joint_view/joint_view_iterator.hpp b/include/boost/fusion/sequence/view/joint_view/joint_view_iterator.hpp index 0bdfae07..294116f1 100644 --- a/include/boost/fusion/sequence/view/joint_view/joint_view_iterator.hpp +++ b/include/boost/fusion/sequence/view/joint_view/joint_view_iterator.hpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_JOINT_VIEW_ITERATOR_07162005_0140) @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include diff --git a/include/boost/fusion/sequence/view/repetitive_view/repetitive_view_iterator.hpp b/include/boost/fusion/sequence/view/repetitive_view/repetitive_view_iterator.hpp index 6b2a9a5e..7b9b17ce 100644 --- a/include/boost/fusion/sequence/view/repetitive_view/repetitive_view_iterator.hpp +++ b/include/boost/fusion/sequence/view/repetitive_view/repetitive_view_iterator.hpp @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include @@ -21,7 +22,7 @@ namespace boost { namespace fusion { struct repetitive_view_iterator_tag; - template::type> struct repetitive_view_iterator : iterator_base< repetitive_view_iterator > diff --git a/include/boost/fusion/sequence/view/reverse_view/reverse_view_iterator.hpp b/include/boost/fusion/sequence/view/reverse_view/reverse_view_iterator.hpp index 5f44b8b5..54f75070 100644 --- a/include/boost/fusion/sequence/view/reverse_view/reverse_view_iterator.hpp +++ b/include/boost/fusion/sequence/view/reverse_view/reverse_view_iterator.hpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_REVERSE_VIEW_ITERATOR_07202005_0835) @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include diff --git a/include/boost/fusion/sequence/view/transform_view/transform_view_iterator.hpp b/include/boost/fusion/sequence/view/transform_view/transform_view_iterator.hpp index 4d63f7e0..49eb0c42 100644 --- a/include/boost/fusion/sequence/view/transform_view/transform_view_iterator.hpp +++ b/include/boost/fusion/sequence/view/transform_view/transform_view_iterator.hpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_TRANSFORM_VIEW_ITERATOR_07162005_1033) @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include diff --git a/include/boost/fusion/sequence/view/zip_view/detail/strictest_traversal.hpp b/include/boost/fusion/sequence/view/zip_view/detail/strictest_traversal.hpp index 60abb57c..ae276839 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/strictest_traversal.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/strictest_traversal.hpp @@ -2,7 +2,7 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - 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(FUSION_STRICTEST_TRAVERSAL_20060123_2101) @@ -16,8 +16,8 @@ #include #include -namespace boost { namespace fusion { - +namespace boost { namespace fusion +{ struct forward_traversal_tag; struct bidirectional_traversal_tag; struct random_access_traversal_tag; @@ -58,7 +58,7 @@ namespace boost { namespace fusion { template struct strictest_traversal : result_of::fold< - Sequence, fusion::random_access_traversal_tag, + Sequence, fusion::random_access_traversal_tag, strictest_traversal_impl> {}; diff --git a/include/boost/fusion/sequence/view/zip_view/detail/value_of_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/value_of_impl.hpp index 9ea84a17..531d2350 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/value_of_impl.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/value_of_impl.hpp @@ -2,7 +2,7 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - 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(FUSION_VALUE_OF_IMPL_20060124_2147) @@ -17,8 +17,8 @@ #include #include -namespace boost { namespace fusion { - +namespace boost { namespace fusion +{ struct zip_view_iterator_tag; namespace detail diff --git a/include/boost/fusion/support/deduce_sequence.hpp b/include/boost/fusion/support/deduce_sequence.hpp index 41ecbd1b..3dbe480b 100644 --- a/include/boost/fusion/support/deduce_sequence.hpp +++ b/include/boost/fusion/support/deduce_sequence.hpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2007 Tobias Schwinger - - Use modification and distribution are subject to the Boost Software + + 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). ==============================================================================*/ @@ -29,7 +29,7 @@ namespace boost { namespace fusion { namespace traits }; } - // We cannot use fusion::transform_view here as result_of looses cv qualifiers + // We cannot use fusion::transform_view here as result_of loses cv qualifiers // on built in types template struct deduce_sequence diff --git a/include/boost/fusion/support/detail/compiler_config.hpp b/include/boost/fusion/support/detail/compiler_config.hpp deleted file mode 100644 index 3859ef78..00000000 --- a/include/boost/fusion/support/detail/compiler_config.hpp +++ /dev/null @@ -1,17 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - Distributed under the 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_COMPILER_CONFIG_01052006_1200) -#define FUSION_COMPILER_CONFIG_01052006_1200 - -#include -#include - -#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1310)) -#pragma warning(disable : 4512 4244 4100 4305) -#endif - -#endif diff --git a/include/boost/fusion/support/iterator_base.hpp b/include/boost/fusion/support/iterator_base.hpp index 39d05c40..2f909b2e 100644 --- a/include/boost/fusion/support/iterator_base.hpp +++ b/include/boost/fusion/support/iterator_base.hpp @@ -1,14 +1,12 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_ITERATOR_BASE_05042005_1008) #define FUSION_ITERATOR_BASE_05042005_1008 -#include - namespace boost { namespace fusion { struct iterator_root {}; diff --git a/include/boost/fusion/support/pair.hpp b/include/boost/fusion/support/pair.hpp index 67758071..cf285714 100644 --- a/include/boost/fusion/support/pair.hpp +++ b/include/boost/fusion/support/pair.hpp @@ -2,13 +2,12 @@ Copyright (c) 2005 Joel de Guzman Copyright (c) 2006 Tobias Schwinger - 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(FUSION_PAIR_07222005_1203) #define FUSION_PAIR_07222005_1203 -#include #include #include @@ -23,7 +22,7 @@ namespace boost { namespace fusion pair(typename detail::call_param::type val) : second(val) {} - + template pair(pair const& rhs) : second(rhs.second) {} @@ -45,7 +44,7 @@ namespace boost { namespace fusion template struct make_pair { - typedef fusion::pair::type> type; }; @@ -84,16 +83,16 @@ namespace boost { namespace fusion is >> p.second; return is; } - + template - inline bool + inline bool operator==(pair const& l, pair const& r) { return l.second == r.second; } template - inline bool + inline bool operator!=(pair const& l, pair const& r) { return l.second != r.second; diff --git a/include/boost/fusion/support/sequence_base.hpp b/include/boost/fusion/support/sequence_base.hpp index 1a82848d..1d436ef1 100644 --- a/include/boost/fusion/support/sequence_base.hpp +++ b/include/boost/fusion/support/sequence_base.hpp @@ -2,13 +2,12 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2007 Tobias Schwinger - 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(FUSION_SEQUENCE_BASE_04182005_0737) #define FUSION_SEQUENCE_BASE_04182005_0737 -#include #include namespace boost { namespace fusion @@ -37,7 +36,7 @@ namespace boost { namespace fusion namespace boost { namespace mpl { // Deliberately break mpl::begin, so it doesn't lie that a Fusion sequence - // is not an MPL sequence by returning mpl::void_. + // is not an MPL sequence by returning mpl::void_. // In other words: Fusion Sequences are always MPL Sequences, but they can // be incompletely defined. template<> struct begin_impl< boost::fusion::fusion_sequence_tag >; diff --git a/include/boost/fusion/support/tag_of.hpp b/include/boost/fusion/support/tag_of.hpp index a1ccf12d..209ceeff 100644 --- a/include/boost/fusion/support/tag_of.hpp +++ b/include/boost/fusion/support/tag_of.hpp @@ -1,17 +1,17 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_TAG_OF_09232005_0845) #define FUSION_TAG_OF_09232005_0845 +#include #include #include #include #include -#include #include #include #include @@ -26,13 +26,13 @@ namespace boost namespace tuples { struct null_type; - + template < - class T0, class T1, class T2, class T3, class T4, + class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9 > class tuple; - + template struct cons; } @@ -53,7 +53,7 @@ namespace boost { namespace fusion {}; template < - class T0, class T1, class T2, class T3, class T4, + class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9 > struct is_specialized > diff --git a/include/boost/fusion/support/tag_of_fwd.hpp b/include/boost/fusion/support/tag_of_fwd.hpp index 053cacaf..e6c883d5 100644 --- a/include/boost/fusion/support/tag_of_fwd.hpp +++ b/include/boost/fusion/support/tag_of_fwd.hpp @@ -2,14 +2,14 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - 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_TAG_OF_FWD_31122005_1445) #define BOOST_FUSION_TAG_OF_FWD_31122005_1445 -namespace boost { namespace fusion { - +namespace boost { namespace fusion +{ namespace traits { template diff --git a/include/boost/fusion/support/void.hpp b/include/boost/fusion/support/void.hpp index 63275b11..7dd11e5c 100644 --- a/include/boost/fusion/support/void.hpp +++ b/include/boost/fusion/support/void.hpp @@ -1,7 +1,14 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Distributed under the 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_SUPPORT_VOID_20070706_2125) #define BOOST_FUSION_SUPPORT_VOID_20070706_2125 -namespace boost { namespace fusion { +namespace boost { namespace fusion +{ struct void_ {}; }} From 9243ee24502428ffaec049dfec79d3aa9c890b46 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Sat, 20 Oct 2007 11:31:03 +0000 Subject: [PATCH 228/234] phase2: refactoring for v2.1 [SVN r40209] --- .../fusion/algorithm/query/ext_/find_if_s.hpp | 6 ++--- .../fusion/algorithm/transformation/clear.hpp | 2 +- .../fusion/algorithm/transformation/erase.hpp | 6 ++--- .../algorithm/transformation/filter.hpp | 2 +- .../algorithm/transformation/filter_if.hpp | 2 +- .../algorithm/transformation/insert.hpp | 8 +++---- .../algorithm/transformation/insert_range.hpp | 6 ++--- .../fusion/algorithm/transformation/join.hpp | 2 +- .../algorithm/transformation/pop_back.hpp | 2 +- .../algorithm/transformation/pop_front.hpp | 2 +- .../algorithm/transformation/push_back.hpp | 4 ++-- .../algorithm/transformation/push_front.hpp | 4 ++-- .../algorithm/transformation/remove.hpp | 2 +- .../algorithm/transformation/remove_if.hpp | 2 +- .../algorithm/transformation/replace.hpp | 2 +- .../algorithm/transformation/replace_if.hpp | 2 +- .../algorithm/transformation/reverse.hpp | 2 +- .../algorithm/transformation/transform.hpp | 2 +- .../fusion/algorithm/transformation/zip.hpp | 4 ++-- .../boost/fusion/{sequence => }/container.hpp | 10 ++++---- .../fusion/{sequence => }/container/deque.hpp | 2 +- .../container/deque/back_extended_deque.hpp | 2 +- .../{sequence => }/container/deque/deque.hpp | 24 +++++++++---------- .../container/deque/deque_fwd.hpp | 2 +- .../container/deque/deque_iterator.hpp | 2 +- .../container/deque/detail/at_impl.hpp | 2 +- .../container/deque/detail/begin_impl.hpp | 2 +- .../deque/detail/deque_forward_ctor.hpp | 2 +- .../deque/detail/deque_initial_size.hpp | 0 .../deque/detail/deque_keyed_values.hpp | 6 ++--- .../deque/detail/deque_keyed_values_call.hpp | 2 +- .../container/deque/detail/end_impl.hpp | 2 +- .../container/deque/detail/keyed_element.hpp | 0 .../container/deque/detail/value_at_impl.hpp | 2 +- .../container/deque/front_extended_deque.hpp | 2 +- .../{sequence => }/container/deque/limits.hpp | 0 .../{sequence => }/container/ext_/tree.hpp | 8 +++---- .../fusion/{sequence => }/container/list.hpp | 10 ++++---- .../{sequence => }/container/list/cons.hpp | 12 +++++----- .../container/list/cons_iterator.hpp | 10 ++++---- .../container/list/detail/at_impl.hpp | 0 .../container/list/detail/begin_impl.hpp | 0 .../container/list/detail/deref_impl.hpp | 0 .../container/list/detail/empty_impl.hpp | 0 .../container/list/detail/end_impl.hpp | 0 .../container/list/detail/equal_to_impl.hpp | 0 .../list/detail/list_forward_ctor.hpp | 2 +- .../container/list/detail/list_to_cons.hpp | 6 ++--- .../list/detail/list_to_cons_call.hpp | 2 +- .../container/list/detail/next_impl.hpp | 0 .../container/list/detail/value_at_impl.hpp | 0 .../container/list/detail/value_of_impl.hpp | 0 .../{sequence => }/container/list/limits.hpp | 0 .../{sequence => }/container/list/list.hpp | 6 ++--- .../container/list/list_fwd.hpp | 2 +- .../fusion/{sequence => }/container/map.hpp | 6 ++--- .../container/map/detail/at_key_impl.hpp | 0 .../container/map/detail/begin_impl.hpp | 0 .../container/map/detail/end_impl.hpp | 0 .../container/map/detail/lookup_key.hpp | 0 .../container/map/detail/map_forward_ctor.hpp | 2 +- .../container/map/detail/map_lookup.hpp | 11 ++++----- .../map/detail/value_at_key_impl.hpp | 0 .../{sequence => }/container/map/limits.hpp | 2 +- .../{sequence => }/container/map/map.hpp | 18 +++++++------- .../{sequence => }/container/map/map_fwd.hpp | 2 +- .../fusion/{sequence => }/container/set.hpp | 6 ++--- .../container/set/detail/at_key_impl.hpp | 0 .../container/set/detail/begin_impl.hpp | 0 .../container/set/detail/end_impl.hpp | 0 .../container/set/detail/lookup_key.hpp | 0 .../container/set/detail/set_forward_ctor.hpp | 2 +- .../container/set/detail/set_lookup.hpp | 11 ++++----- .../set/detail/value_at_key_impl.hpp | 0 .../{sequence => }/container/set/limits.hpp | 2 +- .../{sequence => }/container/set/set.hpp | 18 +++++++------- .../{sequence => }/container/set/set_fwd.hpp | 2 +- include/boost/fusion/container/vector.hpp | 20 ++++++++++++++++ .../container/vector/detail/advance_impl.hpp | 0 .../container/vector/detail/at_impl.hpp | 0 .../container/vector/detail/begin_impl.hpp | 2 +- .../container/vector/detail/deref_impl.hpp | 0 .../container/vector/detail/distance_impl.hpp | 0 .../container/vector/detail/end_impl.hpp | 2 +- .../container/vector/detail/equal_to_impl.hpp | 0 .../container/vector/detail/next_impl.hpp | 2 +- .../container/vector/detail/prior_impl.hpp | 2 +- .../container/vector/detail/value_at_impl.hpp | 0 .../container/vector/detail/value_of_impl.hpp | 0 .../vector/detail/vector_forward_ctor.hpp | 2 +- .../container/vector/detail/vector_n.hpp | 0 .../vector/detail/vector_n_chooser.hpp | 14 +++++------ .../container/vector/limits.hpp | 0 .../container/vector/vector.hpp | 6 ++--- .../container/vector/vector10.hpp | 10 ++++---- .../container/vector/vector20.hpp | 10 ++++---- .../container/vector/vector30.hpp | 10 ++++---- .../container/vector/vector40.hpp | 10 ++++---- .../container/vector/vector50.hpp | 10 ++++---- .../container/vector/vector_fwd.hpp | 2 +- .../container/vector/vector_iterator.hpp | 14 +++++------ .../fusion/functional/adapter/limits.hpp | 2 +- .../functional/adapter/unfused_generic.hpp | 2 +- .../adapter/unfused_lvalue_args.hpp | 2 +- .../adapter/unfused_rvalue_args.hpp | 2 +- .../functional/adapter/unfused_typed.hpp | 2 +- include/boost/fusion/include/joint_view.hpp | 2 +- include/boost/fusion/include/list.hpp | 2 +- include/boost/fusion/include/single_view.hpp | 2 +- .../boost/fusion/include/transform_view.hpp | 2 +- include/boost/fusion/include/vector.hpp | 2 +- include/boost/fusion/sequence.hpp | 2 -- .../fusion/sequence/container/vector.hpp | 20 ---------------- .../fusion/sequence/conversion/as_deque.hpp | 2 +- .../fusion/sequence/conversion/as_list.hpp | 2 +- .../fusion/sequence/conversion/as_map.hpp | 2 +- .../fusion/sequence/conversion/as_set.hpp | 2 +- .../fusion/sequence/conversion/as_vector.hpp | 2 +- .../sequence/conversion/detail/as_deque.hpp | 2 +- .../sequence/conversion/detail/as_map.hpp | 2 +- .../sequence/conversion/detail/as_set.hpp | 2 +- .../sequence/conversion/detail/as_vector.hpp | 2 +- .../sequence/conversion/detail/build_cons.hpp | 2 +- .../fusion/sequence/generation/cons_tie.hpp | 2 +- .../fusion/sequence/generation/deque_tie.hpp | 2 +- .../fusion/sequence/generation/list_tie.hpp | 2 +- .../fusion/sequence/generation/make_cons.hpp | 2 +- .../fusion/sequence/generation/make_deque.hpp | 2 +- .../fusion/sequence/generation/make_list.hpp | 2 +- .../fusion/sequence/generation/make_map.hpp | 2 +- .../fusion/sequence/generation/make_set.hpp | 2 +- .../sequence/generation/make_vector.hpp | 2 +- .../fusion/sequence/generation/map_tie.hpp | 4 ++-- .../fusion/sequence/generation/vector_tie.hpp | 2 +- .../sequence/intrinsic/mpl/detail/clear.hpp | 10 ++++---- .../boost/fusion/sequence/intrinsic/swap.hpp | 2 +- include/boost/fusion/tuple/tuple.hpp | 2 +- include/boost/fusion/tuple/tuple_fwd.hpp | 2 +- include/boost/fusion/{sequence => }/view.hpp | 12 +++++----- .../view/ext_/multiple_view.hpp | 0 .../view/ext_/segmented_iterator.hpp | 4 ++-- .../view/ext_/segmented_iterator_range.hpp | 14 +++++------ .../{sequence => }/view/filter_view.hpp | 4 ++-- .../view/filter_view/detail/begin_impl.hpp | 0 .../view/filter_view/detail/deref_impl.hpp | 0 .../view/filter_view/detail/end_impl.hpp | 0 .../view/filter_view/detail/equal_to_impl.hpp | 0 .../view/filter_view/detail/next_impl.hpp | 0 .../view/filter_view/detail/size_impl.hpp | 0 .../view/filter_view/detail/value_of_impl.hpp | 0 .../view/filter_view/filter_view.hpp | 8 +++---- .../view/filter_view/filter_view_iterator.hpp | 8 +++---- .../{sequence => }/view/iterator_range.hpp | 2 +- .../view/iterator_range/detail/at_impl.hpp | 0 .../view/iterator_range/detail/begin_impl.hpp | 0 .../view/iterator_range/detail/end_impl.hpp | 0 .../iterator_range/detail/value_at_impl.hpp | 0 .../view/iterator_range/iterator_range.hpp | 8 +++---- .../fusion/{sequence => }/view/joint_view.hpp | 4 ++-- .../view/joint_view/detail/begin_impl.hpp | 0 .../view/joint_view/detail/deref_impl.hpp | 0 .../view/joint_view/detail/end_impl.hpp | 0 .../view/joint_view/detail/next_impl.hpp | 0 .../view/joint_view/detail/value_of_impl.hpp | 0 .../view/joint_view/joint_view.hpp | 6 ++--- .../view/joint_view/joint_view_iterator.hpp | 6 ++--- .../{sequence => }/view/repetitive_view.hpp | 4 ++-- .../repetitive_view/detail/begin_impl.hpp | 2 +- .../repetitive_view/detail/deref_impl.hpp | 0 .../view/repetitive_view/detail/end_impl.hpp | 2 +- .../view/repetitive_view/detail/next_impl.hpp | 0 .../repetitive_view/detail/value_of_impl.hpp | 0 .../view/repetitive_view/repetitive_view.hpp | 4 ++-- .../repetitive_view/repetitive_view_fwd.hpp | 0 .../repetitive_view_iterator.hpp | 6 ++--- .../{sequence => }/view/reverse_view.hpp | 4 ++-- .../view/reverse_view/detail/advance_impl.hpp | 0 .../view/reverse_view/detail/begin_impl.hpp | 0 .../view/reverse_view/detail/deref_impl.hpp | 0 .../reverse_view/detail/distance_impl.hpp | 0 .../view/reverse_view/detail/end_impl.hpp | 0 .../view/reverse_view/detail/next_impl.hpp | 0 .../view/reverse_view/detail/prior_impl.hpp | 0 .../reverse_view/detail/value_of_impl.hpp | 0 .../view/reverse_view/reverse_view.hpp | 6 ++--- .../reverse_view/reverse_view_iterator.hpp | 12 +++++----- .../{sequence => }/view/single_view.hpp | 4 ++-- .../view/single_view/detail/begin_impl.hpp | 0 .../view/single_view/detail/deref_impl.hpp | 0 .../view/single_view/detail/end_impl.hpp | 0 .../view/single_view/detail/next_impl.hpp | 0 .../view/single_view/detail/value_of_impl.hpp | 0 .../view/single_view/single_view.hpp | 6 ++--- .../view/single_view/single_view_iterator.hpp | 6 ++--- .../{sequence => }/view/transform_view.hpp | 4 ++-- .../transform_view/detail/advance_impl.hpp | 0 .../detail/apply_transform_result.hpp | 0 .../view/transform_view/detail/at_impl.hpp | 2 +- .../view/transform_view/detail/begin_impl.hpp | 2 +- .../view/transform_view/detail/deref_impl.hpp | 2 +- .../transform_view/detail/distance_impl.hpp | 0 .../view/transform_view/detail/end_impl.hpp | 2 +- .../transform_view/detail/equal_to_impl.hpp | 0 .../view/transform_view/detail/next_impl.hpp | 0 .../view/transform_view/detail/prior_impl.hpp | 0 .../transform_view/detail/value_at_impl.hpp | 2 +- .../transform_view/detail/value_of_impl.hpp | 2 +- .../view/transform_view/transform_view.hpp | 12 +++++----- .../transform_view/transform_view_fwd.hpp | 0 .../transform_view_iterator.hpp | 14 +++++------ .../fusion/{sequence => }/view/zip_view.hpp | 4 ++-- .../view/zip_view/detail/advance_impl.hpp | 2 +- .../view/zip_view/detail/at_impl.hpp | 2 +- .../view/zip_view/detail/begin_impl.hpp | 2 +- .../view/zip_view/detail/deref_impl.hpp | 2 +- .../view/zip_view/detail/distance_impl.hpp | 0 .../view/zip_view/detail/end_impl.hpp | 2 +- .../view/zip_view/detail/equal_to_impl.hpp | 0 .../view/zip_view/detail/next_impl.hpp | 2 +- .../view/zip_view/detail/prior_impl.hpp | 2 +- .../view/zip_view/detail/size_impl.hpp | 0 .../zip_view/detail/strictest_traversal.hpp | 0 .../view/zip_view/detail/value_at_impl.hpp | 0 .../view/zip_view/detail/value_of_impl.hpp | 0 .../{sequence => }/view/zip_view/zip_view.hpp | 12 +++++----- .../view/zip_view/zip_view_iterator.hpp | 16 ++++++------- .../view/zip_view/zip_view_iterator_fwd.hpp | 2 +- 227 files changed, 350 insertions(+), 354 deletions(-) rename include/boost/fusion/{sequence => }/container.hpp (64%) rename include/boost/fusion/{sequence => }/container/deque.hpp (90%) rename include/boost/fusion/{sequence => }/container/deque/back_extended_deque.hpp (95%) rename include/boost/fusion/{sequence => }/container/deque/deque.hpp (77%) rename include/boost/fusion/{sequence => }/container/deque/deque_fwd.hpp (92%) rename include/boost/fusion/{sequence => }/container/deque/deque_iterator.hpp (97%) rename include/boost/fusion/{sequence => }/container/deque/detail/at_impl.hpp (96%) rename include/boost/fusion/{sequence => }/container/deque/detail/begin_impl.hpp (95%) rename include/boost/fusion/{sequence => }/container/deque/detail/deque_forward_ctor.hpp (93%) rename include/boost/fusion/{sequence => }/container/deque/detail/deque_initial_size.hpp (100%) rename include/boost/fusion/{sequence => }/container/deque/detail/deque_keyed_values.hpp (91%) rename include/boost/fusion/{sequence => }/container/deque/detail/deque_keyed_values_call.hpp (94%) rename include/boost/fusion/{sequence => }/container/deque/detail/end_impl.hpp (95%) rename include/boost/fusion/{sequence => }/container/deque/detail/keyed_element.hpp (100%) rename include/boost/fusion/{sequence => }/container/deque/detail/value_at_impl.hpp (95%) rename include/boost/fusion/{sequence => }/container/deque/front_extended_deque.hpp (95%) rename include/boost/fusion/{sequence => }/container/deque/limits.hpp (100%) rename include/boost/fusion/{sequence => }/container/ext_/tree.hpp (93%) rename include/boost/fusion/{sequence => }/container/list.hpp (61%) rename include/boost/fusion/{sequence => }/container/list/cons.hpp (91%) rename include/boost/fusion/{sequence => }/container/list/cons_iterator.hpp (86%) rename include/boost/fusion/{sequence => }/container/list/detail/at_impl.hpp (100%) rename include/boost/fusion/{sequence => }/container/list/detail/begin_impl.hpp (100%) rename include/boost/fusion/{sequence => }/container/list/detail/deref_impl.hpp (100%) rename include/boost/fusion/{sequence => }/container/list/detail/empty_impl.hpp (100%) rename include/boost/fusion/{sequence => }/container/list/detail/end_impl.hpp (100%) rename include/boost/fusion/{sequence => }/container/list/detail/equal_to_impl.hpp (100%) rename include/boost/fusion/{sequence => }/container/list/detail/list_forward_ctor.hpp (95%) rename include/boost/fusion/{sequence => }/container/list/detail/list_to_cons.hpp (87%) rename include/boost/fusion/{sequence => }/container/list/detail/list_to_cons_call.hpp (95%) rename include/boost/fusion/{sequence => }/container/list/detail/next_impl.hpp (100%) rename include/boost/fusion/{sequence => }/container/list/detail/value_at_impl.hpp (100%) rename include/boost/fusion/{sequence => }/container/list/detail/value_of_impl.hpp (100%) rename include/boost/fusion/{sequence => }/container/list/limits.hpp (100%) rename include/boost/fusion/{sequence => }/container/list/list.hpp (90%) rename include/boost/fusion/{sequence => }/container/list/list_fwd.hpp (92%) rename include/boost/fusion/{sequence => }/container/map.hpp (73%) rename include/boost/fusion/{sequence => }/container/map/detail/at_key_impl.hpp (100%) rename include/boost/fusion/{sequence => }/container/map/detail/begin_impl.hpp (100%) rename include/boost/fusion/{sequence => }/container/map/detail/end_impl.hpp (100%) rename include/boost/fusion/{sequence => }/container/map/detail/lookup_key.hpp (100%) rename include/boost/fusion/{sequence => }/container/map/detail/map_forward_ctor.hpp (94%) rename include/boost/fusion/{sequence => }/container/map/detail/map_lookup.hpp (98%) rename include/boost/fusion/{sequence => }/container/map/detail/value_at_key_impl.hpp (100%) rename include/boost/fusion/{sequence => }/container/map/limits.hpp (92%) rename include/boost/fusion/{sequence => }/container/map/map.hpp (73%) rename include/boost/fusion/{sequence => }/container/map/map_fwd.hpp (92%) rename include/boost/fusion/{sequence => }/container/set.hpp (73%) rename include/boost/fusion/{sequence => }/container/set/detail/at_key_impl.hpp (100%) rename include/boost/fusion/{sequence => }/container/set/detail/begin_impl.hpp (100%) rename include/boost/fusion/{sequence => }/container/set/detail/end_impl.hpp (100%) rename include/boost/fusion/{sequence => }/container/set/detail/lookup_key.hpp (100%) rename include/boost/fusion/{sequence => }/container/set/detail/set_forward_ctor.hpp (94%) rename include/boost/fusion/{sequence => }/container/set/detail/set_lookup.hpp (98%) rename include/boost/fusion/{sequence => }/container/set/detail/value_at_key_impl.hpp (100%) rename include/boost/fusion/{sequence => }/container/set/limits.hpp (92%) rename include/boost/fusion/{sequence => }/container/set/set.hpp (73%) rename include/boost/fusion/{sequence => }/container/set/set_fwd.hpp (92%) create mode 100644 include/boost/fusion/container/vector.hpp rename include/boost/fusion/{sequence => }/container/vector/detail/advance_impl.hpp (100%) rename include/boost/fusion/{sequence => }/container/vector/detail/at_impl.hpp (100%) rename include/boost/fusion/{sequence => }/container/vector/detail/begin_impl.hpp (93%) rename include/boost/fusion/{sequence => }/container/vector/detail/deref_impl.hpp (100%) rename include/boost/fusion/{sequence => }/container/vector/detail/distance_impl.hpp (100%) rename include/boost/fusion/{sequence => }/container/vector/detail/end_impl.hpp (93%) rename include/boost/fusion/{sequence => }/container/vector/detail/equal_to_impl.hpp (100%) rename include/boost/fusion/{sequence => }/container/vector/detail/next_impl.hpp (94%) rename include/boost/fusion/{sequence => }/container/vector/detail/prior_impl.hpp (94%) rename include/boost/fusion/{sequence => }/container/vector/detail/value_at_impl.hpp (100%) rename include/boost/fusion/{sequence => }/container/vector/detail/value_of_impl.hpp (100%) rename include/boost/fusion/{sequence => }/container/vector/detail/vector_forward_ctor.hpp (94%) rename include/boost/fusion/{sequence => }/container/vector/detail/vector_n.hpp (100%) rename include/boost/fusion/{sequence => }/container/vector/detail/vector_n_chooser.hpp (85%) rename include/boost/fusion/{sequence => }/container/vector/limits.hpp (100%) rename include/boost/fusion/{sequence => }/container/vector/vector.hpp (94%) rename include/boost/fusion/{sequence => }/container/vector/vector10.hpp (84%) rename include/boost/fusion/{sequence => }/container/vector/vector20.hpp (80%) rename include/boost/fusion/{sequence => }/container/vector/vector30.hpp (80%) rename include/boost/fusion/{sequence => }/container/vector/vector40.hpp (80%) rename include/boost/fusion/{sequence => }/container/vector/vector50.hpp (80%) rename include/boost/fusion/{sequence => }/container/vector/vector_fwd.hpp (92%) rename include/boost/fusion/{sequence => }/container/vector/vector_iterator.hpp (70%) delete mode 100644 include/boost/fusion/sequence/container/vector.hpp rename include/boost/fusion/{sequence => }/view.hpp (58%) rename include/boost/fusion/{sequence => }/view/ext_/multiple_view.hpp (100%) rename include/boost/fusion/{sequence => }/view/ext_/segmented_iterator.hpp (99%) rename include/boost/fusion/{sequence => }/view/ext_/segmented_iterator_range.hpp (97%) rename include/boost/fusion/{sequence => }/view/filter_view.hpp (77%) rename include/boost/fusion/{sequence => }/view/filter_view/detail/begin_impl.hpp (100%) rename include/boost/fusion/{sequence => }/view/filter_view/detail/deref_impl.hpp (100%) rename include/boost/fusion/{sequence => }/view/filter_view/detail/end_impl.hpp (100%) rename include/boost/fusion/{sequence => }/view/filter_view/detail/equal_to_impl.hpp (100%) rename include/boost/fusion/{sequence => }/view/filter_view/detail/next_impl.hpp (100%) rename include/boost/fusion/{sequence => }/view/filter_view/detail/size_impl.hpp (100%) rename include/boost/fusion/{sequence => }/view/filter_view/detail/value_of_impl.hpp (100%) rename include/boost/fusion/{sequence => }/view/filter_view/filter_view.hpp (85%) rename include/boost/fusion/{sequence => }/view/filter_view/filter_view_iterator.hpp (84%) rename include/boost/fusion/{sequence => }/view/iterator_range.hpp (87%) rename include/boost/fusion/{sequence => }/view/iterator_range/detail/at_impl.hpp (100%) rename include/boost/fusion/{sequence => }/view/iterator_range/detail/begin_impl.hpp (100%) rename include/boost/fusion/{sequence => }/view/iterator_range/detail/end_impl.hpp (100%) rename include/boost/fusion/{sequence => }/view/iterator_range/detail/value_at_impl.hpp (100%) rename include/boost/fusion/{sequence => }/view/iterator_range/iterator_range.hpp (85%) rename include/boost/fusion/{sequence => }/view/joint_view.hpp (77%) rename include/boost/fusion/{sequence => }/view/joint_view/detail/begin_impl.hpp (100%) rename include/boost/fusion/{sequence => }/view/joint_view/detail/deref_impl.hpp (100%) rename include/boost/fusion/{sequence => }/view/joint_view/detail/end_impl.hpp (100%) rename include/boost/fusion/{sequence => }/view/joint_view/detail/next_impl.hpp (100%) rename include/boost/fusion/{sequence => }/view/joint_view/detail/value_of_impl.hpp (100%) rename include/boost/fusion/{sequence => }/view/joint_view/joint_view.hpp (91%) rename include/boost/fusion/{sequence => }/view/joint_view/joint_view_iterator.hpp (89%) rename include/boost/fusion/{sequence => }/view/repetitive_view.hpp (75%) rename include/boost/fusion/{sequence => }/view/repetitive_view/detail/begin_impl.hpp (94%) rename include/boost/fusion/{sequence => }/view/repetitive_view/detail/deref_impl.hpp (100%) rename include/boost/fusion/{sequence => }/view/repetitive_view/detail/end_impl.hpp (94%) rename include/boost/fusion/{sequence => }/view/repetitive_view/detail/next_impl.hpp (100%) rename include/boost/fusion/{sequence => }/view/repetitive_view/detail/value_of_impl.hpp (100%) rename include/boost/fusion/{sequence => }/view/repetitive_view/repetitive_view.hpp (90%) rename include/boost/fusion/{sequence => }/view/repetitive_view/repetitive_view_fwd.hpp (100%) rename include/boost/fusion/{sequence => }/view/repetitive_view/repetitive_view_iterator.hpp (88%) rename include/boost/fusion/{sequence => }/view/reverse_view.hpp (77%) rename include/boost/fusion/{sequence => }/view/reverse_view/detail/advance_impl.hpp (100%) rename include/boost/fusion/{sequence => }/view/reverse_view/detail/begin_impl.hpp (100%) rename include/boost/fusion/{sequence => }/view/reverse_view/detail/deref_impl.hpp (100%) rename include/boost/fusion/{sequence => }/view/reverse_view/detail/distance_impl.hpp (100%) rename include/boost/fusion/{sequence => }/view/reverse_view/detail/end_impl.hpp (100%) rename include/boost/fusion/{sequence => }/view/reverse_view/detail/next_impl.hpp (100%) rename include/boost/fusion/{sequence => }/view/reverse_view/detail/prior_impl.hpp (100%) rename include/boost/fusion/{sequence => }/view/reverse_view/detail/value_of_impl.hpp (100%) rename include/boost/fusion/{sequence => }/view/reverse_view/reverse_view.hpp (90%) rename include/boost/fusion/{sequence => }/view/reverse_view/reverse_view_iterator.hpp (76%) rename include/boost/fusion/{sequence => }/view/single_view.hpp (76%) rename include/boost/fusion/{sequence => }/view/single_view/detail/begin_impl.hpp (100%) rename include/boost/fusion/{sequence => }/view/single_view/detail/deref_impl.hpp (100%) rename include/boost/fusion/{sequence => }/view/single_view/detail/end_impl.hpp (100%) rename include/boost/fusion/{sequence => }/view/single_view/detail/next_impl.hpp (100%) rename include/boost/fusion/{sequence => }/view/single_view/detail/value_of_impl.hpp (100%) rename include/boost/fusion/{sequence => }/view/single_view/single_view.hpp (87%) rename include/boost/fusion/{sequence => }/view/single_view/single_view_iterator.hpp (86%) rename include/boost/fusion/{sequence => }/view/transform_view.hpp (76%) rename include/boost/fusion/{sequence => }/view/transform_view/detail/advance_impl.hpp (100%) rename include/boost/fusion/{sequence => }/view/transform_view/detail/apply_transform_result.hpp (100%) rename include/boost/fusion/{sequence => }/view/transform_view/detail/at_impl.hpp (96%) rename include/boost/fusion/{sequence => }/view/transform_view/detail/begin_impl.hpp (96%) rename include/boost/fusion/{sequence => }/view/transform_view/detail/deref_impl.hpp (96%) rename include/boost/fusion/{sequence => }/view/transform_view/detail/distance_impl.hpp (100%) rename include/boost/fusion/{sequence => }/view/transform_view/detail/end_impl.hpp (96%) rename include/boost/fusion/{sequence => }/view/transform_view/detail/equal_to_impl.hpp (100%) rename include/boost/fusion/{sequence => }/view/transform_view/detail/next_impl.hpp (100%) rename include/boost/fusion/{sequence => }/view/transform_view/detail/prior_impl.hpp (100%) rename include/boost/fusion/{sequence => }/view/transform_view/detail/value_at_impl.hpp (95%) rename include/boost/fusion/{sequence => }/view/transform_view/detail/value_of_impl.hpp (95%) rename include/boost/fusion/{sequence => }/view/transform_view/transform_view.hpp (89%) rename include/boost/fusion/{sequence => }/view/transform_view/transform_view_fwd.hpp (100%) rename include/boost/fusion/{sequence => }/view/transform_view/transform_view_iterator.hpp (80%) rename include/boost/fusion/{sequence => }/view/zip_view.hpp (79%) rename include/boost/fusion/{sequence => }/view/zip_view/detail/advance_impl.hpp (96%) rename include/boost/fusion/{sequence => }/view/zip_view/detail/at_impl.hpp (98%) rename include/boost/fusion/{sequence => }/view/zip_view/detail/begin_impl.hpp (97%) rename include/boost/fusion/{sequence => }/view/zip_view/detail/deref_impl.hpp (97%) rename include/boost/fusion/{sequence => }/view/zip_view/detail/distance_impl.hpp (100%) rename include/boost/fusion/{sequence => }/view/zip_view/detail/end_impl.hpp (97%) rename include/boost/fusion/{sequence => }/view/zip_view/detail/equal_to_impl.hpp (100%) rename include/boost/fusion/{sequence => }/view/zip_view/detail/next_impl.hpp (97%) rename include/boost/fusion/{sequence => }/view/zip_view/detail/prior_impl.hpp (97%) rename include/boost/fusion/{sequence => }/view/zip_view/detail/size_impl.hpp (100%) rename include/boost/fusion/{sequence => }/view/zip_view/detail/strictest_traversal.hpp (100%) rename include/boost/fusion/{sequence => }/view/zip_view/detail/value_at_impl.hpp (100%) rename include/boost/fusion/{sequence => }/view/zip_view/detail/value_of_impl.hpp (100%) rename include/boost/fusion/{sequence => }/view/zip_view/zip_view.hpp (90%) rename include/boost/fusion/{sequence => }/view/zip_view/zip_view_iterator.hpp (68%) rename include/boost/fusion/{sequence => }/view/zip_view/zip_view_iterator_fwd.hpp (89%) diff --git a/include/boost/fusion/algorithm/query/ext_/find_if_s.hpp b/include/boost/fusion/algorithm/query/ext_/find_if_s.hpp index 2534ba4e..82c20b4c 100755 --- a/include/boost/fusion/algorithm/query/ext_/find_if_s.hpp +++ b/include/boost/fusion/algorithm/query/ext_/find_if_s.hpp @@ -14,10 +14,10 @@ #include #include #include -#include +#include #include -#include -#include +#include +#include #include // fwd declarations diff --git a/include/boost/fusion/algorithm/transformation/clear.hpp b/include/boost/fusion/algorithm/transformation/clear.hpp index 31e4269d..75328232 100644 --- a/include/boost/fusion/algorithm/transformation/clear.hpp +++ b/include/boost/fusion/algorithm/transformation/clear.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_CLEAR_09172005_1127) #define FUSION_CLEAR_09172005_1127 -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/algorithm/transformation/erase.hpp b/include/boost/fusion/algorithm/transformation/erase.hpp index 5cd8069a..fb6a1379 100644 --- a/include/boost/fusion/algorithm/transformation/erase.hpp +++ b/include/boost/fusion/algorithm/transformation/erase.hpp @@ -9,9 +9,9 @@ #include #include -#include -#include -#include +#include +#include +#include #include #include #include diff --git a/include/boost/fusion/algorithm/transformation/filter.hpp b/include/boost/fusion/algorithm/transformation/filter.hpp index 16244649..52bf6af3 100644 --- a/include/boost/fusion/algorithm/transformation/filter.hpp +++ b/include/boost/fusion/algorithm/transformation/filter.hpp @@ -8,7 +8,7 @@ #if !defined(FUSION_FILTER_02122005_1839) #define FUSION_FILTER_02122005_1839 -#include +#include #include namespace boost { namespace fusion diff --git a/include/boost/fusion/algorithm/transformation/filter_if.hpp b/include/boost/fusion/algorithm/transformation/filter_if.hpp index 4f362882..d13113b1 100644 --- a/include/boost/fusion/algorithm/transformation/filter_if.hpp +++ b/include/boost/fusion/algorithm/transformation/filter_if.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_FILTER_IF_07172005_0818) #define FUSION_FILTER_IF_07172005_0818 -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/algorithm/transformation/insert.hpp b/include/boost/fusion/algorithm/transformation/insert.hpp index 9894062c..e3894de9 100644 --- a/include/boost/fusion/algorithm/transformation/insert.hpp +++ b/include/boost/fusion/algorithm/transformation/insert.hpp @@ -9,10 +9,10 @@ #include #include -#include -#include -#include -#include +#include +#include +#include +#include #include #include #include diff --git a/include/boost/fusion/algorithm/transformation/insert_range.hpp b/include/boost/fusion/algorithm/transformation/insert_range.hpp index 93251e55..ff69623f 100644 --- a/include/boost/fusion/algorithm/transformation/insert_range.hpp +++ b/include/boost/fusion/algorithm/transformation/insert_range.hpp @@ -8,9 +8,9 @@ #define FUSION_INSERT_RANGE_009172005_1147 #include -#include -#include -#include +#include +#include +#include #include #include #include diff --git a/include/boost/fusion/algorithm/transformation/join.hpp b/include/boost/fusion/algorithm/transformation/join.hpp index 10a5eecc..4ed78b5f 100644 --- a/include/boost/fusion/algorithm/transformation/join.hpp +++ b/include/boost/fusion/algorithm/transformation/join.hpp @@ -8,7 +8,7 @@ #if !defined(FUSION_JOIN_200601222109) #define FUSION_JOIN_200601222109 -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/algorithm/transformation/pop_back.hpp b/include/boost/fusion/algorithm/transformation/pop_back.hpp index c83d5904..6eb743fd 100644 --- a/include/boost/fusion/algorithm/transformation/pop_back.hpp +++ b/include/boost/fusion/algorithm/transformation/pop_back.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_POP_BACK_09172005_1038) #define FUSION_POP_BACK_09172005_1038 -#include +#include #include #include #include diff --git a/include/boost/fusion/algorithm/transformation/pop_front.hpp b/include/boost/fusion/algorithm/transformation/pop_front.hpp index d01e3754..aed524d3 100644 --- a/include/boost/fusion/algorithm/transformation/pop_front.hpp +++ b/include/boost/fusion/algorithm/transformation/pop_front.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_POP_FRONT_09172005_1115) #define FUSION_POP_FRONT_09172005_1115 -#include +#include #include #include #include diff --git a/include/boost/fusion/algorithm/transformation/push_back.hpp b/include/boost/fusion/algorithm/transformation/push_back.hpp index 98f63702..4fadc79c 100644 --- a/include/boost/fusion/algorithm/transformation/push_back.hpp +++ b/include/boost/fusion/algorithm/transformation/push_back.hpp @@ -8,8 +8,8 @@ #define FUSION_PUSH_BACK_07162005_0235 #include -#include -#include +#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/algorithm/transformation/push_front.hpp b/include/boost/fusion/algorithm/transformation/push_front.hpp index 526e28f1..10f9fc10 100644 --- a/include/boost/fusion/algorithm/transformation/push_front.hpp +++ b/include/boost/fusion/algorithm/transformation/push_front.hpp @@ -8,8 +8,8 @@ #define FUSION_PUSH_FRONT_07162005_0749 #include -#include -#include +#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/algorithm/transformation/remove.hpp b/include/boost/fusion/algorithm/transformation/remove.hpp index 1eb4bfb3..01718d32 100644 --- a/include/boost/fusion/algorithm/transformation/remove.hpp +++ b/include/boost/fusion/algorithm/transformation/remove.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_REMOVE_07162005_0818) #define FUSION_REMOVE_07162005_0818 -#include +#include #include #include diff --git a/include/boost/fusion/algorithm/transformation/remove_if.hpp b/include/boost/fusion/algorithm/transformation/remove_if.hpp index c2140d17..ab13694d 100644 --- a/include/boost/fusion/algorithm/transformation/remove_if.hpp +++ b/include/boost/fusion/algorithm/transformation/remove_if.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_REMOVE_IF_07162005_0818) #define FUSION_REMOVE_IF_07162005_0818 -#include +#include #include #include diff --git a/include/boost/fusion/algorithm/transformation/replace.hpp b/include/boost/fusion/algorithm/transformation/replace.hpp index 43657f99..780f1a45 100644 --- a/include/boost/fusion/algorithm/transformation/replace.hpp +++ b/include/boost/fusion/algorithm/transformation/replace.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_REPLACE_08182005_0830) #define FUSION_REPLACE_08182005_0830 -#include +#include #include namespace boost { namespace fusion diff --git a/include/boost/fusion/algorithm/transformation/replace_if.hpp b/include/boost/fusion/algorithm/transformation/replace_if.hpp index 07abbdca..90db5683 100644 --- a/include/boost/fusion/algorithm/transformation/replace_if.hpp +++ b/include/boost/fusion/algorithm/transformation/replace_if.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_REPLACE_IF_08182005_0939) #define FUSION_REPLACE_IF_08182005_0939 -#include +#include #include #include #include diff --git a/include/boost/fusion/algorithm/transformation/reverse.hpp b/include/boost/fusion/algorithm/transformation/reverse.hpp index faf78114..b95461c8 100644 --- a/include/boost/fusion/algorithm/transformation/reverse.hpp +++ b/include/boost/fusion/algorithm/transformation/reverse.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_REVERSE_07212005_1230) #define FUSION_REVERSE_07212005_1230 -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/algorithm/transformation/transform.hpp b/include/boost/fusion/algorithm/transformation/transform.hpp index 0315a8d0..d9f06e7c 100644 --- a/include/boost/fusion/algorithm/transformation/transform.hpp +++ b/include/boost/fusion/algorithm/transformation/transform.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_TRANSFORM_07052005_1057) #define FUSION_TRANSFORM_07052005_1057 -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/algorithm/transformation/zip.hpp b/include/boost/fusion/algorithm/transformation/zip.hpp index 33b7d25b..a6541d85 100644 --- a/include/boost/fusion/algorithm/transformation/zip.hpp +++ b/include/boost/fusion/algorithm/transformation/zip.hpp @@ -9,9 +9,9 @@ #if !defined(FUSION_ZIP_HPP_20060125_2058) #define FUSION_ZIP_HPP_20060125_2058 -#include +#include #include -#include +#include #include #include #include diff --git a/include/boost/fusion/sequence/container.hpp b/include/boost/fusion/container.hpp similarity index 64% rename from include/boost/fusion/sequence/container.hpp rename to include/boost/fusion/container.hpp index 6a1047cc..e41c9cb3 100644 --- a/include/boost/fusion/sequence/container.hpp +++ b/include/boost/fusion/container.hpp @@ -7,10 +7,10 @@ #if !defined(FUSION_SEQUENCE_CLASS_10022005_0614) #define FUSION_SEQUENCE_CLASS_10022005_0614 -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #endif diff --git a/include/boost/fusion/sequence/container/deque.hpp b/include/boost/fusion/container/deque.hpp similarity index 90% rename from include/boost/fusion/sequence/container/deque.hpp rename to include/boost/fusion/container/deque.hpp index 0c9614a9..a9eb7aae 100644 --- a/include/boost/fusion/sequence/container/deque.hpp +++ b/include/boost/fusion/container/deque.hpp @@ -8,7 +8,7 @@ #if !defined(BOOST_FUSION_SEQUENCE_CONTAINER_DEQUE_24112006_2036) #define BOOST_FUSION_SEQUENCE_CONTAINER_DEQUE_24112006_2036 -#include +#include #endif diff --git a/include/boost/fusion/sequence/container/deque/back_extended_deque.hpp b/include/boost/fusion/container/deque/back_extended_deque.hpp similarity index 95% rename from include/boost/fusion/sequence/container/deque/back_extended_deque.hpp rename to include/boost/fusion/container/deque/back_extended_deque.hpp index 6310bb59..28d5ceca 100644 --- a/include/boost/fusion/sequence/container/deque/back_extended_deque.hpp +++ b/include/boost/fusion/container/deque/back_extended_deque.hpp @@ -8,7 +8,7 @@ #if !defined(BOOST_FUSION_BACK_EXTENDED_DEQUE_26112006_2209) #define BOOST_FUSION_BACK_EXTENDED_DEQUE_26112006_2209 -#include +#include #include #include #include diff --git a/include/boost/fusion/sequence/container/deque/deque.hpp b/include/boost/fusion/container/deque/deque.hpp similarity index 77% rename from include/boost/fusion/sequence/container/deque/deque.hpp rename to include/boost/fusion/container/deque/deque.hpp index 884899f8..27d9ce78 100644 --- a/include/boost/fusion/sequence/container/deque/deque.hpp +++ b/include/boost/fusion/container/deque/deque.hpp @@ -8,13 +8,13 @@ #if !defined(BOOST_FUSION_DEQUE_26112006_1649) #define BOOST_FUSION_DEQUE_26112006_1649 -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include -#include +#include #include #include #include @@ -22,11 +22,11 @@ #include #include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include #include @@ -52,7 +52,7 @@ namespace boost { namespace fusion { mpl::if_ >, mpl::int_<0>, mpl::int_<-1> >::type::value> next_down; typedef mpl::false_ is_view; -#include +#include deque() {} diff --git a/include/boost/fusion/sequence/container/deque/deque_fwd.hpp b/include/boost/fusion/container/deque/deque_fwd.hpp similarity index 92% rename from include/boost/fusion/sequence/container/deque/deque_fwd.hpp rename to include/boost/fusion/container/deque/deque_fwd.hpp index ce47bf62..415bb2f2 100644 --- a/include/boost/fusion/sequence/container/deque/deque_fwd.hpp +++ b/include/boost/fusion/container/deque/deque_fwd.hpp @@ -8,7 +8,7 @@ #if !defined(FUSION_DEQUE_FORWARD_02092007_0749) #define FUSION_DEQUE_FORWARD_02092007_0749 -#include +#include #include namespace boost { namespace fusion diff --git a/include/boost/fusion/sequence/container/deque/deque_iterator.hpp b/include/boost/fusion/container/deque/deque_iterator.hpp similarity index 97% rename from include/boost/fusion/sequence/container/deque/deque_iterator.hpp rename to include/boost/fusion/container/deque/deque_iterator.hpp index 8fb6f009..90c68918 100644 --- a/include/boost/fusion/sequence/container/deque/deque_iterator.hpp +++ b/include/boost/fusion/container/deque/deque_iterator.hpp @@ -9,7 +9,7 @@ #define BOOST_FUSION_DEQUE_ITERATOR_26112006_2154 #include -#include +#include #include #include diff --git a/include/boost/fusion/sequence/container/deque/detail/at_impl.hpp b/include/boost/fusion/container/deque/detail/at_impl.hpp similarity index 96% rename from include/boost/fusion/sequence/container/deque/detail/at_impl.hpp rename to include/boost/fusion/container/deque/detail/at_impl.hpp index 7edf37f1..3dc7cde9 100644 --- a/include/boost/fusion/sequence/container/deque/detail/at_impl.hpp +++ b/include/boost/fusion/container/deque/detail/at_impl.hpp @@ -8,7 +8,7 @@ #if !defined(BOOST_FUSION_DEQUE_AT_IMPL_09122006_2017) #define BOOST_FUSION_DEQUE_AT_IMPL_09122006_2017 -#include +#include #include #include diff --git a/include/boost/fusion/sequence/container/deque/detail/begin_impl.hpp b/include/boost/fusion/container/deque/detail/begin_impl.hpp similarity index 95% rename from include/boost/fusion/sequence/container/deque/detail/begin_impl.hpp rename to include/boost/fusion/container/deque/detail/begin_impl.hpp index 867cab8e..13b50143 100644 --- a/include/boost/fusion/sequence/container/deque/detail/begin_impl.hpp +++ b/include/boost/fusion/container/deque/detail/begin_impl.hpp @@ -8,7 +8,7 @@ #if !defined(BOOST_FUSION_DEQUE_BEGIN_IMPL_09122006_2034) #define BOOST_FUSION_DEQUE_BEGIN_IMPL_09122006_2034 -#include +#include #include #include diff --git a/include/boost/fusion/sequence/container/deque/detail/deque_forward_ctor.hpp b/include/boost/fusion/container/deque/detail/deque_forward_ctor.hpp similarity index 93% rename from include/boost/fusion/sequence/container/deque/detail/deque_forward_ctor.hpp rename to include/boost/fusion/container/deque/detail/deque_forward_ctor.hpp index f79a02e5..813c0491 100644 --- a/include/boost/fusion/sequence/container/deque/detail/deque_forward_ctor.hpp +++ b/include/boost/fusion/container/deque/detail/deque_forward_ctor.hpp @@ -14,7 +14,7 @@ #include #define BOOST_PP_FILENAME_1 \ - + #define BOOST_PP_ITERATION_LIMITS (2, FUSION_MAX_DEQUE_SIZE) #include BOOST_PP_ITERATE() diff --git a/include/boost/fusion/sequence/container/deque/detail/deque_initial_size.hpp b/include/boost/fusion/container/deque/detail/deque_initial_size.hpp similarity index 100% rename from include/boost/fusion/sequence/container/deque/detail/deque_initial_size.hpp rename to include/boost/fusion/container/deque/detail/deque_initial_size.hpp diff --git a/include/boost/fusion/sequence/container/deque/detail/deque_keyed_values.hpp b/include/boost/fusion/container/deque/detail/deque_keyed_values.hpp similarity index 91% rename from include/boost/fusion/sequence/container/deque/detail/deque_keyed_values.hpp rename to include/boost/fusion/container/deque/detail/deque_keyed_values.hpp index 26a76512..11b229b2 100644 --- a/include/boost/fusion/sequence/container/deque/detail/deque_keyed_values.hpp +++ b/include/boost/fusion/container/deque/detail/deque_keyed_values.hpp @@ -8,8 +8,8 @@ #if !defined(BOOST_FUSION_DEQUE_DETAIL_DEQUE_KEYED_VALUES_26112006_1330) #define BOOST_FUSION_DEQUE_DETAIL_DEQUE_KEYED_VALUES_26112006_1330 -#include -#include +#include +#include #include #include @@ -59,7 +59,7 @@ namespace detail { BOOST_PP_ENUM_SHIFTED_PARAMS(FUSION_MAX_DEQUE_SIZE, T)>::type tail; typedef keyed_element type; -#include +#include }; diff --git a/include/boost/fusion/sequence/container/deque/detail/deque_keyed_values_call.hpp b/include/boost/fusion/container/deque/detail/deque_keyed_values_call.hpp similarity index 94% rename from include/boost/fusion/sequence/container/deque/detail/deque_keyed_values_call.hpp rename to include/boost/fusion/container/deque/detail/deque_keyed_values_call.hpp index ab31c43c..0a39add6 100644 --- a/include/boost/fusion/sequence/container/deque/detail/deque_keyed_values_call.hpp +++ b/include/boost/fusion/container/deque/detail/deque_keyed_values_call.hpp @@ -14,7 +14,7 @@ #include #define BOOST_PP_FILENAME_1 \ - + #define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_DEQUE_SIZE) #include BOOST_PP_ITERATE() diff --git a/include/boost/fusion/sequence/container/deque/detail/end_impl.hpp b/include/boost/fusion/container/deque/detail/end_impl.hpp similarity index 95% rename from include/boost/fusion/sequence/container/deque/detail/end_impl.hpp rename to include/boost/fusion/container/deque/detail/end_impl.hpp index 505dfdac..96a1b17d 100644 --- a/include/boost/fusion/sequence/container/deque/detail/end_impl.hpp +++ b/include/boost/fusion/container/deque/detail/end_impl.hpp @@ -8,7 +8,7 @@ #if !defined(BOOST_FUSION_DEQUE_END_IMPL_09122006_2034) #define BOOST_FUSION_DEQUE_END_IMPL_09122006_2034 -#include +#include #include #include diff --git a/include/boost/fusion/sequence/container/deque/detail/keyed_element.hpp b/include/boost/fusion/container/deque/detail/keyed_element.hpp similarity index 100% rename from include/boost/fusion/sequence/container/deque/detail/keyed_element.hpp rename to include/boost/fusion/container/deque/detail/keyed_element.hpp diff --git a/include/boost/fusion/sequence/container/deque/detail/value_at_impl.hpp b/include/boost/fusion/container/deque/detail/value_at_impl.hpp similarity index 95% rename from include/boost/fusion/sequence/container/deque/detail/value_at_impl.hpp rename to include/boost/fusion/container/deque/detail/value_at_impl.hpp index 6c08231d..ec0351de 100644 --- a/include/boost/fusion/sequence/container/deque/detail/value_at_impl.hpp +++ b/include/boost/fusion/container/deque/detail/value_at_impl.hpp @@ -8,7 +8,7 @@ #if !defined(BOOST_FUSION_DEQUE_VALUE_AT_IMPL_08122006_0756) #define BOOST_FUSION_DEQUE_VALUE_AT_IMPL_08122006_0756 -#include +#include #include #include diff --git a/include/boost/fusion/sequence/container/deque/front_extended_deque.hpp b/include/boost/fusion/container/deque/front_extended_deque.hpp similarity index 95% rename from include/boost/fusion/sequence/container/deque/front_extended_deque.hpp rename to include/boost/fusion/container/deque/front_extended_deque.hpp index b52508e7..156e66a4 100644 --- a/include/boost/fusion/sequence/container/deque/front_extended_deque.hpp +++ b/include/boost/fusion/container/deque/front_extended_deque.hpp @@ -8,7 +8,7 @@ #if !defined(BOOST_FUSION_FRONT_EXTENDED_DEQUE_26112006_2209) #define BOOST_FUSION_FRONT_EXTENDED_DEQUE_26112006_2209 -#include +#include #include #include #include diff --git a/include/boost/fusion/sequence/container/deque/limits.hpp b/include/boost/fusion/container/deque/limits.hpp similarity index 100% rename from include/boost/fusion/sequence/container/deque/limits.hpp rename to include/boost/fusion/container/deque/limits.hpp diff --git a/include/boost/fusion/sequence/container/ext_/tree.hpp b/include/boost/fusion/container/ext_/tree.hpp similarity index 93% rename from include/boost/fusion/sequence/container/ext_/tree.hpp rename to include/boost/fusion/container/ext_/tree.hpp index c6edc28c..cd8c5dcd 100755 --- a/include/boost/fusion/sequence/container/ext_/tree.hpp +++ b/include/boost/fusion/container/ext_/tree.hpp @@ -14,13 +14,13 @@ #include #include #include -#include -#include // for nil -#include +#include +#include // for nil +#include #include #include #include -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/sequence/container/list.hpp b/include/boost/fusion/container/list.hpp similarity index 61% rename from include/boost/fusion/sequence/container/list.hpp rename to include/boost/fusion/container/list.hpp index 47024b9c..cfc0fd3d 100644 --- a/include/boost/fusion/sequence/container/list.hpp +++ b/include/boost/fusion/container/list.hpp @@ -7,10 +7,10 @@ #if !defined(FUSION_SEQUENCE_CLASS_LIST_10022005_0605) #define FUSION_SEQUENCE_CLASS_LIST_10022005_0605 -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #endif diff --git a/include/boost/fusion/sequence/container/list/cons.hpp b/include/boost/fusion/container/list/cons.hpp similarity index 91% rename from include/boost/fusion/sequence/container/list/cons.hpp rename to include/boost/fusion/container/list/cons.hpp index 877f2982..8e500f66 100644 --- a/include/boost/fusion/sequence/container/list/cons.hpp +++ b/include/boost/fusion/container/list/cons.hpp @@ -13,12 +13,12 @@ #include #include #include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include #include #include #include diff --git a/include/boost/fusion/sequence/container/list/cons_iterator.hpp b/include/boost/fusion/container/list/cons_iterator.hpp similarity index 86% rename from include/boost/fusion/sequence/container/list/cons_iterator.hpp rename to include/boost/fusion/container/list/cons_iterator.hpp index 6455f04f..7ef034e3 100644 --- a/include/boost/fusion/sequence/container/list/cons_iterator.hpp +++ b/include/boost/fusion/container/list/cons_iterator.hpp @@ -10,11 +10,11 @@ #include #include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/sequence/container/list/detail/at_impl.hpp b/include/boost/fusion/container/list/detail/at_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/container/list/detail/at_impl.hpp rename to include/boost/fusion/container/list/detail/at_impl.hpp diff --git a/include/boost/fusion/sequence/container/list/detail/begin_impl.hpp b/include/boost/fusion/container/list/detail/begin_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/container/list/detail/begin_impl.hpp rename to include/boost/fusion/container/list/detail/begin_impl.hpp diff --git a/include/boost/fusion/sequence/container/list/detail/deref_impl.hpp b/include/boost/fusion/container/list/detail/deref_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/container/list/detail/deref_impl.hpp rename to include/boost/fusion/container/list/detail/deref_impl.hpp diff --git a/include/boost/fusion/sequence/container/list/detail/empty_impl.hpp b/include/boost/fusion/container/list/detail/empty_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/container/list/detail/empty_impl.hpp rename to include/boost/fusion/container/list/detail/empty_impl.hpp diff --git a/include/boost/fusion/sequence/container/list/detail/end_impl.hpp b/include/boost/fusion/container/list/detail/end_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/container/list/detail/end_impl.hpp rename to include/boost/fusion/container/list/detail/end_impl.hpp diff --git a/include/boost/fusion/sequence/container/list/detail/equal_to_impl.hpp b/include/boost/fusion/container/list/detail/equal_to_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/container/list/detail/equal_to_impl.hpp rename to include/boost/fusion/container/list/detail/equal_to_impl.hpp diff --git a/include/boost/fusion/sequence/container/list/detail/list_forward_ctor.hpp b/include/boost/fusion/container/list/detail/list_forward_ctor.hpp similarity index 95% rename from include/boost/fusion/sequence/container/list/detail/list_forward_ctor.hpp rename to include/boost/fusion/container/list/detail/list_forward_ctor.hpp index 7922f382..39471809 100644 --- a/include/boost/fusion/sequence/container/list/detail/list_forward_ctor.hpp +++ b/include/boost/fusion/container/list/detail/list_forward_ctor.hpp @@ -18,7 +18,7 @@ #define FUSION_LIST_CL_PAREN(z, n, type) ) #define BOOST_PP_FILENAME_1 \ - + #define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_LIST_SIZE) #include BOOST_PP_ITERATE() diff --git a/include/boost/fusion/sequence/container/list/detail/list_to_cons.hpp b/include/boost/fusion/container/list/detail/list_to_cons.hpp similarity index 87% rename from include/boost/fusion/sequence/container/list/detail/list_to_cons.hpp rename to include/boost/fusion/container/list/detail/list_to_cons.hpp index fa5c7bb9..8e6d6912 100644 --- a/include/boost/fusion/sequence/container/list/detail/list_to_cons.hpp +++ b/include/boost/fusion/container/list/detail/list_to_cons.hpp @@ -7,8 +7,8 @@ #if !defined(FUSION_LIST_TO_CONS_07172005_1041) #define FUSION_LIST_TO_CONS_07172005_1041 -#include -#include +#include +#include #include #include #include @@ -35,7 +35,7 @@ namespace boost { namespace fusion { namespace detail typedef cons type; - #include + #include }; template <> diff --git a/include/boost/fusion/sequence/container/list/detail/list_to_cons_call.hpp b/include/boost/fusion/container/list/detail/list_to_cons_call.hpp similarity index 95% rename from include/boost/fusion/sequence/container/list/detail/list_to_cons_call.hpp rename to include/boost/fusion/container/list/detail/list_to_cons_call.hpp index c8e63e95..069f0598 100644 --- a/include/boost/fusion/sequence/container/list/detail/list_to_cons_call.hpp +++ b/include/boost/fusion/container/list/detail/list_to_cons_call.hpp @@ -13,7 +13,7 @@ #include #define BOOST_PP_FILENAME_1 \ - + #define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_LIST_SIZE) #include BOOST_PP_ITERATE() diff --git a/include/boost/fusion/sequence/container/list/detail/next_impl.hpp b/include/boost/fusion/container/list/detail/next_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/container/list/detail/next_impl.hpp rename to include/boost/fusion/container/list/detail/next_impl.hpp diff --git a/include/boost/fusion/sequence/container/list/detail/value_at_impl.hpp b/include/boost/fusion/container/list/detail/value_at_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/container/list/detail/value_at_impl.hpp rename to include/boost/fusion/container/list/detail/value_at_impl.hpp diff --git a/include/boost/fusion/sequence/container/list/detail/value_of_impl.hpp b/include/boost/fusion/container/list/detail/value_of_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/container/list/detail/value_of_impl.hpp rename to include/boost/fusion/container/list/detail/value_of_impl.hpp diff --git a/include/boost/fusion/sequence/container/list/limits.hpp b/include/boost/fusion/container/list/limits.hpp similarity index 100% rename from include/boost/fusion/sequence/container/list/limits.hpp rename to include/boost/fusion/container/list/limits.hpp diff --git a/include/boost/fusion/sequence/container/list/list.hpp b/include/boost/fusion/container/list/list.hpp similarity index 90% rename from include/boost/fusion/sequence/container/list/list.hpp rename to include/boost/fusion/container/list/list.hpp index e34e648f..7516df48 100644 --- a/include/boost/fusion/sequence/container/list/list.hpp +++ b/include/boost/fusion/container/list/list.hpp @@ -7,8 +7,8 @@ #if !defined(FUSION_LIST_07172005_1153) #define FUSION_LIST_07172005_1153 -#include -#include +#include +#include namespace boost { namespace fusion { @@ -45,7 +45,7 @@ namespace boost { namespace fusion // typename detail::call_param::type _0 // , typename detail::call_param::type _1) // : inherited_type(list_to_cons::call(_0, _1)) {} - #include + #include template list& diff --git a/include/boost/fusion/sequence/container/list/list_fwd.hpp b/include/boost/fusion/container/list/list_fwd.hpp similarity index 92% rename from include/boost/fusion/sequence/container/list/list_fwd.hpp rename to include/boost/fusion/container/list/list_fwd.hpp index cfd4e370..90c088b4 100644 --- a/include/boost/fusion/sequence/container/list/list_fwd.hpp +++ b/include/boost/fusion/container/list/list_fwd.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_LIST_FORWARD_07172005_0224) #define FUSION_LIST_FORWARD_07172005_0224 -#include +#include #include namespace boost { namespace fusion diff --git a/include/boost/fusion/sequence/container/map.hpp b/include/boost/fusion/container/map.hpp similarity index 73% rename from include/boost/fusion/sequence/container/map.hpp rename to include/boost/fusion/container/map.hpp index 100905cf..5efa1b02 100644 --- a/include/boost/fusion/sequence/container/map.hpp +++ b/include/boost/fusion/container/map.hpp @@ -7,8 +7,8 @@ #if !defined(FUSION_SEQUENCE_CLASS_MAP_10022005_0606) #define FUSION_SEQUENCE_CLASS_MAP_10022005_0606 -#include -#include -#include +#include +#include +#include #endif diff --git a/include/boost/fusion/sequence/container/map/detail/at_key_impl.hpp b/include/boost/fusion/container/map/detail/at_key_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/container/map/detail/at_key_impl.hpp rename to include/boost/fusion/container/map/detail/at_key_impl.hpp diff --git a/include/boost/fusion/sequence/container/map/detail/begin_impl.hpp b/include/boost/fusion/container/map/detail/begin_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/container/map/detail/begin_impl.hpp rename to include/boost/fusion/container/map/detail/begin_impl.hpp diff --git a/include/boost/fusion/sequence/container/map/detail/end_impl.hpp b/include/boost/fusion/container/map/detail/end_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/container/map/detail/end_impl.hpp rename to include/boost/fusion/container/map/detail/end_impl.hpp diff --git a/include/boost/fusion/sequence/container/map/detail/lookup_key.hpp b/include/boost/fusion/container/map/detail/lookup_key.hpp similarity index 100% rename from include/boost/fusion/sequence/container/map/detail/lookup_key.hpp rename to include/boost/fusion/container/map/detail/lookup_key.hpp diff --git a/include/boost/fusion/sequence/container/map/detail/map_forward_ctor.hpp b/include/boost/fusion/container/map/detail/map_forward_ctor.hpp similarity index 94% rename from include/boost/fusion/sequence/container/map/detail/map_forward_ctor.hpp rename to include/boost/fusion/container/map/detail/map_forward_ctor.hpp index 34b81830..c35168ba 100644 --- a/include/boost/fusion/sequence/container/map/detail/map_forward_ctor.hpp +++ b/include/boost/fusion/container/map/detail/map_forward_ctor.hpp @@ -13,7 +13,7 @@ #include #define BOOST_PP_FILENAME_1 \ - + #define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_MAP_SIZE) #include BOOST_PP_ITERATE() diff --git a/include/boost/fusion/sequence/container/map/detail/map_lookup.hpp b/include/boost/fusion/container/map/detail/map_lookup.hpp similarity index 98% rename from include/boost/fusion/sequence/container/map/detail/map_lookup.hpp rename to include/boost/fusion/container/map/detail/map_lookup.hpp index aef42c62..2f792cbd 100644 --- a/include/boost/fusion/sequence/container/map/detail/map_lookup.hpp +++ b/include/boost/fusion/container/map/detail/map_lookup.hpp @@ -52,10 +52,14 @@ } #define BOOST_PP_FILENAME_1 \ - + #define BOOST_PP_ITERATION_LIMITS (0, BOOST_PP_DEC(FUSION_MAX_MAP_SIZE)) #include BOOST_PP_ITERATE() +#if defined(BOOST_MSVC) && (BOOST_MSVC == 1310) +#pragma warning (pop) +#endif + #endif #else // defined(BOOST_PP_IS_ITERATING) /////////////////////////////////////////////////////////////////////////////// @@ -120,10 +124,5 @@ } #undef N - -#if defined(BOOST_MSVC) && (BOOST_MSVC == 1310) -#pragma warning (pop) -#endif - #endif // defined(BOOST_PP_IS_ITERATING) diff --git a/include/boost/fusion/sequence/container/map/detail/value_at_key_impl.hpp b/include/boost/fusion/container/map/detail/value_at_key_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/container/map/detail/value_at_key_impl.hpp rename to include/boost/fusion/container/map/detail/value_at_key_impl.hpp diff --git a/include/boost/fusion/sequence/container/map/limits.hpp b/include/boost/fusion/container/map/limits.hpp similarity index 92% rename from include/boost/fusion/sequence/container/map/limits.hpp rename to include/boost/fusion/container/map/limits.hpp index 33cbc832..738abff4 100644 --- a/include/boost/fusion/sequence/container/map/limits.hpp +++ b/include/boost/fusion/container/map/limits.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_MAP_LIMITS_07212005_1104) #define FUSION_MAP_LIMITS_07212005_1104 -#include +#include #if !defined(FUSION_MAX_MAP_SIZE) # define FUSION_MAX_MAP_SIZE FUSION_MAX_VECTOR_SIZE diff --git a/include/boost/fusion/sequence/container/map/map.hpp b/include/boost/fusion/container/map/map.hpp similarity index 73% rename from include/boost/fusion/sequence/container/map/map.hpp rename to include/boost/fusion/container/map/map.hpp index bf6a0fa8..5f5fb1cc 100644 --- a/include/boost/fusion/sequence/container/map/map.hpp +++ b/include/boost/fusion/container/map/map.hpp @@ -10,13 +10,13 @@ #include #include #include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include #include #include @@ -48,8 +48,8 @@ namespace boost { namespace fusion map(Sequence const& rhs) : data(rhs) {} - #include - #include + #include + #include template map& diff --git a/include/boost/fusion/sequence/container/map/map_fwd.hpp b/include/boost/fusion/container/map/map_fwd.hpp similarity index 92% rename from include/boost/fusion/sequence/container/map/map_fwd.hpp rename to include/boost/fusion/container/map/map_fwd.hpp index 311dce5a..660466bd 100644 --- a/include/boost/fusion/sequence/container/map/map_fwd.hpp +++ b/include/boost/fusion/container/map/map_fwd.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_MAP_FORWARD_07212005_1105) #define FUSION_MAP_FORWARD_07212005_1105 -#include +#include #include namespace boost { namespace fusion diff --git a/include/boost/fusion/sequence/container/set.hpp b/include/boost/fusion/container/set.hpp similarity index 73% rename from include/boost/fusion/sequence/container/set.hpp rename to include/boost/fusion/container/set.hpp index 24ec2c67..82c4ccc8 100644 --- a/include/boost/fusion/sequence/container/set.hpp +++ b/include/boost/fusion/container/set.hpp @@ -7,8 +7,8 @@ #if !defined(FUSION_SEQUENCE_CLASS_SET_10022005_0607) #define FUSION_SEQUENCE_CLASS_SET_10022005_0607 -#include -#include -#include +#include +#include +#include #endif diff --git a/include/boost/fusion/sequence/container/set/detail/at_key_impl.hpp b/include/boost/fusion/container/set/detail/at_key_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/container/set/detail/at_key_impl.hpp rename to include/boost/fusion/container/set/detail/at_key_impl.hpp diff --git a/include/boost/fusion/sequence/container/set/detail/begin_impl.hpp b/include/boost/fusion/container/set/detail/begin_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/container/set/detail/begin_impl.hpp rename to include/boost/fusion/container/set/detail/begin_impl.hpp diff --git a/include/boost/fusion/sequence/container/set/detail/end_impl.hpp b/include/boost/fusion/container/set/detail/end_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/container/set/detail/end_impl.hpp rename to include/boost/fusion/container/set/detail/end_impl.hpp diff --git a/include/boost/fusion/sequence/container/set/detail/lookup_key.hpp b/include/boost/fusion/container/set/detail/lookup_key.hpp similarity index 100% rename from include/boost/fusion/sequence/container/set/detail/lookup_key.hpp rename to include/boost/fusion/container/set/detail/lookup_key.hpp diff --git a/include/boost/fusion/sequence/container/set/detail/set_forward_ctor.hpp b/include/boost/fusion/container/set/detail/set_forward_ctor.hpp similarity index 94% rename from include/boost/fusion/sequence/container/set/detail/set_forward_ctor.hpp rename to include/boost/fusion/container/set/detail/set_forward_ctor.hpp index 6eddd650..d105b150 100644 --- a/include/boost/fusion/sequence/container/set/detail/set_forward_ctor.hpp +++ b/include/boost/fusion/container/set/detail/set_forward_ctor.hpp @@ -13,7 +13,7 @@ #include #define BOOST_PP_FILENAME_1 \ - + #define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_SET_SIZE) #include BOOST_PP_ITERATE() diff --git a/include/boost/fusion/sequence/container/set/detail/set_lookup.hpp b/include/boost/fusion/container/set/detail/set_lookup.hpp similarity index 98% rename from include/boost/fusion/sequence/container/set/detail/set_lookup.hpp rename to include/boost/fusion/container/set/detail/set_lookup.hpp index fd300457..6df4b401 100644 --- a/include/boost/fusion/sequence/container/set/detail/set_lookup.hpp +++ b/include/boost/fusion/container/set/detail/set_lookup.hpp @@ -52,10 +52,14 @@ } #define BOOST_PP_FILENAME_1 \ - + #define BOOST_PP_ITERATION_LIMITS (0, BOOST_PP_DEC(FUSION_MAX_SET_SIZE)) #include BOOST_PP_ITERATE() +#if defined(BOOST_MSVC) && (BOOST_MSVC == 1310) +#pragma warning (pop) +#endif + #endif #else // defined(BOOST_PP_IS_ITERATING) /////////////////////////////////////////////////////////////////////////////// @@ -120,10 +124,5 @@ } #undef N - -#if defined(BOOST_MSVC) && (BOOST_MSVC == 1310) -#pragma warning (pop) -#endif - #endif // defined(BOOST_PP_IS_ITERATING) diff --git a/include/boost/fusion/sequence/container/set/detail/value_at_key_impl.hpp b/include/boost/fusion/container/set/detail/value_at_key_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/container/set/detail/value_at_key_impl.hpp rename to include/boost/fusion/container/set/detail/value_at_key_impl.hpp diff --git a/include/boost/fusion/sequence/container/set/limits.hpp b/include/boost/fusion/container/set/limits.hpp similarity index 92% rename from include/boost/fusion/sequence/container/set/limits.hpp rename to include/boost/fusion/container/set/limits.hpp index 0b03b4dc..35eb0803 100644 --- a/include/boost/fusion/sequence/container/set/limits.hpp +++ b/include/boost/fusion/container/set/limits.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_SET_LIMITS_09162005_1103) #define FUSION_SET_LIMITS_09162005_1103 -#include +#include #if !defined(FUSION_MAX_SET_SIZE) # define FUSION_MAX_SET_SIZE FUSION_MAX_VECTOR_SIZE diff --git a/include/boost/fusion/sequence/container/set/set.hpp b/include/boost/fusion/container/set/set.hpp similarity index 73% rename from include/boost/fusion/sequence/container/set/set.hpp rename to include/boost/fusion/container/set/set.hpp index f5e7f152..07580bb6 100644 --- a/include/boost/fusion/sequence/container/set/set.hpp +++ b/include/boost/fusion/container/set/set.hpp @@ -10,13 +10,13 @@ #include #include #include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include #include #include @@ -48,8 +48,8 @@ namespace boost { namespace fusion set(Sequence const& rhs) : data(rhs) {} - #include - #include + #include + #include template set& diff --git a/include/boost/fusion/sequence/container/set/set_fwd.hpp b/include/boost/fusion/container/set/set_fwd.hpp similarity index 92% rename from include/boost/fusion/sequence/container/set/set_fwd.hpp rename to include/boost/fusion/container/set/set_fwd.hpp index 38ca9d22..7facb513 100644 --- a/include/boost/fusion/sequence/container/set/set_fwd.hpp +++ b/include/boost/fusion/container/set/set_fwd.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_SET_FORWARD_09162005_1102) #define FUSION_SET_FORWARD_09162005_1102 -#include +#include #include namespace boost { namespace fusion diff --git a/include/boost/fusion/container/vector.hpp b/include/boost/fusion/container/vector.hpp new file mode 100644 index 00000000..2766ac6a --- /dev/null +++ b/include/boost/fusion/container/vector.hpp @@ -0,0 +1,20 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Distributed under the 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_SEQUENCE_CLASS_VECTOR_10022005_0602) +#define FUSION_SEQUENCE_CLASS_VECTOR_10022005_0602 + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#endif diff --git a/include/boost/fusion/sequence/container/vector/detail/advance_impl.hpp b/include/boost/fusion/container/vector/detail/advance_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/container/vector/detail/advance_impl.hpp rename to include/boost/fusion/container/vector/detail/advance_impl.hpp diff --git a/include/boost/fusion/sequence/container/vector/detail/at_impl.hpp b/include/boost/fusion/container/vector/detail/at_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/container/vector/detail/at_impl.hpp rename to include/boost/fusion/container/vector/detail/at_impl.hpp diff --git a/include/boost/fusion/sequence/container/vector/detail/begin_impl.hpp b/include/boost/fusion/container/vector/detail/begin_impl.hpp similarity index 93% rename from include/boost/fusion/sequence/container/vector/detail/begin_impl.hpp rename to include/boost/fusion/container/vector/detail/begin_impl.hpp index 31d5643c..d2d687be 100644 --- a/include/boost/fusion/sequence/container/vector/detail/begin_impl.hpp +++ b/include/boost/fusion/container/vector/detail/begin_impl.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_BEGIN_IMPL_05042005_1136) #define FUSION_BEGIN_IMPL_05042005_1136 -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/sequence/container/vector/detail/deref_impl.hpp b/include/boost/fusion/container/vector/detail/deref_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/container/vector/detail/deref_impl.hpp rename to include/boost/fusion/container/vector/detail/deref_impl.hpp diff --git a/include/boost/fusion/sequence/container/vector/detail/distance_impl.hpp b/include/boost/fusion/container/vector/detail/distance_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/container/vector/detail/distance_impl.hpp rename to include/boost/fusion/container/vector/detail/distance_impl.hpp diff --git a/include/boost/fusion/sequence/container/vector/detail/end_impl.hpp b/include/boost/fusion/container/vector/detail/end_impl.hpp similarity index 93% rename from include/boost/fusion/sequence/container/vector/detail/end_impl.hpp rename to include/boost/fusion/container/vector/detail/end_impl.hpp index 795cabaa..f33282dc 100644 --- a/include/boost/fusion/sequence/container/vector/detail/end_impl.hpp +++ b/include/boost/fusion/container/vector/detail/end_impl.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_END_IMPL_05042005_1142) #define FUSION_END_IMPL_05042005_1142 -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/sequence/container/vector/detail/equal_to_impl.hpp b/include/boost/fusion/container/vector/detail/equal_to_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/container/vector/detail/equal_to_impl.hpp rename to include/boost/fusion/container/vector/detail/equal_to_impl.hpp diff --git a/include/boost/fusion/sequence/container/vector/detail/next_impl.hpp b/include/boost/fusion/container/vector/detail/next_impl.hpp similarity index 94% rename from include/boost/fusion/sequence/container/vector/detail/next_impl.hpp rename to include/boost/fusion/container/vector/detail/next_impl.hpp index 1bbe16f1..b11cfdb2 100644 --- a/include/boost/fusion/sequence/container/vector/detail/next_impl.hpp +++ b/include/boost/fusion/container/vector/detail/next_impl.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_NEXT_IMPL_05042005_1058) #define FUSION_NEXT_IMPL_05042005_1058 -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/sequence/container/vector/detail/prior_impl.hpp b/include/boost/fusion/container/vector/detail/prior_impl.hpp similarity index 94% rename from include/boost/fusion/sequence/container/vector/detail/prior_impl.hpp rename to include/boost/fusion/container/vector/detail/prior_impl.hpp index 3caaa590..610591b6 100644 --- a/include/boost/fusion/sequence/container/vector/detail/prior_impl.hpp +++ b/include/boost/fusion/container/vector/detail/prior_impl.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_PRIOR_IMPL_05042005_1145) #define FUSION_PRIOR_IMPL_05042005_1145 -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/sequence/container/vector/detail/value_at_impl.hpp b/include/boost/fusion/container/vector/detail/value_at_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/container/vector/detail/value_at_impl.hpp rename to include/boost/fusion/container/vector/detail/value_at_impl.hpp diff --git a/include/boost/fusion/sequence/container/vector/detail/value_of_impl.hpp b/include/boost/fusion/container/vector/detail/value_of_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/container/vector/detail/value_of_impl.hpp rename to include/boost/fusion/container/vector/detail/value_of_impl.hpp diff --git a/include/boost/fusion/sequence/container/vector/detail/vector_forward_ctor.hpp b/include/boost/fusion/container/vector/detail/vector_forward_ctor.hpp similarity index 94% rename from include/boost/fusion/sequence/container/vector/detail/vector_forward_ctor.hpp rename to include/boost/fusion/container/vector/detail/vector_forward_ctor.hpp index 0dadc05d..e4680bb8 100644 --- a/include/boost/fusion/sequence/container/vector/detail/vector_forward_ctor.hpp +++ b/include/boost/fusion/container/vector/detail/vector_forward_ctor.hpp @@ -13,7 +13,7 @@ #include #define BOOST_PP_FILENAME_1 \ - + #define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) #include BOOST_PP_ITERATE() diff --git a/include/boost/fusion/sequence/container/vector/detail/vector_n.hpp b/include/boost/fusion/container/vector/detail/vector_n.hpp similarity index 100% rename from include/boost/fusion/sequence/container/vector/detail/vector_n.hpp rename to include/boost/fusion/container/vector/detail/vector_n.hpp diff --git a/include/boost/fusion/sequence/container/vector/detail/vector_n_chooser.hpp b/include/boost/fusion/container/vector/detail/vector_n_chooser.hpp similarity index 85% rename from include/boost/fusion/sequence/container/vector/detail/vector_n_chooser.hpp rename to include/boost/fusion/container/vector/detail/vector_n_chooser.hpp index 8f372b9b..29248907 100644 --- a/include/boost/fusion/sequence/container/vector/detail/vector_n_chooser.hpp +++ b/include/boost/fusion/container/vector/detail/vector_n_chooser.hpp @@ -8,21 +8,21 @@ #if !defined(FUSION_VECTOR_N_CHOOSER_07072005_1248) #define FUSION_VECTOR_N_CHOOSER_07072005_1248 -#include +#include // include vector0..N where N is FUSION_MAX_VECTOR_SIZE -#include +#include #if (FUSION_MAX_VECTOR_SIZE > 10) -#include +#include #endif #if (FUSION_MAX_VECTOR_SIZE > 20) -#include +#include #endif #if (FUSION_MAX_VECTOR_SIZE > 30) -#include +#include #endif #if (FUSION_MAX_VECTOR_SIZE > 40) -#include +#include #endif #include @@ -52,7 +52,7 @@ namespace boost { namespace fusion { namespace detail }; #define BOOST_PP_FILENAME_1 \ - + #define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) #include BOOST_PP_ITERATE() diff --git a/include/boost/fusion/sequence/container/vector/limits.hpp b/include/boost/fusion/container/vector/limits.hpp similarity index 100% rename from include/boost/fusion/sequence/container/vector/limits.hpp rename to include/boost/fusion/container/vector/limits.hpp diff --git a/include/boost/fusion/sequence/container/vector/vector.hpp b/include/boost/fusion/container/vector/vector.hpp similarity index 94% rename from include/boost/fusion/sequence/container/vector/vector.hpp rename to include/boost/fusion/container/vector/vector.hpp index a2fa9bc4..b73ee510 100644 --- a/include/boost/fusion/sequence/container/vector/vector.hpp +++ b/include/boost/fusion/container/vector/vector.hpp @@ -7,8 +7,8 @@ #if !defined(FUSION_VECTOR_07072005_1244) #define FUSION_VECTOR_07072005_1244 -#include -#include +#include +#include #include #include #include @@ -70,7 +70,7 @@ namespace boost { namespace fusion // typename detail::call_param::type _0 // , typename detail::call_param::type _1) // : vec(_0, _1) {} - #include + #include template vector& diff --git a/include/boost/fusion/sequence/container/vector/vector10.hpp b/include/boost/fusion/container/vector/vector10.hpp similarity index 84% rename from include/boost/fusion/sequence/container/vector/vector10.hpp rename to include/boost/fusion/container/vector/vector10.hpp index 6ff80a0c..28531b6f 100644 --- a/include/boost/fusion/sequence/container/vector/vector10.hpp +++ b/include/boost/fusion/container/vector/vector10.hpp @@ -12,10 +12,10 @@ #include #include #include -#include -#include -#include -#include +#include +#include +#include +#include #include #include @@ -56,7 +56,7 @@ namespace boost { namespace fusion }; // expand vector1 to vector10 -#define BOOST_PP_FILENAME_1 +#define BOOST_PP_FILENAME_1 #define BOOST_PP_ITERATION_LIMITS (1, 10) #include BOOST_PP_ITERATE() diff --git a/include/boost/fusion/sequence/container/vector/vector20.hpp b/include/boost/fusion/container/vector/vector20.hpp similarity index 80% rename from include/boost/fusion/sequence/container/vector/vector20.hpp rename to include/boost/fusion/container/vector/vector20.hpp index 63809dfb..be711006 100644 --- a/include/boost/fusion/sequence/container/vector/vector20.hpp +++ b/include/boost/fusion/container/vector/vector20.hpp @@ -12,10 +12,10 @@ #include #include #include -#include -#include -#include -#include +#include +#include +#include +#include #include #include @@ -40,7 +40,7 @@ namespace boost { namespace fusion struct random_access_traversal_tag; // expand vector11 to vector20 -#define BOOST_PP_FILENAME_1 +#define BOOST_PP_FILENAME_1 #define BOOST_PP_ITERATION_LIMITS (11, 20) #include BOOST_PP_ITERATE() diff --git a/include/boost/fusion/sequence/container/vector/vector30.hpp b/include/boost/fusion/container/vector/vector30.hpp similarity index 80% rename from include/boost/fusion/sequence/container/vector/vector30.hpp rename to include/boost/fusion/container/vector/vector30.hpp index 0c094ebd..efbe9293 100644 --- a/include/boost/fusion/sequence/container/vector/vector30.hpp +++ b/include/boost/fusion/container/vector/vector30.hpp @@ -12,10 +12,10 @@ #include #include #include -#include -#include -#include -#include +#include +#include +#include +#include #include #include @@ -40,7 +40,7 @@ namespace boost { namespace fusion struct random_access_traversal_tag; // expand vector21 to vector30 -#define BOOST_PP_FILENAME_1 +#define BOOST_PP_FILENAME_1 #define BOOST_PP_ITERATION_LIMITS (21, 30) #include BOOST_PP_ITERATE() diff --git a/include/boost/fusion/sequence/container/vector/vector40.hpp b/include/boost/fusion/container/vector/vector40.hpp similarity index 80% rename from include/boost/fusion/sequence/container/vector/vector40.hpp rename to include/boost/fusion/container/vector/vector40.hpp index ecb13b71..b72a23c5 100644 --- a/include/boost/fusion/sequence/container/vector/vector40.hpp +++ b/include/boost/fusion/container/vector/vector40.hpp @@ -12,10 +12,10 @@ #include #include #include -#include -#include -#include -#include +#include +#include +#include +#include #include #include @@ -40,7 +40,7 @@ namespace boost { namespace fusion struct random_access_traversal_tag; // expand vector31 to vector40 -#define BOOST_PP_FILENAME_1 +#define BOOST_PP_FILENAME_1 #define BOOST_PP_ITERATION_LIMITS (31, 40) #include BOOST_PP_ITERATE() diff --git a/include/boost/fusion/sequence/container/vector/vector50.hpp b/include/boost/fusion/container/vector/vector50.hpp similarity index 80% rename from include/boost/fusion/sequence/container/vector/vector50.hpp rename to include/boost/fusion/container/vector/vector50.hpp index f5109448..ab8515d7 100644 --- a/include/boost/fusion/sequence/container/vector/vector50.hpp +++ b/include/boost/fusion/container/vector/vector50.hpp @@ -12,10 +12,10 @@ #include #include #include -#include -#include -#include -#include +#include +#include +#include +#include #include #include @@ -40,7 +40,7 @@ namespace boost { namespace fusion struct random_access_traversal_tag; // expand vector41 to vector50 -#define BOOST_PP_FILENAME_1 +#define BOOST_PP_FILENAME_1 #define BOOST_PP_ITERATION_LIMITS (41, 50) #include BOOST_PP_ITERATE() diff --git a/include/boost/fusion/sequence/container/vector/vector_fwd.hpp b/include/boost/fusion/container/vector/vector_fwd.hpp similarity index 92% rename from include/boost/fusion/sequence/container/vector/vector_fwd.hpp rename to include/boost/fusion/container/vector/vector_fwd.hpp index 8d1e23d6..a6b9cc66 100644 --- a/include/boost/fusion/sequence/container/vector/vector_fwd.hpp +++ b/include/boost/fusion/container/vector/vector_fwd.hpp @@ -8,7 +8,7 @@ #if !defined(FUSION_VECTOR_FORWARD_07072005_0125) #define FUSION_VECTOR_FORWARD_07072005_0125 -#include +#include #include namespace boost { namespace fusion diff --git a/include/boost/fusion/sequence/container/vector/vector_iterator.hpp b/include/boost/fusion/container/vector/vector_iterator.hpp similarity index 70% rename from include/boost/fusion/sequence/container/vector/vector_iterator.hpp rename to include/boost/fusion/container/vector/vector_iterator.hpp index fee4f6b0..9feeb520 100644 --- a/include/boost/fusion/sequence/container/vector/vector_iterator.hpp +++ b/include/boost/fusion/container/vector/vector_iterator.hpp @@ -8,13 +8,13 @@ #define FUSION_VECTOR_ITERATOR_05042005_0635 #include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include #include #include diff --git a/include/boost/fusion/functional/adapter/limits.hpp b/include/boost/fusion/functional/adapter/limits.hpp index 476fe021..cf6701c4 100644 --- a/include/boost/fusion/functional/adapter/limits.hpp +++ b/include/boost/fusion/functional/adapter/limits.hpp @@ -9,7 +9,7 @@ #if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_LIMITS_HPP_INCLUDED) # define BOOST_FUSION_FUNCTIONAL_ADAPTER_LIMITS_HPP_INCLUDED -# include +# include # if !defined(BOOST_FUSION_UNFUSED_GENERIC_MAX_ARITY) # define BOOST_FUSION_UNFUSED_GENERIC_MAX_ARITY 6 diff --git a/include/boost/fusion/functional/adapter/unfused_generic.hpp b/include/boost/fusion/functional/adapter/unfused_generic.hpp index 69191ef3..82b1e4b0 100644 --- a/include/boost/fusion/functional/adapter/unfused_generic.hpp +++ b/include/boost/fusion/functional/adapter/unfused_generic.hpp @@ -18,7 +18,7 @@ #include #include -#include +#include #include #include diff --git a/include/boost/fusion/functional/adapter/unfused_lvalue_args.hpp b/include/boost/fusion/functional/adapter/unfused_lvalue_args.hpp index 7b801cf7..ba2f31b6 100644 --- a/include/boost/fusion/functional/adapter/unfused_lvalue_args.hpp +++ b/include/boost/fusion/functional/adapter/unfused_lvalue_args.hpp @@ -17,7 +17,7 @@ #include -#include +#include #include #include diff --git a/include/boost/fusion/functional/adapter/unfused_rvalue_args.hpp b/include/boost/fusion/functional/adapter/unfused_rvalue_args.hpp index eea0fec9..3c80475e 100644 --- a/include/boost/fusion/functional/adapter/unfused_rvalue_args.hpp +++ b/include/boost/fusion/functional/adapter/unfused_rvalue_args.hpp @@ -17,7 +17,7 @@ #include -#include +#include #include #include diff --git a/include/boost/fusion/functional/adapter/unfused_typed.hpp b/include/boost/fusion/functional/adapter/unfused_typed.hpp index 94385a35..561e8112 100644 --- a/include/boost/fusion/functional/adapter/unfused_typed.hpp +++ b/include/boost/fusion/functional/adapter/unfused_typed.hpp @@ -22,7 +22,7 @@ #include #include #include -#include +#include #include #include diff --git a/include/boost/fusion/include/joint_view.hpp b/include/boost/fusion/include/joint_view.hpp index c60e34e5..e3d1e204 100644 --- a/include/boost/fusion/include/joint_view.hpp +++ b/include/boost/fusion/include/joint_view.hpp @@ -7,6 +7,6 @@ #if !defined(FUSION_INCLUDE_JOINT_VIEW) #define FUSION_INCLUDE_JOINT_VIEW -#include +#include #endif diff --git a/include/boost/fusion/include/list.hpp b/include/boost/fusion/include/list.hpp index fb5c0b42..4eb8e767 100644 --- a/include/boost/fusion/include/list.hpp +++ b/include/boost/fusion/include/list.hpp @@ -7,6 +7,6 @@ #if !defined(FUSION_INCLUDE_LIST) #define FUSION_INCLUDE_LIST -#include +#include #endif diff --git a/include/boost/fusion/include/single_view.hpp b/include/boost/fusion/include/single_view.hpp index ae60d867..a95d04a8 100644 --- a/include/boost/fusion/include/single_view.hpp +++ b/include/boost/fusion/include/single_view.hpp @@ -7,6 +7,6 @@ #if !defined(FUSION_INCLUDE_SINGLE_VIEW) #define FUSION_INCLUDE_SINGLE_VIEW -#include +#include #endif diff --git a/include/boost/fusion/include/transform_view.hpp b/include/boost/fusion/include/transform_view.hpp index 7564c6ab..3aceaaee 100644 --- a/include/boost/fusion/include/transform_view.hpp +++ b/include/boost/fusion/include/transform_view.hpp @@ -7,6 +7,6 @@ #if !defined(FUSION_INCLUDE_TRANSFORM_VIEW) #define FUSION_INCLUDE_TRANSFORM_VIEW -#include +#include #endif diff --git a/include/boost/fusion/include/vector.hpp b/include/boost/fusion/include/vector.hpp index e49568e2..d1495c0a 100644 --- a/include/boost/fusion/include/vector.hpp +++ b/include/boost/fusion/include/vector.hpp @@ -7,6 +7,6 @@ #if !defined(FUSION_INCLUDE_VECTOR) #define FUSION_INCLUDE_VECTOR -#include +#include #endif diff --git a/include/boost/fusion/sequence.hpp b/include/boost/fusion/sequence.hpp index 9a794c2e..a67465eb 100644 --- a/include/boost/fusion/sequence.hpp +++ b/include/boost/fusion/sequence.hpp @@ -8,13 +8,11 @@ #define FUSION_ITERATOR_10022005_0559 #include -#include #include #include #include #include #include -#include #include #endif diff --git a/include/boost/fusion/sequence/container/vector.hpp b/include/boost/fusion/sequence/container/vector.hpp deleted file mode 100644 index dd7f4333..00000000 --- a/include/boost/fusion/sequence/container/vector.hpp +++ /dev/null @@ -1,20 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - Distributed under the 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_SEQUENCE_CLASS_VECTOR_10022005_0602) -#define FUSION_SEQUENCE_CLASS_VECTOR_10022005_0602 - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif diff --git a/include/boost/fusion/sequence/conversion/as_deque.hpp b/include/boost/fusion/sequence/conversion/as_deque.hpp index 78ae1273..7c7cd7ad 100644 --- a/include/boost/fusion/sequence/conversion/as_deque.hpp +++ b/include/boost/fusion/sequence/conversion/as_deque.hpp @@ -9,7 +9,7 @@ #define FUSION_AS_DEQUE_20061213_2207 #include -#include +#include #include #include diff --git a/include/boost/fusion/sequence/conversion/as_list.hpp b/include/boost/fusion/sequence/conversion/as_list.hpp index 21b70bee..8be72890 100644 --- a/include/boost/fusion/sequence/conversion/as_list.hpp +++ b/include/boost/fusion/sequence/conversion/as_list.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_AS_LIST_09232005_1215) #define FUSION_AS_LIST_09232005_1215 -#include +#include #include #include #include diff --git a/include/boost/fusion/sequence/conversion/as_map.hpp b/include/boost/fusion/sequence/conversion/as_map.hpp index 4195dc25..c3e30589 100644 --- a/include/boost/fusion/sequence/conversion/as_map.hpp +++ b/include/boost/fusion/sequence/conversion/as_map.hpp @@ -8,7 +8,7 @@ #define FUSION_AS_MAP_09232005_1340 #include -#include +#include #include #include diff --git a/include/boost/fusion/sequence/conversion/as_set.hpp b/include/boost/fusion/sequence/conversion/as_set.hpp index 9d9c02df..34ee007d 100644 --- a/include/boost/fusion/sequence/conversion/as_set.hpp +++ b/include/boost/fusion/sequence/conversion/as_set.hpp @@ -8,7 +8,7 @@ #define FUSION_AS_SET_09232005_1341 #include -#include +#include #include #include diff --git a/include/boost/fusion/sequence/conversion/as_vector.hpp b/include/boost/fusion/sequence/conversion/as_vector.hpp index 3e8cfab1..ef1590fd 100644 --- a/include/boost/fusion/sequence/conversion/as_vector.hpp +++ b/include/boost/fusion/sequence/conversion/as_vector.hpp @@ -8,7 +8,7 @@ #define FUSION_AS_VECTOR_09222005_1104 #include -#include +#include #include #include diff --git a/include/boost/fusion/sequence/conversion/detail/as_deque.hpp b/include/boost/fusion/sequence/conversion/detail/as_deque.hpp index 04e2a559..8fcc5643 100644 --- a/include/boost/fusion/sequence/conversion/detail/as_deque.hpp +++ b/include/boost/fusion/sequence/conversion/detail/as_deque.hpp @@ -16,7 +16,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/include/boost/fusion/sequence/conversion/detail/as_map.hpp b/include/boost/fusion/sequence/conversion/detail/as_map.hpp index d163311c..0fc61b96 100644 --- a/include/boost/fusion/sequence/conversion/detail/as_map.hpp +++ b/include/boost/fusion/sequence/conversion/detail/as_map.hpp @@ -15,7 +15,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/include/boost/fusion/sequence/conversion/detail/as_set.hpp b/include/boost/fusion/sequence/conversion/detail/as_set.hpp index bd21f3c0..96a93e70 100644 --- a/include/boost/fusion/sequence/conversion/detail/as_set.hpp +++ b/include/boost/fusion/sequence/conversion/detail/as_set.hpp @@ -15,7 +15,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/include/boost/fusion/sequence/conversion/detail/as_vector.hpp b/include/boost/fusion/sequence/conversion/detail/as_vector.hpp index ffd79df0..a472ed52 100644 --- a/include/boost/fusion/sequence/conversion/detail/as_vector.hpp +++ b/include/boost/fusion/sequence/conversion/detail/as_vector.hpp @@ -15,7 +15,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/include/boost/fusion/sequence/conversion/detail/build_cons.hpp b/include/boost/fusion/sequence/conversion/detail/build_cons.hpp index 4b08447f..befbd4e9 100644 --- a/include/boost/fusion/sequence/conversion/detail/build_cons.hpp +++ b/include/boost/fusion/sequence/conversion/detail/build_cons.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_BUILD_CONS_09232005_1222) #define FUSION_BUILD_CONS_09232005_1222 -#include +#include #include #include #include diff --git a/include/boost/fusion/sequence/generation/cons_tie.hpp b/include/boost/fusion/sequence/generation/cons_tie.hpp index 2b695d25..88ce0aa4 100644 --- a/include/boost/fusion/sequence/generation/cons_tie.hpp +++ b/include/boost/fusion/sequence/generation/cons_tie.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_CONS_TIE_07182005_0854) #define FUSION_CONS_TIE_07182005_0854 -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/sequence/generation/deque_tie.hpp b/include/boost/fusion/sequence/generation/deque_tie.hpp index 77478c03..5f8a2f08 100644 --- a/include/boost/fusion/sequence/generation/deque_tie.hpp +++ b/include/boost/fusion/sequence/generation/deque_tie.hpp @@ -14,7 +14,7 @@ #include #include #include -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/sequence/generation/list_tie.hpp b/include/boost/fusion/sequence/generation/list_tie.hpp index 56fb6823..946fdbc3 100644 --- a/include/boost/fusion/sequence/generation/list_tie.hpp +++ b/include/boost/fusion/sequence/generation/list_tie.hpp @@ -13,7 +13,7 @@ #include #include #include -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/sequence/generation/make_cons.hpp b/include/boost/fusion/sequence/generation/make_cons.hpp index 704b35e2..47a2f461 100644 --- a/include/boost/fusion/sequence/generation/make_cons.hpp +++ b/include/boost/fusion/sequence/generation/make_cons.hpp @@ -9,7 +9,7 @@ #define FUSION_MAKE_CONS_07172005_0918 #include -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/sequence/generation/make_deque.hpp b/include/boost/fusion/sequence/generation/make_deque.hpp index 4c8544c2..5bcd4962 100644 --- a/include/boost/fusion/sequence/generation/make_deque.hpp +++ b/include/boost/fusion/sequence/generation/make_deque.hpp @@ -19,7 +19,7 @@ #include #include #include -#include +#include #include namespace boost { namespace fusion diff --git a/include/boost/fusion/sequence/generation/make_list.hpp b/include/boost/fusion/sequence/generation/make_list.hpp index a37a2367..122fe751 100644 --- a/include/boost/fusion/sequence/generation/make_list.hpp +++ b/include/boost/fusion/sequence/generation/make_list.hpp @@ -12,7 +12,7 @@ #include #include #include -#include +#include #include namespace boost { namespace fusion diff --git a/include/boost/fusion/sequence/generation/make_map.hpp b/include/boost/fusion/sequence/generation/make_map.hpp index 885cea2b..5bc054e3 100644 --- a/include/boost/fusion/sequence/generation/make_map.hpp +++ b/include/boost/fusion/sequence/generation/make_map.hpp @@ -12,7 +12,7 @@ #include #include #include -#include +#include #include #include diff --git a/include/boost/fusion/sequence/generation/make_set.hpp b/include/boost/fusion/sequence/generation/make_set.hpp index 7f56159c..b434923f 100644 --- a/include/boost/fusion/sequence/generation/make_set.hpp +++ b/include/boost/fusion/sequence/generation/make_set.hpp @@ -12,7 +12,7 @@ #include #include #include -#include +#include #include #include diff --git a/include/boost/fusion/sequence/generation/make_vector.hpp b/include/boost/fusion/sequence/generation/make_vector.hpp index 2dc292fd..b73598d6 100644 --- a/include/boost/fusion/sequence/generation/make_vector.hpp +++ b/include/boost/fusion/sequence/generation/make_vector.hpp @@ -12,7 +12,7 @@ #include #include #include -#include +#include #include namespace boost { namespace fusion diff --git a/include/boost/fusion/sequence/generation/map_tie.hpp b/include/boost/fusion/sequence/generation/map_tie.hpp index 523a22d4..a5cb08c9 100644 --- a/include/boost/fusion/sequence/generation/map_tie.hpp +++ b/include/boost/fusion/sequence/generation/map_tie.hpp @@ -13,8 +13,8 @@ #include #include #include -#include -#include +#include +#include #include #include #include diff --git a/include/boost/fusion/sequence/generation/vector_tie.hpp b/include/boost/fusion/sequence/generation/vector_tie.hpp index b8cfe527..f70c4e89 100644 --- a/include/boost/fusion/sequence/generation/vector_tie.hpp +++ b/include/boost/fusion/sequence/generation/vector_tie.hpp @@ -13,7 +13,7 @@ #include #include #include -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/sequence/intrinsic/mpl/detail/clear.hpp b/include/boost/fusion/sequence/intrinsic/mpl/detail/clear.hpp index 28807cc7..d8c32d5a 100644 --- a/include/boost/fusion/sequence/intrinsic/mpl/detail/clear.hpp +++ b/include/boost/fusion/sequence/intrinsic/mpl/detail/clear.hpp @@ -7,11 +7,11 @@ #if !defined(FUSION_CLEAR_10022005_1442) #define FUSION_CLEAR_10022005_1442 -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/sequence/intrinsic/swap.hpp b/include/boost/fusion/sequence/intrinsic/swap.hpp index 90570c1f..7a385ae8 100644 --- a/include/boost/fusion/sequence/intrinsic/swap.hpp +++ b/include/boost/fusion/sequence/intrinsic/swap.hpp @@ -11,7 +11,7 @@ #include #include -#include +#include #include #include #include diff --git a/include/boost/fusion/tuple/tuple.hpp b/include/boost/fusion/tuple/tuple.hpp index a32e6b3e..d9860323 100644 --- a/include/boost/fusion/tuple/tuple.hpp +++ b/include/boost/fusion/tuple/tuple.hpp @@ -8,7 +8,7 @@ #define FUSION_TUPLE_10032005_0810 #include -#include +#include #include #include #include diff --git a/include/boost/fusion/tuple/tuple_fwd.hpp b/include/boost/fusion/tuple/tuple_fwd.hpp index f3e660e5..1a127cab 100644 --- a/include/boost/fusion/tuple/tuple_fwd.hpp +++ b/include/boost/fusion/tuple/tuple_fwd.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_TUPLE_FORWARD_10032005_0956) #define FUSION_TUPLE_FORWARD_10032005_0956 -#include +#include #include namespace boost { namespace fusion diff --git a/include/boost/fusion/sequence/view.hpp b/include/boost/fusion/view.hpp similarity index 58% rename from include/boost/fusion/sequence/view.hpp rename to include/boost/fusion/view.hpp index 712a9ac5..12d5cc5d 100644 --- a/include/boost/fusion/sequence/view.hpp +++ b/include/boost/fusion/view.hpp @@ -7,11 +7,11 @@ #if !defined(FUSION_SEQUENCE_VIEW_10022005_0620) #define FUSION_SEQUENCE_VIEW_10022005_0620 -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include #endif diff --git a/include/boost/fusion/sequence/view/ext_/multiple_view.hpp b/include/boost/fusion/view/ext_/multiple_view.hpp similarity index 100% rename from include/boost/fusion/sequence/view/ext_/multiple_view.hpp rename to include/boost/fusion/view/ext_/multiple_view.hpp diff --git a/include/boost/fusion/sequence/view/ext_/segmented_iterator.hpp b/include/boost/fusion/view/ext_/segmented_iterator.hpp similarity index 99% rename from include/boost/fusion/sequence/view/ext_/segmented_iterator.hpp rename to include/boost/fusion/view/ext_/segmented_iterator.hpp index 2f6c1f74..2216929b 100755 --- a/include/boost/fusion/sequence/view/ext_/segmented_iterator.hpp +++ b/include/boost/fusion/view/ext_/segmented_iterator.hpp @@ -17,8 +17,8 @@ #include #include #include -#include -#include // for nil +#include +#include // for nil #include #include #include diff --git a/include/boost/fusion/sequence/view/ext_/segmented_iterator_range.hpp b/include/boost/fusion/view/ext_/segmented_iterator_range.hpp similarity index 97% rename from include/boost/fusion/sequence/view/ext_/segmented_iterator_range.hpp rename to include/boost/fusion/view/ext_/segmented_iterator_range.hpp index df06c125..28e7180b 100755 --- a/include/boost/fusion/sequence/view/ext_/segmented_iterator_range.hpp +++ b/include/boost/fusion/view/ext_/segmented_iterator_range.hpp @@ -13,13 +13,13 @@ #include #include #include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include #include namespace boost { namespace fusion diff --git a/include/boost/fusion/sequence/view/filter_view.hpp b/include/boost/fusion/view/filter_view.hpp similarity index 77% rename from include/boost/fusion/sequence/view/filter_view.hpp rename to include/boost/fusion/view/filter_view.hpp index d8fb4936..c649407f 100644 --- a/include/boost/fusion/sequence/view/filter_view.hpp +++ b/include/boost/fusion/view/filter_view.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_SEQUENCE_VIEW_FILTER_VIEW_10022005_0608) #define FUSION_SEQUENCE_VIEW_FILTER_VIEW_10022005_0608 -#include -#include +#include +#include #endif diff --git a/include/boost/fusion/sequence/view/filter_view/detail/begin_impl.hpp b/include/boost/fusion/view/filter_view/detail/begin_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/view/filter_view/detail/begin_impl.hpp rename to include/boost/fusion/view/filter_view/detail/begin_impl.hpp diff --git a/include/boost/fusion/sequence/view/filter_view/detail/deref_impl.hpp b/include/boost/fusion/view/filter_view/detail/deref_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/view/filter_view/detail/deref_impl.hpp rename to include/boost/fusion/view/filter_view/detail/deref_impl.hpp diff --git a/include/boost/fusion/sequence/view/filter_view/detail/end_impl.hpp b/include/boost/fusion/view/filter_view/detail/end_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/view/filter_view/detail/end_impl.hpp rename to include/boost/fusion/view/filter_view/detail/end_impl.hpp diff --git a/include/boost/fusion/sequence/view/filter_view/detail/equal_to_impl.hpp b/include/boost/fusion/view/filter_view/detail/equal_to_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/view/filter_view/detail/equal_to_impl.hpp rename to include/boost/fusion/view/filter_view/detail/equal_to_impl.hpp diff --git a/include/boost/fusion/sequence/view/filter_view/detail/next_impl.hpp b/include/boost/fusion/view/filter_view/detail/next_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/view/filter_view/detail/next_impl.hpp rename to include/boost/fusion/view/filter_view/detail/next_impl.hpp diff --git a/include/boost/fusion/sequence/view/filter_view/detail/size_impl.hpp b/include/boost/fusion/view/filter_view/detail/size_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/view/filter_view/detail/size_impl.hpp rename to include/boost/fusion/view/filter_view/detail/size_impl.hpp diff --git a/include/boost/fusion/sequence/view/filter_view/detail/value_of_impl.hpp b/include/boost/fusion/view/filter_view/detail/value_of_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/view/filter_view/detail/value_of_impl.hpp rename to include/boost/fusion/view/filter_view/detail/value_of_impl.hpp diff --git a/include/boost/fusion/sequence/view/filter_view/filter_view.hpp b/include/boost/fusion/view/filter_view/filter_view.hpp similarity index 85% rename from include/boost/fusion/sequence/view/filter_view/filter_view.hpp rename to include/boost/fusion/view/filter_view/filter_view.hpp index e09ec97f..a34747e6 100644 --- a/include/boost/fusion/sequence/view/filter_view/filter_view.hpp +++ b/include/boost/fusion/view/filter_view/filter_view.hpp @@ -10,10 +10,10 @@ #include #include #include -#include -#include -#include -#include +#include +#include +#include +#include #include #include #include diff --git a/include/boost/fusion/sequence/view/filter_view/filter_view_iterator.hpp b/include/boost/fusion/view/filter_view/filter_view_iterator.hpp similarity index 84% rename from include/boost/fusion/sequence/view/filter_view/filter_view_iterator.hpp rename to include/boost/fusion/view/filter_view/filter_view_iterator.hpp index 8af0776c..005044c6 100644 --- a/include/boost/fusion/sequence/view/filter_view/filter_view_iterator.hpp +++ b/include/boost/fusion/view/filter_view/filter_view_iterator.hpp @@ -10,10 +10,10 @@ #include #include #include -#include -#include -#include -#include +#include +#include +#include +#include #include namespace boost { namespace fusion diff --git a/include/boost/fusion/sequence/view/iterator_range.hpp b/include/boost/fusion/view/iterator_range.hpp similarity index 87% rename from include/boost/fusion/sequence/view/iterator_range.hpp rename to include/boost/fusion/view/iterator_range.hpp index 16485eb4..f8d30221 100644 --- a/include/boost/fusion/sequence/view/iterator_range.hpp +++ b/include/boost/fusion/view/iterator_range.hpp @@ -7,6 +7,6 @@ #if !defined(FUSION_SEQUENCE_VIEW_ITERATOR_RANGE_10022005_0610) #define FUSION_SEQUENCE_VIEW_ITERATOR_RANGE_10022005_0610 -#include +#include #endif diff --git a/include/boost/fusion/sequence/view/iterator_range/detail/at_impl.hpp b/include/boost/fusion/view/iterator_range/detail/at_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/view/iterator_range/detail/at_impl.hpp rename to include/boost/fusion/view/iterator_range/detail/at_impl.hpp diff --git a/include/boost/fusion/sequence/view/iterator_range/detail/begin_impl.hpp b/include/boost/fusion/view/iterator_range/detail/begin_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/view/iterator_range/detail/begin_impl.hpp rename to include/boost/fusion/view/iterator_range/detail/begin_impl.hpp diff --git a/include/boost/fusion/sequence/view/iterator_range/detail/end_impl.hpp b/include/boost/fusion/view/iterator_range/detail/end_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/view/iterator_range/detail/end_impl.hpp rename to include/boost/fusion/view/iterator_range/detail/end_impl.hpp diff --git a/include/boost/fusion/sequence/view/iterator_range/detail/value_at_impl.hpp b/include/boost/fusion/view/iterator_range/detail/value_at_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/view/iterator_range/detail/value_at_impl.hpp rename to include/boost/fusion/view/iterator_range/detail/value_at_impl.hpp diff --git a/include/boost/fusion/sequence/view/iterator_range/iterator_range.hpp b/include/boost/fusion/view/iterator_range/iterator_range.hpp similarity index 85% rename from include/boost/fusion/sequence/view/iterator_range/iterator_range.hpp rename to include/boost/fusion/view/iterator_range/iterator_range.hpp index 8b0a3793..2b45e072 100644 --- a/include/boost/fusion/sequence/view/iterator_range/iterator_range.hpp +++ b/include/boost/fusion/view/iterator_range/iterator_range.hpp @@ -12,10 +12,10 @@ #include #include #include -#include -#include -#include -#include +#include +#include +#include +#include #include #include diff --git a/include/boost/fusion/sequence/view/joint_view.hpp b/include/boost/fusion/view/joint_view.hpp similarity index 77% rename from include/boost/fusion/sequence/view/joint_view.hpp rename to include/boost/fusion/view/joint_view.hpp index 6d9209a8..cd1b8571 100644 --- a/include/boost/fusion/sequence/view/joint_view.hpp +++ b/include/boost/fusion/view/joint_view.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_SEQUENCE_VIEW_JOINT_VIEW_10022005_0610) #define FUSION_SEQUENCE_VIEW_JOINT_VIEW_10022005_0610 -#include -#include +#include +#include #endif diff --git a/include/boost/fusion/sequence/view/joint_view/detail/begin_impl.hpp b/include/boost/fusion/view/joint_view/detail/begin_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/view/joint_view/detail/begin_impl.hpp rename to include/boost/fusion/view/joint_view/detail/begin_impl.hpp diff --git a/include/boost/fusion/sequence/view/joint_view/detail/deref_impl.hpp b/include/boost/fusion/view/joint_view/detail/deref_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/view/joint_view/detail/deref_impl.hpp rename to include/boost/fusion/view/joint_view/detail/deref_impl.hpp diff --git a/include/boost/fusion/sequence/view/joint_view/detail/end_impl.hpp b/include/boost/fusion/view/joint_view/detail/end_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/view/joint_view/detail/end_impl.hpp rename to include/boost/fusion/view/joint_view/detail/end_impl.hpp diff --git a/include/boost/fusion/sequence/view/joint_view/detail/next_impl.hpp b/include/boost/fusion/view/joint_view/detail/next_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/view/joint_view/detail/next_impl.hpp rename to include/boost/fusion/view/joint_view/detail/next_impl.hpp diff --git a/include/boost/fusion/sequence/view/joint_view/detail/value_of_impl.hpp b/include/boost/fusion/view/joint_view/detail/value_of_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/view/joint_view/detail/value_of_impl.hpp rename to include/boost/fusion/view/joint_view/detail/value_of_impl.hpp diff --git a/include/boost/fusion/sequence/view/joint_view/joint_view.hpp b/include/boost/fusion/view/joint_view/joint_view.hpp similarity index 91% rename from include/boost/fusion/sequence/view/joint_view/joint_view.hpp rename to include/boost/fusion/view/joint_view/joint_view.hpp index d0c48200..9cc798d3 100644 --- a/include/boost/fusion/sequence/view/joint_view/joint_view.hpp +++ b/include/boost/fusion/view/joint_view/joint_view.hpp @@ -12,9 +12,9 @@ #include #include #include -#include -#include -#include +#include +#include +#include #include #include #include diff --git a/include/boost/fusion/sequence/view/joint_view/joint_view_iterator.hpp b/include/boost/fusion/view/joint_view/joint_view_iterator.hpp similarity index 89% rename from include/boost/fusion/sequence/view/joint_view/joint_view_iterator.hpp rename to include/boost/fusion/view/joint_view/joint_view_iterator.hpp index 294116f1..6169ec67 100644 --- a/include/boost/fusion/sequence/view/joint_view/joint_view_iterator.hpp +++ b/include/boost/fusion/view/joint_view/joint_view_iterator.hpp @@ -11,9 +11,9 @@ #include #include #include -#include -#include -#include +#include +#include +#include #include namespace boost { namespace fusion diff --git a/include/boost/fusion/sequence/view/repetitive_view.hpp b/include/boost/fusion/view/repetitive_view.hpp similarity index 75% rename from include/boost/fusion/sequence/view/repetitive_view.hpp rename to include/boost/fusion/view/repetitive_view.hpp index 8940174b..fef1462f 100644 --- a/include/boost/fusion/sequence/view/repetitive_view.hpp +++ b/include/boost/fusion/view/repetitive_view.hpp @@ -8,8 +8,8 @@ #if !defined(BOOST_FUSION_REPETITIVE_VIEW_HPP_INCLUDED) #define BOOST_FUSION_REPETITIVE_VIEW_HPP_INCLUDED -#include -#include +#include +#include #endif diff --git a/include/boost/fusion/sequence/view/repetitive_view/detail/begin_impl.hpp b/include/boost/fusion/view/repetitive_view/detail/begin_impl.hpp similarity index 94% rename from include/boost/fusion/sequence/view/repetitive_view/detail/begin_impl.hpp rename to include/boost/fusion/view/repetitive_view/detail/begin_impl.hpp index b5c4c29a..321d7b8d 100644 --- a/include/boost/fusion/sequence/view/repetitive_view/detail/begin_impl.hpp +++ b/include/boost/fusion/view/repetitive_view/detail/begin_impl.hpp @@ -9,7 +9,7 @@ #define BOOST_FUSION_REPETITIVE_VIEW_BEGIN_IMPL_HPP_INCLUDED #include -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/sequence/view/repetitive_view/detail/deref_impl.hpp b/include/boost/fusion/view/repetitive_view/detail/deref_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/view/repetitive_view/detail/deref_impl.hpp rename to include/boost/fusion/view/repetitive_view/detail/deref_impl.hpp diff --git a/include/boost/fusion/sequence/view/repetitive_view/detail/end_impl.hpp b/include/boost/fusion/view/repetitive_view/detail/end_impl.hpp similarity index 94% rename from include/boost/fusion/sequence/view/repetitive_view/detail/end_impl.hpp rename to include/boost/fusion/view/repetitive_view/detail/end_impl.hpp index 00ac0874..52e36da5 100644 --- a/include/boost/fusion/sequence/view/repetitive_view/detail/end_impl.hpp +++ b/include/boost/fusion/view/repetitive_view/detail/end_impl.hpp @@ -9,7 +9,7 @@ #define BOOST_FUSION_REPETITIVE_VIEW_END_IMPL_HPP_INCLUDED #include -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/sequence/view/repetitive_view/detail/next_impl.hpp b/include/boost/fusion/view/repetitive_view/detail/next_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/view/repetitive_view/detail/next_impl.hpp rename to include/boost/fusion/view/repetitive_view/detail/next_impl.hpp diff --git a/include/boost/fusion/sequence/view/repetitive_view/detail/value_of_impl.hpp b/include/boost/fusion/view/repetitive_view/detail/value_of_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/view/repetitive_view/detail/value_of_impl.hpp rename to include/boost/fusion/view/repetitive_view/detail/value_of_impl.hpp diff --git a/include/boost/fusion/sequence/view/repetitive_view/repetitive_view.hpp b/include/boost/fusion/view/repetitive_view/repetitive_view.hpp similarity index 90% rename from include/boost/fusion/sequence/view/repetitive_view/repetitive_view.hpp rename to include/boost/fusion/view/repetitive_view/repetitive_view.hpp index 2e06fd80..050affb1 100644 --- a/include/boost/fusion/sequence/view/repetitive_view/repetitive_view.hpp +++ b/include/boost/fusion/view/repetitive_view/repetitive_view.hpp @@ -14,8 +14,8 @@ #include #include -#include -#include +#include +#include namespace boost { namespace fusion diff --git a/include/boost/fusion/sequence/view/repetitive_view/repetitive_view_fwd.hpp b/include/boost/fusion/view/repetitive_view/repetitive_view_fwd.hpp similarity index 100% rename from include/boost/fusion/sequence/view/repetitive_view/repetitive_view_fwd.hpp rename to include/boost/fusion/view/repetitive_view/repetitive_view_fwd.hpp diff --git a/include/boost/fusion/sequence/view/repetitive_view/repetitive_view_iterator.hpp b/include/boost/fusion/view/repetitive_view/repetitive_view_iterator.hpp similarity index 88% rename from include/boost/fusion/sequence/view/repetitive_view/repetitive_view_iterator.hpp rename to include/boost/fusion/view/repetitive_view/repetitive_view_iterator.hpp index 7b9b17ce..b51d60b4 100644 --- a/include/boost/fusion/sequence/view/repetitive_view/repetitive_view_iterator.hpp +++ b/include/boost/fusion/view/repetitive_view/repetitive_view_iterator.hpp @@ -14,9 +14,9 @@ #include #include #include -#include -#include -#include +#include +#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/sequence/view/reverse_view.hpp b/include/boost/fusion/view/reverse_view.hpp similarity index 77% rename from include/boost/fusion/sequence/view/reverse_view.hpp rename to include/boost/fusion/view/reverse_view.hpp index 6aa499e3..634b398c 100644 --- a/include/boost/fusion/sequence/view/reverse_view.hpp +++ b/include/boost/fusion/view/reverse_view.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_SEQUENCE_VIEW_REVERSE_VIEW_10022005_0612) #define FUSION_SEQUENCE_VIEW_REVERSE_VIEW_10022005_0612 -#include -#include +#include +#include #endif diff --git a/include/boost/fusion/sequence/view/reverse_view/detail/advance_impl.hpp b/include/boost/fusion/view/reverse_view/detail/advance_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/view/reverse_view/detail/advance_impl.hpp rename to include/boost/fusion/view/reverse_view/detail/advance_impl.hpp diff --git a/include/boost/fusion/sequence/view/reverse_view/detail/begin_impl.hpp b/include/boost/fusion/view/reverse_view/detail/begin_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/view/reverse_view/detail/begin_impl.hpp rename to include/boost/fusion/view/reverse_view/detail/begin_impl.hpp diff --git a/include/boost/fusion/sequence/view/reverse_view/detail/deref_impl.hpp b/include/boost/fusion/view/reverse_view/detail/deref_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/view/reverse_view/detail/deref_impl.hpp rename to include/boost/fusion/view/reverse_view/detail/deref_impl.hpp diff --git a/include/boost/fusion/sequence/view/reverse_view/detail/distance_impl.hpp b/include/boost/fusion/view/reverse_view/detail/distance_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/view/reverse_view/detail/distance_impl.hpp rename to include/boost/fusion/view/reverse_view/detail/distance_impl.hpp diff --git a/include/boost/fusion/sequence/view/reverse_view/detail/end_impl.hpp b/include/boost/fusion/view/reverse_view/detail/end_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/view/reverse_view/detail/end_impl.hpp rename to include/boost/fusion/view/reverse_view/detail/end_impl.hpp diff --git a/include/boost/fusion/sequence/view/reverse_view/detail/next_impl.hpp b/include/boost/fusion/view/reverse_view/detail/next_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/view/reverse_view/detail/next_impl.hpp rename to include/boost/fusion/view/reverse_view/detail/next_impl.hpp diff --git a/include/boost/fusion/sequence/view/reverse_view/detail/prior_impl.hpp b/include/boost/fusion/view/reverse_view/detail/prior_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/view/reverse_view/detail/prior_impl.hpp rename to include/boost/fusion/view/reverse_view/detail/prior_impl.hpp diff --git a/include/boost/fusion/sequence/view/reverse_view/detail/value_of_impl.hpp b/include/boost/fusion/view/reverse_view/detail/value_of_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/view/reverse_view/detail/value_of_impl.hpp rename to include/boost/fusion/view/reverse_view/detail/value_of_impl.hpp diff --git a/include/boost/fusion/sequence/view/reverse_view/reverse_view.hpp b/include/boost/fusion/view/reverse_view/reverse_view.hpp similarity index 90% rename from include/boost/fusion/sequence/view/reverse_view/reverse_view.hpp rename to include/boost/fusion/view/reverse_view/reverse_view.hpp index 6e6f4c09..c939f7ce 100644 --- a/include/boost/fusion/sequence/view/reverse_view/reverse_view.hpp +++ b/include/boost/fusion/view/reverse_view/reverse_view.hpp @@ -10,9 +10,9 @@ #include #include #include -#include -#include -#include +#include +#include +#include #include #include #include diff --git a/include/boost/fusion/sequence/view/reverse_view/reverse_view_iterator.hpp b/include/boost/fusion/view/reverse_view/reverse_view_iterator.hpp similarity index 76% rename from include/boost/fusion/sequence/view/reverse_view/reverse_view_iterator.hpp rename to include/boost/fusion/view/reverse_view/reverse_view_iterator.hpp index 54f75070..5b981036 100644 --- a/include/boost/fusion/sequence/view/reverse_view/reverse_view_iterator.hpp +++ b/include/boost/fusion/view/reverse_view/reverse_view_iterator.hpp @@ -11,12 +11,12 @@ #include #include #include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include #include #include diff --git a/include/boost/fusion/sequence/view/single_view.hpp b/include/boost/fusion/view/single_view.hpp similarity index 76% rename from include/boost/fusion/sequence/view/single_view.hpp rename to include/boost/fusion/view/single_view.hpp index e4a59476..3640fae8 100644 --- a/include/boost/fusion/sequence/view/single_view.hpp +++ b/include/boost/fusion/view/single_view.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_SINGLE_VIEW_03192006_2216) #define FUSION_SINGLE_VIEW_03192006_2216 -#include -#include +#include +#include #endif diff --git a/include/boost/fusion/sequence/view/single_view/detail/begin_impl.hpp b/include/boost/fusion/view/single_view/detail/begin_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/view/single_view/detail/begin_impl.hpp rename to include/boost/fusion/view/single_view/detail/begin_impl.hpp diff --git a/include/boost/fusion/sequence/view/single_view/detail/deref_impl.hpp b/include/boost/fusion/view/single_view/detail/deref_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/view/single_view/detail/deref_impl.hpp rename to include/boost/fusion/view/single_view/detail/deref_impl.hpp diff --git a/include/boost/fusion/sequence/view/single_view/detail/end_impl.hpp b/include/boost/fusion/view/single_view/detail/end_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/view/single_view/detail/end_impl.hpp rename to include/boost/fusion/view/single_view/detail/end_impl.hpp diff --git a/include/boost/fusion/sequence/view/single_view/detail/next_impl.hpp b/include/boost/fusion/view/single_view/detail/next_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/view/single_view/detail/next_impl.hpp rename to include/boost/fusion/view/single_view/detail/next_impl.hpp diff --git a/include/boost/fusion/sequence/view/single_view/detail/value_of_impl.hpp b/include/boost/fusion/view/single_view/detail/value_of_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/view/single_view/detail/value_of_impl.hpp rename to include/boost/fusion/view/single_view/detail/value_of_impl.hpp diff --git a/include/boost/fusion/sequence/view/single_view/single_view.hpp b/include/boost/fusion/view/single_view/single_view.hpp similarity index 87% rename from include/boost/fusion/sequence/view/single_view/single_view.hpp rename to include/boost/fusion/view/single_view/single_view.hpp index 31b68e20..7c10afe6 100644 --- a/include/boost/fusion/sequence/view/single_view/single_view.hpp +++ b/include/boost/fusion/view/single_view/single_view.hpp @@ -10,9 +10,9 @@ #include #include #include -#include -#include -#include +#include +#include +#include #include #include diff --git a/include/boost/fusion/sequence/view/single_view/single_view_iterator.hpp b/include/boost/fusion/view/single_view/single_view_iterator.hpp similarity index 86% rename from include/boost/fusion/sequence/view/single_view/single_view_iterator.hpp rename to include/boost/fusion/view/single_view/single_view_iterator.hpp index 68155d37..1a44bb15 100644 --- a/include/boost/fusion/sequence/view/single_view/single_view_iterator.hpp +++ b/include/boost/fusion/view/single_view/single_view_iterator.hpp @@ -9,9 +9,9 @@ #include #include -#include -#include -#include +#include +#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/sequence/view/transform_view.hpp b/include/boost/fusion/view/transform_view.hpp similarity index 76% rename from include/boost/fusion/sequence/view/transform_view.hpp rename to include/boost/fusion/view/transform_view.hpp index 714f8784..744d063c 100644 --- a/include/boost/fusion/sequence/view/transform_view.hpp +++ b/include/boost/fusion/view/transform_view.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_SEQUENCE_VIEW_TRANSFORM_VIEW_10022005_0612) #define FUSION_SEQUENCE_VIEW_TRANSFORM_VIEW_10022005_0612 -#include -#include +#include +#include #endif diff --git a/include/boost/fusion/sequence/view/transform_view/detail/advance_impl.hpp b/include/boost/fusion/view/transform_view/detail/advance_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/view/transform_view/detail/advance_impl.hpp rename to include/boost/fusion/view/transform_view/detail/advance_impl.hpp diff --git a/include/boost/fusion/sequence/view/transform_view/detail/apply_transform_result.hpp b/include/boost/fusion/view/transform_view/detail/apply_transform_result.hpp similarity index 100% rename from include/boost/fusion/sequence/view/transform_view/detail/apply_transform_result.hpp rename to include/boost/fusion/view/transform_view/detail/apply_transform_result.hpp diff --git a/include/boost/fusion/sequence/view/transform_view/detail/at_impl.hpp b/include/boost/fusion/view/transform_view/detail/at_impl.hpp similarity index 96% rename from include/boost/fusion/sequence/view/transform_view/detail/at_impl.hpp rename to include/boost/fusion/view/transform_view/detail/at_impl.hpp index eb48cfa0..620d96fe 100644 --- a/include/boost/fusion/sequence/view/transform_view/detail/at_impl.hpp +++ b/include/boost/fusion/view/transform_view/detail/at_impl.hpp @@ -9,7 +9,7 @@ #define BOOST_FUSION_AT_IMPL_20061029_1946 #include -#include +#include #include namespace boost { namespace fusion { diff --git a/include/boost/fusion/sequence/view/transform_view/detail/begin_impl.hpp b/include/boost/fusion/view/transform_view/detail/begin_impl.hpp similarity index 96% rename from include/boost/fusion/sequence/view/transform_view/detail/begin_impl.hpp rename to include/boost/fusion/view/transform_view/detail/begin_impl.hpp index b5f4bc29..75b04382 100644 --- a/include/boost/fusion/sequence/view/transform_view/detail/begin_impl.hpp +++ b/include/boost/fusion/view/transform_view/detail/begin_impl.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_BEGIN_IMPL_07162005_1031) #define FUSION_BEGIN_IMPL_07162005_1031 -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/sequence/view/transform_view/detail/deref_impl.hpp b/include/boost/fusion/view/transform_view/detail/deref_impl.hpp similarity index 96% rename from include/boost/fusion/sequence/view/transform_view/detail/deref_impl.hpp rename to include/boost/fusion/view/transform_view/detail/deref_impl.hpp index d466cfd3..3849f80a 100644 --- a/include/boost/fusion/sequence/view/transform_view/detail/deref_impl.hpp +++ b/include/boost/fusion/view/transform_view/detail/deref_impl.hpp @@ -10,7 +10,7 @@ #include #include #include -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/sequence/view/transform_view/detail/distance_impl.hpp b/include/boost/fusion/view/transform_view/detail/distance_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/view/transform_view/detail/distance_impl.hpp rename to include/boost/fusion/view/transform_view/detail/distance_impl.hpp diff --git a/include/boost/fusion/sequence/view/transform_view/detail/end_impl.hpp b/include/boost/fusion/view/transform_view/detail/end_impl.hpp similarity index 96% rename from include/boost/fusion/sequence/view/transform_view/detail/end_impl.hpp rename to include/boost/fusion/view/transform_view/detail/end_impl.hpp index a689d933..465a2cbe 100644 --- a/include/boost/fusion/sequence/view/transform_view/detail/end_impl.hpp +++ b/include/boost/fusion/view/transform_view/detail/end_impl.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_END_IMPL_07162005_1028) #define FUSION_END_IMPL_07162005_1028 -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/sequence/view/transform_view/detail/equal_to_impl.hpp b/include/boost/fusion/view/transform_view/detail/equal_to_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/view/transform_view/detail/equal_to_impl.hpp rename to include/boost/fusion/view/transform_view/detail/equal_to_impl.hpp diff --git a/include/boost/fusion/sequence/view/transform_view/detail/next_impl.hpp b/include/boost/fusion/view/transform_view/detail/next_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/view/transform_view/detail/next_impl.hpp rename to include/boost/fusion/view/transform_view/detail/next_impl.hpp diff --git a/include/boost/fusion/sequence/view/transform_view/detail/prior_impl.hpp b/include/boost/fusion/view/transform_view/detail/prior_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/view/transform_view/detail/prior_impl.hpp rename to include/boost/fusion/view/transform_view/detail/prior_impl.hpp diff --git a/include/boost/fusion/sequence/view/transform_view/detail/value_at_impl.hpp b/include/boost/fusion/view/transform_view/detail/value_at_impl.hpp similarity index 95% rename from include/boost/fusion/sequence/view/transform_view/detail/value_at_impl.hpp rename to include/boost/fusion/view/transform_view/detail/value_at_impl.hpp index cc5bbf46..cb581583 100644 --- a/include/boost/fusion/sequence/view/transform_view/detail/value_at_impl.hpp +++ b/include/boost/fusion/view/transform_view/detail/value_at_impl.hpp @@ -9,7 +9,7 @@ #define BOOST_FUSION_VALUE_AT_IMPL_20061101_0745 #include -#include +#include #include namespace boost { namespace fusion { diff --git a/include/boost/fusion/sequence/view/transform_view/detail/value_of_impl.hpp b/include/boost/fusion/view/transform_view/detail/value_of_impl.hpp similarity index 95% rename from include/boost/fusion/sequence/view/transform_view/detail/value_of_impl.hpp rename to include/boost/fusion/view/transform_view/detail/value_of_impl.hpp index 28e9942c..08bbf209 100644 --- a/include/boost/fusion/sequence/view/transform_view/detail/value_of_impl.hpp +++ b/include/boost/fusion/view/transform_view/detail/value_of_impl.hpp @@ -9,7 +9,7 @@ #include #include -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/sequence/view/transform_view/transform_view.hpp b/include/boost/fusion/view/transform_view/transform_view.hpp similarity index 89% rename from include/boost/fusion/sequence/view/transform_view/transform_view.hpp rename to include/boost/fusion/view/transform_view/transform_view.hpp index 853bdf61..27ddc273 100644 --- a/include/boost/fusion/sequence/view/transform_view/transform_view.hpp +++ b/include/boost/fusion/view/transform_view/transform_view.hpp @@ -11,12 +11,12 @@ #include #include #include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include #include #include #include diff --git a/include/boost/fusion/sequence/view/transform_view/transform_view_fwd.hpp b/include/boost/fusion/view/transform_view/transform_view_fwd.hpp similarity index 100% rename from include/boost/fusion/sequence/view/transform_view/transform_view_fwd.hpp rename to include/boost/fusion/view/transform_view/transform_view_fwd.hpp diff --git a/include/boost/fusion/sequence/view/transform_view/transform_view_iterator.hpp b/include/boost/fusion/view/transform_view/transform_view_iterator.hpp similarity index 80% rename from include/boost/fusion/sequence/view/transform_view/transform_view_iterator.hpp rename to include/boost/fusion/view/transform_view/transform_view_iterator.hpp index 49eb0c42..ce0e8164 100644 --- a/include/boost/fusion/sequence/view/transform_view/transform_view_iterator.hpp +++ b/include/boost/fusion/view/transform_view/transform_view_iterator.hpp @@ -11,13 +11,13 @@ #include #include #include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/sequence/view/zip_view.hpp b/include/boost/fusion/view/zip_view.hpp similarity index 79% rename from include/boost/fusion/sequence/view/zip_view.hpp rename to include/boost/fusion/view/zip_view.hpp index 74f71421..f7a16ea0 100644 --- a/include/boost/fusion/sequence/view/zip_view.hpp +++ b/include/boost/fusion/view/zip_view.hpp @@ -8,7 +8,7 @@ #if !defined(FUSION_ZIP_VIEW_23012006_0811) #define FUSION_ZIP_VIEW_23012006_0811 -#include -#include +#include +#include #endif diff --git a/include/boost/fusion/sequence/view/zip_view/detail/advance_impl.hpp b/include/boost/fusion/view/zip_view/detail/advance_impl.hpp similarity index 96% rename from include/boost/fusion/sequence/view/zip_view/detail/advance_impl.hpp rename to include/boost/fusion/view/zip_view/detail/advance_impl.hpp index 36da0444..9aa00deb 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/advance_impl.hpp +++ b/include/boost/fusion/view/zip_view/detail/advance_impl.hpp @@ -8,7 +8,7 @@ #if !defined(FUSION_ADVANCE_IMPL_20061024_2021) #define FUSION_ADVANCE_IMPL_20061024_2021 -#include +#include #include #include #include diff --git a/include/boost/fusion/sequence/view/zip_view/detail/at_impl.hpp b/include/boost/fusion/view/zip_view/detail/at_impl.hpp similarity index 98% rename from include/boost/fusion/sequence/view/zip_view/detail/at_impl.hpp rename to include/boost/fusion/view/zip_view/detail/at_impl.hpp index d90b5d05..45589777 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/at_impl.hpp +++ b/include/boost/fusion/view/zip_view/detail/at_impl.hpp @@ -8,7 +8,7 @@ #if !defined(FUSION_AT_IMPL_20060124_1933) #define FUSION_AT_IMPL_20060124_1933 -#include +#include #include #include #include diff --git a/include/boost/fusion/sequence/view/zip_view/detail/begin_impl.hpp b/include/boost/fusion/view/zip_view/detail/begin_impl.hpp similarity index 97% rename from include/boost/fusion/sequence/view/zip_view/detail/begin_impl.hpp rename to include/boost/fusion/view/zip_view/detail/begin_impl.hpp index c98eb7fc..674dea38 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/begin_impl.hpp +++ b/include/boost/fusion/view/zip_view/detail/begin_impl.hpp @@ -9,7 +9,7 @@ #define FUSION_BEGIN_IMPL_20060123_2147 #include -#include +#include #include #include #include diff --git a/include/boost/fusion/sequence/view/zip_view/detail/deref_impl.hpp b/include/boost/fusion/view/zip_view/detail/deref_impl.hpp similarity index 97% rename from include/boost/fusion/sequence/view/zip_view/detail/deref_impl.hpp rename to include/boost/fusion/view/zip_view/detail/deref_impl.hpp index 70b95d55..736ea176 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/deref_impl.hpp +++ b/include/boost/fusion/view/zip_view/detail/deref_impl.hpp @@ -8,7 +8,7 @@ #if !defined(FUSION_DEREF_IMPL_20061024_1959) #define FUSION_DEREF_IMPL_20061024_1959 -#include +#include #include #include #include diff --git a/include/boost/fusion/sequence/view/zip_view/detail/distance_impl.hpp b/include/boost/fusion/view/zip_view/detail/distance_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/view/zip_view/detail/distance_impl.hpp rename to include/boost/fusion/view/zip_view/detail/distance_impl.hpp diff --git a/include/boost/fusion/sequence/view/zip_view/detail/end_impl.hpp b/include/boost/fusion/view/zip_view/detail/end_impl.hpp similarity index 97% rename from include/boost/fusion/sequence/view/zip_view/detail/end_impl.hpp rename to include/boost/fusion/view/zip_view/detail/end_impl.hpp index a19b5c1f..fa9c31db 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/end_impl.hpp +++ b/include/boost/fusion/view/zip_view/detail/end_impl.hpp @@ -8,7 +8,7 @@ #if !defined(FUSION_END_IMPL_20060123_2208) #define FUSION_END_IMPL_20060123_2208 -#include +#include #include #include #include diff --git a/include/boost/fusion/sequence/view/zip_view/detail/equal_to_impl.hpp b/include/boost/fusion/view/zip_view/detail/equal_to_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/view/zip_view/detail/equal_to_impl.hpp rename to include/boost/fusion/view/zip_view/detail/equal_to_impl.hpp diff --git a/include/boost/fusion/sequence/view/zip_view/detail/next_impl.hpp b/include/boost/fusion/view/zip_view/detail/next_impl.hpp similarity index 97% rename from include/boost/fusion/sequence/view/zip_view/detail/next_impl.hpp rename to include/boost/fusion/view/zip_view/detail/next_impl.hpp index cae95eec..1c9c0245 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/next_impl.hpp +++ b/include/boost/fusion/view/zip_view/detail/next_impl.hpp @@ -8,7 +8,7 @@ #if !defined(FUSION_NEXT_IMPL_20060124_2006) #define FUSION_NEXT_IMPL_20060124_2006 -#include +#include #include #include #include diff --git a/include/boost/fusion/sequence/view/zip_view/detail/prior_impl.hpp b/include/boost/fusion/view/zip_view/detail/prior_impl.hpp similarity index 97% rename from include/boost/fusion/sequence/view/zip_view/detail/prior_impl.hpp rename to include/boost/fusion/view/zip_view/detail/prior_impl.hpp index 787eb4f9..49b99397 100644 --- a/include/boost/fusion/sequence/view/zip_view/detail/prior_impl.hpp +++ b/include/boost/fusion/view/zip_view/detail/prior_impl.hpp @@ -8,7 +8,7 @@ #if !defined(FUSION_PRIOR_IMPL_20060124_2006) #define FUSION_PRIOR_IMPL_20060124_2006 -#include +#include #include #include #include diff --git a/include/boost/fusion/sequence/view/zip_view/detail/size_impl.hpp b/include/boost/fusion/view/zip_view/detail/size_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/view/zip_view/detail/size_impl.hpp rename to include/boost/fusion/view/zip_view/detail/size_impl.hpp diff --git a/include/boost/fusion/sequence/view/zip_view/detail/strictest_traversal.hpp b/include/boost/fusion/view/zip_view/detail/strictest_traversal.hpp similarity index 100% rename from include/boost/fusion/sequence/view/zip_view/detail/strictest_traversal.hpp rename to include/boost/fusion/view/zip_view/detail/strictest_traversal.hpp diff --git a/include/boost/fusion/sequence/view/zip_view/detail/value_at_impl.hpp b/include/boost/fusion/view/zip_view/detail/value_at_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/view/zip_view/detail/value_at_impl.hpp rename to include/boost/fusion/view/zip_view/detail/value_at_impl.hpp diff --git a/include/boost/fusion/sequence/view/zip_view/detail/value_of_impl.hpp b/include/boost/fusion/view/zip_view/detail/value_of_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/view/zip_view/detail/value_of_impl.hpp rename to include/boost/fusion/view/zip_view/detail/value_of_impl.hpp diff --git a/include/boost/fusion/sequence/view/zip_view/zip_view.hpp b/include/boost/fusion/view/zip_view/zip_view.hpp similarity index 90% rename from include/boost/fusion/sequence/view/zip_view/zip_view.hpp rename to include/boost/fusion/view/zip_view/zip_view.hpp index 563d853f..2a1e830c 100644 --- a/include/boost/fusion/sequence/view/zip_view/zip_view.hpp +++ b/include/boost/fusion/view/zip_view/zip_view.hpp @@ -11,12 +11,12 @@ #include #include #include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include #include #include #include diff --git a/include/boost/fusion/sequence/view/zip_view/zip_view_iterator.hpp b/include/boost/fusion/view/zip_view/zip_view_iterator.hpp similarity index 68% rename from include/boost/fusion/sequence/view/zip_view/zip_view_iterator.hpp rename to include/boost/fusion/view/zip_view/zip_view_iterator.hpp index d4ebcc58..ef93e2c9 100644 --- a/include/boost/fusion/sequence/view/zip_view/zip_view_iterator.hpp +++ b/include/boost/fusion/view/zip_view/zip_view_iterator.hpp @@ -8,15 +8,15 @@ #if !defined(FUSION_ZIP_VIEW_ITERATOR_23012006_0814) #define FUSION_ZIP_VIEW_ITERATOR_23012006_0814 -#include +#include #include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include #include diff --git a/include/boost/fusion/sequence/view/zip_view/zip_view_iterator_fwd.hpp b/include/boost/fusion/view/zip_view/zip_view_iterator_fwd.hpp similarity index 89% rename from include/boost/fusion/sequence/view/zip_view/zip_view_iterator_fwd.hpp rename to include/boost/fusion/view/zip_view/zip_view_iterator_fwd.hpp index 6e8bf3f2..6edf4d68 100644 --- a/include/boost/fusion/sequence/view/zip_view/zip_view_iterator_fwd.hpp +++ b/include/boost/fusion/view/zip_view/zip_view_iterator_fwd.hpp @@ -8,7 +8,7 @@ #if !defined(FUSION_ZIP_VIEW_ITERATOR_FWD) #define FUSION_ZIP_VIEW_ITERATOR_FWD -#include +#include namespace boost { namespace fusion { From d0d540064da47ee63eafae66997438686a2e93d6 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Sat, 20 Oct 2007 11:49:17 +0000 Subject: [PATCH 229/234] phase3: refactoring for v2.1 [SVN r40210] --- example/cookbook/do_the_bind.cpp | 2 +- example/cookbook/fill_em_up.cpp | 4 ++-- example/performance/accumulate.cpp | 4 ++-- example/performance/functional.cpp | 4 ++-- example/performance/inner_product.cpp | 4 ++-- example/performance/inner_product2.cpp | 4 ++-- example/performance/sequence_efficiency.cpp | 4 ++-- example/performance/zip_efficiency.cpp | 2 +- test/algorithm/all.cpp | 4 ++-- test/algorithm/any.cpp | 4 ++-- test/algorithm/clear.cpp | 2 +- test/algorithm/count.cpp | 4 ++-- test/algorithm/count_if.cpp | 4 ++-- test/algorithm/erase.cpp | 6 +++--- test/algorithm/erase_key.cpp | 4 ++-- test/algorithm/ext_/find_if_s.cpp | 6 +++--- test/algorithm/ext_/for_each_s.cpp | 6 +++--- test/algorithm/filter.cpp | 4 ++-- test/algorithm/filter_if.cpp | 4 ++-- test/algorithm/find.cpp | 8 ++++---- test/algorithm/find_if.cpp | 4 ++-- test/algorithm/fold.cpp | 4 ++-- test/algorithm/for_each.cpp | 4 ++-- test/algorithm/insert.cpp | 4 ++-- test/algorithm/insert_range.cpp | 4 ++-- test/algorithm/join.cpp | 2 +- test/algorithm/none.cpp | 4 ++-- test/algorithm/pop_back.cpp | 4 ++-- test/algorithm/pop_front.cpp | 4 ++-- test/algorithm/push_back.cpp | 4 ++-- test/algorithm/push_front.cpp | 4 ++-- test/algorithm/remove.cpp | 4 ++-- test/algorithm/remove_if.cpp | 4 ++-- test/algorithm/replace.cpp | 4 ++-- test/algorithm/replace_if.cpp | 6 +++--- test/algorithm/reverse.cpp | 4 ++-- test/algorithm/transform.cpp | 4 ++-- test/algorithm/zip.cpp | 2 +- test/algorithm/zip2.cpp | 2 +- test/algorithm/zip_ignore.cpp | 2 +- test/functional/fused.cpp | 2 +- test/functional/fused_function_object.cpp | 2 +- test/functional/fused_procedure.cpp | 2 +- test/functional/invoke.cpp | 8 ++++---- test/functional/invoke_function_object.cpp | 8 ++++---- test/functional/invoke_procedure.cpp | 8 ++++---- test/functional/make_fused.cpp | 2 +- test/functional/make_fused_function_object.cpp | 2 +- test/functional/make_fused_procedure.cpp | 2 +- test/sequence/adapt_assoc_struct.cpp | 6 +++--- test/sequence/adapt_struct.cpp | 6 +++--- test/sequence/array.cpp | 2 +- test/sequence/as_list.cpp | 4 ++-- test/sequence/as_map.cpp | 4 ++-- test/sequence/as_set.cpp | 4 ++-- test/sequence/as_vector.cpp | 4 ++-- test/sequence/back_extended_deque.cpp | 7 ++++--- test/sequence/boost_tuple.cpp | 6 +++--- test/sequence/cons.cpp | 4 ++-- test/sequence/construction.hpp | 2 +- test/sequence/copy.hpp | 2 +- test/sequence/deduce_sequence.cpp | 2 +- test/sequence/deque_comparison.cpp | 2 +- test/sequence/deque_construction.cpp | 2 +- test/sequence/deque_copy.cpp | 2 +- test/sequence/deque_iterator.cpp | 2 +- test/sequence/deque_make.cpp | 2 +- test/sequence/deque_misc.cpp | 4 ++-- test/sequence/deque_mutate.cpp | 2 +- test/sequence/deque_tie.cpp | 2 +- test/sequence/deque_value_at.cpp | 2 +- test/sequence/ext_/iterator_range_s.cpp | 8 ++++---- test/sequence/filter_view.cpp | 8 ++++---- test/sequence/front_extended_deque.cpp | 7 ++++--- test/sequence/io.cpp | 2 +- test/sequence/iterator_range.cpp | 4 ++-- test/sequence/joint_view.cpp | 4 ++-- test/sequence/list_comparison.cpp | 2 +- test/sequence/list_construction.cpp | 2 +- test/sequence/list_copy.cpp | 2 +- test/sequence/list_iterator.cpp | 2 +- test/sequence/list_make.cpp | 2 +- test/sequence/list_misc.cpp | 5 ++--- test/sequence/list_mutate.cpp | 2 +- test/sequence/list_tie.cpp | 2 +- test/sequence/list_value_at.cpp | 2 +- test/sequence/make_list.cpp | 2 +- test/sequence/make_vector.cpp | 2 +- test/sequence/map.cpp | 2 +- test/sequence/misc.hpp | 11 ++++++----- test/sequence/repetitive_view.cpp | 6 +++--- test/sequence/reverse_view.cpp | 6 +++--- test/sequence/set.cpp | 2 +- test/sequence/single_view.cpp | 2 +- test/sequence/std_pair.cpp | 6 +++--- test/sequence/swap.cpp | 2 +- test/sequence/transform_view.cpp | 6 +++--- test/sequence/tuple_comparison.cpp | 2 +- test/sequence/tuple_construction.cpp | 2 +- test/sequence/tuple_misc.cpp | 2 +- test/sequence/variant.cpp | 2 +- test/sequence/vector_comparison.cpp | 2 +- test/sequence/vector_construction.cpp | 2 +- test/sequence/vector_copy.cpp | 2 +- test/sequence/vector_iterator.cpp | 4 ++-- test/sequence/vector_make.cpp | 2 +- test/sequence/vector_misc.cpp | 4 ++-- test/sequence/vector_mutate.cpp | 2 +- test/sequence/vector_n.cpp | 12 ++++++------ test/sequence/vector_tie.cpp | 2 +- test/sequence/vector_value_at.cpp | 2 +- test/sequence/zip_view.cpp | 8 ++++---- test/sequence/zip_view2.cpp | 8 ++++---- test/sequence/zip_view_ignore.cpp | 4 ++-- 114 files changed, 216 insertions(+), 214 deletions(-) diff --git a/example/cookbook/do_the_bind.cpp b/example/cookbook/do_the_bind.cpp index e63556a9..33772383 100644 --- a/example/cookbook/do_the_bind.cpp +++ b/example/cookbook/do_the_bind.cpp @@ -28,7 +28,7 @@ #include #include -#include +#include #include #include #include diff --git a/example/cookbook/fill_em_up.cpp b/example/cookbook/fill_em_up.cpp index c77c7b68..69576612 100644 --- a/example/cookbook/fill_em_up.cpp +++ b/example/cookbook/fill_em_up.cpp @@ -24,8 +24,8 @@ ==============================================================================*/ // We'll use these containers as examples -#include -#include +#include +#include // For doing I/O #include diff --git a/example/performance/accumulate.cpp b/example/performance/accumulate.cpp index 7d8f0a76..6e3d9f80 100644 --- a/example/performance/accumulate.cpp +++ b/example/performance/accumulate.cpp @@ -10,10 +10,10 @@ #include #include -#include +#include #include #include -#include +#include #include #include diff --git a/example/performance/functional.cpp b/example/performance/functional.cpp index 228586eb..cb4c2ab9 100644 --- a/example/performance/functional.cpp +++ b/example/performance/functional.cpp @@ -7,8 +7,8 @@ http://www.boost.org/LICENSE_1_0.txt). ==============================================================================*/ -#include -#include +#include +#include #include #include #include diff --git a/example/performance/inner_product.cpp b/example/performance/inner_product.cpp index 8257921d..b84eabde 100644 --- a/example/performance/inner_product.cpp +++ b/example/performance/inner_product.cpp @@ -10,10 +10,10 @@ #include #include -#include +#include #include #include -#include +#include #include #include diff --git a/example/performance/inner_product2.cpp b/example/performance/inner_product2.cpp index b831b219..9bab438e 100644 --- a/example/performance/inner_product2.cpp +++ b/example/performance/inner_product2.cpp @@ -10,10 +10,10 @@ #include #include -#include +#include #include #include -#include +#include #include #include diff --git a/example/performance/sequence_efficiency.cpp b/example/performance/sequence_efficiency.cpp index 6a24f74f..9e1d34c8 100644 --- a/example/performance/sequence_efficiency.cpp +++ b/example/performance/sequence_efficiency.cpp @@ -10,8 +10,8 @@ #define FUSION_MAX_VECTOR_SIZE 30 #include -#include -#include +#include +#include #include #include diff --git a/example/performance/zip_efficiency.cpp b/example/performance/zip_efficiency.cpp index c8132c74..36ded283 100644 --- a/example/performance/zip_efficiency.cpp +++ b/example/performance/zip_efficiency.cpp @@ -10,7 +10,7 @@ #include #include -#include +#include #include #include #include diff --git a/test/algorithm/all.cpp b/test/algorithm/all.cpp index 983059c8..47c65e50 100644 --- a/test/algorithm/all.cpp +++ b/test/algorithm/all.cpp @@ -6,8 +6,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/algorithm/any.cpp b/test/algorithm/any.cpp index 71685ef2..69f114f8 100644 --- a/test/algorithm/any.cpp +++ b/test/algorithm/any.cpp @@ -7,8 +7,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/algorithm/clear.cpp b/test/algorithm/clear.cpp index 309f3e28..3ab42030 100644 --- a/test/algorithm/clear.cpp +++ b/test/algorithm/clear.cpp @@ -5,7 +5,7 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include +#include #include #include #include diff --git a/test/algorithm/count.cpp b/test/algorithm/count.cpp index ae6ccde6..e87ff9d8 100644 --- a/test/algorithm/count.cpp +++ b/test/algorithm/count.cpp @@ -6,8 +6,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/algorithm/count_if.cpp b/test/algorithm/count_if.cpp index 1a8c02e5..d67e464c 100644 --- a/test/algorithm/count_if.cpp +++ b/test/algorithm/count_if.cpp @@ -6,8 +6,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/algorithm/erase.cpp b/test/algorithm/erase.cpp index efe7dcfe..44f641f3 100644 --- a/test/algorithm/erase.cpp +++ b/test/algorithm/erase.cpp @@ -5,9 +5,9 @@ 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 diff --git a/test/algorithm/erase_key.cpp b/test/algorithm/erase_key.cpp index d940714c..c3a2f2f0 100644 --- a/test/algorithm/erase_key.cpp +++ b/test/algorithm/erase_key.cpp @@ -5,9 +5,9 @@ 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 diff --git a/test/algorithm/ext_/find_if_s.cpp b/test/algorithm/ext_/find_if_s.cpp index d57876e2..f3b06d2b 100755 --- a/test/algorithm/ext_/find_if_s.cpp +++ b/test/algorithm/ext_/find_if_s.cpp @@ -5,11 +5,11 @@ 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 diff --git a/test/algorithm/ext_/for_each_s.cpp b/test/algorithm/ext_/for_each_s.cpp index 6758872c..bf4e2bbd 100755 --- a/test/algorithm/ext_/for_each_s.cpp +++ b/test/algorithm/ext_/for_each_s.cpp @@ -5,13 +5,13 @@ 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 struct print { diff --git a/test/algorithm/filter.cpp b/test/algorithm/filter.cpp index 21c93ed0..4c21d03a 100644 --- a/test/algorithm/filter.cpp +++ b/test/algorithm/filter.cpp @@ -6,8 +6,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/algorithm/filter_if.cpp b/test/algorithm/filter_if.cpp index 681d2bbd..e1bbb230 100644 --- a/test/algorithm/filter_if.cpp +++ b/test/algorithm/filter_if.cpp @@ -5,8 +5,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/algorithm/find.cpp b/test/algorithm/find.cpp index 1b913a73..25a61e94 100644 --- a/test/algorithm/find.cpp +++ b/test/algorithm/find.cpp @@ -5,10 +5,10 @@ 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 diff --git a/test/algorithm/find_if.cpp b/test/algorithm/find_if.cpp index 93c694cb..2b402b9f 100644 --- a/test/algorithm/find_if.cpp +++ b/test/algorithm/find_if.cpp @@ -5,8 +5,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/algorithm/fold.cpp b/test/algorithm/fold.cpp index 933eadb3..55641677 100644 --- a/test/algorithm/fold.cpp +++ b/test/algorithm/fold.cpp @@ -6,8 +6,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/algorithm/for_each.cpp b/test/algorithm/for_each.cpp index 18ebbda9..a0054fad 100644 --- a/test/algorithm/for_each.cpp +++ b/test/algorithm/for_each.cpp @@ -5,8 +5,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/algorithm/insert.cpp b/test/algorithm/insert.cpp index 8780636f..acbcf9a3 100644 --- a/test/algorithm/insert.cpp +++ b/test/algorithm/insert.cpp @@ -5,8 +5,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/algorithm/insert_range.cpp b/test/algorithm/insert_range.cpp index 0aef1e81..4cd3ae41 100644 --- a/test/algorithm/insert_range.cpp +++ b/test/algorithm/insert_range.cpp @@ -5,8 +5,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/algorithm/join.cpp b/test/algorithm/join.cpp index 39709c50..04341160 100644 --- a/test/algorithm/join.cpp +++ b/test/algorithm/join.cpp @@ -9,7 +9,7 @@ #include #include #include -#include +#include #include int main() diff --git a/test/algorithm/none.cpp b/test/algorithm/none.cpp index 5747494b..ec5676b6 100644 --- a/test/algorithm/none.cpp +++ b/test/algorithm/none.cpp @@ -6,8 +6,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/algorithm/pop_back.cpp b/test/algorithm/pop_back.cpp index 5f9ebaf4..55d4b7fe 100644 --- a/test/algorithm/pop_back.cpp +++ b/test/algorithm/pop_back.cpp @@ -5,8 +5,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/algorithm/pop_front.cpp b/test/algorithm/pop_front.cpp index 8e87a959..c4b797ab 100644 --- a/test/algorithm/pop_front.cpp +++ b/test/algorithm/pop_front.cpp @@ -5,8 +5,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/algorithm/push_back.cpp b/test/algorithm/push_back.cpp index 94e013a3..a15d4401 100644 --- a/test/algorithm/push_back.cpp +++ b/test/algorithm/push_back.cpp @@ -5,8 +5,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/algorithm/push_front.cpp b/test/algorithm/push_front.cpp index dabdbf77..5c9e8fa8 100644 --- a/test/algorithm/push_front.cpp +++ b/test/algorithm/push_front.cpp @@ -5,8 +5,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/algorithm/remove.cpp b/test/algorithm/remove.cpp index a0f20ba0..95f351ef 100644 --- a/test/algorithm/remove.cpp +++ b/test/algorithm/remove.cpp @@ -5,8 +5,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/algorithm/remove_if.cpp b/test/algorithm/remove_if.cpp index ee4ca848..9cef9a3d 100644 --- a/test/algorithm/remove_if.cpp +++ b/test/algorithm/remove_if.cpp @@ -5,8 +5,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/algorithm/replace.cpp b/test/algorithm/replace.cpp index 3ccf13b1..acdb9761 100644 --- a/test/algorithm/replace.cpp +++ b/test/algorithm/replace.cpp @@ -5,8 +5,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/algorithm/replace_if.cpp b/test/algorithm/replace_if.cpp index 01b2df8a..b885976c 100644 --- a/test/algorithm/replace_if.cpp +++ b/test/algorithm/replace_if.cpp @@ -5,9 +5,9 @@ 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 diff --git a/test/algorithm/reverse.cpp b/test/algorithm/reverse.cpp index 598edac0..4cae9b33 100644 --- a/test/algorithm/reverse.cpp +++ b/test/algorithm/reverse.cpp @@ -5,8 +5,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/algorithm/transform.cpp b/test/algorithm/transform.cpp index c7ce3625..1597dfd2 100644 --- a/test/algorithm/transform.cpp +++ b/test/algorithm/transform.cpp @@ -6,8 +6,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/algorithm/zip.cpp b/test/algorithm/zip.cpp index eb60ba17..e4f9bedb 100644 --- a/test/algorithm/zip.cpp +++ b/test/algorithm/zip.cpp @@ -9,7 +9,7 @@ #include #include #include -#include +#include #include int main() diff --git a/test/algorithm/zip2.cpp b/test/algorithm/zip2.cpp index 0823af0e..c8007117 100644 --- a/test/algorithm/zip2.cpp +++ b/test/algorithm/zip2.cpp @@ -8,7 +8,7 @@ #include #include #include -#include +#include #include int main() diff --git a/test/algorithm/zip_ignore.cpp b/test/algorithm/zip_ignore.cpp index cd71ed44..a12b5820 100644 --- a/test/algorithm/zip_ignore.cpp +++ b/test/algorithm/zip_ignore.cpp @@ -6,7 +6,7 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include +#include #include #include #include diff --git a/test/functional/fused.cpp b/test/functional/fused.cpp index 4b960ee0..de974cf8 100644 --- a/test/functional/fused.cpp +++ b/test/functional/fused.cpp @@ -13,7 +13,7 @@ #include #include -#include +#include #include #include diff --git a/test/functional/fused_function_object.cpp b/test/functional/fused_function_object.cpp index 50a1b38b..45fab30f 100644 --- a/test/functional/fused_function_object.cpp +++ b/test/functional/fused_function_object.cpp @@ -13,7 +13,7 @@ #include #include -#include +#include namespace fusion = boost::fusion; using boost::noncopyable; diff --git a/test/functional/fused_procedure.cpp b/test/functional/fused_procedure.cpp index d4fd0d9f..34ba09d0 100644 --- a/test/functional/fused_procedure.cpp +++ b/test/functional/fused_procedure.cpp @@ -13,7 +13,7 @@ #include #include -#include +#include namespace fusion = boost::fusion; using boost::noncopyable; diff --git a/test/functional/invoke.cpp b/test/functional/invoke.cpp index f6e4c868..3960af17 100644 --- a/test/functional/invoke.cpp +++ b/test/functional/invoke.cpp @@ -17,12 +17,12 @@ #include -#include -#include +#include +#include #include #include -#include -#include +#include +#include #include #include diff --git a/test/functional/invoke_function_object.cpp b/test/functional/invoke_function_object.cpp index 0f6272b2..5f08f650 100644 --- a/test/functional/invoke_function_object.cpp +++ b/test/functional/invoke_function_object.cpp @@ -17,12 +17,12 @@ #include -#include -#include +#include +#include #include #include -#include -#include +#include +#include #include #include diff --git a/test/functional/invoke_procedure.cpp b/test/functional/invoke_procedure.cpp index bf92ef23..810cb903 100644 --- a/test/functional/invoke_procedure.cpp +++ b/test/functional/invoke_procedure.cpp @@ -15,12 +15,12 @@ #include -#include -#include +#include +#include #include #include -#include -#include +#include +#include #include #include diff --git a/test/functional/make_fused.cpp b/test/functional/make_fused.cpp index a1cd77f7..ba5e604f 100644 --- a/test/functional/make_fused.cpp +++ b/test/functional/make_fused.cpp @@ -13,7 +13,7 @@ #include #include -#include +#include namespace fusion = boost::fusion; using boost::noncopyable; diff --git a/test/functional/make_fused_function_object.cpp b/test/functional/make_fused_function_object.cpp index 51808266..f2463003 100644 --- a/test/functional/make_fused_function_object.cpp +++ b/test/functional/make_fused_function_object.cpp @@ -13,7 +13,7 @@ #include #include -#include +#include namespace fusion = boost::fusion; using boost::noncopyable; diff --git a/test/functional/make_fused_procedure.cpp b/test/functional/make_fused_procedure.cpp index ebe5b555..6a4cf572 100644 --- a/test/functional/make_fused_procedure.cpp +++ b/test/functional/make_fused_procedure.cpp @@ -13,7 +13,7 @@ #include #include -#include +#include namespace fusion = boost::fusion; using boost::noncopyable; diff --git a/test/sequence/adapt_assoc_struct.cpp b/test/sequence/adapt_assoc_struct.cpp index 926294a6..44c7bcec 100644 --- a/test/sequence/adapt_assoc_struct.cpp +++ b/test/sequence/adapt_assoc_struct.cpp @@ -6,7 +6,7 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include +#include #include #include #include @@ -16,8 +16,8 @@ #include #include #include -#include -#include +#include +#include #include #include #include diff --git a/test/sequence/adapt_struct.cpp b/test/sequence/adapt_struct.cpp index 114b8862..e043a0ff 100644 --- a/test/sequence/adapt_struct.cpp +++ b/test/sequence/adapt_struct.cpp @@ -5,15 +5,15 @@ 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 diff --git a/test/sequence/array.cpp b/test/sequence/array.cpp index 3a776d52..0ca5255d 100644 --- a/test/sequence/array.cpp +++ b/test/sequence/array.cpp @@ -8,7 +8,7 @@ #include -#include +#include #include #include diff --git a/test/sequence/as_list.cpp b/test/sequence/as_list.cpp index aa45d469..fed5286f 100644 --- a/test/sequence/as_list.cpp +++ b/test/sequence/as_list.cpp @@ -5,8 +5,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/sequence/as_map.cpp b/test/sequence/as_map.cpp index b1b336fb..584c7ca5 100644 --- a/test/sequence/as_map.cpp +++ b/test/sequence/as_map.cpp @@ -5,8 +5,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/sequence/as_set.cpp b/test/sequence/as_set.cpp index 40488f32..4afa4045 100644 --- a/test/sequence/as_set.cpp +++ b/test/sequence/as_set.cpp @@ -5,8 +5,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/sequence/as_vector.cpp b/test/sequence/as_vector.cpp index b5c3425e..c295e966 100644 --- a/test/sequence/as_vector.cpp +++ b/test/sequence/as_vector.cpp @@ -5,8 +5,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/sequence/back_extended_deque.cpp b/test/sequence/back_extended_deque.cpp index f58dfdc6..a2daa4cf 100644 --- a/test/sequence/back_extended_deque.cpp +++ b/test/sequence/back_extended_deque.cpp @@ -3,15 +3,16 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - 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) ==============================================================================*/ #include -#include -#include +#include +#include #include #include +#include #include #include diff --git a/test/sequence/boost_tuple.cpp b/test/sequence/boost_tuple.cpp index 522686fd..17b96c77 100644 --- a/test/sequence/boost_tuple.cpp +++ b/test/sequence/boost_tuple.cpp @@ -5,15 +5,15 @@ 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 diff --git a/test/sequence/cons.cpp b/test/sequence/cons.cpp index 644ced5c..b27345e6 100644 --- a/test/sequence/cons.cpp +++ b/test/sequence/cons.cpp @@ -7,10 +7,10 @@ ==============================================================================*/ #include #include -#include +#include #include #include -#include +#include #include #include #include diff --git a/test/sequence/construction.hpp b/test/sequence/construction.hpp index 6c289749..d5c56664 100644 --- a/test/sequence/construction.hpp +++ b/test/sequence/construction.hpp @@ -7,7 +7,7 @@ ==============================================================================*/ #include #include -#include +#include #if !defined(FUSION_AT) #define FUSION_AT at_c diff --git a/test/sequence/copy.hpp b/test/sequence/copy.hpp index f47a0bca..96edbc45 100644 --- a/test/sequence/copy.hpp +++ b/test/sequence/copy.hpp @@ -7,7 +7,7 @@ ==============================================================================*/ #include #include -#include +#include #include #include #include diff --git a/test/sequence/deduce_sequence.cpp b/test/sequence/deduce_sequence.cpp index 9c6d1ef4..5b234781 100644 --- a/test/sequence/deduce_sequence.cpp +++ b/test/sequence/deduce_sequence.cpp @@ -7,7 +7,7 @@ ==============================================================================*/ #include -#include +#include #include #include diff --git a/test/sequence/deque_comparison.cpp b/test/sequence/deque_comparison.cpp index 2c6db999..229fd0e6 100644 --- a/test/sequence/deque_comparison.cpp +++ b/test/sequence/deque_comparison.cpp @@ -6,7 +6,7 @@ Distributed under the 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 #define FUSION_SEQUENCE deque #include "comparison.hpp" diff --git a/test/sequence/deque_construction.cpp b/test/sequence/deque_construction.cpp index 7ec3caff..bba8f09a 100644 --- a/test/sequence/deque_construction.cpp +++ b/test/sequence/deque_construction.cpp @@ -6,7 +6,7 @@ Distributed under the 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 #define FUSION_SEQUENCE deque #include "construction.hpp" diff --git a/test/sequence/deque_copy.cpp b/test/sequence/deque_copy.cpp index 6d3ee13f..57e7334d 100644 --- a/test/sequence/deque_copy.cpp +++ b/test/sequence/deque_copy.cpp @@ -6,7 +6,7 @@ Distributed under the 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 diff --git a/test/sequence/deque_iterator.cpp b/test/sequence/deque_iterator.cpp index 414b94c5..baf6f827 100644 --- a/test/sequence/deque_iterator.cpp +++ b/test/sequence/deque_iterator.cpp @@ -5,7 +5,7 @@ Distributed under the 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 #define FUSION_SEQUENCE deque #define FUSION_TRAVERSAL_TAG bidirectional_traversal_tag diff --git a/test/sequence/deque_make.cpp b/test/sequence/deque_make.cpp index dfdc681d..4dc7346b 100644 --- a/test/sequence/deque_make.cpp +++ b/test/sequence/deque_make.cpp @@ -6,7 +6,7 @@ Distributed under the 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 #define FUSION_SEQUENCE deque diff --git a/test/sequence/deque_misc.cpp b/test/sequence/deque_misc.cpp index 01784c1e..e29c7c8b 100644 --- a/test/sequence/deque_misc.cpp +++ b/test/sequence/deque_misc.cpp @@ -6,9 +6,9 @@ Distributed under the 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 #define FUSION_SEQUENCE deque #include "misc.hpp" diff --git a/test/sequence/deque_mutate.cpp b/test/sequence/deque_mutate.cpp index 8b56aeac..66ab1478 100644 --- a/test/sequence/deque_mutate.cpp +++ b/test/sequence/deque_mutate.cpp @@ -6,7 +6,7 @@ Distributed under the 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 #define FUSION_SEQUENCE deque #include "mutate.hpp" diff --git a/test/sequence/deque_tie.cpp b/test/sequence/deque_tie.cpp index 2afb519f..e922335b 100644 --- a/test/sequence/deque_tie.cpp +++ b/test/sequence/deque_tie.cpp @@ -6,7 +6,7 @@ Distributed under the 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 diff --git a/test/sequence/deque_value_at.cpp b/test/sequence/deque_value_at.cpp index 4a0a9ab3..c348d287 100644 --- a/test/sequence/deque_value_at.cpp +++ b/test/sequence/deque_value_at.cpp @@ -6,7 +6,7 @@ Distributed under the 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 #define FUSION_SEQUENCE deque #include "value_at.hpp" diff --git a/test/sequence/ext_/iterator_range_s.cpp b/test/sequence/ext_/iterator_range_s.cpp index 4f6ead43..1468f61b 100755 --- a/test/sequence/ext_/iterator_range_s.cpp +++ b/test/sequence/ext_/iterator_range_s.cpp @@ -7,11 +7,11 @@ #include #include #include -#include -#include +#include +#include #include -#include -#include +#include +#include #include #include #include diff --git a/test/sequence/filter_view.cpp b/test/sequence/filter_view.cpp index 28dbb8a0..eaefb35e 100644 --- a/test/sequence/filter_view.cpp +++ b/test/sequence/filter_view.cpp @@ -5,12 +5,12 @@ 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 diff --git a/test/sequence/front_extended_deque.cpp b/test/sequence/front_extended_deque.cpp index 2afa6190..40100c32 100644 --- a/test/sequence/front_extended_deque.cpp +++ b/test/sequence/front_extended_deque.cpp @@ -3,15 +3,16 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - 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) ==============================================================================*/ #include -#include -#include +#include +#include #include #include +#include #include #include diff --git a/test/sequence/io.cpp b/test/sequence/io.cpp index 3629ea39..f7692163 100644 --- a/test/sequence/io.cpp +++ b/test/sequence/io.cpp @@ -5,7 +5,7 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include +#include #include #include #include diff --git a/test/sequence/iterator_range.cpp b/test/sequence/iterator_range.cpp index 1abaf0d5..29993d8e 100644 --- a/test/sequence/iterator_range.cpp +++ b/test/sequence/iterator_range.cpp @@ -5,9 +5,9 @@ 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 diff --git a/test/sequence/joint_view.cpp b/test/sequence/joint_view.cpp index eb108df1..7ce135e7 100644 --- a/test/sequence/joint_view.cpp +++ b/test/sequence/joint_view.cpp @@ -5,8 +5,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/sequence/list_comparison.cpp b/test/sequence/list_comparison.cpp index 19094687..fcf213c5 100644 --- a/test/sequence/list_comparison.cpp +++ b/test/sequence/list_comparison.cpp @@ -5,7 +5,7 @@ Distributed under the 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 #define FUSION_SEQUENCE list #include "comparison.hpp" diff --git a/test/sequence/list_construction.cpp b/test/sequence/list_construction.cpp index 83d748be..26d648fd 100644 --- a/test/sequence/list_construction.cpp +++ b/test/sequence/list_construction.cpp @@ -5,7 +5,7 @@ Distributed under the 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 #define FUSION_SEQUENCE list #include "construction.hpp" diff --git a/test/sequence/list_copy.cpp b/test/sequence/list_copy.cpp index 68ae042f..561ab10d 100644 --- a/test/sequence/list_copy.cpp +++ b/test/sequence/list_copy.cpp @@ -5,7 +5,7 @@ Distributed under the 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 diff --git a/test/sequence/list_iterator.cpp b/test/sequence/list_iterator.cpp index 515a6e0f..f7cc6e1d 100644 --- a/test/sequence/list_iterator.cpp +++ b/test/sequence/list_iterator.cpp @@ -4,7 +4,7 @@ Distributed under the 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 #define FUSION_SEQUENCE list #define FUSION_NO_PRIOR diff --git a/test/sequence/list_make.cpp b/test/sequence/list_make.cpp index 55833b64..7e7120fe 100644 --- a/test/sequence/list_make.cpp +++ b/test/sequence/list_make.cpp @@ -5,7 +5,7 @@ Distributed under the 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 #define FUSION_SEQUENCE list diff --git a/test/sequence/list_misc.cpp b/test/sequence/list_misc.cpp index c5ff71ca..68827398 100644 --- a/test/sequence/list_misc.cpp +++ b/test/sequence/list_misc.cpp @@ -2,12 +2,11 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - 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) ==============================================================================*/ -#include +#include #include -#include #define FUSION_SEQUENCE list #define FUSION_FORWARD_ONLY diff --git a/test/sequence/list_mutate.cpp b/test/sequence/list_mutate.cpp index abfc9a3e..f8802b27 100644 --- a/test/sequence/list_mutate.cpp +++ b/test/sequence/list_mutate.cpp @@ -5,7 +5,7 @@ Distributed under the 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 #define FUSION_SEQUENCE list #include "mutate.hpp" diff --git a/test/sequence/list_tie.cpp b/test/sequence/list_tie.cpp index e227edee..1a0e73b2 100644 --- a/test/sequence/list_tie.cpp +++ b/test/sequence/list_tie.cpp @@ -5,7 +5,7 @@ Distributed under the 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 diff --git a/test/sequence/list_value_at.cpp b/test/sequence/list_value_at.cpp index 9bd3de69..763cf265 100644 --- a/test/sequence/list_value_at.cpp +++ b/test/sequence/list_value_at.cpp @@ -5,7 +5,7 @@ Distributed under the 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 #define FUSION_SEQUENCE list #include "value_at.hpp" diff --git a/test/sequence/make_list.cpp b/test/sequence/make_list.cpp index 55833b64..7e7120fe 100644 --- a/test/sequence/make_list.cpp +++ b/test/sequence/make_list.cpp @@ -5,7 +5,7 @@ Distributed under the 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 #define FUSION_SEQUENCE list diff --git a/test/sequence/make_vector.cpp b/test/sequence/make_vector.cpp index ffd06489..228fbb77 100644 --- a/test/sequence/make_vector.cpp +++ b/test/sequence/make_vector.cpp @@ -5,7 +5,7 @@ Distributed under the 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 #define FUSION_SEQUENCE vector diff --git a/test/sequence/map.cpp b/test/sequence/map.cpp index b170158d..689e086d 100644 --- a/test/sequence/map.cpp +++ b/test/sequence/map.cpp @@ -5,7 +5,7 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include +#include #include #include #include diff --git a/test/sequence/misc.hpp b/test/sequence/misc.hpp index 01ee773d..d1fae03b 100644 --- a/test/sequence/misc.hpp +++ b/test/sequence/misc.hpp @@ -2,12 +2,13 @@ Copyright (C) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - 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) ==============================================================================*/ #include #include #include +#include #include #include #include @@ -105,7 +106,7 @@ struct test_intrinsics2 BOOST_STATIC_ASSERT((boost::mpl::equal::value)); #endif - + typedef boost::fusion::FUSION_SEQUENCE target3; typedef boost::mpl::push_front::type seq3; BOOST_STATIC_ASSERT((boost::mpl::equal::value)); @@ -170,9 +171,9 @@ test() BOOST_STATIC_ASSERT(!traits::is_sequence::value); BOOST_STATIC_ASSERT(!traits::is_sequence::value); } - + { // testing mpl compatibility - + // test begin, end, next, prior, advance, size, deref, etc. //~ typedef FUSION_SEQUENCE tuple_type; //~ test_intrinsics1 test1; @@ -181,7 +182,7 @@ test() // test an algorithm typedef FUSION_SEQUENCE t1; typedef boost::mpl::find::type iter; - typedef boost::mpl::deref::type type; + typedef boost::mpl::deref::type type; BOOST_STATIC_ASSERT((boost::is_same::value)); } diff --git a/test/sequence/repetitive_view.cpp b/test/sequence/repetitive_view.cpp index 0a2c01d9..54da37bc 100644 --- a/test/sequence/repetitive_view.cpp +++ b/test/sequence/repetitive_view.cpp @@ -7,10 +7,10 @@ ==============================================================================*/ #include -#include +#include -#include -#include +#include +#include #include #include diff --git a/test/sequence/reverse_view.cpp b/test/sequence/reverse_view.cpp index 3cc2bf91..03d0632f 100644 --- a/test/sequence/reverse_view.cpp +++ b/test/sequence/reverse_view.cpp @@ -5,12 +5,12 @@ 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 diff --git a/test/sequence/set.cpp b/test/sequence/set.cpp index c658380e..0c376f3a 100644 --- a/test/sequence/set.cpp +++ b/test/sequence/set.cpp @@ -5,7 +5,7 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include +#include #include #include #include diff --git a/test/sequence/single_view.cpp b/test/sequence/single_view.cpp index fd1d1341..e3faa26a 100644 --- a/test/sequence/single_view.cpp +++ b/test/sequence/single_view.cpp @@ -6,7 +6,7 @@ ==============================================================================*/ #include #include -#include +#include #include #include diff --git a/test/sequence/std_pair.cpp b/test/sequence/std_pair.cpp index d0434821..435a4b85 100644 --- a/test/sequence/std_pair.cpp +++ b/test/sequence/std_pair.cpp @@ -5,15 +5,15 @@ 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 diff --git a/test/sequence/swap.cpp b/test/sequence/swap.cpp index f9573d52..e89542e0 100644 --- a/test/sequence/swap.cpp +++ b/test/sequence/swap.cpp @@ -6,7 +6,7 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include +#include #include #include #include diff --git a/test/sequence/transform_view.cpp b/test/sequence/transform_view.cpp index 3dce9043..e811f5f7 100644 --- a/test/sequence/transform_view.cpp +++ b/test/sequence/transform_view.cpp @@ -5,12 +5,12 @@ 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 diff --git a/test/sequence/tuple_comparison.cpp b/test/sequence/tuple_comparison.cpp index fde2ad47..8108256b 100644 --- a/test/sequence/tuple_comparison.cpp +++ b/test/sequence/tuple_comparison.cpp @@ -6,7 +6,7 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include +#include #define FUSION_SEQUENCE tuple #include "comparison.hpp" diff --git a/test/sequence/tuple_construction.cpp b/test/sequence/tuple_construction.cpp index 0d357002..323c72ed 100644 --- a/test/sequence/tuple_construction.cpp +++ b/test/sequence/tuple_construction.cpp @@ -6,7 +6,7 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include +#include #define FUSION_SEQUENCE tuple #define FUSION_AT get diff --git a/test/sequence/tuple_misc.cpp b/test/sequence/tuple_misc.cpp index 704ebd3a..632a9ca1 100644 --- a/test/sequence/tuple_misc.cpp +++ b/test/sequence/tuple_misc.cpp @@ -7,7 +7,7 @@ ==============================================================================*/ #include #include -#include +#include #define FUSION_SEQUENCE tuple #define FUSION_AT get diff --git a/test/sequence/variant.cpp b/test/sequence/variant.cpp index b4feee13..bfbf6fd3 100644 --- a/test/sequence/variant.cpp +++ b/test/sequence/variant.cpp @@ -6,7 +6,7 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ -#include +#include #include #include diff --git a/test/sequence/vector_comparison.cpp b/test/sequence/vector_comparison.cpp index 0a7ae781..7321820e 100644 --- a/test/sequence/vector_comparison.cpp +++ b/test/sequence/vector_comparison.cpp @@ -5,7 +5,7 @@ Distributed under the 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 #define FUSION_SEQUENCE vector #include "comparison.hpp" diff --git a/test/sequence/vector_construction.cpp b/test/sequence/vector_construction.cpp index 4f1eaa02..d279c232 100644 --- a/test/sequence/vector_construction.cpp +++ b/test/sequence/vector_construction.cpp @@ -5,7 +5,7 @@ Distributed under the 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 #define FUSION_SEQUENCE vector #include "construction.hpp" diff --git a/test/sequence/vector_copy.cpp b/test/sequence/vector_copy.cpp index e554a768..9b1e207d 100644 --- a/test/sequence/vector_copy.cpp +++ b/test/sequence/vector_copy.cpp @@ -5,7 +5,7 @@ Distributed under the 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 diff --git a/test/sequence/vector_iterator.cpp b/test/sequence/vector_iterator.cpp index 662466fa..bcf15c69 100644 --- a/test/sequence/vector_iterator.cpp +++ b/test/sequence/vector_iterator.cpp @@ -4,8 +4,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) ==============================================================================*/ -#include -#include +#include +#include #define FUSION_SEQUENCE vector #define FUSION_TRAVERSAL_TAG random_access_traversal_tag diff --git a/test/sequence/vector_make.cpp b/test/sequence/vector_make.cpp index ffd06489..228fbb77 100644 --- a/test/sequence/vector_make.cpp +++ b/test/sequence/vector_make.cpp @@ -5,7 +5,7 @@ Distributed under the 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 #define FUSION_SEQUENCE vector diff --git a/test/sequence/vector_misc.cpp b/test/sequence/vector_misc.cpp index e2a22fb7..d8e02876 100644 --- a/test/sequence/vector_misc.cpp +++ b/test/sequence/vector_misc.cpp @@ -5,9 +5,9 @@ Distributed under the 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 #define FUSION_SEQUENCE vector #include "misc.hpp" diff --git a/test/sequence/vector_mutate.cpp b/test/sequence/vector_mutate.cpp index 60a410b7..610c0c18 100644 --- a/test/sequence/vector_mutate.cpp +++ b/test/sequence/vector_mutate.cpp @@ -5,7 +5,7 @@ Distributed under the 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 #define FUSION_SEQUENCE vector #include "mutate.hpp" diff --git a/test/sequence/vector_n.cpp b/test/sequence/vector_n.cpp index e7ff4ad3..b051ca89 100644 --- a/test/sequence/vector_n.cpp +++ b/test/sequence/vector_n.cpp @@ -5,16 +5,16 @@ 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 diff --git a/test/sequence/vector_tie.cpp b/test/sequence/vector_tie.cpp index 348e235c..08a82e3d 100644 --- a/test/sequence/vector_tie.cpp +++ b/test/sequence/vector_tie.cpp @@ -5,7 +5,7 @@ Distributed under the 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 diff --git a/test/sequence/vector_value_at.cpp b/test/sequence/vector_value_at.cpp index e4aa9ac4..8a99da5b 100644 --- a/test/sequence/vector_value_at.cpp +++ b/test/sequence/vector_value_at.cpp @@ -5,7 +5,7 @@ Distributed under the 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 #define FUSION_SEQUENCE vector #include "value_at.hpp" diff --git a/test/sequence/zip_view.cpp b/test/sequence/zip_view.cpp index 485760cd..0fcb438d 100644 --- a/test/sequence/zip_view.cpp +++ b/test/sequence/zip_view.cpp @@ -7,9 +7,9 @@ ==============================================================================*/ #include #include -#include -#include -#include +#include +#include +#include #include #include #include @@ -20,7 +20,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/test/sequence/zip_view2.cpp b/test/sequence/zip_view2.cpp index c8c42e1e..611c41cb 100644 --- a/test/sequence/zip_view2.cpp +++ b/test/sequence/zip_view2.cpp @@ -9,9 +9,9 @@ #include #include -#include -#include -#include +#include +#include +#include #include #include #include @@ -22,7 +22,7 @@ #include #include #include -#include +#include #include #include diff --git a/test/sequence/zip_view_ignore.cpp b/test/sequence/zip_view_ignore.cpp index 5eb3bf39..2a300809 100644 --- a/test/sequence/zip_view_ignore.cpp +++ b/test/sequence/zip_view_ignore.cpp @@ -6,8 +6,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include From 16bcb17c06941e867b624d382a7234faa807ebc6 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Sat, 20 Oct 2007 11:50:27 +0000 Subject: [PATCH 230/234] phase3: refactoring for v2.1 [SVN r40211] --- .../boost/fusion/{sequence => }/adapted.hpp | 10 +++---- include/boost/fusion/adapted/array.hpp | 22 +++++++++++++++ .../adapted/array/array_iterator.hpp | 0 .../adapted/array/detail/at_impl.hpp | 0 .../adapted/array/detail/begin_impl.hpp | 2 +- .../adapted/array/detail/category_of_impl.hpp | 0 .../adapted/array/detail/end_impl.hpp | 2 +- .../adapted/array/detail/is_sequence_impl.hpp | 0 .../adapted/array/detail/is_view_impl.hpp | 0 .../adapted/array/detail/size_impl.hpp | 0 .../adapted/array/detail/value_at_impl.hpp | 0 .../{sequence => }/adapted/array/tag_of.hpp | 0 include/boost/fusion/adapted/boost_tuple.hpp | 20 +++++++++++++ .../boost_tuple/boost_tuple_iterator.hpp | 0 .../adapted/boost_tuple/detail/at_impl.hpp | 0 .../adapted/boost_tuple/detail/begin_impl.hpp | 2 +- .../boost_tuple/detail/category_of_impl.hpp | 0 .../adapted/boost_tuple/detail/end_impl.hpp | 2 +- .../boost_tuple/detail/is_sequence_impl.hpp | 0 .../boost_tuple/detail/is_view_impl.hpp | 0 .../adapted/boost_tuple/detail/size_impl.hpp | 0 .../boost_tuple/detail/value_at_impl.hpp | 0 .../adapted/boost_tuple/tag_of.hpp | 0 include/boost/fusion/adapted/mpl.hpp | 21 ++++++++++++++ .../adapted/mpl/detail/at_impl.hpp | 0 .../adapted/mpl/detail/begin_impl.hpp | 2 +- .../adapted/mpl/detail/category_of_impl.hpp | 0 .../adapted/mpl/detail/empty_impl.hpp | 0 .../adapted/mpl/detail/end_impl.hpp | 2 +- .../adapted/mpl/detail/has_key_impl.hpp | 0 .../adapted/mpl/detail/is_sequence_impl.hpp | 0 .../adapted/mpl/detail/is_view_impl.hpp | 0 .../adapted/mpl/detail/size_impl.hpp | 0 .../adapted/mpl/detail/value_at_impl.hpp | 0 .../adapted/mpl/mpl_iterator.hpp | 0 .../{sequence => }/adapted/std_pair.hpp | 2 +- .../adapted/std_pair/detail/at_impl.hpp | 0 .../adapted/std_pair/detail/begin_impl.hpp | 2 +- .../std_pair/detail/category_of_impl.hpp | 0 .../adapted/std_pair/detail/end_impl.hpp | 2 +- .../std_pair/detail/is_sequence_impl.hpp | 0 .../adapted/std_pair/detail/is_view_impl.hpp | 0 .../adapted/std_pair/detail/size_impl.hpp | 0 .../adapted/std_pair/detail/value_at_impl.hpp | 0 .../adapted/std_pair/std_pair_iterator.hpp | 0 .../adapted/std_pair/tag_of.hpp | 0 include/boost/fusion/adapted/struct.hpp | 23 +++++++++++++++ .../adapted/struct/adapt_assoc_struct.hpp | 26 ++++++++--------- .../adapted/struct/adapt_struct.hpp | 20 ++++++------- .../adapted/struct/detail/at_impl.hpp | 0 .../adapted/struct/detail/at_key_impl.hpp | 0 .../adapted/struct/detail/begin_impl.hpp | 2 +- .../struct/detail/category_of_impl.hpp | 0 .../adapted/struct/detail/end_impl.hpp | 2 +- .../adapted/struct/detail/has_key_impl.hpp | 0 .../struct/detail/is_sequence_impl.hpp | 0 .../adapted/struct/detail/is_view_impl.hpp | 0 .../adapted/struct/detail/size_impl.hpp | 0 .../adapted/struct/detail/value_at_impl.hpp | 0 .../struct/detail/value_at_key_impl.hpp | 0 .../adapted/struct/extension.hpp | 0 .../adapted/struct/struct_iterator.hpp | 2 +- include/boost/fusion/adapted/variant.hpp | 20 +++++++++++++ .../adapted/variant/detail/begin_impl.hpp | 0 .../variant/detail/category_of_impl.hpp | 0 .../adapted/variant/detail/end_impl.hpp | 0 .../variant/detail/is_sequence_impl.hpp | 0 .../adapted/variant/detail/is_view_impl.hpp | 0 .../adapted/variant/detail/size_impl.hpp | 0 .../{sequence => }/adapted/variant/tag_of.hpp | 0 .../adapted/variant/variant_iterator.hpp | 0 .../fusion/algorithm/transformation/erase.hpp | 2 +- .../algorithm/transformation/insert.hpp | 2 +- .../algorithm/transformation/insert_range.hpp | 2 +- .../fusion/algorithm/transformation/zip.hpp | 2 +- include/boost/fusion/include/adapt_struct.hpp | 2 +- include/boost/fusion/include/mpl.hpp | 4 +-- include/boost/fusion/include/std_pair.hpp | 2 +- include/boost/fusion/include/variant.hpp | 2 +- include/boost/fusion/mpl.hpp | 23 +++++++++++++-- .../{sequence/intrinsic => }/mpl/at.hpp | 0 .../{sequence/intrinsic => }/mpl/back.hpp | 0 .../{sequence/intrinsic => }/mpl/begin.hpp | 2 +- .../{sequence/intrinsic => }/mpl/clear.hpp | 2 +- .../intrinsic => }/mpl/detail/as.hpp | 0 .../intrinsic => }/mpl/detail/clear.hpp | 0 .../{sequence/intrinsic => }/mpl/empty.hpp | 0 .../{sequence/intrinsic => }/mpl/end.hpp | 2 +- .../{sequence/intrinsic => }/mpl/erase.hpp | 2 +- .../intrinsic => }/mpl/erase_key.hpp | 2 +- .../{sequence/intrinsic => }/mpl/front.hpp | 0 .../{sequence/intrinsic => }/mpl/has_key.hpp | 0 .../{sequence/intrinsic => }/mpl/insert.hpp | 2 +- .../intrinsic => }/mpl/insert_range.hpp | 2 +- .../{sequence/intrinsic => }/mpl/pop_back.hpp | 2 +- .../intrinsic => }/mpl/pop_front.hpp | 2 +- .../intrinsic => }/mpl/push_back.hpp | 2 +- .../intrinsic => }/mpl/push_front.hpp | 2 +- .../{sequence/intrinsic => }/mpl/size.hpp | 0 include/boost/fusion/sequence.hpp | 2 +- .../boost/fusion/sequence/adapted/array.hpp | 22 --------------- .../fusion/sequence/adapted/boost_tuple.hpp | 20 ------------- include/boost/fusion/sequence/adapted/mpl.hpp | 21 -------------- .../boost/fusion/sequence/adapted/struct.hpp | 23 --------------- .../boost/fusion/sequence/adapted/variant.hpp | 20 ------------- include/boost/fusion/sequence/intrinsic.hpp | 3 +- .../boost/fusion/sequence/intrinsic/mpl.hpp | 28 ------------------- .../boost/fusion/support/deduce_sequence.hpp | 2 +- .../view/ext_/segmented_iterator_range.hpp | 2 +- .../view/filter_view/filter_view_iterator.hpp | 2 +- .../view/iterator_range/iterator_range.hpp | 2 +- .../view/joint_view/joint_view_iterator.hpp | 2 +- .../repetitive_view_iterator.hpp | 2 +- .../reverse_view/reverse_view_iterator.hpp | 2 +- .../transform_view_iterator.hpp | 2 +- .../view/zip_view/detail/equal_to_impl.hpp | 2 +- .../zip_view/detail/strictest_traversal.hpp | 2 +- .../boost/fusion/view/zip_view/zip_view.hpp | 2 +- 118 files changed, 199 insertions(+), 211 deletions(-) rename include/boost/fusion/{sequence => }/adapted.hpp (65%) create mode 100644 include/boost/fusion/adapted/array.hpp rename include/boost/fusion/{sequence => }/adapted/array/array_iterator.hpp (100%) rename include/boost/fusion/{sequence => }/adapted/array/detail/at_impl.hpp (100%) rename include/boost/fusion/{sequence => }/adapted/array/detail/begin_impl.hpp (94%) rename include/boost/fusion/{sequence => }/adapted/array/detail/category_of_impl.hpp (100%) rename include/boost/fusion/{sequence => }/adapted/array/detail/end_impl.hpp (94%) rename include/boost/fusion/{sequence => }/adapted/array/detail/is_sequence_impl.hpp (100%) rename include/boost/fusion/{sequence => }/adapted/array/detail/is_view_impl.hpp (100%) rename include/boost/fusion/{sequence => }/adapted/array/detail/size_impl.hpp (100%) rename include/boost/fusion/{sequence => }/adapted/array/detail/value_at_impl.hpp (100%) rename include/boost/fusion/{sequence => }/adapted/array/tag_of.hpp (100%) create mode 100644 include/boost/fusion/adapted/boost_tuple.hpp rename include/boost/fusion/{sequence => }/adapted/boost_tuple/boost_tuple_iterator.hpp (100%) rename include/boost/fusion/{sequence => }/adapted/boost_tuple/detail/at_impl.hpp (100%) rename include/boost/fusion/{sequence => }/adapted/boost_tuple/detail/begin_impl.hpp (92%) rename include/boost/fusion/{sequence => }/adapted/boost_tuple/detail/category_of_impl.hpp (100%) rename include/boost/fusion/{sequence => }/adapted/boost_tuple/detail/end_impl.hpp (94%) rename include/boost/fusion/{sequence => }/adapted/boost_tuple/detail/is_sequence_impl.hpp (100%) rename include/boost/fusion/{sequence => }/adapted/boost_tuple/detail/is_view_impl.hpp (100%) rename include/boost/fusion/{sequence => }/adapted/boost_tuple/detail/size_impl.hpp (100%) rename include/boost/fusion/{sequence => }/adapted/boost_tuple/detail/value_at_impl.hpp (100%) rename include/boost/fusion/{sequence => }/adapted/boost_tuple/tag_of.hpp (100%) create mode 100644 include/boost/fusion/adapted/mpl.hpp rename include/boost/fusion/{sequence => }/adapted/mpl/detail/at_impl.hpp (100%) rename include/boost/fusion/{sequence => }/adapted/mpl/detail/begin_impl.hpp (95%) rename include/boost/fusion/{sequence => }/adapted/mpl/detail/category_of_impl.hpp (100%) rename include/boost/fusion/{sequence => }/adapted/mpl/detail/empty_impl.hpp (100%) rename include/boost/fusion/{sequence => }/adapted/mpl/detail/end_impl.hpp (95%) rename include/boost/fusion/{sequence => }/adapted/mpl/detail/has_key_impl.hpp (100%) rename include/boost/fusion/{sequence => }/adapted/mpl/detail/is_sequence_impl.hpp (100%) rename include/boost/fusion/{sequence => }/adapted/mpl/detail/is_view_impl.hpp (100%) rename include/boost/fusion/{sequence => }/adapted/mpl/detail/size_impl.hpp (100%) rename include/boost/fusion/{sequence => }/adapted/mpl/detail/value_at_impl.hpp (100%) rename include/boost/fusion/{sequence => }/adapted/mpl/mpl_iterator.hpp (100%) rename include/boost/fusion/{sequence => }/adapted/std_pair.hpp (96%) rename include/boost/fusion/{sequence => }/adapted/std_pair/detail/at_impl.hpp (100%) rename include/boost/fusion/{sequence => }/adapted/std_pair/detail/begin_impl.hpp (93%) rename include/boost/fusion/{sequence => }/adapted/std_pair/detail/category_of_impl.hpp (100%) rename include/boost/fusion/{sequence => }/adapted/std_pair/detail/end_impl.hpp (93%) rename include/boost/fusion/{sequence => }/adapted/std_pair/detail/is_sequence_impl.hpp (100%) rename include/boost/fusion/{sequence => }/adapted/std_pair/detail/is_view_impl.hpp (100%) rename include/boost/fusion/{sequence => }/adapted/std_pair/detail/size_impl.hpp (100%) rename include/boost/fusion/{sequence => }/adapted/std_pair/detail/value_at_impl.hpp (100%) rename include/boost/fusion/{sequence => }/adapted/std_pair/std_pair_iterator.hpp (100%) rename include/boost/fusion/{sequence => }/adapted/std_pair/tag_of.hpp (100%) create mode 100644 include/boost/fusion/adapted/struct.hpp rename include/boost/fusion/{sequence => }/adapted/struct/adapt_assoc_struct.hpp (83%) rename include/boost/fusion/{sequence => }/adapted/struct/adapt_struct.hpp (84%) rename include/boost/fusion/{sequence => }/adapted/struct/detail/at_impl.hpp (100%) rename include/boost/fusion/{sequence => }/adapted/struct/detail/at_key_impl.hpp (100%) rename include/boost/fusion/{sequence => }/adapted/struct/detail/begin_impl.hpp (93%) rename include/boost/fusion/{sequence => }/adapted/struct/detail/category_of_impl.hpp (100%) rename include/boost/fusion/{sequence => }/adapted/struct/detail/end_impl.hpp (93%) rename include/boost/fusion/{sequence => }/adapted/struct/detail/has_key_impl.hpp (100%) rename include/boost/fusion/{sequence => }/adapted/struct/detail/is_sequence_impl.hpp (100%) rename include/boost/fusion/{sequence => }/adapted/struct/detail/is_view_impl.hpp (100%) rename include/boost/fusion/{sequence => }/adapted/struct/detail/size_impl.hpp (100%) rename include/boost/fusion/{sequence => }/adapted/struct/detail/value_at_impl.hpp (100%) rename include/boost/fusion/{sequence => }/adapted/struct/detail/value_at_key_impl.hpp (100%) rename include/boost/fusion/{sequence => }/adapted/struct/extension.hpp (100%) rename include/boost/fusion/{sequence => }/adapted/struct/struct_iterator.hpp (97%) create mode 100644 include/boost/fusion/adapted/variant.hpp rename include/boost/fusion/{sequence => }/adapted/variant/detail/begin_impl.hpp (100%) rename include/boost/fusion/{sequence => }/adapted/variant/detail/category_of_impl.hpp (100%) rename include/boost/fusion/{sequence => }/adapted/variant/detail/end_impl.hpp (100%) rename include/boost/fusion/{sequence => }/adapted/variant/detail/is_sequence_impl.hpp (100%) rename include/boost/fusion/{sequence => }/adapted/variant/detail/is_view_impl.hpp (100%) rename include/boost/fusion/{sequence => }/adapted/variant/detail/size_impl.hpp (100%) rename include/boost/fusion/{sequence => }/adapted/variant/tag_of.hpp (100%) rename include/boost/fusion/{sequence => }/adapted/variant/variant_iterator.hpp (100%) rename include/boost/fusion/{sequence/intrinsic => }/mpl/at.hpp (100%) rename include/boost/fusion/{sequence/intrinsic => }/mpl/back.hpp (100%) rename include/boost/fusion/{sequence/intrinsic => }/mpl/begin.hpp (93%) rename include/boost/fusion/{sequence/intrinsic => }/mpl/clear.hpp (93%) rename include/boost/fusion/{sequence/intrinsic => }/mpl/detail/as.hpp (100%) rename include/boost/fusion/{sequence/intrinsic => }/mpl/detail/clear.hpp (100%) rename include/boost/fusion/{sequence/intrinsic => }/mpl/empty.hpp (100%) rename include/boost/fusion/{sequence/intrinsic => }/mpl/end.hpp (93%) rename include/boost/fusion/{sequence/intrinsic => }/mpl/erase.hpp (94%) rename include/boost/fusion/{sequence/intrinsic => }/mpl/erase_key.hpp (94%) rename include/boost/fusion/{sequence/intrinsic => }/mpl/front.hpp (100%) rename include/boost/fusion/{sequence/intrinsic => }/mpl/has_key.hpp (100%) rename include/boost/fusion/{sequence/intrinsic => }/mpl/insert.hpp (94%) rename include/boost/fusion/{sequence/intrinsic => }/mpl/insert_range.hpp (95%) rename include/boost/fusion/{sequence/intrinsic => }/mpl/pop_back.hpp (94%) rename include/boost/fusion/{sequence/intrinsic => }/mpl/pop_front.hpp (94%) rename include/boost/fusion/{sequence/intrinsic => }/mpl/push_back.hpp (94%) rename include/boost/fusion/{sequence/intrinsic => }/mpl/push_front.hpp (94%) rename include/boost/fusion/{sequence/intrinsic => }/mpl/size.hpp (100%) delete mode 100644 include/boost/fusion/sequence/adapted/array.hpp delete mode 100644 include/boost/fusion/sequence/adapted/boost_tuple.hpp delete mode 100644 include/boost/fusion/sequence/adapted/mpl.hpp delete mode 100644 include/boost/fusion/sequence/adapted/struct.hpp delete mode 100644 include/boost/fusion/sequence/adapted/variant.hpp delete mode 100644 include/boost/fusion/sequence/intrinsic/mpl.hpp diff --git a/include/boost/fusion/sequence/adapted.hpp b/include/boost/fusion/adapted.hpp similarity index 65% rename from include/boost/fusion/sequence/adapted.hpp rename to include/boost/fusion/adapted.hpp index ea951f19..23693645 100644 --- a/include/boost/fusion/sequence/adapted.hpp +++ b/include/boost/fusion/adapted.hpp @@ -8,10 +8,10 @@ #if !defined(BOOST_FUSION_ADAPTED_30122005_1420) #define BOOST_FUSION_ADAPTED_30122005_1420 -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #endif diff --git a/include/boost/fusion/adapted/array.hpp b/include/boost/fusion/adapted/array.hpp new file mode 100644 index 00000000..2be9d4ba --- /dev/null +++ b/include/boost/fusion/adapted/array.hpp @@ -0,0 +1,22 @@ +/*============================================================================= + Copyright (c) 2001-2006 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_ARRAY_27122005_1035) +#define BOOST_FUSION_ARRAY_27122005_1035 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#endif diff --git a/include/boost/fusion/sequence/adapted/array/array_iterator.hpp b/include/boost/fusion/adapted/array/array_iterator.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/array/array_iterator.hpp rename to include/boost/fusion/adapted/array/array_iterator.hpp diff --git a/include/boost/fusion/sequence/adapted/array/detail/at_impl.hpp b/include/boost/fusion/adapted/array/detail/at_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/array/detail/at_impl.hpp rename to include/boost/fusion/adapted/array/detail/at_impl.hpp diff --git a/include/boost/fusion/sequence/adapted/array/detail/begin_impl.hpp b/include/boost/fusion/adapted/array/detail/begin_impl.hpp similarity index 94% rename from include/boost/fusion/sequence/adapted/array/detail/begin_impl.hpp rename to include/boost/fusion/adapted/array/detail/begin_impl.hpp index fc4fb6a3..06dc8c51 100644 --- a/include/boost/fusion/sequence/adapted/array/detail/begin_impl.hpp +++ b/include/boost/fusion/adapted/array/detail/begin_impl.hpp @@ -8,7 +8,7 @@ #if !defined(BOOST_FUSION_BEGIN_IMPL_27122005_1117) #define BOOST_FUSION_BEGIN_IMPL_27122005_1117 -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/sequence/adapted/array/detail/category_of_impl.hpp b/include/boost/fusion/adapted/array/detail/category_of_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/array/detail/category_of_impl.hpp rename to include/boost/fusion/adapted/array/detail/category_of_impl.hpp diff --git a/include/boost/fusion/sequence/adapted/array/detail/end_impl.hpp b/include/boost/fusion/adapted/array/detail/end_impl.hpp similarity index 94% rename from include/boost/fusion/sequence/adapted/array/detail/end_impl.hpp rename to include/boost/fusion/adapted/array/detail/end_impl.hpp index a3ffbed4..c9432c9b 100644 --- a/include/boost/fusion/sequence/adapted/array/detail/end_impl.hpp +++ b/include/boost/fusion/adapted/array/detail/end_impl.hpp @@ -8,7 +8,7 @@ #if !defined(BOOST_FUSION_END_IMPL_27122005_1120) #define BOOST_FUSION_END_IMPL_27122005_1120 -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/sequence/adapted/array/detail/is_sequence_impl.hpp b/include/boost/fusion/adapted/array/detail/is_sequence_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/array/detail/is_sequence_impl.hpp rename to include/boost/fusion/adapted/array/detail/is_sequence_impl.hpp diff --git a/include/boost/fusion/sequence/adapted/array/detail/is_view_impl.hpp b/include/boost/fusion/adapted/array/detail/is_view_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/array/detail/is_view_impl.hpp rename to include/boost/fusion/adapted/array/detail/is_view_impl.hpp diff --git a/include/boost/fusion/sequence/adapted/array/detail/size_impl.hpp b/include/boost/fusion/adapted/array/detail/size_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/array/detail/size_impl.hpp rename to include/boost/fusion/adapted/array/detail/size_impl.hpp diff --git a/include/boost/fusion/sequence/adapted/array/detail/value_at_impl.hpp b/include/boost/fusion/adapted/array/detail/value_at_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/array/detail/value_at_impl.hpp rename to include/boost/fusion/adapted/array/detail/value_at_impl.hpp diff --git a/include/boost/fusion/sequence/adapted/array/tag_of.hpp b/include/boost/fusion/adapted/array/tag_of.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/array/tag_of.hpp rename to include/boost/fusion/adapted/array/tag_of.hpp diff --git a/include/boost/fusion/adapted/boost_tuple.hpp b/include/boost/fusion/adapted/boost_tuple.hpp new file mode 100644 index 00000000..2924df07 --- /dev/null +++ b/include/boost/fusion/adapted/boost_tuple.hpp @@ -0,0 +1,20 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Distributed under the 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_BOOST_TUPLE_09272006_0732) +#define BOOST_FUSION_BOOST_TUPLE_09272006_0732 + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#endif diff --git a/include/boost/fusion/sequence/adapted/boost_tuple/boost_tuple_iterator.hpp b/include/boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/boost_tuple/boost_tuple_iterator.hpp rename to include/boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp diff --git a/include/boost/fusion/sequence/adapted/boost_tuple/detail/at_impl.hpp b/include/boost/fusion/adapted/boost_tuple/detail/at_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/boost_tuple/detail/at_impl.hpp rename to include/boost/fusion/adapted/boost_tuple/detail/at_impl.hpp diff --git a/include/boost/fusion/sequence/adapted/boost_tuple/detail/begin_impl.hpp b/include/boost/fusion/adapted/boost_tuple/detail/begin_impl.hpp similarity index 92% rename from include/boost/fusion/sequence/adapted/boost_tuple/detail/begin_impl.hpp rename to include/boost/fusion/adapted/boost_tuple/detail/begin_impl.hpp index aaa6a670..ee9a89eb 100644 --- a/include/boost/fusion/sequence/adapted/boost_tuple/detail/begin_impl.hpp +++ b/include/boost/fusion/adapted/boost_tuple/detail/begin_impl.hpp @@ -7,7 +7,7 @@ #if !defined(BOOST_FUSION_BEGIN_IMPL_09272006_0719) #define BOOST_FUSION_BEGIN_IMPL_09272006_0719 -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/sequence/adapted/boost_tuple/detail/category_of_impl.hpp b/include/boost/fusion/adapted/boost_tuple/detail/category_of_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/boost_tuple/detail/category_of_impl.hpp rename to include/boost/fusion/adapted/boost_tuple/detail/category_of_impl.hpp diff --git a/include/boost/fusion/sequence/adapted/boost_tuple/detail/end_impl.hpp b/include/boost/fusion/adapted/boost_tuple/detail/end_impl.hpp similarity index 94% rename from include/boost/fusion/sequence/adapted/boost_tuple/detail/end_impl.hpp rename to include/boost/fusion/adapted/boost_tuple/detail/end_impl.hpp index 016bca3f..2fb27a7a 100644 --- a/include/boost/fusion/sequence/adapted/boost_tuple/detail/end_impl.hpp +++ b/include/boost/fusion/adapted/boost_tuple/detail/end_impl.hpp @@ -7,7 +7,7 @@ #if !defined(BOOST_FUSION_END_IMPL_09272006_0721) #define BOOST_FUSION_END_IMPL_09272006_0721 -#include +#include #include #include diff --git a/include/boost/fusion/sequence/adapted/boost_tuple/detail/is_sequence_impl.hpp b/include/boost/fusion/adapted/boost_tuple/detail/is_sequence_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/boost_tuple/detail/is_sequence_impl.hpp rename to include/boost/fusion/adapted/boost_tuple/detail/is_sequence_impl.hpp diff --git a/include/boost/fusion/sequence/adapted/boost_tuple/detail/is_view_impl.hpp b/include/boost/fusion/adapted/boost_tuple/detail/is_view_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/boost_tuple/detail/is_view_impl.hpp rename to include/boost/fusion/adapted/boost_tuple/detail/is_view_impl.hpp diff --git a/include/boost/fusion/sequence/adapted/boost_tuple/detail/size_impl.hpp b/include/boost/fusion/adapted/boost_tuple/detail/size_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/boost_tuple/detail/size_impl.hpp rename to include/boost/fusion/adapted/boost_tuple/detail/size_impl.hpp diff --git a/include/boost/fusion/sequence/adapted/boost_tuple/detail/value_at_impl.hpp b/include/boost/fusion/adapted/boost_tuple/detail/value_at_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/boost_tuple/detail/value_at_impl.hpp rename to include/boost/fusion/adapted/boost_tuple/detail/value_at_impl.hpp diff --git a/include/boost/fusion/sequence/adapted/boost_tuple/tag_of.hpp b/include/boost/fusion/adapted/boost_tuple/tag_of.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/boost_tuple/tag_of.hpp rename to include/boost/fusion/adapted/boost_tuple/tag_of.hpp diff --git a/include/boost/fusion/adapted/mpl.hpp b/include/boost/fusion/adapted/mpl.hpp new file mode 100644 index 00000000..f8257846 --- /dev/null +++ b/include/boost/fusion/adapted/mpl.hpp @@ -0,0 +1,21 @@ +/*============================================================================= + Copyright (c) 2001-2006 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_MPL_31122005_1152) +#define BOOST_FUSION_MPL_31122005_1152 + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#endif diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/at_impl.hpp b/include/boost/fusion/adapted/mpl/detail/at_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/mpl/detail/at_impl.hpp rename to include/boost/fusion/adapted/mpl/detail/at_impl.hpp diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/begin_impl.hpp b/include/boost/fusion/adapted/mpl/detail/begin_impl.hpp similarity index 95% rename from include/boost/fusion/sequence/adapted/mpl/detail/begin_impl.hpp rename to include/boost/fusion/adapted/mpl/detail/begin_impl.hpp index 04e09e44..1ec77d8b 100644 --- a/include/boost/fusion/sequence/adapted/mpl/detail/begin_impl.hpp +++ b/include/boost/fusion/adapted/mpl/detail/begin_impl.hpp @@ -8,7 +8,7 @@ #if !defined(BOOST_FUSION_BEGIN_IMPL_31122005_1209) #define BOOST_FUSION_BEGIN_IMPL_31122005_1209 -#include +#include #include #include diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/category_of_impl.hpp b/include/boost/fusion/adapted/mpl/detail/category_of_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/mpl/detail/category_of_impl.hpp rename to include/boost/fusion/adapted/mpl/detail/category_of_impl.hpp diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/empty_impl.hpp b/include/boost/fusion/adapted/mpl/detail/empty_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/mpl/detail/empty_impl.hpp rename to include/boost/fusion/adapted/mpl/detail/empty_impl.hpp diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/end_impl.hpp b/include/boost/fusion/adapted/mpl/detail/end_impl.hpp similarity index 95% rename from include/boost/fusion/sequence/adapted/mpl/detail/end_impl.hpp rename to include/boost/fusion/adapted/mpl/detail/end_impl.hpp index 6b3d7933..e3466956 100644 --- a/include/boost/fusion/sequence/adapted/mpl/detail/end_impl.hpp +++ b/include/boost/fusion/adapted/mpl/detail/end_impl.hpp @@ -8,7 +8,7 @@ #if !defined(BOOST_FUSION_END_IMPL_31122005_1237) #define BOOST_FUSION_END_IMPL_31122005_1237 -#include +#include #include #include diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/has_key_impl.hpp b/include/boost/fusion/adapted/mpl/detail/has_key_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/mpl/detail/has_key_impl.hpp rename to include/boost/fusion/adapted/mpl/detail/has_key_impl.hpp diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/is_sequence_impl.hpp b/include/boost/fusion/adapted/mpl/detail/is_sequence_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/mpl/detail/is_sequence_impl.hpp rename to include/boost/fusion/adapted/mpl/detail/is_sequence_impl.hpp diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/is_view_impl.hpp b/include/boost/fusion/adapted/mpl/detail/is_view_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/mpl/detail/is_view_impl.hpp rename to include/boost/fusion/adapted/mpl/detail/is_view_impl.hpp diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/size_impl.hpp b/include/boost/fusion/adapted/mpl/detail/size_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/mpl/detail/size_impl.hpp rename to include/boost/fusion/adapted/mpl/detail/size_impl.hpp diff --git a/include/boost/fusion/sequence/adapted/mpl/detail/value_at_impl.hpp b/include/boost/fusion/adapted/mpl/detail/value_at_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/mpl/detail/value_at_impl.hpp rename to include/boost/fusion/adapted/mpl/detail/value_at_impl.hpp diff --git a/include/boost/fusion/sequence/adapted/mpl/mpl_iterator.hpp b/include/boost/fusion/adapted/mpl/mpl_iterator.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/mpl/mpl_iterator.hpp rename to include/boost/fusion/adapted/mpl/mpl_iterator.hpp diff --git a/include/boost/fusion/sequence/adapted/std_pair.hpp b/include/boost/fusion/adapted/std_pair.hpp similarity index 96% rename from include/boost/fusion/sequence/adapted/std_pair.hpp rename to include/boost/fusion/adapted/std_pair.hpp index 0b755a0b..d13b810a 100644 --- a/include/boost/fusion/sequence/adapted/std_pair.hpp +++ b/include/boost/fusion/adapted/std_pair.hpp @@ -9,7 +9,7 @@ #define BOOST_FUSION_STD_PAIR_24122005_1744 #include -#include +#include #include #include diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/at_impl.hpp b/include/boost/fusion/adapted/std_pair/detail/at_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/std_pair/detail/at_impl.hpp rename to include/boost/fusion/adapted/std_pair/detail/at_impl.hpp diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/begin_impl.hpp b/include/boost/fusion/adapted/std_pair/detail/begin_impl.hpp similarity index 93% rename from include/boost/fusion/sequence/adapted/std_pair/detail/begin_impl.hpp rename to include/boost/fusion/adapted/std_pair/detail/begin_impl.hpp index 1b77b7a7..1fd48f51 100644 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/begin_impl.hpp +++ b/include/boost/fusion/adapted/std_pair/detail/begin_impl.hpp @@ -8,7 +8,7 @@ #if !defined(BOOST_FUSION_BEGIN_IMPL_24122005_1752) #define BOOST_FUSION_BEGIN_IMPL_24122005_1752 -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/category_of_impl.hpp b/include/boost/fusion/adapted/std_pair/detail/category_of_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/std_pair/detail/category_of_impl.hpp rename to include/boost/fusion/adapted/std_pair/detail/category_of_impl.hpp diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/end_impl.hpp b/include/boost/fusion/adapted/std_pair/detail/end_impl.hpp similarity index 93% rename from include/boost/fusion/sequence/adapted/std_pair/detail/end_impl.hpp rename to include/boost/fusion/adapted/std_pair/detail/end_impl.hpp index 9aab76c5..747f2c6f 100644 --- a/include/boost/fusion/sequence/adapted/std_pair/detail/end_impl.hpp +++ b/include/boost/fusion/adapted/std_pair/detail/end_impl.hpp @@ -8,7 +8,7 @@ #if !defined(BOOST_FUSION_END_IMPL_24122005_1755) #define BOOST_FUSION_END_IMPL_24122005_1755 -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/is_sequence_impl.hpp b/include/boost/fusion/adapted/std_pair/detail/is_sequence_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/std_pair/detail/is_sequence_impl.hpp rename to include/boost/fusion/adapted/std_pair/detail/is_sequence_impl.hpp diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/is_view_impl.hpp b/include/boost/fusion/adapted/std_pair/detail/is_view_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/std_pair/detail/is_view_impl.hpp rename to include/boost/fusion/adapted/std_pair/detail/is_view_impl.hpp diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/size_impl.hpp b/include/boost/fusion/adapted/std_pair/detail/size_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/std_pair/detail/size_impl.hpp rename to include/boost/fusion/adapted/std_pair/detail/size_impl.hpp diff --git a/include/boost/fusion/sequence/adapted/std_pair/detail/value_at_impl.hpp b/include/boost/fusion/adapted/std_pair/detail/value_at_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/std_pair/detail/value_at_impl.hpp rename to include/boost/fusion/adapted/std_pair/detail/value_at_impl.hpp diff --git a/include/boost/fusion/sequence/adapted/std_pair/std_pair_iterator.hpp b/include/boost/fusion/adapted/std_pair/std_pair_iterator.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/std_pair/std_pair_iterator.hpp rename to include/boost/fusion/adapted/std_pair/std_pair_iterator.hpp diff --git a/include/boost/fusion/sequence/adapted/std_pair/tag_of.hpp b/include/boost/fusion/adapted/std_pair/tag_of.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/std_pair/tag_of.hpp rename to include/boost/fusion/adapted/std_pair/tag_of.hpp diff --git a/include/boost/fusion/adapted/struct.hpp b/include/boost/fusion/adapted/struct.hpp new file mode 100644 index 00000000..4b36f179 --- /dev/null +++ b/include/boost/fusion/adapted/struct.hpp @@ -0,0 +1,23 @@ +/*============================================================================= + Copyright (c) 2001-2006 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_STRUCT_24122005_1744) +#define BOOST_FUSION_STD_STRUCT_24122005_1744 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#endif diff --git a/include/boost/fusion/sequence/adapted/struct/adapt_assoc_struct.hpp b/include/boost/fusion/adapted/struct/adapt_assoc_struct.hpp similarity index 83% rename from include/boost/fusion/sequence/adapted/struct/adapt_assoc_struct.hpp rename to include/boost/fusion/adapted/struct/adapt_assoc_struct.hpp index 44357c00..e621187f 100644 --- a/include/boost/fusion/sequence/adapted/struct/adapt_assoc_struct.hpp +++ b/include/boost/fusion/adapted/struct/adapt_assoc_struct.hpp @@ -9,19 +9,19 @@ #define BOOST_FUSION_ADAPT_ASSOC_STRUCT_20070508_2207 #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 diff --git a/include/boost/fusion/sequence/adapted/struct/adapt_struct.hpp b/include/boost/fusion/adapted/struct/adapt_struct.hpp similarity index 84% rename from include/boost/fusion/sequence/adapted/struct/adapt_struct.hpp rename to include/boost/fusion/adapted/struct/adapt_struct.hpp index 38d03edb..e8eb6a67 100644 --- a/include/boost/fusion/sequence/adapted/struct/adapt_struct.hpp +++ b/include/boost/fusion/adapted/struct/adapt_struct.hpp @@ -8,16 +8,16 @@ #define BOOST_FUSION_ADAPT_STRUCT_APRIL_2_2007_1158AM #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include diff --git a/include/boost/fusion/sequence/adapted/struct/detail/at_impl.hpp b/include/boost/fusion/adapted/struct/detail/at_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/struct/detail/at_impl.hpp rename to include/boost/fusion/adapted/struct/detail/at_impl.hpp diff --git a/include/boost/fusion/sequence/adapted/struct/detail/at_key_impl.hpp b/include/boost/fusion/adapted/struct/detail/at_key_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/struct/detail/at_key_impl.hpp rename to include/boost/fusion/adapted/struct/detail/at_key_impl.hpp diff --git a/include/boost/fusion/sequence/adapted/struct/detail/begin_impl.hpp b/include/boost/fusion/adapted/struct/detail/begin_impl.hpp similarity index 93% rename from include/boost/fusion/sequence/adapted/struct/detail/begin_impl.hpp rename to include/boost/fusion/adapted/struct/detail/begin_impl.hpp index 14817726..bf5a00bc 100644 --- a/include/boost/fusion/sequence/adapted/struct/detail/begin_impl.hpp +++ b/include/boost/fusion/adapted/struct/detail/begin_impl.hpp @@ -8,7 +8,7 @@ #if !defined(BOOST_FUSION_BEGIN_IMPL_24122005_1752) #define BOOST_FUSION_BEGIN_IMPL_24122005_1752 -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/sequence/adapted/struct/detail/category_of_impl.hpp b/include/boost/fusion/adapted/struct/detail/category_of_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/struct/detail/category_of_impl.hpp rename to include/boost/fusion/adapted/struct/detail/category_of_impl.hpp diff --git a/include/boost/fusion/sequence/adapted/struct/detail/end_impl.hpp b/include/boost/fusion/adapted/struct/detail/end_impl.hpp similarity index 93% rename from include/boost/fusion/sequence/adapted/struct/detail/end_impl.hpp rename to include/boost/fusion/adapted/struct/detail/end_impl.hpp index 91830cea..42d7f394 100644 --- a/include/boost/fusion/sequence/adapted/struct/detail/end_impl.hpp +++ b/include/boost/fusion/adapted/struct/detail/end_impl.hpp @@ -8,7 +8,7 @@ #if !defined(BOOST_FUSION_END_IMPL_24122005_1755) #define BOOST_FUSION_END_IMPL_24122005_1755 -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/sequence/adapted/struct/detail/has_key_impl.hpp b/include/boost/fusion/adapted/struct/detail/has_key_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/struct/detail/has_key_impl.hpp rename to include/boost/fusion/adapted/struct/detail/has_key_impl.hpp diff --git a/include/boost/fusion/sequence/adapted/struct/detail/is_sequence_impl.hpp b/include/boost/fusion/adapted/struct/detail/is_sequence_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/struct/detail/is_sequence_impl.hpp rename to include/boost/fusion/adapted/struct/detail/is_sequence_impl.hpp diff --git a/include/boost/fusion/sequence/adapted/struct/detail/is_view_impl.hpp b/include/boost/fusion/adapted/struct/detail/is_view_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/struct/detail/is_view_impl.hpp rename to include/boost/fusion/adapted/struct/detail/is_view_impl.hpp diff --git a/include/boost/fusion/sequence/adapted/struct/detail/size_impl.hpp b/include/boost/fusion/adapted/struct/detail/size_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/struct/detail/size_impl.hpp rename to include/boost/fusion/adapted/struct/detail/size_impl.hpp diff --git a/include/boost/fusion/sequence/adapted/struct/detail/value_at_impl.hpp b/include/boost/fusion/adapted/struct/detail/value_at_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/struct/detail/value_at_impl.hpp rename to include/boost/fusion/adapted/struct/detail/value_at_impl.hpp diff --git a/include/boost/fusion/sequence/adapted/struct/detail/value_at_key_impl.hpp b/include/boost/fusion/adapted/struct/detail/value_at_key_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/struct/detail/value_at_key_impl.hpp rename to include/boost/fusion/adapted/struct/detail/value_at_key_impl.hpp diff --git a/include/boost/fusion/sequence/adapted/struct/extension.hpp b/include/boost/fusion/adapted/struct/extension.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/struct/extension.hpp rename to include/boost/fusion/adapted/struct/extension.hpp diff --git a/include/boost/fusion/sequence/adapted/struct/struct_iterator.hpp b/include/boost/fusion/adapted/struct/struct_iterator.hpp similarity index 97% rename from include/boost/fusion/sequence/adapted/struct/struct_iterator.hpp rename to include/boost/fusion/adapted/struct/struct_iterator.hpp index b00251bb..caea895b 100644 --- a/include/boost/fusion/sequence/adapted/struct/struct_iterator.hpp +++ b/include/boost/fusion/adapted/struct/struct_iterator.hpp @@ -9,7 +9,7 @@ #define FUSION_STRUCT_ITERATOR_APRIL_2_2007_1008AM #include -#include +#include #include #include #include diff --git a/include/boost/fusion/adapted/variant.hpp b/include/boost/fusion/adapted/variant.hpp new file mode 100644 index 00000000..5e711c17 --- /dev/null +++ b/include/boost/fusion/adapted/variant.hpp @@ -0,0 +1,20 @@ +/*============================================================================= + Copyright (c) 2001-2006 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_VARIANT_12112006_1614) +#define BOOST_FUSION_VARIANT_12112006_1614 + +#include +#include +#include +#include +#include +#include +#include +#include + +#endif diff --git a/include/boost/fusion/sequence/adapted/variant/detail/begin_impl.hpp b/include/boost/fusion/adapted/variant/detail/begin_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/variant/detail/begin_impl.hpp rename to include/boost/fusion/adapted/variant/detail/begin_impl.hpp diff --git a/include/boost/fusion/sequence/adapted/variant/detail/category_of_impl.hpp b/include/boost/fusion/adapted/variant/detail/category_of_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/variant/detail/category_of_impl.hpp rename to include/boost/fusion/adapted/variant/detail/category_of_impl.hpp diff --git a/include/boost/fusion/sequence/adapted/variant/detail/end_impl.hpp b/include/boost/fusion/adapted/variant/detail/end_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/variant/detail/end_impl.hpp rename to include/boost/fusion/adapted/variant/detail/end_impl.hpp diff --git a/include/boost/fusion/sequence/adapted/variant/detail/is_sequence_impl.hpp b/include/boost/fusion/adapted/variant/detail/is_sequence_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/variant/detail/is_sequence_impl.hpp rename to include/boost/fusion/adapted/variant/detail/is_sequence_impl.hpp diff --git a/include/boost/fusion/sequence/adapted/variant/detail/is_view_impl.hpp b/include/boost/fusion/adapted/variant/detail/is_view_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/variant/detail/is_view_impl.hpp rename to include/boost/fusion/adapted/variant/detail/is_view_impl.hpp diff --git a/include/boost/fusion/sequence/adapted/variant/detail/size_impl.hpp b/include/boost/fusion/adapted/variant/detail/size_impl.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/variant/detail/size_impl.hpp rename to include/boost/fusion/adapted/variant/detail/size_impl.hpp diff --git a/include/boost/fusion/sequence/adapted/variant/tag_of.hpp b/include/boost/fusion/adapted/variant/tag_of.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/variant/tag_of.hpp rename to include/boost/fusion/adapted/variant/tag_of.hpp diff --git a/include/boost/fusion/sequence/adapted/variant/variant_iterator.hpp b/include/boost/fusion/adapted/variant/variant_iterator.hpp similarity index 100% rename from include/boost/fusion/sequence/adapted/variant/variant_iterator.hpp rename to include/boost/fusion/adapted/variant/variant_iterator.hpp diff --git a/include/boost/fusion/algorithm/transformation/erase.hpp b/include/boost/fusion/algorithm/transformation/erase.hpp index fb6a1379..d0405c30 100644 --- a/include/boost/fusion/algorithm/transformation/erase.hpp +++ b/include/boost/fusion/algorithm/transformation/erase.hpp @@ -15,7 +15,7 @@ #include #include #include -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/algorithm/transformation/insert.hpp b/include/boost/fusion/algorithm/transformation/insert.hpp index e3894de9..1702bc19 100644 --- a/include/boost/fusion/algorithm/transformation/insert.hpp +++ b/include/boost/fusion/algorithm/transformation/insert.hpp @@ -15,7 +15,7 @@ #include #include #include -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/algorithm/transformation/insert_range.hpp b/include/boost/fusion/algorithm/transformation/insert_range.hpp index ff69623f..1915c413 100644 --- a/include/boost/fusion/algorithm/transformation/insert_range.hpp +++ b/include/boost/fusion/algorithm/transformation/insert_range.hpp @@ -14,7 +14,7 @@ #include #include #include -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/algorithm/transformation/zip.hpp b/include/boost/fusion/algorithm/transformation/zip.hpp index a6541d85..6d6ee4d1 100644 --- a/include/boost/fusion/algorithm/transformation/zip.hpp +++ b/include/boost/fusion/algorithm/transformation/zip.hpp @@ -10,7 +10,7 @@ #define FUSION_ZIP_HPP_20060125_2058 #include -#include +#include #include #include #include diff --git a/include/boost/fusion/include/adapt_struct.hpp b/include/boost/fusion/include/adapt_struct.hpp index 2fab5de7..facc8970 100644 --- a/include/boost/fusion/include/adapt_struct.hpp +++ b/include/boost/fusion/include/adapt_struct.hpp @@ -7,6 +7,6 @@ #if !defined(FUSION_INCLUDE_ADAPT_STRUCT) #define FUSION_INCLUDE_ADAPT_STRUCT -#include +#include #endif diff --git a/include/boost/fusion/include/mpl.hpp b/include/boost/fusion/include/mpl.hpp index 5e3f906d..8a1cbfd0 100644 --- a/include/boost/fusion/include/mpl.hpp +++ b/include/boost/fusion/include/mpl.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_INCLUDE_MPL) #define FUSION_INCLUDE_MPL -#include -#include +#include +#include #endif diff --git a/include/boost/fusion/include/std_pair.hpp b/include/boost/fusion/include/std_pair.hpp index bb4d5952..98f37c86 100644 --- a/include/boost/fusion/include/std_pair.hpp +++ b/include/boost/fusion/include/std_pair.hpp @@ -7,6 +7,6 @@ #if !defined(FUSION_INCLUDE_STD_PAIR) #define FUSION_INCLUDE_STD_PAIR -#include +#include #endif diff --git a/include/boost/fusion/include/variant.hpp b/include/boost/fusion/include/variant.hpp index 824b8a6a..3d013b8e 100644 --- a/include/boost/fusion/include/variant.hpp +++ b/include/boost/fusion/include/variant.hpp @@ -7,6 +7,6 @@ #if !defined(FUSION_INCLUDE_VARIANT) #define FUSION_INCLUDE_VARIANT -#include +#include #endif diff --git a/include/boost/fusion/mpl.hpp b/include/boost/fusion/mpl.hpp index 6eb2538b..e499df93 100644 --- a/include/boost/fusion/mpl.hpp +++ b/include/boost/fusion/mpl.hpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_MPL_09172006_2049) @@ -9,7 +9,24 @@ // The fusion <--> MPL link headers #include -#include -#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #endif diff --git a/include/boost/fusion/sequence/intrinsic/mpl/at.hpp b/include/boost/fusion/mpl/at.hpp similarity index 100% rename from include/boost/fusion/sequence/intrinsic/mpl/at.hpp rename to include/boost/fusion/mpl/at.hpp diff --git a/include/boost/fusion/sequence/intrinsic/mpl/back.hpp b/include/boost/fusion/mpl/back.hpp similarity index 100% rename from include/boost/fusion/sequence/intrinsic/mpl/back.hpp rename to include/boost/fusion/mpl/back.hpp diff --git a/include/boost/fusion/sequence/intrinsic/mpl/begin.hpp b/include/boost/fusion/mpl/begin.hpp similarity index 93% rename from include/boost/fusion/sequence/intrinsic/mpl/begin.hpp rename to include/boost/fusion/mpl/begin.hpp index 6d344d75..be8b3142 100644 --- a/include/boost/fusion/sequence/intrinsic/mpl/begin.hpp +++ b/include/boost/fusion/mpl/begin.hpp @@ -9,7 +9,7 @@ #include #include -#include +#include #include namespace boost { namespace mpl diff --git a/include/boost/fusion/sequence/intrinsic/mpl/clear.hpp b/include/boost/fusion/mpl/clear.hpp similarity index 93% rename from include/boost/fusion/sequence/intrinsic/mpl/clear.hpp rename to include/boost/fusion/mpl/clear.hpp index 0f2d492b..14b3489e 100644 --- a/include/boost/fusion/sequence/intrinsic/mpl/clear.hpp +++ b/include/boost/fusion/mpl/clear.hpp @@ -9,7 +9,7 @@ #include #include -#include +#include namespace boost { namespace mpl { diff --git a/include/boost/fusion/sequence/intrinsic/mpl/detail/as.hpp b/include/boost/fusion/mpl/detail/as.hpp similarity index 100% rename from include/boost/fusion/sequence/intrinsic/mpl/detail/as.hpp rename to include/boost/fusion/mpl/detail/as.hpp diff --git a/include/boost/fusion/sequence/intrinsic/mpl/detail/clear.hpp b/include/boost/fusion/mpl/detail/clear.hpp similarity index 100% rename from include/boost/fusion/sequence/intrinsic/mpl/detail/clear.hpp rename to include/boost/fusion/mpl/detail/clear.hpp diff --git a/include/boost/fusion/sequence/intrinsic/mpl/empty.hpp b/include/boost/fusion/mpl/empty.hpp similarity index 100% rename from include/boost/fusion/sequence/intrinsic/mpl/empty.hpp rename to include/boost/fusion/mpl/empty.hpp diff --git a/include/boost/fusion/sequence/intrinsic/mpl/end.hpp b/include/boost/fusion/mpl/end.hpp similarity index 93% rename from include/boost/fusion/sequence/intrinsic/mpl/end.hpp rename to include/boost/fusion/mpl/end.hpp index 7d84a81b..ed3320b2 100644 --- a/include/boost/fusion/sequence/intrinsic/mpl/end.hpp +++ b/include/boost/fusion/mpl/end.hpp @@ -9,7 +9,7 @@ #include #include -#include +#include #include namespace boost { namespace mpl diff --git a/include/boost/fusion/sequence/intrinsic/mpl/erase.hpp b/include/boost/fusion/mpl/erase.hpp similarity index 94% rename from include/boost/fusion/sequence/intrinsic/mpl/erase.hpp rename to include/boost/fusion/mpl/erase.hpp index 0ee650e0..c4ffad78 100644 --- a/include/boost/fusion/sequence/intrinsic/mpl/erase.hpp +++ b/include/boost/fusion/mpl/erase.hpp @@ -10,7 +10,7 @@ #include #include #include -#include +#include namespace boost { namespace mpl { diff --git a/include/boost/fusion/sequence/intrinsic/mpl/erase_key.hpp b/include/boost/fusion/mpl/erase_key.hpp similarity index 94% rename from include/boost/fusion/sequence/intrinsic/mpl/erase_key.hpp rename to include/boost/fusion/mpl/erase_key.hpp index 6c8ba6cf..f5d3635a 100644 --- a/include/boost/fusion/sequence/intrinsic/mpl/erase_key.hpp +++ b/include/boost/fusion/mpl/erase_key.hpp @@ -10,7 +10,7 @@ #include #include #include -#include +#include namespace boost { namespace mpl { diff --git a/include/boost/fusion/sequence/intrinsic/mpl/front.hpp b/include/boost/fusion/mpl/front.hpp similarity index 100% rename from include/boost/fusion/sequence/intrinsic/mpl/front.hpp rename to include/boost/fusion/mpl/front.hpp diff --git a/include/boost/fusion/sequence/intrinsic/mpl/has_key.hpp b/include/boost/fusion/mpl/has_key.hpp similarity index 100% rename from include/boost/fusion/sequence/intrinsic/mpl/has_key.hpp rename to include/boost/fusion/mpl/has_key.hpp diff --git a/include/boost/fusion/sequence/intrinsic/mpl/insert.hpp b/include/boost/fusion/mpl/insert.hpp similarity index 94% rename from include/boost/fusion/sequence/intrinsic/mpl/insert.hpp rename to include/boost/fusion/mpl/insert.hpp index 7df943a5..d6083b8d 100644 --- a/include/boost/fusion/sequence/intrinsic/mpl/insert.hpp +++ b/include/boost/fusion/mpl/insert.hpp @@ -10,7 +10,7 @@ #include #include #include -#include +#include namespace boost { namespace mpl { diff --git a/include/boost/fusion/sequence/intrinsic/mpl/insert_range.hpp b/include/boost/fusion/mpl/insert_range.hpp similarity index 95% rename from include/boost/fusion/sequence/intrinsic/mpl/insert_range.hpp rename to include/boost/fusion/mpl/insert_range.hpp index 1c7abc89..21ed11c9 100644 --- a/include/boost/fusion/sequence/intrinsic/mpl/insert_range.hpp +++ b/include/boost/fusion/mpl/insert_range.hpp @@ -10,7 +10,7 @@ #include #include #include -#include +#include namespace boost { namespace mpl { diff --git a/include/boost/fusion/sequence/intrinsic/mpl/pop_back.hpp b/include/boost/fusion/mpl/pop_back.hpp similarity index 94% rename from include/boost/fusion/sequence/intrinsic/mpl/pop_back.hpp rename to include/boost/fusion/mpl/pop_back.hpp index 94dbba3a..27364cd3 100644 --- a/include/boost/fusion/sequence/intrinsic/mpl/pop_back.hpp +++ b/include/boost/fusion/mpl/pop_back.hpp @@ -10,7 +10,7 @@ #include #include #include -#include +#include namespace boost { namespace mpl { diff --git a/include/boost/fusion/sequence/intrinsic/mpl/pop_front.hpp b/include/boost/fusion/mpl/pop_front.hpp similarity index 94% rename from include/boost/fusion/sequence/intrinsic/mpl/pop_front.hpp rename to include/boost/fusion/mpl/pop_front.hpp index 957a673e..4ae96700 100644 --- a/include/boost/fusion/sequence/intrinsic/mpl/pop_front.hpp +++ b/include/boost/fusion/mpl/pop_front.hpp @@ -10,7 +10,7 @@ #include #include #include -#include +#include namespace boost { namespace mpl { diff --git a/include/boost/fusion/sequence/intrinsic/mpl/push_back.hpp b/include/boost/fusion/mpl/push_back.hpp similarity index 94% rename from include/boost/fusion/sequence/intrinsic/mpl/push_back.hpp rename to include/boost/fusion/mpl/push_back.hpp index e828af9e..8acafcd1 100644 --- a/include/boost/fusion/sequence/intrinsic/mpl/push_back.hpp +++ b/include/boost/fusion/mpl/push_back.hpp @@ -10,7 +10,7 @@ #include #include #include -#include +#include namespace boost { namespace mpl { diff --git a/include/boost/fusion/sequence/intrinsic/mpl/push_front.hpp b/include/boost/fusion/mpl/push_front.hpp similarity index 94% rename from include/boost/fusion/sequence/intrinsic/mpl/push_front.hpp rename to include/boost/fusion/mpl/push_front.hpp index 00431af2..48b59215 100644 --- a/include/boost/fusion/sequence/intrinsic/mpl/push_front.hpp +++ b/include/boost/fusion/mpl/push_front.hpp @@ -10,7 +10,7 @@ #include #include #include -#include +#include namespace boost { namespace mpl { diff --git a/include/boost/fusion/sequence/intrinsic/mpl/size.hpp b/include/boost/fusion/mpl/size.hpp similarity index 100% rename from include/boost/fusion/sequence/intrinsic/mpl/size.hpp rename to include/boost/fusion/mpl/size.hpp diff --git a/include/boost/fusion/sequence.hpp b/include/boost/fusion/sequence.hpp index a67465eb..d8fb2f8b 100644 --- a/include/boost/fusion/sequence.hpp +++ b/include/boost/fusion/sequence.hpp @@ -13,6 +13,6 @@ #include #include #include -#include +#include #endif diff --git a/include/boost/fusion/sequence/adapted/array.hpp b/include/boost/fusion/sequence/adapted/array.hpp deleted file mode 100644 index 0e1537f8..00000000 --- a/include/boost/fusion/sequence/adapted/array.hpp +++ /dev/null @@ -1,22 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 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_ARRAY_27122005_1035) -#define BOOST_FUSION_ARRAY_27122005_1035 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif diff --git a/include/boost/fusion/sequence/adapted/boost_tuple.hpp b/include/boost/fusion/sequence/adapted/boost_tuple.hpp deleted file mode 100644 index 14288087..00000000 --- a/include/boost/fusion/sequence/adapted/boost_tuple.hpp +++ /dev/null @@ -1,20 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - Distributed under the 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_BOOST_TUPLE_09272006_0732) -#define BOOST_FUSION_BOOST_TUPLE_09272006_0732 - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif diff --git a/include/boost/fusion/sequence/adapted/mpl.hpp b/include/boost/fusion/sequence/adapted/mpl.hpp deleted file mode 100644 index 94f4967a..00000000 --- a/include/boost/fusion/sequence/adapted/mpl.hpp +++ /dev/null @@ -1,21 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 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_MPL_31122005_1152) -#define BOOST_FUSION_MPL_31122005_1152 - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif diff --git a/include/boost/fusion/sequence/adapted/struct.hpp b/include/boost/fusion/sequence/adapted/struct.hpp deleted file mode 100644 index f4aed34e..00000000 --- a/include/boost/fusion/sequence/adapted/struct.hpp +++ /dev/null @@ -1,23 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 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_STRUCT_24122005_1744) -#define BOOST_FUSION_STD_STRUCT_24122005_1744 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif diff --git a/include/boost/fusion/sequence/adapted/variant.hpp b/include/boost/fusion/sequence/adapted/variant.hpp deleted file mode 100644 index 2443312d..00000000 --- a/include/boost/fusion/sequence/adapted/variant.hpp +++ /dev/null @@ -1,20 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 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_VARIANT_12112006_1614) -#define BOOST_FUSION_VARIANT_12112006_1614 - -#include -#include -#include -#include -#include -#include -#include -#include - -#endif diff --git a/include/boost/fusion/sequence/intrinsic.hpp b/include/boost/fusion/sequence/intrinsic.hpp index 59aaf9ff..8c5f4abd 100644 --- a/include/boost/fusion/sequence/intrinsic.hpp +++ b/include/boost/fusion/sequence/intrinsic.hpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_SEQUENCE_INTRINSIC_10022005_0618) @@ -14,7 +14,6 @@ #include #include #include -#include #include #include #include diff --git a/include/boost/fusion/sequence/intrinsic/mpl.hpp b/include/boost/fusion/sequence/intrinsic/mpl.hpp deleted file mode 100644 index 9d5bb609..00000000 --- a/include/boost/fusion/sequence/intrinsic/mpl.hpp +++ /dev/null @@ -1,28 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - Distributed under the 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_SEQUENCE_INTRINSIC_MPL_10022005_1641) -#define FUSION_SEQUENCE_INTRINSIC_MPL_10022005_1641 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif diff --git a/include/boost/fusion/support/deduce_sequence.hpp b/include/boost/fusion/support/deduce_sequence.hpp index 3dbe480b..13f4a99f 100644 --- a/include/boost/fusion/support/deduce_sequence.hpp +++ b/include/boost/fusion/support/deduce_sequence.hpp @@ -11,7 +11,7 @@ #include #include -#include +#include #include namespace boost { namespace fusion { namespace traits diff --git a/include/boost/fusion/view/ext_/segmented_iterator_range.hpp b/include/boost/fusion/view/ext_/segmented_iterator_range.hpp index 28e7180b..c4dcd01c 100755 --- a/include/boost/fusion/view/ext_/segmented_iterator_range.hpp +++ b/include/boost/fusion/view/ext_/segmented_iterator_range.hpp @@ -20,7 +20,7 @@ #include #include #include -#include +#include namespace boost { namespace fusion { 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 005044c6..be93c657 100644 --- a/include/boost/fusion/view/filter_view/filter_view_iterator.hpp +++ b/include/boost/fusion/view/filter_view/filter_view_iterator.hpp @@ -8,7 +8,7 @@ #define FUSION_FILTER_VIEW_ITERATOR_05062005_0849 #include -#include +#include #include #include #include diff --git a/include/boost/fusion/view/iterator_range/iterator_range.hpp b/include/boost/fusion/view/iterator_range/iterator_range.hpp index 2b45e072..0036f0ae 100644 --- a/include/boost/fusion/view/iterator_range/iterator_range.hpp +++ b/include/boost/fusion/view/iterator_range/iterator_range.hpp @@ -16,7 +16,7 @@ #include #include #include -#include +#include #include namespace boost { namespace fusion 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 6169ec67..18696d7e 100644 --- a/include/boost/fusion/view/joint_view/joint_view_iterator.hpp +++ b/include/boost/fusion/view/joint_view/joint_view_iterator.hpp @@ -10,7 +10,7 @@ #include #include #include -#include +#include #include #include #include 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 b51d60b4..9a7334de 100644 --- a/include/boost/fusion/view/repetitive_view/repetitive_view_iterator.hpp +++ b/include/boost/fusion/view/repetitive_view/repetitive_view_iterator.hpp @@ -11,7 +11,7 @@ #include #include #include -#include +#include #include #include #include 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 5b981036..0a890437 100644 --- a/include/boost/fusion/view/reverse_view/reverse_view_iterator.hpp +++ b/include/boost/fusion/view/reverse_view/reverse_view_iterator.hpp @@ -10,7 +10,7 @@ #include #include #include -#include +#include #include #include #include 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 ce0e8164..bb4b6afd 100644 --- a/include/boost/fusion/view/transform_view/transform_view_iterator.hpp +++ b/include/boost/fusion/view/transform_view/transform_view_iterator.hpp @@ -10,7 +10,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/include/boost/fusion/view/zip_view/detail/equal_to_impl.hpp b/include/boost/fusion/view/zip_view/detail/equal_to_impl.hpp index 7def2030..c3962a63 100644 --- a/include/boost/fusion/view/zip_view/detail/equal_to_impl.hpp +++ b/include/boost/fusion/view/zip_view/detail/equal_to_impl.hpp @@ -8,7 +8,7 @@ #if !defined(FUSION_EQUAL_TO_IMPL_20060128_1423) #define FUSION_EQUAL_TO_IMPL_20060128_1423 -#include +#include #include #include diff --git a/include/boost/fusion/view/zip_view/detail/strictest_traversal.hpp b/include/boost/fusion/view/zip_view/detail/strictest_traversal.hpp index ae276839..e74ffbfc 100644 --- a/include/boost/fusion/view/zip_view/detail/strictest_traversal.hpp +++ b/include/boost/fusion/view/zip_view/detail/strictest_traversal.hpp @@ -11,7 +11,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/include/boost/fusion/view/zip_view/zip_view.hpp b/include/boost/fusion/view/zip_view/zip_view.hpp index 2a1e830c..af026241 100644 --- a/include/boost/fusion/view/zip_view/zip_view.hpp +++ b/include/boost/fusion/view/zip_view/zip_view.hpp @@ -21,7 +21,7 @@ #include #include #include -#include +#include #include #include From e894481f5bbd285b3e1093a9cfe51c1417c2e3bf Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Sat, 20 Oct 2007 13:13:46 +0000 Subject: [PATCH 231/234] phase4: refactoring for v2.1 [SVN r40212] --- test/algorithm/erase_key.cpp | 6 +++--- test/sequence/adapt_assoc_struct.cpp | 2 +- test/sequence/adapt_struct.cpp | 2 +- test/sequence/as_list.cpp | 2 +- test/sequence/as_map.cpp | 4 ++-- test/sequence/as_set.cpp | 6 +++--- test/sequence/as_vector.cpp | 2 +- test/sequence/boost_tuple.cpp | 2 +- test/sequence/deque_misc.cpp | 2 +- test/sequence/list_misc.cpp | 2 +- test/sequence/std_pair.cpp | 2 +- test/sequence/tuple_misc.cpp | 2 +- test/sequence/vector_misc.cpp | 2 +- 13 files changed, 18 insertions(+), 18 deletions(-) diff --git a/test/algorithm/erase_key.cpp b/test/algorithm/erase_key.cpp index c3a2f2f0..2685bfd2 100644 --- a/test/algorithm/erase_key.cpp +++ b/test/algorithm/erase_key.cpp @@ -10,9 +10,9 @@ #include #include #include -#include -#include -#include +#include +#include +#include #include #include #include diff --git a/test/sequence/adapt_assoc_struct.cpp b/test/sequence/adapt_assoc_struct.cpp index 44c7bcec..277433b3 100644 --- a/test/sequence/adapt_assoc_struct.cpp +++ b/test/sequence/adapt_assoc_struct.cpp @@ -19,7 +19,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/test/sequence/adapt_struct.cpp b/test/sequence/adapt_struct.cpp index e043a0ff..0f47c648 100644 --- a/test/sequence/adapt_struct.cpp +++ b/test/sequence/adapt_struct.cpp @@ -15,7 +15,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/test/sequence/as_list.cpp b/test/sequence/as_list.cpp index fed5286f..72dc9aa4 100644 --- a/test/sequence/as_list.cpp +++ b/test/sequence/as_list.cpp @@ -9,7 +9,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/test/sequence/as_map.cpp b/test/sequence/as_map.cpp index 584c7ca5..a9364bc6 100644 --- a/test/sequence/as_map.cpp +++ b/test/sequence/as_map.cpp @@ -9,8 +9,8 @@ #include #include #include -#include -#include +#include +#include #include #include #include diff --git a/test/sequence/as_set.cpp b/test/sequence/as_set.cpp index 4afa4045..9bfd5869 100644 --- a/test/sequence/as_set.cpp +++ b/test/sequence/as_set.cpp @@ -9,9 +9,9 @@ #include #include #include -#include -#include -#include +#include +#include +#include #include #include #include diff --git a/test/sequence/as_vector.cpp b/test/sequence/as_vector.cpp index c295e966..d728c837 100644 --- a/test/sequence/as_vector.cpp +++ b/test/sequence/as_vector.cpp @@ -9,7 +9,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/test/sequence/boost_tuple.cpp b/test/sequence/boost_tuple.cpp index 17b96c77..1e3d23b4 100644 --- a/test/sequence/boost_tuple.cpp +++ b/test/sequence/boost_tuple.cpp @@ -15,7 +15,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/test/sequence/deque_misc.cpp b/test/sequence/deque_misc.cpp index e29c7c8b..53836bbc 100644 --- a/test/sequence/deque_misc.cpp +++ b/test/sequence/deque_misc.cpp @@ -7,7 +7,7 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include +#include #include #define FUSION_SEQUENCE deque diff --git a/test/sequence/list_misc.cpp b/test/sequence/list_misc.cpp index 68827398..2d8fe047 100644 --- a/test/sequence/list_misc.cpp +++ b/test/sequence/list_misc.cpp @@ -6,7 +6,7 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include +#include #define FUSION_SEQUENCE list #define FUSION_FORWARD_ONLY diff --git a/test/sequence/std_pair.cpp b/test/sequence/std_pair.cpp index 435a4b85..127a1fbc 100644 --- a/test/sequence/std_pair.cpp +++ b/test/sequence/std_pair.cpp @@ -15,7 +15,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/test/sequence/tuple_misc.cpp b/test/sequence/tuple_misc.cpp index 632a9ca1..daef0322 100644 --- a/test/sequence/tuple_misc.cpp +++ b/test/sequence/tuple_misc.cpp @@ -6,7 +6,7 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include +#include #include #define FUSION_SEQUENCE tuple diff --git a/test/sequence/vector_misc.cpp b/test/sequence/vector_misc.cpp index d8e02876..25d3ecfc 100644 --- a/test/sequence/vector_misc.cpp +++ b/test/sequence/vector_misc.cpp @@ -6,7 +6,7 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include +#include #include #define FUSION_SEQUENCE vector From c35180f4f975d325b8e1fd61c44abca3558fa34a Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Sat, 20 Oct 2007 13:13:58 +0000 Subject: [PATCH 232/234] phase4: refactoring for v2.1 [SVN r40213] --- .../fusion/algorithm/transformation/zip.hpp | 2 +- include/boost/fusion/container/deque.hpp | 3 +- .../deque/convert.hpp} | 11 +-- .../deque}/detail/as_deque.hpp | 2 +- .../container/deque/detail/convert_impl.hpp | 45 +++++++++++ include/boost/fusion/container/list.hpp | 3 +- .../list/convert.hpp} | 13 +-- .../list}/detail/build_cons.hpp | 0 .../container/list/detail/convert_impl.hpp | 51 ++++++++++++ include/boost/fusion/container/map.hpp | 3 +- .../as_map.hpp => container/map/convert.hpp} | 11 +-- .../map}/detail/as_map.hpp | 2 +- .../container/map/detail/convert_impl.hpp | 45 +++++++++++ include/boost/fusion/container/set.hpp | 3 +- .../as_set.hpp => container/set/convert.hpp} | 11 +-- .../set}/detail/as_set.hpp | 2 +- .../container/set/detail/convert_impl.hpp | 45 +++++++++++ include/boost/fusion/container/vector.hpp | 3 +- .../vector/convert.hpp} | 11 +-- .../vector}/detail/as_vector.hpp | 2 +- .../container/vector/detail/convert_impl.hpp | 45 +++++++++++ .../boost/fusion/container/vector/vector.hpp | 2 +- .../functional/adapter/unfused_typed.hpp | 2 +- include/boost/fusion/include/as_vector.hpp | 2 +- include/boost/fusion/mpl/detail/as.hpp | 80 ------------------- include/boost/fusion/mpl/erase.hpp | 15 ++-- include/boost/fusion/mpl/erase_key.hpp | 15 ++-- include/boost/fusion/mpl/insert.hpp | 15 ++-- include/boost/fusion/mpl/insert_range.hpp | 15 ++-- include/boost/fusion/mpl/pop_back.hpp | 15 ++-- include/boost/fusion/mpl/pop_front.hpp | 15 ++-- include/boost/fusion/mpl/push_back.hpp | 15 ++-- include/boost/fusion/mpl/push_front.hpp | 15 ++-- include/boost/fusion/sequence.hpp | 3 +- include/boost/fusion/sequence/conversion.hpp | 16 ---- include/boost/fusion/sequence/convert.hpp | 48 +++++++++++ .../boost/fusion/support/deduce_sequence.hpp | 2 +- .../fusion/view/zip_view/detail/at_impl.hpp | 2 +- .../view/zip_view/detail/deref_impl.hpp | 2 +- .../view/zip_view/detail/value_at_impl.hpp | 2 +- .../view/zip_view/detail/value_of_impl.hpp | 2 +- .../boost/fusion/view/zip_view/zip_view.hpp | 2 +- .../view/zip_view/zip_view_iterator.hpp | 2 +- 43 files changed, 400 insertions(+), 200 deletions(-) rename include/boost/fusion/{sequence/conversion/as_deque.hpp => container/deque/convert.hpp} (84%) rename include/boost/fusion/{sequence/conversion => container/deque}/detail/as_deque.hpp (97%) create mode 100644 include/boost/fusion/container/deque/detail/convert_impl.hpp rename include/boost/fusion/{sequence/conversion/as_list.hpp => container/list/convert.hpp} (83%) rename include/boost/fusion/{sequence/conversion => container/list}/detail/build_cons.hpp (100%) create mode 100644 include/boost/fusion/container/list/detail/convert_impl.hpp rename include/boost/fusion/{sequence/conversion/as_map.hpp => container/map/convert.hpp} (84%) rename include/boost/fusion/{sequence/conversion => container/map}/detail/as_map.hpp (97%) create mode 100644 include/boost/fusion/container/map/detail/convert_impl.hpp rename include/boost/fusion/{sequence/conversion/as_set.hpp => container/set/convert.hpp} (84%) rename include/boost/fusion/{sequence/conversion => container/set}/detail/as_set.hpp (97%) create mode 100644 include/boost/fusion/container/set/detail/convert_impl.hpp rename include/boost/fusion/{sequence/conversion/as_vector.hpp => container/vector/convert.hpp} (84%) rename include/boost/fusion/{sequence/conversion => container/vector}/detail/as_vector.hpp (97%) create mode 100644 include/boost/fusion/container/vector/detail/convert_impl.hpp delete mode 100644 include/boost/fusion/mpl/detail/as.hpp delete mode 100644 include/boost/fusion/sequence/conversion.hpp create mode 100644 include/boost/fusion/sequence/convert.hpp diff --git a/include/boost/fusion/algorithm/transformation/zip.hpp b/include/boost/fusion/algorithm/transformation/zip.hpp index 6d6ee4d1..a2f66bfd 100644 --- a/include/boost/fusion/algorithm/transformation/zip.hpp +++ b/include/boost/fusion/algorithm/transformation/zip.hpp @@ -12,7 +12,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/include/boost/fusion/container/deque.hpp b/include/boost/fusion/container/deque.hpp index a9eb7aae..bb29ce2f 100644 --- a/include/boost/fusion/container/deque.hpp +++ b/include/boost/fusion/container/deque.hpp @@ -2,13 +2,14 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - 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_SEQUENCE_CONTAINER_DEQUE_24112006_2036) #define BOOST_FUSION_SEQUENCE_CONTAINER_DEQUE_24112006_2036 #include +#include #endif diff --git a/include/boost/fusion/sequence/conversion/as_deque.hpp b/include/boost/fusion/container/deque/convert.hpp similarity index 84% rename from include/boost/fusion/sequence/conversion/as_deque.hpp rename to include/boost/fusion/container/deque/convert.hpp index 7c7cd7ad..0f3a75e2 100644 --- a/include/boost/fusion/sequence/conversion/as_deque.hpp +++ b/include/boost/fusion/container/deque/convert.hpp @@ -2,18 +2,19 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - 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(FUSION_AS_DEQUE_20061213_2207) -#define FUSION_AS_DEQUE_20061213_2207 +#if !defined(FUSION_CONVERT_20061213_2207) +#define FUSION_CONVERT_20061213_2207 -#include +#include +#include #include #include #include -namespace boost { namespace fusion +namespace boost { namespace fusion { namespace result_of { diff --git a/include/boost/fusion/sequence/conversion/detail/as_deque.hpp b/include/boost/fusion/container/deque/detail/as_deque.hpp similarity index 97% rename from include/boost/fusion/sequence/conversion/detail/as_deque.hpp rename to include/boost/fusion/container/deque/detail/as_deque.hpp index 8fcc5643..e48b7910 100644 --- a/include/boost/fusion/sequence/conversion/detail/as_deque.hpp +++ b/include/boost/fusion/container/deque/detail/as_deque.hpp @@ -55,7 +55,7 @@ namespace boost { namespace fusion { namespace detail typedef typename fusion::result_of::value_of::type \ BOOST_PP_CAT(T, n); -#define BOOST_PP_FILENAME_1 +#define BOOST_PP_FILENAME_1 #define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_DEQUE_SIZE) #include BOOST_PP_ITERATE() diff --git a/include/boost/fusion/container/deque/detail/convert_impl.hpp b/include/boost/fusion/container/deque/detail/convert_impl.hpp new file mode 100644 index 00000000..ac310a19 --- /dev/null +++ b/include/boost/fusion/container/deque/detail/convert_impl.hpp @@ -0,0 +1,45 @@ +/*============================================================================= + Copyright (c) 2001-2006 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_CONVERT_IMPL_20061213_2207) +#define FUSION_CONVERT_IMPL_20061213_2207 + +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct deque_tag; + + namespace extension + { + template + struct convert_impl; + + template <> + struct convert_impl + { + template + struct apply + { + typedef typename detail::as_deque::value> gen; + typedef typename gen:: + template apply::type>::type + type; + + static type call(Sequence& seq) + { + return gen::call(fusion::begin(seq)); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/container/list.hpp b/include/boost/fusion/container/list.hpp index cfc0fd3d..8a0d6456 100644 --- a/include/boost/fusion/container/list.hpp +++ b/include/boost/fusion/container/list.hpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_SEQUENCE_CLASS_LIST_10022005_0605) @@ -12,5 +12,6 @@ #include #include #include +#include #endif diff --git a/include/boost/fusion/sequence/conversion/as_list.hpp b/include/boost/fusion/container/list/convert.hpp similarity index 83% rename from include/boost/fusion/sequence/conversion/as_list.hpp rename to include/boost/fusion/container/list/convert.hpp index 8be72890..418158cf 100644 --- a/include/boost/fusion/sequence/conversion/as_list.hpp +++ b/include/boost/fusion/container/list/convert.hpp @@ -1,26 +1,27 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_AS_LIST_09232005_1215) -#define FUSION_AS_LIST_09232005_1215 +#if !defined(FUSION_CONVERT_09232005_1215) +#define FUSION_CONVERT_09232005_1215 #include +#include +#include #include #include #include -#include -namespace boost { namespace fusion +namespace boost { namespace fusion { namespace result_of { template struct as_list { - typedef typename + typedef typename detail::build_cons< typename result_of::begin::type , typename result_of::end::type diff --git a/include/boost/fusion/sequence/conversion/detail/build_cons.hpp b/include/boost/fusion/container/list/detail/build_cons.hpp similarity index 100% rename from include/boost/fusion/sequence/conversion/detail/build_cons.hpp rename to include/boost/fusion/container/list/detail/build_cons.hpp diff --git a/include/boost/fusion/container/list/detail/convert_impl.hpp b/include/boost/fusion/container/list/detail/convert_impl.hpp new file mode 100644 index 00000000..cfe7a1df --- /dev/null +++ b/include/boost/fusion/container/list/detail/convert_impl.hpp @@ -0,0 +1,51 @@ +/*============================================================================= + Copyright (c) 2001-2006 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_CONVERT_IMPL_09232005_1215) +#define FUSION_CONVERT_IMPL_09232005_1215 + +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct cons_tag; + + namespace extension + { + template + struct convert_impl; + + template <> + struct convert_impl + { + template + struct apply + { + typedef typename + detail::build_cons< + typename result_of::begin::type + , typename result_of::end::type + > + build_cons; + + typedef typename build_cons::type type; + + static type + call(Sequence& seq) + { + return build_cons::call(fusion::begin(seq), fusion::end(seq)); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/container/map.hpp b/include/boost/fusion/container/map.hpp index 5efa1b02..69518311 100644 --- a/include/boost/fusion/container/map.hpp +++ b/include/boost/fusion/container/map.hpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_SEQUENCE_CLASS_MAP_10022005_0606) @@ -10,5 +10,6 @@ #include #include #include +#include #endif diff --git a/include/boost/fusion/sequence/conversion/as_map.hpp b/include/boost/fusion/container/map/convert.hpp similarity index 84% rename from include/boost/fusion/sequence/conversion/as_map.hpp rename to include/boost/fusion/container/map/convert.hpp index c3e30589..f174da58 100644 --- a/include/boost/fusion/sequence/conversion/as_map.hpp +++ b/include/boost/fusion/container/map/convert.hpp @@ -1,18 +1,19 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_AS_MAP_09232005_1340) -#define FUSION_AS_MAP_09232005_1340 +#if !defined(FUSION_CONVERT_09232005_1340) +#define FUSION_CONVERT_09232005_1340 -#include +#include +#include #include #include #include -namespace boost { namespace fusion +namespace boost { namespace fusion { namespace result_of { diff --git a/include/boost/fusion/sequence/conversion/detail/as_map.hpp b/include/boost/fusion/container/map/detail/as_map.hpp similarity index 97% rename from include/boost/fusion/sequence/conversion/detail/as_map.hpp rename to include/boost/fusion/container/map/detail/as_map.hpp index 0fc61b96..326877f9 100644 --- a/include/boost/fusion/sequence/conversion/detail/as_map.hpp +++ b/include/boost/fusion/container/map/detail/as_map.hpp @@ -54,7 +54,7 @@ namespace boost { namespace fusion { namespace detail typedef typename fusion::result_of::value_of::type \ BOOST_PP_CAT(T, n); -#define BOOST_PP_FILENAME_1 +#define BOOST_PP_FILENAME_1 #define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_MAP_SIZE) #include BOOST_PP_ITERATE() diff --git a/include/boost/fusion/container/map/detail/convert_impl.hpp b/include/boost/fusion/container/map/detail/convert_impl.hpp new file mode 100644 index 00000000..aedd3e3d --- /dev/null +++ b/include/boost/fusion/container/map/detail/convert_impl.hpp @@ -0,0 +1,45 @@ +/*============================================================================= + Copyright (c) 2001-2006 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_CONVERT_IMPL_09232005_1340) +#define FUSION_CONVERT_IMPL_09232005_1340 + +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct map_tag; + + namespace extension + { + template + struct convert_impl; + + template <> + struct convert_impl + { + template + struct apply + { + typedef typename detail::as_map::value> gen; + typedef typename gen:: + template apply::type>::type + type; + + static type call(Sequence& seq) + { + return gen::call(fusion::begin(seq)); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/container/set.hpp b/include/boost/fusion/container/set.hpp index 82c4ccc8..6b7674d6 100644 --- a/include/boost/fusion/container/set.hpp +++ b/include/boost/fusion/container/set.hpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_SEQUENCE_CLASS_SET_10022005_0607) @@ -10,5 +10,6 @@ #include #include #include +#include #endif diff --git a/include/boost/fusion/sequence/conversion/as_set.hpp b/include/boost/fusion/container/set/convert.hpp similarity index 84% rename from include/boost/fusion/sequence/conversion/as_set.hpp rename to include/boost/fusion/container/set/convert.hpp index 34ee007d..1aaddf0c 100644 --- a/include/boost/fusion/sequence/conversion/as_set.hpp +++ b/include/boost/fusion/container/set/convert.hpp @@ -1,18 +1,19 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_AS_SET_09232005_1341) -#define FUSION_AS_SET_09232005_1341 +#if !defined(FUSION_CONVERT_09232005_1341) +#define FUSION_CONVERT_09232005_1341 -#include +#include +#include #include #include #include -namespace boost { namespace fusion +namespace boost { namespace fusion { namespace result_of { diff --git a/include/boost/fusion/sequence/conversion/detail/as_set.hpp b/include/boost/fusion/container/set/detail/as_set.hpp similarity index 97% rename from include/boost/fusion/sequence/conversion/detail/as_set.hpp rename to include/boost/fusion/container/set/detail/as_set.hpp index 96a93e70..33786338 100644 --- a/include/boost/fusion/sequence/conversion/detail/as_set.hpp +++ b/include/boost/fusion/container/set/detail/as_set.hpp @@ -54,7 +54,7 @@ namespace boost { namespace fusion { namespace detail typedef typename fusion::result_of::value_of::type \ BOOST_PP_CAT(T, n); -#define BOOST_PP_FILENAME_1 +#define BOOST_PP_FILENAME_1 #define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_SET_SIZE) #include BOOST_PP_ITERATE() diff --git a/include/boost/fusion/container/set/detail/convert_impl.hpp b/include/boost/fusion/container/set/detail/convert_impl.hpp new file mode 100644 index 00000000..1aa79fb1 --- /dev/null +++ b/include/boost/fusion/container/set/detail/convert_impl.hpp @@ -0,0 +1,45 @@ +/*============================================================================= + Copyright (c) 2001-2006 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_CONVERT_IMPL_09232005_1341) +#define FUSION_CONVERT_IMPL_09232005_1341 + +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct set_tag; + + namespace extension + { + template + struct convert_impl; + + template <> + struct convert_impl + { + template + struct apply + { + typedef typename detail::as_set::value> gen; + typedef typename gen:: + template apply::type>::type + type; + + static type call(Sequence& seq) + { + return gen::call(fusion::begin(seq)); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/container/vector.hpp b/include/boost/fusion/container/vector.hpp index 2766ac6a..389a102e 100644 --- a/include/boost/fusion/container/vector.hpp +++ b/include/boost/fusion/container/vector.hpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_SEQUENCE_CLASS_VECTOR_10022005_0602) @@ -16,5 +16,6 @@ #include #include #include +#include #endif diff --git a/include/boost/fusion/sequence/conversion/as_vector.hpp b/include/boost/fusion/container/vector/convert.hpp similarity index 84% rename from include/boost/fusion/sequence/conversion/as_vector.hpp rename to include/boost/fusion/container/vector/convert.hpp index ef1590fd..a31578a2 100644 --- a/include/boost/fusion/sequence/conversion/as_vector.hpp +++ b/include/boost/fusion/container/vector/convert.hpp @@ -1,18 +1,19 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_AS_VECTOR_09222005_1104) -#define FUSION_AS_VECTOR_09222005_1104 +#if !defined(FUSION_CONVERT_09222005_1104) +#define FUSION_CONVERT_09222005_1104 -#include +#include +#include #include #include #include -namespace boost { namespace fusion +namespace boost { namespace fusion { namespace result_of { diff --git a/include/boost/fusion/sequence/conversion/detail/as_vector.hpp b/include/boost/fusion/container/vector/detail/as_vector.hpp similarity index 97% rename from include/boost/fusion/sequence/conversion/detail/as_vector.hpp rename to include/boost/fusion/container/vector/detail/as_vector.hpp index a472ed52..fa8dadcf 100644 --- a/include/boost/fusion/sequence/conversion/detail/as_vector.hpp +++ b/include/boost/fusion/container/vector/detail/as_vector.hpp @@ -54,7 +54,7 @@ namespace boost { namespace fusion { namespace detail typedef typename fusion::result_of::value_of::type \ BOOST_PP_CAT(T, n); -#define BOOST_PP_FILENAME_1 +#define BOOST_PP_FILENAME_1 #define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) #include BOOST_PP_ITERATE() diff --git a/include/boost/fusion/container/vector/detail/convert_impl.hpp b/include/boost/fusion/container/vector/detail/convert_impl.hpp new file mode 100644 index 00000000..5e1d080f --- /dev/null +++ b/include/boost/fusion/container/vector/detail/convert_impl.hpp @@ -0,0 +1,45 @@ +/*============================================================================= + Copyright (c) 2001-2006 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_CONVERT_IMPL_09222005_1104) +#define FUSION_CONVERT_IMPL_09222005_1104 + +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct vector_tag; + + namespace extension + { + template + struct convert_impl; + + template <> + struct convert_impl + { + template + struct apply + { + typedef typename detail::as_vector::value> gen; + typedef typename gen:: + template apply::type>::type + type; + + static type call(Sequence& seq) + { + return gen::call(fusion::begin(seq)); + } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/container/vector/vector.hpp b/include/boost/fusion/container/vector/vector.hpp index b73ee510..bd05badd 100644 --- a/include/boost/fusion/container/vector/vector.hpp +++ b/include/boost/fusion/container/vector/vector.hpp @@ -9,7 +9,7 @@ #include #include -#include +#include #include #include #include diff --git a/include/boost/fusion/functional/adapter/unfused_typed.hpp b/include/boost/fusion/functional/adapter/unfused_typed.hpp index 561e8112..9ee3a7a6 100644 --- a/include/boost/fusion/functional/adapter/unfused_typed.hpp +++ b/include/boost/fusion/functional/adapter/unfused_typed.hpp @@ -23,7 +23,7 @@ #include #include #include -#include +#include #include #include diff --git a/include/boost/fusion/include/as_vector.hpp b/include/boost/fusion/include/as_vector.hpp index 2136b492..4c9b39d0 100644 --- a/include/boost/fusion/include/as_vector.hpp +++ b/include/boost/fusion/include/as_vector.hpp @@ -7,6 +7,6 @@ #if !defined(FUSION_INCLUDE_AS_VECTOR) #define FUSION_INCLUDE_AS_VECTOR -#include +#include #endif diff --git a/include/boost/fusion/mpl/detail/as.hpp b/include/boost/fusion/mpl/detail/as.hpp deleted file mode 100644 index 1537e549..00000000 --- a/include/boost/fusion/mpl/detail/as.hpp +++ /dev/null @@ -1,80 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - Distributed under the 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_AS_10022005_1442) -#define FUSION_AS_10022005_1442 - -namespace boost { namespace fusion -{ - namespace result_of - { - template - struct as_list; - - template - struct as_map; - - template - struct as_set; - - template - struct as_vector; - - template - struct as_deque; - } - - namespace detail - { - template - struct as_impl; - - template <> - struct as_impl - { - template - struct apply : result_of::as_list {}; - }; - - template <> - struct as_impl - { - template - struct apply : result_of::as_map {}; - }; - - template <> - struct as_impl - { - template - struct apply : result_of::as_set {}; - }; - - template <> - struct as_impl - { - template - struct apply : result_of::as_vector {}; - }; - - template<> - struct as_impl - { - template - struct apply : result_of::as_deque {}; - }; - - template - struct as - { - typedef typename - as_impl::template apply::type - type; - }; - } -}} - -#endif diff --git a/include/boost/fusion/mpl/erase.hpp b/include/boost/fusion/mpl/erase.hpp index c4ffad78..a8b092ae 100644 --- a/include/boost/fusion/mpl/erase.hpp +++ b/include/boost/fusion/mpl/erase.hpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_ERASE_10022005_1835) @@ -10,7 +10,7 @@ #include #include #include -#include +#include namespace boost { namespace mpl { @@ -23,12 +23,13 @@ namespace boost { namespace mpl template struct apply { - typedef typename - fusion::result_of::erase::type + typedef typename + fusion::result_of::erase::type result; - - typedef typename - fusion::detail::as::type, result>::type + + typedef typename + fusion::result_of::convert< + typename fusion::detail::tag_of::type, result>::type type; }; }; diff --git a/include/boost/fusion/mpl/erase_key.hpp b/include/boost/fusion/mpl/erase_key.hpp index f5d3635a..3cda2686 100644 --- a/include/boost/fusion/mpl/erase_key.hpp +++ b/include/boost/fusion/mpl/erase_key.hpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_ERASE_KEY_10022005_1907) @@ -10,7 +10,7 @@ #include #include #include -#include +#include namespace boost { namespace mpl { @@ -23,12 +23,13 @@ namespace boost { namespace mpl template struct apply { - typedef typename - fusion::result_of::erase_key::type + typedef typename + fusion::result_of::erase_key::type result; - - typedef typename - fusion::detail::as::type, result>::type + + typedef typename + fusion::result_of::convert< + typename fusion::detail::tag_of::type, result>::type type; }; }; diff --git a/include/boost/fusion/mpl/insert.hpp b/include/boost/fusion/mpl/insert.hpp index d6083b8d..76918ce9 100644 --- a/include/boost/fusion/mpl/insert.hpp +++ b/include/boost/fusion/mpl/insert.hpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_INSERT_10022005_1837) @@ -10,7 +10,7 @@ #include #include #include -#include +#include namespace boost { namespace mpl { @@ -23,12 +23,13 @@ namespace boost { namespace mpl template struct apply { - typedef typename - fusion::result_of::insert::type + typedef typename + fusion::result_of::insert::type result; - - typedef typename - fusion::detail::as::type, result>::type + + typedef typename + fusion::result_of::convert< + typename fusion::detail::tag_of::type, result>::type type; }; }; diff --git a/include/boost/fusion/mpl/insert_range.hpp b/include/boost/fusion/mpl/insert_range.hpp index 21ed11c9..4da39365 100644 --- a/include/boost/fusion/mpl/insert_range.hpp +++ b/include/boost/fusion/mpl/insert_range.hpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_INSERT_RANGE_10022005_1838) @@ -10,7 +10,7 @@ #include #include #include -#include +#include namespace boost { namespace mpl { @@ -23,12 +23,13 @@ namespace boost { namespace mpl template struct apply { - typedef typename - fusion::result_of::insert_range::type + typedef typename + fusion::result_of::insert_range::type result; - - typedef typename - fusion::detail::as::type, result>::type + + typedef typename + fusion::result_of::convert< + typename fusion::detail::tag_of::type, result>::type type; }; }; diff --git a/include/boost/fusion/mpl/pop_back.hpp b/include/boost/fusion/mpl/pop_back.hpp index 27364cd3..84bd75a4 100644 --- a/include/boost/fusion/mpl/pop_back.hpp +++ b/include/boost/fusion/mpl/pop_back.hpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_POP_BACK_10022005_1801) @@ -10,7 +10,7 @@ #include #include #include -#include +#include namespace boost { namespace mpl { @@ -23,12 +23,13 @@ namespace boost { namespace mpl template struct apply { - typedef typename - fusion::result_of::pop_back::type + typedef typename + fusion::result_of::pop_back::type result; - - typedef typename - fusion::detail::as::type, result>::type + + typedef typename + fusion::result_of::convert< + typename fusion::detail::tag_of::type, result>::type type; }; }; diff --git a/include/boost/fusion/mpl/pop_front.hpp b/include/boost/fusion/mpl/pop_front.hpp index 4ae96700..ffe6c302 100644 --- a/include/boost/fusion/mpl/pop_front.hpp +++ b/include/boost/fusion/mpl/pop_front.hpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_POP_FRONT_10022005_1800) @@ -10,7 +10,7 @@ #include #include #include -#include +#include namespace boost { namespace mpl { @@ -23,12 +23,13 @@ namespace boost { namespace mpl template struct apply { - typedef typename - fusion::result_of::pop_front::type + typedef typename + fusion::result_of::pop_front::type result; - - typedef typename - fusion::detail::as::type, result>::type + + typedef typename + fusion::result_of::convert< + typename fusion::detail::tag_of::type, result>::type type; }; }; diff --git a/include/boost/fusion/mpl/push_back.hpp b/include/boost/fusion/mpl/push_back.hpp index 8acafcd1..e96faa06 100644 --- a/include/boost/fusion/mpl/push_back.hpp +++ b/include/boost/fusion/mpl/push_back.hpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_PUSH_BACK_10022005_1647) @@ -10,7 +10,7 @@ #include #include #include -#include +#include namespace boost { namespace mpl { @@ -23,12 +23,13 @@ namespace boost { namespace mpl template struct apply { - typedef typename - fusion::result_of::push_back::type + typedef typename + fusion::result_of::push_back::type result; - - typedef typename - fusion::detail::as::type, result>::type + + typedef typename + fusion::result_of::convert< + typename fusion::detail::tag_of::type, result>::type type; }; }; diff --git a/include/boost/fusion/mpl/push_front.hpp b/include/boost/fusion/mpl/push_front.hpp index 48b59215..c508d652 100644 --- a/include/boost/fusion/mpl/push_front.hpp +++ b/include/boost/fusion/mpl/push_front.hpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_PUSH_FRONT_10022005_1720) @@ -10,7 +10,7 @@ #include #include #include -#include +#include namespace boost { namespace mpl { @@ -23,12 +23,13 @@ namespace boost { namespace mpl template struct apply { - typedef typename - fusion::result_of::push_front::type + typedef typename + fusion::result_of::push_front::type result; - - typedef typename - fusion::detail::as::type, result>::type + + typedef typename + fusion::result_of::convert< + typename fusion::detail::tag_of::type, result>::type type; }; }; diff --git a/include/boost/fusion/sequence.hpp b/include/boost/fusion/sequence.hpp index d8fb2f8b..e60fdd7d 100644 --- a/include/boost/fusion/sequence.hpp +++ b/include/boost/fusion/sequence.hpp @@ -9,10 +9,9 @@ #include #include -#include #include #include #include -#include +#include #endif diff --git a/include/boost/fusion/sequence/conversion.hpp b/include/boost/fusion/sequence/conversion.hpp deleted file mode 100644 index e70cc88a..00000000 --- a/include/boost/fusion/sequence/conversion.hpp +++ /dev/null @@ -1,16 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - Distributed under the 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_SEQUENCE_CONVERSION_10022005_0622) -#define FUSION_SEQUENCE_CONVERSION_10022005_0622 - -#include -#include -#include -#include -#include - -#endif diff --git a/include/boost/fusion/sequence/convert.hpp b/include/boost/fusion/sequence/convert.hpp new file mode 100644 index 00000000..a6e3ccca --- /dev/null +++ b/include/boost/fusion/sequence/convert.hpp @@ -0,0 +1,48 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Distributed under the 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_CONVERT_10022005_1442) +#define FUSION_CONVERT_10022005_1442 + +namespace boost { namespace fusion +{ + namespace extension + { + template + struct convert_impl; + } + + namespace result_of + { + template + struct convert + { + typedef typename extension::convert_impl gen; + + typedef typename + gen::template apply::type + type; + }; + } + + template + inline typename result_of::convert::type + convert(Sequence& seq) + { + typedef typename result_of::convert::gen gen; + return gen::call(seq); + } + + template + inline typename result_of::convert::type + convert(Sequence const& seq) + { + typedef typename result_of::convert::gen gen; + return gen::call(seq); + } +}} + +#endif diff --git a/include/boost/fusion/support/deduce_sequence.hpp b/include/boost/fusion/support/deduce_sequence.hpp index 13f4a99f..9cf97922 100644 --- a/include/boost/fusion/support/deduce_sequence.hpp +++ b/include/boost/fusion/support/deduce_sequence.hpp @@ -10,7 +10,7 @@ #define BOOST_FUSION_SUPPORT_DEDUCE_SEQUENCE_HPP_INCLUDED #include -#include +#include #include #include diff --git a/include/boost/fusion/view/zip_view/detail/at_impl.hpp b/include/boost/fusion/view/zip_view/detail/at_impl.hpp index 45589777..b01b8cfa 100644 --- a/include/boost/fusion/view/zip_view/detail/at_impl.hpp +++ b/include/boost/fusion/view/zip_view/detail/at_impl.hpp @@ -10,7 +10,7 @@ #include #include -#include +#include #include #include #include diff --git a/include/boost/fusion/view/zip_view/detail/deref_impl.hpp b/include/boost/fusion/view/zip_view/detail/deref_impl.hpp index 736ea176..69cc8825 100644 --- a/include/boost/fusion/view/zip_view/detail/deref_impl.hpp +++ b/include/boost/fusion/view/zip_view/detail/deref_impl.hpp @@ -11,7 +11,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/include/boost/fusion/view/zip_view/detail/value_at_impl.hpp b/include/boost/fusion/view/zip_view/detail/value_at_impl.hpp index ed5475ba..7905b063 100644 --- a/include/boost/fusion/view/zip_view/detail/value_at_impl.hpp +++ b/include/boost/fusion/view/zip_view/detail/value_at_impl.hpp @@ -8,7 +8,7 @@ #if !defined(FUSION_VALUE_AT_IMPL_20060124_2129) #define FUSION_VALUE_AT_IMPL_20060124_2129 -#include +#include #include #include #include diff --git a/include/boost/fusion/view/zip_view/detail/value_of_impl.hpp b/include/boost/fusion/view/zip_view/detail/value_of_impl.hpp index 531d2350..4ba4c3c5 100644 --- a/include/boost/fusion/view/zip_view/detail/value_of_impl.hpp +++ b/include/boost/fusion/view/zip_view/detail/value_of_impl.hpp @@ -8,7 +8,7 @@ #if !defined(FUSION_VALUE_OF_IMPL_20060124_2147) #define FUSION_VALUE_OF_IMPL_20060124_2147 -#include +#include #include #include #include diff --git a/include/boost/fusion/view/zip_view/zip_view.hpp b/include/boost/fusion/view/zip_view/zip_view.hpp index af026241..5f152eb0 100644 --- a/include/boost/fusion/view/zip_view/zip_view.hpp +++ b/include/boost/fusion/view/zip_view/zip_view.hpp @@ -17,7 +17,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/include/boost/fusion/view/zip_view/zip_view_iterator.hpp b/include/boost/fusion/view/zip_view/zip_view_iterator.hpp index ef93e2c9..66b514dc 100644 --- a/include/boost/fusion/view/zip_view/zip_view_iterator.hpp +++ b/include/boost/fusion/view/zip_view/zip_view_iterator.hpp @@ -18,7 +18,7 @@ #include #include -#include +#include namespace boost { namespace fusion { From fc1df001c6c6eae71ab99ea3b50a78b213aac665 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Sat, 20 Oct 2007 22:21:43 +0000 Subject: [PATCH 233/234] reverting to 2.0 [SVN r40219] --- example/cookbook/do_the_bind.cpp | 2 +- example/cookbook/fill_em_up.cpp | 4 ++-- example/performance/accumulate.cpp | 4 ++-- example/performance/functional.cpp | 4 ++-- example/performance/inner_product.cpp | 4 ++-- example/performance/inner_product2.cpp | 4 ++-- example/performance/sequence_efficiency.cpp | 4 ++-- example/performance/zip_efficiency.cpp | 2 +- test/algorithm/all.cpp | 4 ++-- test/algorithm/any.cpp | 4 ++-- test/algorithm/clear.cpp | 2 +- test/algorithm/count.cpp | 4 ++-- test/algorithm/count_if.cpp | 4 ++-- test/algorithm/erase.cpp | 6 +++--- test/algorithm/erase_key.cpp | 10 +++++----- test/algorithm/ext_/find_if_s.cpp | 6 +++--- test/algorithm/ext_/for_each_s.cpp | 6 +++--- test/algorithm/filter.cpp | 4 ++-- test/algorithm/filter_if.cpp | 4 ++-- test/algorithm/find.cpp | 8 ++++---- test/algorithm/find_if.cpp | 4 ++-- test/algorithm/fold.cpp | 4 ++-- test/algorithm/for_each.cpp | 4 ++-- test/algorithm/insert.cpp | 4 ++-- test/algorithm/insert_range.cpp | 4 ++-- test/algorithm/join.cpp | 2 +- test/algorithm/none.cpp | 4 ++-- test/algorithm/pop_back.cpp | 4 ++-- test/algorithm/pop_front.cpp | 4 ++-- test/algorithm/push_back.cpp | 4 ++-- test/algorithm/push_front.cpp | 4 ++-- test/algorithm/remove.cpp | 4 ++-- test/algorithm/remove_if.cpp | 4 ++-- test/algorithm/replace.cpp | 4 ++-- test/algorithm/replace_if.cpp | 6 +++--- test/algorithm/reverse.cpp | 4 ++-- test/algorithm/transform.cpp | 4 ++-- test/algorithm/zip.cpp | 2 +- test/algorithm/zip2.cpp | 2 +- test/algorithm/zip_ignore.cpp | 2 +- test/functional/fused.cpp | 2 +- test/functional/fused_function_object.cpp | 2 +- test/functional/fused_procedure.cpp | 2 +- test/functional/invoke.cpp | 8 ++++---- test/functional/invoke_function_object.cpp | 8 ++++---- test/functional/invoke_procedure.cpp | 8 ++++---- test/functional/make_fused.cpp | 2 +- test/functional/make_fused_function_object.cpp | 2 +- test/functional/make_fused_procedure.cpp | 2 +- test/sequence/adapt_assoc_struct.cpp | 8 ++++---- test/sequence/adapt_struct.cpp | 8 ++++---- test/sequence/array.cpp | 2 +- test/sequence/as_list.cpp | 6 +++--- test/sequence/as_map.cpp | 8 ++++---- test/sequence/as_set.cpp | 10 +++++----- test/sequence/as_vector.cpp | 6 +++--- test/sequence/back_extended_deque.cpp | 7 +++---- test/sequence/boost_tuple.cpp | 8 ++++---- test/sequence/cons.cpp | 4 ++-- test/sequence/construction.hpp | 2 +- test/sequence/copy.hpp | 2 +- test/sequence/deduce_sequence.cpp | 2 +- test/sequence/deque_comparison.cpp | 2 +- test/sequence/deque_construction.cpp | 2 +- test/sequence/deque_copy.cpp | 2 +- test/sequence/deque_iterator.cpp | 2 +- test/sequence/deque_make.cpp | 2 +- test/sequence/deque_misc.cpp | 6 +++--- test/sequence/deque_mutate.cpp | 2 +- test/sequence/deque_tie.cpp | 2 +- test/sequence/deque_value_at.cpp | 2 +- test/sequence/ext_/iterator_range_s.cpp | 8 ++++---- test/sequence/filter_view.cpp | 8 ++++---- test/sequence/front_extended_deque.cpp | 7 +++---- test/sequence/io.cpp | 2 +- test/sequence/iterator_range.cpp | 4 ++-- test/sequence/joint_view.cpp | 4 ++-- test/sequence/list_comparison.cpp | 2 +- test/sequence/list_construction.cpp | 2 +- test/sequence/list_copy.cpp | 2 +- test/sequence/list_iterator.cpp | 2 +- test/sequence/list_make.cpp | 2 +- test/sequence/list_misc.cpp | 7 ++++--- test/sequence/list_mutate.cpp | 2 +- test/sequence/list_tie.cpp | 2 +- test/sequence/list_value_at.cpp | 2 +- test/sequence/make_list.cpp | 2 +- test/sequence/make_vector.cpp | 2 +- test/sequence/map.cpp | 2 +- test/sequence/misc.hpp | 11 +++++------ test/sequence/repetitive_view.cpp | 6 +++--- test/sequence/reverse_view.cpp | 6 +++--- test/sequence/set.cpp | 2 +- test/sequence/single_view.cpp | 2 +- test/sequence/std_pair.cpp | 8 ++++---- test/sequence/swap.cpp | 2 +- test/sequence/transform_view.cpp | 6 +++--- test/sequence/tuple_comparison.cpp | 2 +- test/sequence/tuple_construction.cpp | 2 +- test/sequence/tuple_misc.cpp | 4 ++-- test/sequence/variant.cpp | 2 +- test/sequence/vector_comparison.cpp | 2 +- test/sequence/vector_construction.cpp | 2 +- test/sequence/vector_copy.cpp | 2 +- test/sequence/vector_iterator.cpp | 4 ++-- test/sequence/vector_make.cpp | 2 +- test/sequence/vector_misc.cpp | 6 +++--- test/sequence/vector_mutate.cpp | 2 +- test/sequence/vector_n.cpp | 12 ++++++------ test/sequence/vector_tie.cpp | 2 +- test/sequence/vector_value_at.cpp | 2 +- test/sequence/zip_view.cpp | 8 ++++---- test/sequence/zip_view2.cpp | 8 ++++---- test/sequence/zip_view_ignore.cpp | 4 ++-- 114 files changed, 232 insertions(+), 234 deletions(-) diff --git a/example/cookbook/do_the_bind.cpp b/example/cookbook/do_the_bind.cpp index 33772383..e63556a9 100644 --- a/example/cookbook/do_the_bind.cpp +++ b/example/cookbook/do_the_bind.cpp @@ -28,7 +28,7 @@ #include #include -#include +#include #include #include #include diff --git a/example/cookbook/fill_em_up.cpp b/example/cookbook/fill_em_up.cpp index 69576612..c77c7b68 100644 --- a/example/cookbook/fill_em_up.cpp +++ b/example/cookbook/fill_em_up.cpp @@ -24,8 +24,8 @@ ==============================================================================*/ // We'll use these containers as examples -#include -#include +#include +#include // For doing I/O #include diff --git a/example/performance/accumulate.cpp b/example/performance/accumulate.cpp index 6e3d9f80..7d8f0a76 100644 --- a/example/performance/accumulate.cpp +++ b/example/performance/accumulate.cpp @@ -10,10 +10,10 @@ #include #include -#include +#include #include #include -#include +#include #include #include diff --git a/example/performance/functional.cpp b/example/performance/functional.cpp index cb4c2ab9..228586eb 100644 --- a/example/performance/functional.cpp +++ b/example/performance/functional.cpp @@ -7,8 +7,8 @@ http://www.boost.org/LICENSE_1_0.txt). ==============================================================================*/ -#include -#include +#include +#include #include #include #include diff --git a/example/performance/inner_product.cpp b/example/performance/inner_product.cpp index b84eabde..8257921d 100644 --- a/example/performance/inner_product.cpp +++ b/example/performance/inner_product.cpp @@ -10,10 +10,10 @@ #include #include -#include +#include #include #include -#include +#include #include #include diff --git a/example/performance/inner_product2.cpp b/example/performance/inner_product2.cpp index 9bab438e..b831b219 100644 --- a/example/performance/inner_product2.cpp +++ b/example/performance/inner_product2.cpp @@ -10,10 +10,10 @@ #include #include -#include +#include #include #include -#include +#include #include #include diff --git a/example/performance/sequence_efficiency.cpp b/example/performance/sequence_efficiency.cpp index 9e1d34c8..6a24f74f 100644 --- a/example/performance/sequence_efficiency.cpp +++ b/example/performance/sequence_efficiency.cpp @@ -10,8 +10,8 @@ #define FUSION_MAX_VECTOR_SIZE 30 #include -#include -#include +#include +#include #include #include diff --git a/example/performance/zip_efficiency.cpp b/example/performance/zip_efficiency.cpp index 36ded283..c8132c74 100644 --- a/example/performance/zip_efficiency.cpp +++ b/example/performance/zip_efficiency.cpp @@ -10,7 +10,7 @@ #include #include -#include +#include #include #include #include diff --git a/test/algorithm/all.cpp b/test/algorithm/all.cpp index 47c65e50..983059c8 100644 --- a/test/algorithm/all.cpp +++ b/test/algorithm/all.cpp @@ -6,8 +6,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/algorithm/any.cpp b/test/algorithm/any.cpp index 69f114f8..71685ef2 100644 --- a/test/algorithm/any.cpp +++ b/test/algorithm/any.cpp @@ -7,8 +7,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/algorithm/clear.cpp b/test/algorithm/clear.cpp index 3ab42030..309f3e28 100644 --- a/test/algorithm/clear.cpp +++ b/test/algorithm/clear.cpp @@ -5,7 +5,7 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include +#include #include #include #include diff --git a/test/algorithm/count.cpp b/test/algorithm/count.cpp index e87ff9d8..ae6ccde6 100644 --- a/test/algorithm/count.cpp +++ b/test/algorithm/count.cpp @@ -6,8 +6,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/algorithm/count_if.cpp b/test/algorithm/count_if.cpp index d67e464c..1a8c02e5 100644 --- a/test/algorithm/count_if.cpp +++ b/test/algorithm/count_if.cpp @@ -6,8 +6,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/algorithm/erase.cpp b/test/algorithm/erase.cpp index 44f641f3..efe7dcfe 100644 --- a/test/algorithm/erase.cpp +++ b/test/algorithm/erase.cpp @@ -5,9 +5,9 @@ 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 diff --git a/test/algorithm/erase_key.cpp b/test/algorithm/erase_key.cpp index 2685bfd2..d940714c 100644 --- a/test/algorithm/erase_key.cpp +++ b/test/algorithm/erase_key.cpp @@ -5,14 +5,14 @@ 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 diff --git a/test/algorithm/ext_/find_if_s.cpp b/test/algorithm/ext_/find_if_s.cpp index f3b06d2b..d57876e2 100755 --- a/test/algorithm/ext_/find_if_s.cpp +++ b/test/algorithm/ext_/find_if_s.cpp @@ -5,11 +5,11 @@ 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 diff --git a/test/algorithm/ext_/for_each_s.cpp b/test/algorithm/ext_/for_each_s.cpp index bf4e2bbd..6758872c 100755 --- a/test/algorithm/ext_/for_each_s.cpp +++ b/test/algorithm/ext_/for_each_s.cpp @@ -5,13 +5,13 @@ 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 struct print { diff --git a/test/algorithm/filter.cpp b/test/algorithm/filter.cpp index 4c21d03a..21c93ed0 100644 --- a/test/algorithm/filter.cpp +++ b/test/algorithm/filter.cpp @@ -6,8 +6,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/algorithm/filter_if.cpp b/test/algorithm/filter_if.cpp index e1bbb230..681d2bbd 100644 --- a/test/algorithm/filter_if.cpp +++ b/test/algorithm/filter_if.cpp @@ -5,8 +5,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/algorithm/find.cpp b/test/algorithm/find.cpp index 25a61e94..1b913a73 100644 --- a/test/algorithm/find.cpp +++ b/test/algorithm/find.cpp @@ -5,10 +5,10 @@ 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 diff --git a/test/algorithm/find_if.cpp b/test/algorithm/find_if.cpp index 2b402b9f..93c694cb 100644 --- a/test/algorithm/find_if.cpp +++ b/test/algorithm/find_if.cpp @@ -5,8 +5,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/algorithm/fold.cpp b/test/algorithm/fold.cpp index 55641677..933eadb3 100644 --- a/test/algorithm/fold.cpp +++ b/test/algorithm/fold.cpp @@ -6,8 +6,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/algorithm/for_each.cpp b/test/algorithm/for_each.cpp index a0054fad..18ebbda9 100644 --- a/test/algorithm/for_each.cpp +++ b/test/algorithm/for_each.cpp @@ -5,8 +5,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/algorithm/insert.cpp b/test/algorithm/insert.cpp index acbcf9a3..8780636f 100644 --- a/test/algorithm/insert.cpp +++ b/test/algorithm/insert.cpp @@ -5,8 +5,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/algorithm/insert_range.cpp b/test/algorithm/insert_range.cpp index 4cd3ae41..0aef1e81 100644 --- a/test/algorithm/insert_range.cpp +++ b/test/algorithm/insert_range.cpp @@ -5,8 +5,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/algorithm/join.cpp b/test/algorithm/join.cpp index 04341160..39709c50 100644 --- a/test/algorithm/join.cpp +++ b/test/algorithm/join.cpp @@ -9,7 +9,7 @@ #include #include #include -#include +#include #include int main() diff --git a/test/algorithm/none.cpp b/test/algorithm/none.cpp index ec5676b6..5747494b 100644 --- a/test/algorithm/none.cpp +++ b/test/algorithm/none.cpp @@ -6,8 +6,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/algorithm/pop_back.cpp b/test/algorithm/pop_back.cpp index 55d4b7fe..5f9ebaf4 100644 --- a/test/algorithm/pop_back.cpp +++ b/test/algorithm/pop_back.cpp @@ -5,8 +5,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/algorithm/pop_front.cpp b/test/algorithm/pop_front.cpp index c4b797ab..8e87a959 100644 --- a/test/algorithm/pop_front.cpp +++ b/test/algorithm/pop_front.cpp @@ -5,8 +5,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/algorithm/push_back.cpp b/test/algorithm/push_back.cpp index a15d4401..94e013a3 100644 --- a/test/algorithm/push_back.cpp +++ b/test/algorithm/push_back.cpp @@ -5,8 +5,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/algorithm/push_front.cpp b/test/algorithm/push_front.cpp index 5c9e8fa8..dabdbf77 100644 --- a/test/algorithm/push_front.cpp +++ b/test/algorithm/push_front.cpp @@ -5,8 +5,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/algorithm/remove.cpp b/test/algorithm/remove.cpp index 95f351ef..a0f20ba0 100644 --- a/test/algorithm/remove.cpp +++ b/test/algorithm/remove.cpp @@ -5,8 +5,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/algorithm/remove_if.cpp b/test/algorithm/remove_if.cpp index 9cef9a3d..ee4ca848 100644 --- a/test/algorithm/remove_if.cpp +++ b/test/algorithm/remove_if.cpp @@ -5,8 +5,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/algorithm/replace.cpp b/test/algorithm/replace.cpp index acdb9761..3ccf13b1 100644 --- a/test/algorithm/replace.cpp +++ b/test/algorithm/replace.cpp @@ -5,8 +5,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/algorithm/replace_if.cpp b/test/algorithm/replace_if.cpp index b885976c..01b2df8a 100644 --- a/test/algorithm/replace_if.cpp +++ b/test/algorithm/replace_if.cpp @@ -5,9 +5,9 @@ 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 diff --git a/test/algorithm/reverse.cpp b/test/algorithm/reverse.cpp index 4cae9b33..598edac0 100644 --- a/test/algorithm/reverse.cpp +++ b/test/algorithm/reverse.cpp @@ -5,8 +5,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/algorithm/transform.cpp b/test/algorithm/transform.cpp index 1597dfd2..c7ce3625 100644 --- a/test/algorithm/transform.cpp +++ b/test/algorithm/transform.cpp @@ -6,8 +6,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/algorithm/zip.cpp b/test/algorithm/zip.cpp index e4f9bedb..eb60ba17 100644 --- a/test/algorithm/zip.cpp +++ b/test/algorithm/zip.cpp @@ -9,7 +9,7 @@ #include #include #include -#include +#include #include int main() diff --git a/test/algorithm/zip2.cpp b/test/algorithm/zip2.cpp index c8007117..0823af0e 100644 --- a/test/algorithm/zip2.cpp +++ b/test/algorithm/zip2.cpp @@ -8,7 +8,7 @@ #include #include #include -#include +#include #include int main() diff --git a/test/algorithm/zip_ignore.cpp b/test/algorithm/zip_ignore.cpp index a12b5820..cd71ed44 100644 --- a/test/algorithm/zip_ignore.cpp +++ b/test/algorithm/zip_ignore.cpp @@ -6,7 +6,7 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include +#include #include #include #include diff --git a/test/functional/fused.cpp b/test/functional/fused.cpp index de974cf8..4b960ee0 100644 --- a/test/functional/fused.cpp +++ b/test/functional/fused.cpp @@ -13,7 +13,7 @@ #include #include -#include +#include #include #include diff --git a/test/functional/fused_function_object.cpp b/test/functional/fused_function_object.cpp index 45fab30f..50a1b38b 100644 --- a/test/functional/fused_function_object.cpp +++ b/test/functional/fused_function_object.cpp @@ -13,7 +13,7 @@ #include #include -#include +#include namespace fusion = boost::fusion; using boost::noncopyable; diff --git a/test/functional/fused_procedure.cpp b/test/functional/fused_procedure.cpp index 34ba09d0..d4fd0d9f 100644 --- a/test/functional/fused_procedure.cpp +++ b/test/functional/fused_procedure.cpp @@ -13,7 +13,7 @@ #include #include -#include +#include namespace fusion = boost::fusion; using boost::noncopyable; diff --git a/test/functional/invoke.cpp b/test/functional/invoke.cpp index 3960af17..f6e4c868 100644 --- a/test/functional/invoke.cpp +++ b/test/functional/invoke.cpp @@ -17,12 +17,12 @@ #include -#include -#include +#include +#include #include #include -#include -#include +#include +#include #include #include diff --git a/test/functional/invoke_function_object.cpp b/test/functional/invoke_function_object.cpp index 5f08f650..0f6272b2 100644 --- a/test/functional/invoke_function_object.cpp +++ b/test/functional/invoke_function_object.cpp @@ -17,12 +17,12 @@ #include -#include -#include +#include +#include #include #include -#include -#include +#include +#include #include #include diff --git a/test/functional/invoke_procedure.cpp b/test/functional/invoke_procedure.cpp index 810cb903..bf92ef23 100644 --- a/test/functional/invoke_procedure.cpp +++ b/test/functional/invoke_procedure.cpp @@ -15,12 +15,12 @@ #include -#include -#include +#include +#include #include #include -#include -#include +#include +#include #include #include diff --git a/test/functional/make_fused.cpp b/test/functional/make_fused.cpp index ba5e604f..a1cd77f7 100644 --- a/test/functional/make_fused.cpp +++ b/test/functional/make_fused.cpp @@ -13,7 +13,7 @@ #include #include -#include +#include namespace fusion = boost::fusion; using boost::noncopyable; diff --git a/test/functional/make_fused_function_object.cpp b/test/functional/make_fused_function_object.cpp index f2463003..51808266 100644 --- a/test/functional/make_fused_function_object.cpp +++ b/test/functional/make_fused_function_object.cpp @@ -13,7 +13,7 @@ #include #include -#include +#include namespace fusion = boost::fusion; using boost::noncopyable; diff --git a/test/functional/make_fused_procedure.cpp b/test/functional/make_fused_procedure.cpp index 6a4cf572..ebe5b555 100644 --- a/test/functional/make_fused_procedure.cpp +++ b/test/functional/make_fused_procedure.cpp @@ -13,7 +13,7 @@ #include #include -#include +#include namespace fusion = boost::fusion; using boost::noncopyable; diff --git a/test/sequence/adapt_assoc_struct.cpp b/test/sequence/adapt_assoc_struct.cpp index 277433b3..926294a6 100644 --- a/test/sequence/adapt_assoc_struct.cpp +++ b/test/sequence/adapt_assoc_struct.cpp @@ -6,7 +6,7 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include +#include #include #include #include @@ -16,10 +16,10 @@ #include #include #include -#include -#include +#include +#include #include -#include +#include #include #include #include diff --git a/test/sequence/adapt_struct.cpp b/test/sequence/adapt_struct.cpp index 0f47c648..114b8862 100644 --- a/test/sequence/adapt_struct.cpp +++ b/test/sequence/adapt_struct.cpp @@ -5,17 +5,17 @@ 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 diff --git a/test/sequence/array.cpp b/test/sequence/array.cpp index 0ca5255d..3a776d52 100644 --- a/test/sequence/array.cpp +++ b/test/sequence/array.cpp @@ -8,7 +8,7 @@ #include -#include +#include #include #include diff --git a/test/sequence/as_list.cpp b/test/sequence/as_list.cpp index 72dc9aa4..aa45d469 100644 --- a/test/sequence/as_list.cpp +++ b/test/sequence/as_list.cpp @@ -5,11 +5,11 @@ 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 diff --git a/test/sequence/as_map.cpp b/test/sequence/as_map.cpp index a9364bc6..b1b336fb 100644 --- a/test/sequence/as_map.cpp +++ b/test/sequence/as_map.cpp @@ -5,12 +5,12 @@ 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 diff --git a/test/sequence/as_set.cpp b/test/sequence/as_set.cpp index 9bfd5869..40488f32 100644 --- a/test/sequence/as_set.cpp +++ b/test/sequence/as_set.cpp @@ -5,13 +5,13 @@ 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 diff --git a/test/sequence/as_vector.cpp b/test/sequence/as_vector.cpp index d728c837..b5c3425e 100644 --- a/test/sequence/as_vector.cpp +++ b/test/sequence/as_vector.cpp @@ -5,11 +5,11 @@ 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 diff --git a/test/sequence/back_extended_deque.cpp b/test/sequence/back_extended_deque.cpp index a2daa4cf..f58dfdc6 100644 --- a/test/sequence/back_extended_deque.cpp +++ b/test/sequence/back_extended_deque.cpp @@ -3,16 +3,15 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - 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) ==============================================================================*/ #include -#include -#include +#include +#include #include #include -#include #include #include diff --git a/test/sequence/boost_tuple.cpp b/test/sequence/boost_tuple.cpp index 1e3d23b4..522686fd 100644 --- a/test/sequence/boost_tuple.cpp +++ b/test/sequence/boost_tuple.cpp @@ -5,17 +5,17 @@ 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 diff --git a/test/sequence/cons.cpp b/test/sequence/cons.cpp index b27345e6..644ced5c 100644 --- a/test/sequence/cons.cpp +++ b/test/sequence/cons.cpp @@ -7,10 +7,10 @@ ==============================================================================*/ #include #include -#include +#include #include #include -#include +#include #include #include #include diff --git a/test/sequence/construction.hpp b/test/sequence/construction.hpp index d5c56664..6c289749 100644 --- a/test/sequence/construction.hpp +++ b/test/sequence/construction.hpp @@ -7,7 +7,7 @@ ==============================================================================*/ #include #include -#include +#include #if !defined(FUSION_AT) #define FUSION_AT at_c diff --git a/test/sequence/copy.hpp b/test/sequence/copy.hpp index 96edbc45..f47a0bca 100644 --- a/test/sequence/copy.hpp +++ b/test/sequence/copy.hpp @@ -7,7 +7,7 @@ ==============================================================================*/ #include #include -#include +#include #include #include #include diff --git a/test/sequence/deduce_sequence.cpp b/test/sequence/deduce_sequence.cpp index 5b234781..9c6d1ef4 100644 --- a/test/sequence/deduce_sequence.cpp +++ b/test/sequence/deduce_sequence.cpp @@ -7,7 +7,7 @@ ==============================================================================*/ #include -#include +#include #include #include diff --git a/test/sequence/deque_comparison.cpp b/test/sequence/deque_comparison.cpp index 229fd0e6..2c6db999 100644 --- a/test/sequence/deque_comparison.cpp +++ b/test/sequence/deque_comparison.cpp @@ -6,7 +6,7 @@ Distributed under the 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 #define FUSION_SEQUENCE deque #include "comparison.hpp" diff --git a/test/sequence/deque_construction.cpp b/test/sequence/deque_construction.cpp index bba8f09a..7ec3caff 100644 --- a/test/sequence/deque_construction.cpp +++ b/test/sequence/deque_construction.cpp @@ -6,7 +6,7 @@ Distributed under the 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 #define FUSION_SEQUENCE deque #include "construction.hpp" diff --git a/test/sequence/deque_copy.cpp b/test/sequence/deque_copy.cpp index 57e7334d..6d3ee13f 100644 --- a/test/sequence/deque_copy.cpp +++ b/test/sequence/deque_copy.cpp @@ -6,7 +6,7 @@ Distributed under the 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 diff --git a/test/sequence/deque_iterator.cpp b/test/sequence/deque_iterator.cpp index baf6f827..414b94c5 100644 --- a/test/sequence/deque_iterator.cpp +++ b/test/sequence/deque_iterator.cpp @@ -5,7 +5,7 @@ Distributed under the 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 #define FUSION_SEQUENCE deque #define FUSION_TRAVERSAL_TAG bidirectional_traversal_tag diff --git a/test/sequence/deque_make.cpp b/test/sequence/deque_make.cpp index 4dc7346b..dfdc681d 100644 --- a/test/sequence/deque_make.cpp +++ b/test/sequence/deque_make.cpp @@ -6,7 +6,7 @@ Distributed under the 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 #define FUSION_SEQUENCE deque diff --git a/test/sequence/deque_misc.cpp b/test/sequence/deque_misc.cpp index 53836bbc..01784c1e 100644 --- a/test/sequence/deque_misc.cpp +++ b/test/sequence/deque_misc.cpp @@ -6,9 +6,9 @@ Distributed under the 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 #define FUSION_SEQUENCE deque #include "misc.hpp" diff --git a/test/sequence/deque_mutate.cpp b/test/sequence/deque_mutate.cpp index 66ab1478..8b56aeac 100644 --- a/test/sequence/deque_mutate.cpp +++ b/test/sequence/deque_mutate.cpp @@ -6,7 +6,7 @@ Distributed under the 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 #define FUSION_SEQUENCE deque #include "mutate.hpp" diff --git a/test/sequence/deque_tie.cpp b/test/sequence/deque_tie.cpp index e922335b..2afb519f 100644 --- a/test/sequence/deque_tie.cpp +++ b/test/sequence/deque_tie.cpp @@ -6,7 +6,7 @@ Distributed under the 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 diff --git a/test/sequence/deque_value_at.cpp b/test/sequence/deque_value_at.cpp index c348d287..4a0a9ab3 100644 --- a/test/sequence/deque_value_at.cpp +++ b/test/sequence/deque_value_at.cpp @@ -6,7 +6,7 @@ Distributed under the 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 #define FUSION_SEQUENCE deque #include "value_at.hpp" diff --git a/test/sequence/ext_/iterator_range_s.cpp b/test/sequence/ext_/iterator_range_s.cpp index 1468f61b..4f6ead43 100755 --- a/test/sequence/ext_/iterator_range_s.cpp +++ b/test/sequence/ext_/iterator_range_s.cpp @@ -7,11 +7,11 @@ #include #include #include -#include -#include +#include +#include #include -#include -#include +#include +#include #include #include #include diff --git a/test/sequence/filter_view.cpp b/test/sequence/filter_view.cpp index eaefb35e..28dbb8a0 100644 --- a/test/sequence/filter_view.cpp +++ b/test/sequence/filter_view.cpp @@ -5,12 +5,12 @@ 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 diff --git a/test/sequence/front_extended_deque.cpp b/test/sequence/front_extended_deque.cpp index 40100c32..2afa6190 100644 --- a/test/sequence/front_extended_deque.cpp +++ b/test/sequence/front_extended_deque.cpp @@ -3,16 +3,15 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - 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) ==============================================================================*/ #include -#include -#include +#include +#include #include #include -#include #include #include diff --git a/test/sequence/io.cpp b/test/sequence/io.cpp index f7692163..3629ea39 100644 --- a/test/sequence/io.cpp +++ b/test/sequence/io.cpp @@ -5,7 +5,7 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include +#include #include #include #include diff --git a/test/sequence/iterator_range.cpp b/test/sequence/iterator_range.cpp index 29993d8e..1abaf0d5 100644 --- a/test/sequence/iterator_range.cpp +++ b/test/sequence/iterator_range.cpp @@ -5,9 +5,9 @@ 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 diff --git a/test/sequence/joint_view.cpp b/test/sequence/joint_view.cpp index 7ce135e7..eb108df1 100644 --- a/test/sequence/joint_view.cpp +++ b/test/sequence/joint_view.cpp @@ -5,8 +5,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include diff --git a/test/sequence/list_comparison.cpp b/test/sequence/list_comparison.cpp index fcf213c5..19094687 100644 --- a/test/sequence/list_comparison.cpp +++ b/test/sequence/list_comparison.cpp @@ -5,7 +5,7 @@ Distributed under the 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 #define FUSION_SEQUENCE list #include "comparison.hpp" diff --git a/test/sequence/list_construction.cpp b/test/sequence/list_construction.cpp index 26d648fd..83d748be 100644 --- a/test/sequence/list_construction.cpp +++ b/test/sequence/list_construction.cpp @@ -5,7 +5,7 @@ Distributed under the 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 #define FUSION_SEQUENCE list #include "construction.hpp" diff --git a/test/sequence/list_copy.cpp b/test/sequence/list_copy.cpp index 561ab10d..68ae042f 100644 --- a/test/sequence/list_copy.cpp +++ b/test/sequence/list_copy.cpp @@ -5,7 +5,7 @@ Distributed under the 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 diff --git a/test/sequence/list_iterator.cpp b/test/sequence/list_iterator.cpp index f7cc6e1d..515a6e0f 100644 --- a/test/sequence/list_iterator.cpp +++ b/test/sequence/list_iterator.cpp @@ -4,7 +4,7 @@ Distributed under the 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 #define FUSION_SEQUENCE list #define FUSION_NO_PRIOR diff --git a/test/sequence/list_make.cpp b/test/sequence/list_make.cpp index 7e7120fe..55833b64 100644 --- a/test/sequence/list_make.cpp +++ b/test/sequence/list_make.cpp @@ -5,7 +5,7 @@ Distributed under the 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 #define FUSION_SEQUENCE list diff --git a/test/sequence/list_misc.cpp b/test/sequence/list_misc.cpp index 2d8fe047..c5ff71ca 100644 --- a/test/sequence/list_misc.cpp +++ b/test/sequence/list_misc.cpp @@ -2,11 +2,12 @@ Copyright (c) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - 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) ==============================================================================*/ -#include -#include +#include +#include +#include #define FUSION_SEQUENCE list #define FUSION_FORWARD_ONLY diff --git a/test/sequence/list_mutate.cpp b/test/sequence/list_mutate.cpp index f8802b27..abfc9a3e 100644 --- a/test/sequence/list_mutate.cpp +++ b/test/sequence/list_mutate.cpp @@ -5,7 +5,7 @@ Distributed under the 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 #define FUSION_SEQUENCE list #include "mutate.hpp" diff --git a/test/sequence/list_tie.cpp b/test/sequence/list_tie.cpp index 1a0e73b2..e227edee 100644 --- a/test/sequence/list_tie.cpp +++ b/test/sequence/list_tie.cpp @@ -5,7 +5,7 @@ Distributed under the 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 diff --git a/test/sequence/list_value_at.cpp b/test/sequence/list_value_at.cpp index 763cf265..9bd3de69 100644 --- a/test/sequence/list_value_at.cpp +++ b/test/sequence/list_value_at.cpp @@ -5,7 +5,7 @@ Distributed under the 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 #define FUSION_SEQUENCE list #include "value_at.hpp" diff --git a/test/sequence/make_list.cpp b/test/sequence/make_list.cpp index 7e7120fe..55833b64 100644 --- a/test/sequence/make_list.cpp +++ b/test/sequence/make_list.cpp @@ -5,7 +5,7 @@ Distributed under the 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 #define FUSION_SEQUENCE list diff --git a/test/sequence/make_vector.cpp b/test/sequence/make_vector.cpp index 228fbb77..ffd06489 100644 --- a/test/sequence/make_vector.cpp +++ b/test/sequence/make_vector.cpp @@ -5,7 +5,7 @@ Distributed under the 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 #define FUSION_SEQUENCE vector diff --git a/test/sequence/map.cpp b/test/sequence/map.cpp index 689e086d..b170158d 100644 --- a/test/sequence/map.cpp +++ b/test/sequence/map.cpp @@ -5,7 +5,7 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include +#include #include #include #include diff --git a/test/sequence/misc.hpp b/test/sequence/misc.hpp index d1fae03b..01ee773d 100644 --- a/test/sequence/misc.hpp +++ b/test/sequence/misc.hpp @@ -2,13 +2,12 @@ Copyright (C) 1999-2003 Jaakko Järvi Copyright (c) 2001-2006 Joel de Guzman - 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) ==============================================================================*/ #include #include #include -#include #include #include #include @@ -106,7 +105,7 @@ struct test_intrinsics2 BOOST_STATIC_ASSERT((boost::mpl::equal::value)); #endif - + typedef boost::fusion::FUSION_SEQUENCE target3; typedef boost::mpl::push_front::type seq3; BOOST_STATIC_ASSERT((boost::mpl::equal::value)); @@ -171,9 +170,9 @@ test() BOOST_STATIC_ASSERT(!traits::is_sequence::value); BOOST_STATIC_ASSERT(!traits::is_sequence::value); } - + { // testing mpl compatibility - + // test begin, end, next, prior, advance, size, deref, etc. //~ typedef FUSION_SEQUENCE tuple_type; //~ test_intrinsics1 test1; @@ -182,7 +181,7 @@ test() // test an algorithm typedef FUSION_SEQUENCE t1; typedef boost::mpl::find::type iter; - typedef boost::mpl::deref::type type; + typedef boost::mpl::deref::type type; BOOST_STATIC_ASSERT((boost::is_same::value)); } diff --git a/test/sequence/repetitive_view.cpp b/test/sequence/repetitive_view.cpp index 54da37bc..0a2c01d9 100644 --- a/test/sequence/repetitive_view.cpp +++ b/test/sequence/repetitive_view.cpp @@ -7,10 +7,10 @@ ==============================================================================*/ #include -#include +#include -#include -#include +#include +#include #include #include diff --git a/test/sequence/reverse_view.cpp b/test/sequence/reverse_view.cpp index 03d0632f..3cc2bf91 100644 --- a/test/sequence/reverse_view.cpp +++ b/test/sequence/reverse_view.cpp @@ -5,12 +5,12 @@ 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 diff --git a/test/sequence/set.cpp b/test/sequence/set.cpp index 0c376f3a..c658380e 100644 --- a/test/sequence/set.cpp +++ b/test/sequence/set.cpp @@ -5,7 +5,7 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include +#include #include #include #include diff --git a/test/sequence/single_view.cpp b/test/sequence/single_view.cpp index e3faa26a..fd1d1341 100644 --- a/test/sequence/single_view.cpp +++ b/test/sequence/single_view.cpp @@ -6,7 +6,7 @@ ==============================================================================*/ #include #include -#include +#include #include #include diff --git a/test/sequence/std_pair.cpp b/test/sequence/std_pair.cpp index 127a1fbc..d0434821 100644 --- a/test/sequence/std_pair.cpp +++ b/test/sequence/std_pair.cpp @@ -5,17 +5,17 @@ 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 diff --git a/test/sequence/swap.cpp b/test/sequence/swap.cpp index e89542e0..f9573d52 100644 --- a/test/sequence/swap.cpp +++ b/test/sequence/swap.cpp @@ -6,7 +6,7 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include +#include #include #include #include diff --git a/test/sequence/transform_view.cpp b/test/sequence/transform_view.cpp index e811f5f7..3dce9043 100644 --- a/test/sequence/transform_view.cpp +++ b/test/sequence/transform_view.cpp @@ -5,12 +5,12 @@ 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 diff --git a/test/sequence/tuple_comparison.cpp b/test/sequence/tuple_comparison.cpp index 8108256b..fde2ad47 100644 --- a/test/sequence/tuple_comparison.cpp +++ b/test/sequence/tuple_comparison.cpp @@ -6,7 +6,7 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include +#include #define FUSION_SEQUENCE tuple #include "comparison.hpp" diff --git a/test/sequence/tuple_construction.cpp b/test/sequence/tuple_construction.cpp index 323c72ed..0d357002 100644 --- a/test/sequence/tuple_construction.cpp +++ b/test/sequence/tuple_construction.cpp @@ -6,7 +6,7 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include +#include #define FUSION_SEQUENCE tuple #define FUSION_AT get diff --git a/test/sequence/tuple_misc.cpp b/test/sequence/tuple_misc.cpp index daef0322..704ebd3a 100644 --- a/test/sequence/tuple_misc.cpp +++ b/test/sequence/tuple_misc.cpp @@ -6,8 +6,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #define FUSION_SEQUENCE tuple #define FUSION_AT get diff --git a/test/sequence/variant.cpp b/test/sequence/variant.cpp index bfbf6fd3..b4feee13 100644 --- a/test/sequence/variant.cpp +++ b/test/sequence/variant.cpp @@ -6,7 +6,7 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ -#include +#include #include #include diff --git a/test/sequence/vector_comparison.cpp b/test/sequence/vector_comparison.cpp index 7321820e..0a7ae781 100644 --- a/test/sequence/vector_comparison.cpp +++ b/test/sequence/vector_comparison.cpp @@ -5,7 +5,7 @@ Distributed under the 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 #define FUSION_SEQUENCE vector #include "comparison.hpp" diff --git a/test/sequence/vector_construction.cpp b/test/sequence/vector_construction.cpp index d279c232..4f1eaa02 100644 --- a/test/sequence/vector_construction.cpp +++ b/test/sequence/vector_construction.cpp @@ -5,7 +5,7 @@ Distributed under the 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 #define FUSION_SEQUENCE vector #include "construction.hpp" diff --git a/test/sequence/vector_copy.cpp b/test/sequence/vector_copy.cpp index 9b1e207d..e554a768 100644 --- a/test/sequence/vector_copy.cpp +++ b/test/sequence/vector_copy.cpp @@ -5,7 +5,7 @@ Distributed under the 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 diff --git a/test/sequence/vector_iterator.cpp b/test/sequence/vector_iterator.cpp index bcf15c69..662466fa 100644 --- a/test/sequence/vector_iterator.cpp +++ b/test/sequence/vector_iterator.cpp @@ -4,8 +4,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) ==============================================================================*/ -#include -#include +#include +#include #define FUSION_SEQUENCE vector #define FUSION_TRAVERSAL_TAG random_access_traversal_tag diff --git a/test/sequence/vector_make.cpp b/test/sequence/vector_make.cpp index 228fbb77..ffd06489 100644 --- a/test/sequence/vector_make.cpp +++ b/test/sequence/vector_make.cpp @@ -5,7 +5,7 @@ Distributed under the 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 #define FUSION_SEQUENCE vector diff --git a/test/sequence/vector_misc.cpp b/test/sequence/vector_misc.cpp index 25d3ecfc..e2a22fb7 100644 --- a/test/sequence/vector_misc.cpp +++ b/test/sequence/vector_misc.cpp @@ -5,9 +5,9 @@ Distributed under the 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 #define FUSION_SEQUENCE vector #include "misc.hpp" diff --git a/test/sequence/vector_mutate.cpp b/test/sequence/vector_mutate.cpp index 610c0c18..60a410b7 100644 --- a/test/sequence/vector_mutate.cpp +++ b/test/sequence/vector_mutate.cpp @@ -5,7 +5,7 @@ Distributed under the 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 #define FUSION_SEQUENCE vector #include "mutate.hpp" diff --git a/test/sequence/vector_n.cpp b/test/sequence/vector_n.cpp index b051ca89..e7ff4ad3 100644 --- a/test/sequence/vector_n.cpp +++ b/test/sequence/vector_n.cpp @@ -5,16 +5,16 @@ 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 diff --git a/test/sequence/vector_tie.cpp b/test/sequence/vector_tie.cpp index 08a82e3d..348e235c 100644 --- a/test/sequence/vector_tie.cpp +++ b/test/sequence/vector_tie.cpp @@ -5,7 +5,7 @@ Distributed under the 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 diff --git a/test/sequence/vector_value_at.cpp b/test/sequence/vector_value_at.cpp index 8a99da5b..e4aa9ac4 100644 --- a/test/sequence/vector_value_at.cpp +++ b/test/sequence/vector_value_at.cpp @@ -5,7 +5,7 @@ Distributed under the 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 #define FUSION_SEQUENCE vector #include "value_at.hpp" diff --git a/test/sequence/zip_view.cpp b/test/sequence/zip_view.cpp index 0fcb438d..485760cd 100644 --- a/test/sequence/zip_view.cpp +++ b/test/sequence/zip_view.cpp @@ -7,9 +7,9 @@ ==============================================================================*/ #include #include -#include -#include -#include +#include +#include +#include #include #include #include @@ -20,7 +20,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/test/sequence/zip_view2.cpp b/test/sequence/zip_view2.cpp index 611c41cb..c8c42e1e 100644 --- a/test/sequence/zip_view2.cpp +++ b/test/sequence/zip_view2.cpp @@ -9,9 +9,9 @@ #include #include -#include -#include -#include +#include +#include +#include #include #include #include @@ -22,7 +22,7 @@ #include #include #include -#include +#include #include #include diff --git a/test/sequence/zip_view_ignore.cpp b/test/sequence/zip_view_ignore.cpp index 2a300809..5eb3bf39 100644 --- a/test/sequence/zip_view_ignore.cpp +++ b/test/sequence/zip_view_ignore.cpp @@ -6,8 +6,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include -#include -#include +#include +#include #include #include #include From 361635c5ab67b53587148f8d181313c80153a4ef Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Sat, 20 Oct 2007 22:33:52 +0000 Subject: [PATCH 234/234] reverting to 2.0 [SVN r40220] --- include/boost/fusion/adapted/array.hpp | 22 ----- include/boost/fusion/adapted/boost_tuple.hpp | 20 ----- include/boost/fusion/adapted/mpl.hpp | 21 ----- include/boost/fusion/adapted/struct.hpp | 23 ------ include/boost/fusion/adapted/variant.hpp | 20 ----- .../fusion/algorithm/query/ext_/find_if_s.hpp | 6 +- .../fusion/algorithm/transformation/clear.hpp | 2 +- .../fusion/algorithm/transformation/erase.hpp | 21 +++-- .../algorithm/transformation/filter.hpp | 2 +- .../algorithm/transformation/filter_if.hpp | 2 +- .../algorithm/transformation/insert.hpp | 15 ++-- .../algorithm/transformation/insert_range.hpp | 11 ++- .../fusion/algorithm/transformation/join.hpp | 2 +- .../algorithm/transformation/pop_back.hpp | 2 +- .../algorithm/transformation/pop_front.hpp | 2 +- .../algorithm/transformation/push_back.hpp | 4 +- .../algorithm/transformation/push_front.hpp | 4 +- .../algorithm/transformation/remove.hpp | 2 +- .../algorithm/transformation/remove_if.hpp | 2 +- .../algorithm/transformation/replace.hpp | 2 +- .../algorithm/transformation/replace_if.hpp | 2 +- .../algorithm/transformation/reverse.hpp | 2 +- .../algorithm/transformation/transform.hpp | 2 +- .../fusion/algorithm/transformation/zip.hpp | 8 +- .../container/deque/detail/convert_impl.hpp | 45 ----------- .../container/list/detail/convert_impl.hpp | 51 ------------ .../container/map/detail/convert_impl.hpp | 45 ----------- .../container/set/detail/convert_impl.hpp | 45 ----------- include/boost/fusion/container/vector.hpp | 21 ----- .../container/vector/detail/convert_impl.hpp | 45 ----------- .../fusion/functional/adapter/limits.hpp | 2 +- .../functional/adapter/unfused_generic.hpp | 2 +- .../adapter/unfused_lvalue_args.hpp | 2 +- .../adapter/unfused_rvalue_args.hpp | 2 +- .../functional/adapter/unfused_typed.hpp | 4 +- include/boost/fusion/include/adapt_struct.hpp | 2 +- include/boost/fusion/include/as_vector.hpp | 2 +- include/boost/fusion/include/joint_view.hpp | 2 +- include/boost/fusion/include/list.hpp | 2 +- include/boost/fusion/include/mpl.hpp | 4 +- include/boost/fusion/include/single_view.hpp | 2 +- include/boost/fusion/include/std_pair.hpp | 2 +- .../boost/fusion/include/transform_view.hpp | 2 +- include/boost/fusion/include/variant.hpp | 2 +- include/boost/fusion/include/vector.hpp | 2 +- .../fusion/iterator/mpl/convert_iterator.hpp | 6 +- include/boost/fusion/mpl.hpp | 23 +----- include/boost/fusion/sequence.hpp | 5 +- .../boost/fusion/{ => sequence}/adapted.hpp | 10 +-- .../boost/fusion/sequence/adapted/array.hpp | 22 +++++ .../adapted/array/array_iterator.hpp | 0 .../adapted/array/detail/at_impl.hpp | 0 .../adapted/array/detail/begin_impl.hpp | 2 +- .../adapted/array/detail/category_of_impl.hpp | 0 .../adapted/array/detail/end_impl.hpp | 2 +- .../adapted/array/detail/is_sequence_impl.hpp | 0 .../adapted/array/detail/is_view_impl.hpp | 0 .../adapted/array/detail/size_impl.hpp | 0 .../adapted/array/detail/value_at_impl.hpp | 0 .../{ => sequence}/adapted/array/tag_of.hpp | 0 .../fusion/sequence/adapted/boost_tuple.hpp | 20 +++++ .../boost_tuple/boost_tuple_iterator.hpp | 0 .../adapted/boost_tuple/detail/at_impl.hpp | 0 .../adapted/boost_tuple/detail/begin_impl.hpp | 2 +- .../boost_tuple/detail/category_of_impl.hpp | 0 .../adapted/boost_tuple/detail/end_impl.hpp | 2 +- .../boost_tuple/detail/is_sequence_impl.hpp | 0 .../boost_tuple/detail/is_view_impl.hpp | 0 .../adapted/boost_tuple/detail/size_impl.hpp | 0 .../boost_tuple/detail/value_at_impl.hpp | 0 .../adapted/boost_tuple/tag_of.hpp | 0 include/boost/fusion/sequence/adapted/mpl.hpp | 21 +++++ .../adapted/mpl/detail/at_impl.hpp | 0 .../adapted/mpl/detail/begin_impl.hpp | 2 +- .../adapted/mpl/detail/category_of_impl.hpp | 0 .../adapted/mpl/detail/empty_impl.hpp | 0 .../adapted/mpl/detail/end_impl.hpp | 2 +- .../adapted/mpl/detail/has_key_impl.hpp | 0 .../adapted/mpl/detail/is_sequence_impl.hpp | 0 .../adapted/mpl/detail/is_view_impl.hpp | 0 .../adapted/mpl/detail/size_impl.hpp | 0 .../adapted/mpl/detail/value_at_impl.hpp | 0 .../adapted/mpl/mpl_iterator.hpp | 0 .../{ => sequence}/adapted/std_pair.hpp | 2 +- .../adapted/std_pair/detail/at_impl.hpp | 0 .../adapted/std_pair/detail/begin_impl.hpp | 2 +- .../std_pair/detail/category_of_impl.hpp | 0 .../adapted/std_pair/detail/end_impl.hpp | 2 +- .../std_pair/detail/is_sequence_impl.hpp | 0 .../adapted/std_pair/detail/is_view_impl.hpp | 0 .../adapted/std_pair/detail/size_impl.hpp | 0 .../adapted/std_pair/detail/value_at_impl.hpp | 0 .../adapted/std_pair/std_pair_iterator.hpp | 0 .../adapted/std_pair/tag_of.hpp | 0 .../boost/fusion/sequence/adapted/struct.hpp | 23 ++++++ .../adapted/struct/adapt_assoc_struct.hpp | 26 +++--- .../adapted/struct/adapt_struct.hpp | 20 ++--- .../adapted/struct/detail/at_impl.hpp | 0 .../adapted/struct/detail/at_key_impl.hpp | 0 .../adapted/struct/detail/begin_impl.hpp | 2 +- .../struct/detail/category_of_impl.hpp | 0 .../adapted/struct/detail/end_impl.hpp | 2 +- .../adapted/struct/detail/has_key_impl.hpp | 0 .../struct/detail/is_sequence_impl.hpp | 0 .../adapted/struct/detail/is_view_impl.hpp | 0 .../adapted/struct/detail/size_impl.hpp | 0 .../adapted/struct/detail/value_at_impl.hpp | 0 .../struct/detail/value_at_key_impl.hpp | 0 .../adapted/struct/extension.hpp | 0 .../adapted/struct/struct_iterator.hpp | 2 +- .../boost/fusion/sequence/adapted/variant.hpp | 20 +++++ .../adapted/variant/detail/begin_impl.hpp | 0 .../variant/detail/category_of_impl.hpp | 0 .../adapted/variant/detail/end_impl.hpp | 0 .../variant/detail/is_sequence_impl.hpp | 0 .../adapted/variant/detail/is_view_impl.hpp | 0 .../adapted/variant/detail/size_impl.hpp | 0 .../{ => sequence}/adapted/variant/tag_of.hpp | 0 .../adapted/variant/variant_iterator.hpp | 0 .../boost/fusion/{ => sequence}/container.hpp | 10 +-- .../fusion/{ => sequence}/container/deque.hpp | 5 +- .../container/deque/back_extended_deque.hpp | 2 +- .../{ => sequence}/container/deque/deque.hpp | 24 +++--- .../container/deque/deque_fwd.hpp | 2 +- .../container/deque/deque_iterator.hpp | 2 +- .../container/deque/detail/at_impl.hpp | 2 +- .../container/deque/detail/begin_impl.hpp | 2 +- .../deque/detail/deque_forward_ctor.hpp | 2 +- .../deque/detail/deque_initial_size.hpp | 0 .../deque/detail/deque_keyed_values.hpp | 6 +- .../deque/detail/deque_keyed_values_call.hpp | 2 +- .../container/deque/detail/end_impl.hpp | 2 +- .../container/deque/detail/keyed_element.hpp | 0 .../container/deque/detail/value_at_impl.hpp | 2 +- .../container/deque/front_extended_deque.hpp | 2 +- .../{ => sequence}/container/deque/limits.hpp | 0 .../{ => sequence}/container/ext_/tree.hpp | 8 +- .../fusion/{ => sequence}/container/list.hpp | 13 ++- .../{ => sequence}/container/list/cons.hpp | 12 +-- .../container/list/cons_iterator.hpp | 10 +-- .../container/list/detail/at_impl.hpp | 0 .../container/list/detail/begin_impl.hpp | 0 .../container/list/detail/deref_impl.hpp | 0 .../container/list/detail/empty_impl.hpp | 0 .../container/list/detail/end_impl.hpp | 0 .../container/list/detail/equal_to_impl.hpp | 0 .../list/detail/list_forward_ctor.hpp | 2 +- .../container/list/detail/list_to_cons.hpp | 6 +- .../list/detail/list_to_cons_call.hpp | 2 +- .../container/list/detail/next_impl.hpp | 0 .../container/list/detail/value_at_impl.hpp | 0 .../container/list/detail/value_of_impl.hpp | 0 .../{ => sequence}/container/list/limits.hpp | 0 .../{ => sequence}/container/list/list.hpp | 6 +- .../container/list/list_fwd.hpp | 2 +- .../fusion/{ => sequence}/container/map.hpp | 9 +-- .../container/map/detail/at_key_impl.hpp | 0 .../container/map/detail/begin_impl.hpp | 0 .../container/map/detail/end_impl.hpp | 0 .../container/map/detail/lookup_key.hpp | 0 .../container/map/detail/map_forward_ctor.hpp | 2 +- .../container/map/detail/map_lookup.hpp | 11 +-- .../map/detail/value_at_key_impl.hpp | 0 .../{ => sequence}/container/map/limits.hpp | 2 +- .../{ => sequence}/container/map/map.hpp | 18 ++--- .../{ => sequence}/container/map/map_fwd.hpp | 2 +- .../fusion/{ => sequence}/container/set.hpp | 9 +-- .../container/set/detail/at_key_impl.hpp | 0 .../container/set/detail/begin_impl.hpp | 0 .../container/set/detail/end_impl.hpp | 0 .../container/set/detail/lookup_key.hpp | 0 .../container/set/detail/set_forward_ctor.hpp | 2 +- .../container/set/detail/set_lookup.hpp | 11 +-- .../set/detail/value_at_key_impl.hpp | 0 .../{ => sequence}/container/set/limits.hpp | 2 +- .../{ => sequence}/container/set/set.hpp | 18 ++--- .../{ => sequence}/container/set/set_fwd.hpp | 2 +- .../fusion/sequence/container/vector.hpp | 20 +++++ .../container/vector/detail/advance_impl.hpp | 0 .../container/vector/detail/at_impl.hpp | 0 .../container/vector/detail/begin_impl.hpp | 2 +- .../container/vector/detail/deref_impl.hpp | 0 .../container/vector/detail/distance_impl.hpp | 0 .../container/vector/detail/end_impl.hpp | 2 +- .../container/vector/detail/equal_to_impl.hpp | 0 .../container/vector/detail/next_impl.hpp | 2 +- .../container/vector/detail/prior_impl.hpp | 2 +- .../container/vector/detail/value_at_impl.hpp | 0 .../container/vector/detail/value_of_impl.hpp | 0 .../vector/detail/vector_forward_ctor.hpp | 2 +- .../container/vector/detail/vector_n.hpp | 0 .../vector/detail/vector_n_chooser.hpp | 14 ++-- .../container/vector/limits.hpp | 0 .../container/vector/vector.hpp | 8 +- .../container/vector/vector10.hpp | 10 +-- .../container/vector/vector20.hpp | 10 +-- .../container/vector/vector30.hpp | 10 +-- .../container/vector/vector40.hpp | 10 +-- .../container/vector/vector50.hpp | 10 +-- .../container/vector/vector_fwd.hpp | 2 +- .../container/vector/vector_iterator.hpp | 14 ++-- include/boost/fusion/sequence/conversion.hpp | 16 ++++ .../conversion/as_deque.hpp} | 13 ++- .../conversion/as_list.hpp} | 15 ++-- .../conversion/as_map.hpp} | 13 ++- .../conversion/as_set.hpp} | 13 ++- .../conversion/as_vector.hpp} | 13 ++- .../conversion}/detail/as_deque.hpp | 4 +- .../conversion}/detail/as_map.hpp | 4 +- .../conversion}/detail/as_set.hpp | 4 +- .../conversion}/detail/as_vector.hpp | 4 +- .../conversion}/detail/build_cons.hpp | 2 +- include/boost/fusion/sequence/convert.hpp | 48 ----------- .../fusion/sequence/generation/cons_tie.hpp | 2 +- .../fusion/sequence/generation/deque_tie.hpp | 2 +- .../fusion/sequence/generation/list_tie.hpp | 2 +- .../fusion/sequence/generation/make_cons.hpp | 2 +- .../fusion/sequence/generation/make_deque.hpp | 2 +- .../fusion/sequence/generation/make_list.hpp | 2 +- .../fusion/sequence/generation/make_map.hpp | 2 +- .../fusion/sequence/generation/make_set.hpp | 2 +- .../sequence/generation/make_vector.hpp | 2 +- .../fusion/sequence/generation/map_tie.hpp | 4 +- .../fusion/sequence/generation/vector_tie.hpp | 2 +- include/boost/fusion/sequence/intrinsic.hpp | 3 +- .../boost/fusion/sequence/intrinsic/mpl.hpp | 28 +++++++ .../{ => sequence/intrinsic}/mpl/at.hpp | 0 .../{ => sequence/intrinsic}/mpl/back.hpp | 0 .../{ => sequence/intrinsic}/mpl/begin.hpp | 2 +- .../{ => sequence/intrinsic}/mpl/clear.hpp | 2 +- .../sequence/intrinsic/mpl/detail/as.hpp | 80 +++++++++++++++++++ .../intrinsic}/mpl/detail/clear.hpp | 10 +-- .../{ => sequence/intrinsic}/mpl/empty.hpp | 0 .../{ => sequence/intrinsic}/mpl/end.hpp | 2 +- .../{ => sequence/intrinsic}/mpl/erase.hpp | 15 ++-- .../intrinsic}/mpl/erase_key.hpp | 15 ++-- .../{ => sequence/intrinsic}/mpl/front.hpp | 0 .../{ => sequence/intrinsic}/mpl/has_key.hpp | 0 .../{ => sequence/intrinsic}/mpl/insert.hpp | 15 ++-- .../intrinsic}/mpl/insert_range.hpp | 15 ++-- .../{ => sequence/intrinsic}/mpl/pop_back.hpp | 15 ++-- .../intrinsic}/mpl/pop_front.hpp | 15 ++-- .../intrinsic}/mpl/push_back.hpp | 15 ++-- .../intrinsic}/mpl/push_front.hpp | 15 ++-- .../{ => sequence/intrinsic}/mpl/size.hpp | 0 .../boost/fusion/sequence/intrinsic/swap.hpp | 2 +- include/boost/fusion/{ => sequence}/view.hpp | 12 +-- .../view/ext_/multiple_view.hpp | 0 .../view/ext_/segmented_iterator.hpp | 4 +- .../view/ext_/segmented_iterator_range.hpp | 16 ++-- .../{ => sequence}/view/filter_view.hpp | 4 +- .../view/filter_view/detail/begin_impl.hpp | 0 .../view/filter_view/detail/deref_impl.hpp | 0 .../view/filter_view/detail/end_impl.hpp | 0 .../view/filter_view/detail/equal_to_impl.hpp | 0 .../view/filter_view/detail/next_impl.hpp | 0 .../view/filter_view/detail/size_impl.hpp | 0 .../view/filter_view/detail/value_of_impl.hpp | 0 .../view/filter_view/filter_view.hpp | 8 +- .../view/filter_view/filter_view_iterator.hpp | 11 ++- .../{ => sequence}/view/iterator_range.hpp | 2 +- .../view/iterator_range/detail/at_impl.hpp | 0 .../view/iterator_range/detail/begin_impl.hpp | 0 .../view/iterator_range/detail/end_impl.hpp | 0 .../iterator_range/detail/value_at_impl.hpp | 0 .../view/iterator_range/iterator_range.hpp | 13 ++- .../fusion/{ => sequence}/view/joint_view.hpp | 4 +- .../view/joint_view/detail/begin_impl.hpp | 0 .../view/joint_view/detail/deref_impl.hpp | 0 .../view/joint_view/detail/end_impl.hpp | 0 .../view/joint_view/detail/next_impl.hpp | 0 .../view/joint_view/detail/value_of_impl.hpp | 0 .../view/joint_view/joint_view.hpp | 6 +- .../view/joint_view/joint_view_iterator.hpp | 9 +-- .../{ => sequence}/view/repetitive_view.hpp | 4 +- .../repetitive_view/detail/begin_impl.hpp | 2 +- .../repetitive_view/detail/deref_impl.hpp | 0 .../view/repetitive_view/detail/end_impl.hpp | 2 +- .../view/repetitive_view/detail/next_impl.hpp | 0 .../repetitive_view/detail/value_of_impl.hpp | 0 .../view/repetitive_view/repetitive_view.hpp | 4 +- .../repetitive_view/repetitive_view_fwd.hpp | 0 .../repetitive_view_iterator.hpp | 9 +-- .../{ => sequence}/view/reverse_view.hpp | 4 +- .../view/reverse_view/detail/advance_impl.hpp | 0 .../view/reverse_view/detail/begin_impl.hpp | 0 .../view/reverse_view/detail/deref_impl.hpp | 0 .../reverse_view/detail/distance_impl.hpp | 0 .../view/reverse_view/detail/end_impl.hpp | 0 .../view/reverse_view/detail/next_impl.hpp | 0 .../view/reverse_view/detail/prior_impl.hpp | 0 .../reverse_view/detail/value_of_impl.hpp | 0 .../view/reverse_view/reverse_view.hpp | 6 +- .../reverse_view/reverse_view_iterator.hpp | 15 ++-- .../{ => sequence}/view/single_view.hpp | 4 +- .../view/single_view/detail/begin_impl.hpp | 0 .../view/single_view/detail/deref_impl.hpp | 0 .../view/single_view/detail/end_impl.hpp | 0 .../view/single_view/detail/next_impl.hpp | 0 .../view/single_view/detail/value_of_impl.hpp | 0 .../view/single_view/single_view.hpp | 6 +- .../view/single_view/single_view_iterator.hpp | 6 +- .../{ => sequence}/view/transform_view.hpp | 4 +- .../transform_view/detail/advance_impl.hpp | 0 .../detail/apply_transform_result.hpp | 0 .../view/transform_view/detail/at_impl.hpp | 2 +- .../view/transform_view/detail/begin_impl.hpp | 2 +- .../view/transform_view/detail/deref_impl.hpp | 2 +- .../transform_view/detail/distance_impl.hpp | 0 .../view/transform_view/detail/end_impl.hpp | 2 +- .../transform_view/detail/equal_to_impl.hpp | 0 .../view/transform_view/detail/next_impl.hpp | 0 .../view/transform_view/detail/prior_impl.hpp | 0 .../transform_view/detail/value_at_impl.hpp | 2 +- .../transform_view/detail/value_of_impl.hpp | 2 +- .../view/transform_view/transform_view.hpp | 12 +-- .../transform_view/transform_view_fwd.hpp | 0 .../transform_view_iterator.hpp | 17 ++-- .../fusion/{ => sequence}/view/zip_view.hpp | 4 +- .../view/zip_view/detail/advance_impl.hpp | 2 +- .../view/zip_view/detail/at_impl.hpp | 4 +- .../view/zip_view/detail/begin_impl.hpp | 2 +- .../view/zip_view/detail/deref_impl.hpp | 4 +- .../view/zip_view/detail/distance_impl.hpp | 0 .../view/zip_view/detail/end_impl.hpp | 2 +- .../view/zip_view/detail/equal_to_impl.hpp | 2 +- .../view/zip_view/detail/next_impl.hpp | 2 +- .../view/zip_view/detail/prior_impl.hpp | 2 +- .../view/zip_view/detail/size_impl.hpp | 0 .../zip_view/detail/strictest_traversal.hpp | 10 +-- .../view/zip_view/detail/value_at_impl.hpp | 2 +- .../view/zip_view/detail/value_of_impl.hpp | 8 +- .../{ => sequence}/view/zip_view/zip_view.hpp | 16 ++-- .../view/zip_view/zip_view_iterator.hpp | 18 ++--- .../view/zip_view/zip_view_iterator_fwd.hpp | 2 +- .../boost/fusion/support/deduce_sequence.hpp | 10 +-- .../fusion/support/detail/compiler_config.hpp | 17 ++++ .../boost/fusion/support/iterator_base.hpp | 4 +- include/boost/fusion/support/pair.hpp | 13 +-- .../boost/fusion/support/sequence_base.hpp | 5 +- include/boost/fusion/support/tag_of.hpp | 12 +-- include/boost/fusion/support/tag_of_fwd.hpp | 6 +- include/boost/fusion/support/void.hpp | 9 +-- include/boost/fusion/tuple/tuple.hpp | 2 +- include/boost/fusion/tuple/tuple_fwd.hpp | 2 +- 345 files changed, 816 insertions(+), 999 deletions(-) delete mode 100644 include/boost/fusion/adapted/array.hpp delete mode 100644 include/boost/fusion/adapted/boost_tuple.hpp delete mode 100644 include/boost/fusion/adapted/mpl.hpp delete mode 100644 include/boost/fusion/adapted/struct.hpp delete mode 100644 include/boost/fusion/adapted/variant.hpp delete mode 100644 include/boost/fusion/container/deque/detail/convert_impl.hpp delete mode 100644 include/boost/fusion/container/list/detail/convert_impl.hpp delete mode 100644 include/boost/fusion/container/map/detail/convert_impl.hpp delete mode 100644 include/boost/fusion/container/set/detail/convert_impl.hpp delete mode 100644 include/boost/fusion/container/vector.hpp delete mode 100644 include/boost/fusion/container/vector/detail/convert_impl.hpp rename include/boost/fusion/{ => sequence}/adapted.hpp (65%) create mode 100644 include/boost/fusion/sequence/adapted/array.hpp rename include/boost/fusion/{ => sequence}/adapted/array/array_iterator.hpp (100%) rename include/boost/fusion/{ => sequence}/adapted/array/detail/at_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/adapted/array/detail/begin_impl.hpp (94%) rename include/boost/fusion/{ => sequence}/adapted/array/detail/category_of_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/adapted/array/detail/end_impl.hpp (94%) rename include/boost/fusion/{ => sequence}/adapted/array/detail/is_sequence_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/adapted/array/detail/is_view_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/adapted/array/detail/size_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/adapted/array/detail/value_at_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/adapted/array/tag_of.hpp (100%) create mode 100644 include/boost/fusion/sequence/adapted/boost_tuple.hpp rename include/boost/fusion/{ => sequence}/adapted/boost_tuple/boost_tuple_iterator.hpp (100%) rename include/boost/fusion/{ => sequence}/adapted/boost_tuple/detail/at_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/adapted/boost_tuple/detail/begin_impl.hpp (92%) rename include/boost/fusion/{ => sequence}/adapted/boost_tuple/detail/category_of_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/adapted/boost_tuple/detail/end_impl.hpp (94%) rename include/boost/fusion/{ => sequence}/adapted/boost_tuple/detail/is_sequence_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/adapted/boost_tuple/detail/is_view_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/adapted/boost_tuple/detail/size_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/adapted/boost_tuple/detail/value_at_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/adapted/boost_tuple/tag_of.hpp (100%) create mode 100644 include/boost/fusion/sequence/adapted/mpl.hpp rename include/boost/fusion/{ => sequence}/adapted/mpl/detail/at_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/adapted/mpl/detail/begin_impl.hpp (95%) rename include/boost/fusion/{ => sequence}/adapted/mpl/detail/category_of_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/adapted/mpl/detail/empty_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/adapted/mpl/detail/end_impl.hpp (95%) rename include/boost/fusion/{ => sequence}/adapted/mpl/detail/has_key_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/adapted/mpl/detail/is_sequence_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/adapted/mpl/detail/is_view_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/adapted/mpl/detail/size_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/adapted/mpl/detail/value_at_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/adapted/mpl/mpl_iterator.hpp (100%) rename include/boost/fusion/{ => sequence}/adapted/std_pair.hpp (96%) rename include/boost/fusion/{ => sequence}/adapted/std_pair/detail/at_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/adapted/std_pair/detail/begin_impl.hpp (93%) rename include/boost/fusion/{ => sequence}/adapted/std_pair/detail/category_of_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/adapted/std_pair/detail/end_impl.hpp (93%) rename include/boost/fusion/{ => sequence}/adapted/std_pair/detail/is_sequence_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/adapted/std_pair/detail/is_view_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/adapted/std_pair/detail/size_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/adapted/std_pair/detail/value_at_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/adapted/std_pair/std_pair_iterator.hpp (100%) rename include/boost/fusion/{ => sequence}/adapted/std_pair/tag_of.hpp (100%) create mode 100644 include/boost/fusion/sequence/adapted/struct.hpp rename include/boost/fusion/{ => sequence}/adapted/struct/adapt_assoc_struct.hpp (83%) rename include/boost/fusion/{ => sequence}/adapted/struct/adapt_struct.hpp (84%) rename include/boost/fusion/{ => sequence}/adapted/struct/detail/at_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/adapted/struct/detail/at_key_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/adapted/struct/detail/begin_impl.hpp (93%) rename include/boost/fusion/{ => sequence}/adapted/struct/detail/category_of_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/adapted/struct/detail/end_impl.hpp (93%) rename include/boost/fusion/{ => sequence}/adapted/struct/detail/has_key_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/adapted/struct/detail/is_sequence_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/adapted/struct/detail/is_view_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/adapted/struct/detail/size_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/adapted/struct/detail/value_at_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/adapted/struct/detail/value_at_key_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/adapted/struct/extension.hpp (100%) rename include/boost/fusion/{ => sequence}/adapted/struct/struct_iterator.hpp (97%) create mode 100644 include/boost/fusion/sequence/adapted/variant.hpp rename include/boost/fusion/{ => sequence}/adapted/variant/detail/begin_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/adapted/variant/detail/category_of_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/adapted/variant/detail/end_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/adapted/variant/detail/is_sequence_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/adapted/variant/detail/is_view_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/adapted/variant/detail/size_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/adapted/variant/tag_of.hpp (100%) rename include/boost/fusion/{ => sequence}/adapted/variant/variant_iterator.hpp (100%) rename include/boost/fusion/{ => sequence}/container.hpp (64%) rename include/boost/fusion/{ => sequence}/container/deque.hpp (81%) rename include/boost/fusion/{ => sequence}/container/deque/back_extended_deque.hpp (95%) rename include/boost/fusion/{ => sequence}/container/deque/deque.hpp (77%) rename include/boost/fusion/{ => sequence}/container/deque/deque_fwd.hpp (92%) rename include/boost/fusion/{ => sequence}/container/deque/deque_iterator.hpp (97%) rename include/boost/fusion/{ => sequence}/container/deque/detail/at_impl.hpp (96%) rename include/boost/fusion/{ => sequence}/container/deque/detail/begin_impl.hpp (95%) rename include/boost/fusion/{ => sequence}/container/deque/detail/deque_forward_ctor.hpp (93%) rename include/boost/fusion/{ => sequence}/container/deque/detail/deque_initial_size.hpp (100%) rename include/boost/fusion/{ => sequence}/container/deque/detail/deque_keyed_values.hpp (91%) rename include/boost/fusion/{ => sequence}/container/deque/detail/deque_keyed_values_call.hpp (94%) rename include/boost/fusion/{ => sequence}/container/deque/detail/end_impl.hpp (95%) rename include/boost/fusion/{ => sequence}/container/deque/detail/keyed_element.hpp (100%) rename include/boost/fusion/{ => sequence}/container/deque/detail/value_at_impl.hpp (95%) rename include/boost/fusion/{ => sequence}/container/deque/front_extended_deque.hpp (95%) rename include/boost/fusion/{ => sequence}/container/deque/limits.hpp (100%) rename include/boost/fusion/{ => sequence}/container/ext_/tree.hpp (93%) rename include/boost/fusion/{ => sequence}/container/list.hpp (58%) rename include/boost/fusion/{ => sequence}/container/list/cons.hpp (91%) rename include/boost/fusion/{ => sequence}/container/list/cons_iterator.hpp (86%) rename include/boost/fusion/{ => sequence}/container/list/detail/at_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/container/list/detail/begin_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/container/list/detail/deref_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/container/list/detail/empty_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/container/list/detail/end_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/container/list/detail/equal_to_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/container/list/detail/list_forward_ctor.hpp (95%) rename include/boost/fusion/{ => sequence}/container/list/detail/list_to_cons.hpp (87%) rename include/boost/fusion/{ => sequence}/container/list/detail/list_to_cons_call.hpp (95%) rename include/boost/fusion/{ => sequence}/container/list/detail/next_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/container/list/detail/value_at_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/container/list/detail/value_of_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/container/list/limits.hpp (100%) rename include/boost/fusion/{ => sequence}/container/list/list.hpp (90%) rename include/boost/fusion/{ => sequence}/container/list/list_fwd.hpp (92%) rename include/boost/fusion/{ => sequence}/container/map.hpp (68%) rename include/boost/fusion/{ => sequence}/container/map/detail/at_key_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/container/map/detail/begin_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/container/map/detail/end_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/container/map/detail/lookup_key.hpp (100%) rename include/boost/fusion/{ => sequence}/container/map/detail/map_forward_ctor.hpp (94%) rename include/boost/fusion/{ => sequence}/container/map/detail/map_lookup.hpp (98%) rename include/boost/fusion/{ => sequence}/container/map/detail/value_at_key_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/container/map/limits.hpp (92%) rename include/boost/fusion/{ => sequence}/container/map/map.hpp (73%) rename include/boost/fusion/{ => sequence}/container/map/map_fwd.hpp (92%) rename include/boost/fusion/{ => sequence}/container/set.hpp (68%) rename include/boost/fusion/{ => sequence}/container/set/detail/at_key_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/container/set/detail/begin_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/container/set/detail/end_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/container/set/detail/lookup_key.hpp (100%) rename include/boost/fusion/{ => sequence}/container/set/detail/set_forward_ctor.hpp (94%) rename include/boost/fusion/{ => sequence}/container/set/detail/set_lookup.hpp (98%) rename include/boost/fusion/{ => sequence}/container/set/detail/value_at_key_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/container/set/limits.hpp (92%) rename include/boost/fusion/{ => sequence}/container/set/set.hpp (73%) rename include/boost/fusion/{ => sequence}/container/set/set_fwd.hpp (92%) create mode 100644 include/boost/fusion/sequence/container/vector.hpp rename include/boost/fusion/{ => sequence}/container/vector/detail/advance_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/container/vector/detail/at_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/container/vector/detail/begin_impl.hpp (93%) rename include/boost/fusion/{ => sequence}/container/vector/detail/deref_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/container/vector/detail/distance_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/container/vector/detail/end_impl.hpp (93%) rename include/boost/fusion/{ => sequence}/container/vector/detail/equal_to_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/container/vector/detail/next_impl.hpp (94%) rename include/boost/fusion/{ => sequence}/container/vector/detail/prior_impl.hpp (94%) rename include/boost/fusion/{ => sequence}/container/vector/detail/value_at_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/container/vector/detail/value_of_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/container/vector/detail/vector_forward_ctor.hpp (94%) rename include/boost/fusion/{ => sequence}/container/vector/detail/vector_n.hpp (100%) rename include/boost/fusion/{ => sequence}/container/vector/detail/vector_n_chooser.hpp (85%) rename include/boost/fusion/{ => sequence}/container/vector/limits.hpp (100%) rename include/boost/fusion/{ => sequence}/container/vector/vector.hpp (93%) rename include/boost/fusion/{ => sequence}/container/vector/vector10.hpp (84%) rename include/boost/fusion/{ => sequence}/container/vector/vector20.hpp (80%) rename include/boost/fusion/{ => sequence}/container/vector/vector30.hpp (80%) rename include/boost/fusion/{ => sequence}/container/vector/vector40.hpp (80%) rename include/boost/fusion/{ => sequence}/container/vector/vector50.hpp (80%) rename include/boost/fusion/{ => sequence}/container/vector/vector_fwd.hpp (92%) rename include/boost/fusion/{ => sequence}/container/vector/vector_iterator.hpp (70%) create mode 100644 include/boost/fusion/sequence/conversion.hpp rename include/boost/fusion/{container/deque/convert.hpp => sequence/conversion/as_deque.hpp} (81%) rename include/boost/fusion/{container/list/convert.hpp => sequence/conversion/as_list.hpp} (81%) rename include/boost/fusion/{container/map/convert.hpp => sequence/conversion/as_map.hpp} (81%) rename include/boost/fusion/{container/set/convert.hpp => sequence/conversion/as_set.hpp} (81%) rename include/boost/fusion/{container/vector/convert.hpp => sequence/conversion/as_vector.hpp} (80%) rename include/boost/fusion/{container/deque => sequence/conversion}/detail/as_deque.hpp (95%) rename include/boost/fusion/{container/map => sequence/conversion}/detail/as_map.hpp (95%) rename include/boost/fusion/{container/set => sequence/conversion}/detail/as_set.hpp (95%) rename include/boost/fusion/{container/vector => sequence/conversion}/detail/as_vector.hpp (95%) rename include/boost/fusion/{container/list => sequence/conversion}/detail/build_cons.hpp (96%) delete mode 100644 include/boost/fusion/sequence/convert.hpp create mode 100644 include/boost/fusion/sequence/intrinsic/mpl.hpp rename include/boost/fusion/{ => sequence/intrinsic}/mpl/at.hpp (100%) rename include/boost/fusion/{ => sequence/intrinsic}/mpl/back.hpp (100%) rename include/boost/fusion/{ => sequence/intrinsic}/mpl/begin.hpp (93%) rename include/boost/fusion/{ => sequence/intrinsic}/mpl/clear.hpp (93%) create mode 100644 include/boost/fusion/sequence/intrinsic/mpl/detail/as.hpp rename include/boost/fusion/{ => sequence/intrinsic}/mpl/detail/clear.hpp (77%) rename include/boost/fusion/{ => sequence/intrinsic}/mpl/empty.hpp (100%) rename include/boost/fusion/{ => sequence/intrinsic}/mpl/end.hpp (93%) rename include/boost/fusion/{ => sequence/intrinsic}/mpl/erase.hpp (78%) rename include/boost/fusion/{ => sequence/intrinsic}/mpl/erase_key.hpp (78%) rename include/boost/fusion/{ => sequence/intrinsic}/mpl/front.hpp (100%) rename include/boost/fusion/{ => sequence/intrinsic}/mpl/has_key.hpp (100%) rename include/boost/fusion/{ => sequence/intrinsic}/mpl/insert.hpp (78%) rename include/boost/fusion/{ => sequence/intrinsic}/mpl/insert_range.hpp (78%) rename include/boost/fusion/{ => sequence/intrinsic}/mpl/pop_back.hpp (73%) rename include/boost/fusion/{ => sequence/intrinsic}/mpl/pop_front.hpp (73%) rename include/boost/fusion/{ => sequence/intrinsic}/mpl/push_back.hpp (73%) rename include/boost/fusion/{ => sequence/intrinsic}/mpl/push_front.hpp (79%) rename include/boost/fusion/{ => sequence/intrinsic}/mpl/size.hpp (100%) rename include/boost/fusion/{ => sequence}/view.hpp (58%) rename include/boost/fusion/{ => sequence}/view/ext_/multiple_view.hpp (100%) rename include/boost/fusion/{ => sequence}/view/ext_/segmented_iterator.hpp (99%) rename include/boost/fusion/{ => sequence}/view/ext_/segmented_iterator_range.hpp (97%) rename include/boost/fusion/{ => sequence}/view/filter_view.hpp (77%) rename include/boost/fusion/{ => sequence}/view/filter_view/detail/begin_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/view/filter_view/detail/deref_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/view/filter_view/detail/end_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/view/filter_view/detail/equal_to_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/view/filter_view/detail/next_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/view/filter_view/detail/size_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/view/filter_view/detail/value_of_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/view/filter_view/filter_view.hpp (85%) rename include/boost/fusion/{ => sequence}/view/filter_view/filter_view_iterator.hpp (82%) rename include/boost/fusion/{ => sequence}/view/iterator_range.hpp (87%) rename include/boost/fusion/{ => sequence}/view/iterator_range/detail/at_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/view/iterator_range/detail/begin_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/view/iterator_range/detail/end_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/view/iterator_range/detail/value_at_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/view/iterator_range/iterator_range.hpp (83%) rename include/boost/fusion/{ => sequence}/view/joint_view.hpp (77%) rename include/boost/fusion/{ => sequence}/view/joint_view/detail/begin_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/view/joint_view/detail/deref_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/view/joint_view/detail/end_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/view/joint_view/detail/next_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/view/joint_view/detail/value_of_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/view/joint_view/joint_view.hpp (91%) rename include/boost/fusion/{ => sequence}/view/joint_view/joint_view_iterator.hpp (86%) rename include/boost/fusion/{ => sequence}/view/repetitive_view.hpp (75%) rename include/boost/fusion/{ => sequence}/view/repetitive_view/detail/begin_impl.hpp (94%) rename include/boost/fusion/{ => sequence}/view/repetitive_view/detail/deref_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/view/repetitive_view/detail/end_impl.hpp (94%) rename include/boost/fusion/{ => sequence}/view/repetitive_view/detail/next_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/view/repetitive_view/detail/value_of_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/view/repetitive_view/repetitive_view.hpp (90%) rename include/boost/fusion/{ => sequence}/view/repetitive_view/repetitive_view_fwd.hpp (100%) rename include/boost/fusion/{ => sequence}/view/repetitive_view/repetitive_view_iterator.hpp (84%) rename include/boost/fusion/{ => sequence}/view/reverse_view.hpp (77%) rename include/boost/fusion/{ => sequence}/view/reverse_view/detail/advance_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/view/reverse_view/detail/begin_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/view/reverse_view/detail/deref_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/view/reverse_view/detail/distance_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/view/reverse_view/detail/end_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/view/reverse_view/detail/next_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/view/reverse_view/detail/prior_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/view/reverse_view/detail/value_of_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/view/reverse_view/reverse_view.hpp (90%) rename include/boost/fusion/{ => sequence}/view/reverse_view/reverse_view_iterator.hpp (75%) rename include/boost/fusion/{ => sequence}/view/single_view.hpp (76%) rename include/boost/fusion/{ => sequence}/view/single_view/detail/begin_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/view/single_view/detail/deref_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/view/single_view/detail/end_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/view/single_view/detail/next_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/view/single_view/detail/value_of_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/view/single_view/single_view.hpp (87%) rename include/boost/fusion/{ => sequence}/view/single_view/single_view_iterator.hpp (86%) rename include/boost/fusion/{ => sequence}/view/transform_view.hpp (76%) rename include/boost/fusion/{ => sequence}/view/transform_view/detail/advance_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/view/transform_view/detail/apply_transform_result.hpp (100%) rename include/boost/fusion/{ => sequence}/view/transform_view/detail/at_impl.hpp (96%) rename include/boost/fusion/{ => sequence}/view/transform_view/detail/begin_impl.hpp (96%) rename include/boost/fusion/{ => sequence}/view/transform_view/detail/deref_impl.hpp (96%) rename include/boost/fusion/{ => sequence}/view/transform_view/detail/distance_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/view/transform_view/detail/end_impl.hpp (96%) rename include/boost/fusion/{ => sequence}/view/transform_view/detail/equal_to_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/view/transform_view/detail/next_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/view/transform_view/detail/prior_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/view/transform_view/detail/value_at_impl.hpp (95%) rename include/boost/fusion/{ => sequence}/view/transform_view/detail/value_of_impl.hpp (95%) rename include/boost/fusion/{ => sequence}/view/transform_view/transform_view.hpp (89%) rename include/boost/fusion/{ => sequence}/view/transform_view/transform_view_fwd.hpp (100%) rename include/boost/fusion/{ => sequence}/view/transform_view/transform_view_iterator.hpp (79%) rename include/boost/fusion/{ => sequence}/view/zip_view.hpp (79%) rename include/boost/fusion/{ => sequence}/view/zip_view/detail/advance_impl.hpp (96%) rename include/boost/fusion/{ => sequence}/view/zip_view/detail/at_impl.hpp (96%) rename include/boost/fusion/{ => sequence}/view/zip_view/detail/begin_impl.hpp (97%) rename include/boost/fusion/{ => sequence}/view/zip_view/detail/deref_impl.hpp (95%) rename include/boost/fusion/{ => sequence}/view/zip_view/detail/distance_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/view/zip_view/detail/end_impl.hpp (97%) rename include/boost/fusion/{ => sequence}/view/zip_view/detail/equal_to_impl.hpp (97%) rename include/boost/fusion/{ => sequence}/view/zip_view/detail/next_impl.hpp (97%) rename include/boost/fusion/{ => sequence}/view/zip_view/detail/prior_impl.hpp (97%) rename include/boost/fusion/{ => sequence}/view/zip_view/detail/size_impl.hpp (100%) rename include/boost/fusion/{ => sequence}/view/zip_view/detail/strictest_traversal.hpp (92%) rename include/boost/fusion/{ => sequence}/view/zip_view/detail/value_at_impl.hpp (97%) rename include/boost/fusion/{ => sequence}/view/zip_view/detail/value_of_impl.hpp (93%) rename include/boost/fusion/{ => sequence}/view/zip_view/zip_view.hpp (87%) rename include/boost/fusion/{ => sequence}/view/zip_view/zip_view_iterator.hpp (65%) rename include/boost/fusion/{ => sequence}/view/zip_view/zip_view_iterator_fwd.hpp (89%) create mode 100644 include/boost/fusion/support/detail/compiler_config.hpp diff --git a/include/boost/fusion/adapted/array.hpp b/include/boost/fusion/adapted/array.hpp deleted file mode 100644 index 2be9d4ba..00000000 --- a/include/boost/fusion/adapted/array.hpp +++ /dev/null @@ -1,22 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 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_ARRAY_27122005_1035) -#define BOOST_FUSION_ARRAY_27122005_1035 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif diff --git a/include/boost/fusion/adapted/boost_tuple.hpp b/include/boost/fusion/adapted/boost_tuple.hpp deleted file mode 100644 index 2924df07..00000000 --- a/include/boost/fusion/adapted/boost_tuple.hpp +++ /dev/null @@ -1,20 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - Distributed under the 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_BOOST_TUPLE_09272006_0732) -#define BOOST_FUSION_BOOST_TUPLE_09272006_0732 - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif diff --git a/include/boost/fusion/adapted/mpl.hpp b/include/boost/fusion/adapted/mpl.hpp deleted file mode 100644 index f8257846..00000000 --- a/include/boost/fusion/adapted/mpl.hpp +++ /dev/null @@ -1,21 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 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_MPL_31122005_1152) -#define BOOST_FUSION_MPL_31122005_1152 - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif diff --git a/include/boost/fusion/adapted/struct.hpp b/include/boost/fusion/adapted/struct.hpp deleted file mode 100644 index 4b36f179..00000000 --- a/include/boost/fusion/adapted/struct.hpp +++ /dev/null @@ -1,23 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 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_STRUCT_24122005_1744) -#define BOOST_FUSION_STD_STRUCT_24122005_1744 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif diff --git a/include/boost/fusion/adapted/variant.hpp b/include/boost/fusion/adapted/variant.hpp deleted file mode 100644 index 5e711c17..00000000 --- a/include/boost/fusion/adapted/variant.hpp +++ /dev/null @@ -1,20 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 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_VARIANT_12112006_1614) -#define BOOST_FUSION_VARIANT_12112006_1614 - -#include -#include -#include -#include -#include -#include -#include -#include - -#endif diff --git a/include/boost/fusion/algorithm/query/ext_/find_if_s.hpp b/include/boost/fusion/algorithm/query/ext_/find_if_s.hpp index 82c20b4c..2534ba4e 100755 --- a/include/boost/fusion/algorithm/query/ext_/find_if_s.hpp +++ b/include/boost/fusion/algorithm/query/ext_/find_if_s.hpp @@ -14,10 +14,10 @@ #include #include #include -#include +#include #include -#include -#include +#include +#include #include // fwd declarations diff --git a/include/boost/fusion/algorithm/transformation/clear.hpp b/include/boost/fusion/algorithm/transformation/clear.hpp index 75328232..31e4269d 100644 --- a/include/boost/fusion/algorithm/transformation/clear.hpp +++ b/include/boost/fusion/algorithm/transformation/clear.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_CLEAR_09172005_1127) #define FUSION_CLEAR_09172005_1127 -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/algorithm/transformation/erase.hpp b/include/boost/fusion/algorithm/transformation/erase.hpp index d0405c30..9e78da27 100644 --- a/include/boost/fusion/algorithm/transformation/erase.hpp +++ b/include/boost/fusion/algorithm/transformation/erase.hpp @@ -1,21 +1,20 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_ERASE_07232005_0534) #define FUSION_ERASE_07232005_0534 -#include -#include -#include -#include -#include +#include +#include +#include #include #include #include -#include +#include +#include namespace boost { namespace fusion { @@ -26,7 +25,7 @@ namespace boost { namespace fusion { typedef typename result_of::end::type seq_last_type; typedef typename convert_iterator::type first_type; - typedef typename + typedef typename mpl::if_< result_of::equal_to , first_type @@ -34,19 +33,19 @@ namespace boost { namespace fusion >::type type; - static type + static type call(First const& first, mpl::false_) { return fusion::next(convert_iterator::call(first)); } - static type + static type call(First const& first, mpl::true_) { return convert_iterator::call(first); } - static type + static type call(First const& first) { return call(first, result_of::equal_to()); diff --git a/include/boost/fusion/algorithm/transformation/filter.hpp b/include/boost/fusion/algorithm/transformation/filter.hpp index 52bf6af3..16244649 100644 --- a/include/boost/fusion/algorithm/transformation/filter.hpp +++ b/include/boost/fusion/algorithm/transformation/filter.hpp @@ -8,7 +8,7 @@ #if !defined(FUSION_FILTER_02122005_1839) #define FUSION_FILTER_02122005_1839 -#include +#include #include namespace boost { namespace fusion diff --git a/include/boost/fusion/algorithm/transformation/filter_if.hpp b/include/boost/fusion/algorithm/transformation/filter_if.hpp index d13113b1..4f362882 100644 --- a/include/boost/fusion/algorithm/transformation/filter_if.hpp +++ b/include/boost/fusion/algorithm/transformation/filter_if.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_FILTER_IF_07172005_0818) #define FUSION_FILTER_IF_07172005_0818 -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/algorithm/transformation/insert.hpp b/include/boost/fusion/algorithm/transformation/insert.hpp index 1702bc19..ebe06f14 100644 --- a/include/boost/fusion/algorithm/transformation/insert.hpp +++ b/include/boost/fusion/algorithm/transformation/insert.hpp @@ -1,21 +1,20 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_INSERT_07222005_0730) #define FUSION_INSERT_07222005_0730 +#include +#include +#include +#include #include -#include -#include -#include -#include -#include #include #include -#include +#include namespace boost { namespace fusion { @@ -43,7 +42,7 @@ namespace boost { namespace fusion insert(Sequence const& seq, Position const& pos, T const& x) { typedef result_of::insert< - Sequence const, Position, T> + Sequence const, Position, T> result_of; typedef typename result_of::left_type left_type; typedef typename result_of::right_type right_type; diff --git a/include/boost/fusion/algorithm/transformation/insert_range.hpp b/include/boost/fusion/algorithm/transformation/insert_range.hpp index 1915c413..4db840aa 100644 --- a/include/boost/fusion/algorithm/transformation/insert_range.hpp +++ b/include/boost/fusion/algorithm/transformation/insert_range.hpp @@ -1,20 +1,19 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_INSERT_RANGE_009172005_1147) #define FUSION_INSERT_RANGE_009172005_1147 -#include -#include -#include -#include +#include +#include +#include #include #include #include -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/algorithm/transformation/join.hpp b/include/boost/fusion/algorithm/transformation/join.hpp index 4ed78b5f..10a5eecc 100644 --- a/include/boost/fusion/algorithm/transformation/join.hpp +++ b/include/boost/fusion/algorithm/transformation/join.hpp @@ -8,7 +8,7 @@ #if !defined(FUSION_JOIN_200601222109) #define FUSION_JOIN_200601222109 -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/algorithm/transformation/pop_back.hpp b/include/boost/fusion/algorithm/transformation/pop_back.hpp index 6eb743fd..c83d5904 100644 --- a/include/boost/fusion/algorithm/transformation/pop_back.hpp +++ b/include/boost/fusion/algorithm/transformation/pop_back.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_POP_BACK_09172005_1038) #define FUSION_POP_BACK_09172005_1038 -#include +#include #include #include #include diff --git a/include/boost/fusion/algorithm/transformation/pop_front.hpp b/include/boost/fusion/algorithm/transformation/pop_front.hpp index aed524d3..d01e3754 100644 --- a/include/boost/fusion/algorithm/transformation/pop_front.hpp +++ b/include/boost/fusion/algorithm/transformation/pop_front.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_POP_FRONT_09172005_1115) #define FUSION_POP_FRONT_09172005_1115 -#include +#include #include #include #include diff --git a/include/boost/fusion/algorithm/transformation/push_back.hpp b/include/boost/fusion/algorithm/transformation/push_back.hpp index 4fadc79c..98f63702 100644 --- a/include/boost/fusion/algorithm/transformation/push_back.hpp +++ b/include/boost/fusion/algorithm/transformation/push_back.hpp @@ -8,8 +8,8 @@ #define FUSION_PUSH_BACK_07162005_0235 #include -#include -#include +#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/algorithm/transformation/push_front.hpp b/include/boost/fusion/algorithm/transformation/push_front.hpp index 10f9fc10..526e28f1 100644 --- a/include/boost/fusion/algorithm/transformation/push_front.hpp +++ b/include/boost/fusion/algorithm/transformation/push_front.hpp @@ -8,8 +8,8 @@ #define FUSION_PUSH_FRONT_07162005_0749 #include -#include -#include +#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/algorithm/transformation/remove.hpp b/include/boost/fusion/algorithm/transformation/remove.hpp index 01718d32..1eb4bfb3 100644 --- a/include/boost/fusion/algorithm/transformation/remove.hpp +++ b/include/boost/fusion/algorithm/transformation/remove.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_REMOVE_07162005_0818) #define FUSION_REMOVE_07162005_0818 -#include +#include #include #include diff --git a/include/boost/fusion/algorithm/transformation/remove_if.hpp b/include/boost/fusion/algorithm/transformation/remove_if.hpp index ab13694d..c2140d17 100644 --- a/include/boost/fusion/algorithm/transformation/remove_if.hpp +++ b/include/boost/fusion/algorithm/transformation/remove_if.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_REMOVE_IF_07162005_0818) #define FUSION_REMOVE_IF_07162005_0818 -#include +#include #include #include diff --git a/include/boost/fusion/algorithm/transformation/replace.hpp b/include/boost/fusion/algorithm/transformation/replace.hpp index 780f1a45..43657f99 100644 --- a/include/boost/fusion/algorithm/transformation/replace.hpp +++ b/include/boost/fusion/algorithm/transformation/replace.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_REPLACE_08182005_0830) #define FUSION_REPLACE_08182005_0830 -#include +#include #include namespace boost { namespace fusion diff --git a/include/boost/fusion/algorithm/transformation/replace_if.hpp b/include/boost/fusion/algorithm/transformation/replace_if.hpp index 90db5683..07abbdca 100644 --- a/include/boost/fusion/algorithm/transformation/replace_if.hpp +++ b/include/boost/fusion/algorithm/transformation/replace_if.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_REPLACE_IF_08182005_0939) #define FUSION_REPLACE_IF_08182005_0939 -#include +#include #include #include #include diff --git a/include/boost/fusion/algorithm/transformation/reverse.hpp b/include/boost/fusion/algorithm/transformation/reverse.hpp index b95461c8..faf78114 100644 --- a/include/boost/fusion/algorithm/transformation/reverse.hpp +++ b/include/boost/fusion/algorithm/transformation/reverse.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_REVERSE_07212005_1230) #define FUSION_REVERSE_07212005_1230 -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/algorithm/transformation/transform.hpp b/include/boost/fusion/algorithm/transformation/transform.hpp index d9f06e7c..0315a8d0 100644 --- a/include/boost/fusion/algorithm/transformation/transform.hpp +++ b/include/boost/fusion/algorithm/transformation/transform.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_TRANSFORM_07052005_1057) #define FUSION_TRANSFORM_07052005_1057 -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/algorithm/transformation/zip.hpp b/include/boost/fusion/algorithm/transformation/zip.hpp index a2f66bfd..33b7d25b 100644 --- a/include/boost/fusion/algorithm/transformation/zip.hpp +++ b/include/boost/fusion/algorithm/transformation/zip.hpp @@ -9,10 +9,10 @@ #if !defined(FUSION_ZIP_HPP_20060125_2058) #define FUSION_ZIP_HPP_20060125_2058 -#include -#include -#include -#include +#include +#include +#include +#include #include #include #include diff --git a/include/boost/fusion/container/deque/detail/convert_impl.hpp b/include/boost/fusion/container/deque/detail/convert_impl.hpp deleted file mode 100644 index ac310a19..00000000 --- a/include/boost/fusion/container/deque/detail/convert_impl.hpp +++ /dev/null @@ -1,45 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 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_CONVERT_IMPL_20061213_2207) -#define FUSION_CONVERT_IMPL_20061213_2207 - -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct deque_tag; - - namespace extension - { - template - struct convert_impl; - - template <> - struct convert_impl - { - template - struct apply - { - typedef typename detail::as_deque::value> gen; - typedef typename gen:: - template apply::type>::type - type; - - static type call(Sequence& seq) - { - return gen::call(fusion::begin(seq)); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/container/list/detail/convert_impl.hpp b/include/boost/fusion/container/list/detail/convert_impl.hpp deleted file mode 100644 index cfe7a1df..00000000 --- a/include/boost/fusion/container/list/detail/convert_impl.hpp +++ /dev/null @@ -1,51 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 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_CONVERT_IMPL_09232005_1215) -#define FUSION_CONVERT_IMPL_09232005_1215 - -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct cons_tag; - - namespace extension - { - template - struct convert_impl; - - template <> - struct convert_impl - { - template - struct apply - { - typedef typename - detail::build_cons< - typename result_of::begin::type - , typename result_of::end::type - > - build_cons; - - typedef typename build_cons::type type; - - static type - call(Sequence& seq) - { - return build_cons::call(fusion::begin(seq), fusion::end(seq)); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/container/map/detail/convert_impl.hpp b/include/boost/fusion/container/map/detail/convert_impl.hpp deleted file mode 100644 index aedd3e3d..00000000 --- a/include/boost/fusion/container/map/detail/convert_impl.hpp +++ /dev/null @@ -1,45 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 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_CONVERT_IMPL_09232005_1340) -#define FUSION_CONVERT_IMPL_09232005_1340 - -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct map_tag; - - namespace extension - { - template - struct convert_impl; - - template <> - struct convert_impl - { - template - struct apply - { - typedef typename detail::as_map::value> gen; - typedef typename gen:: - template apply::type>::type - type; - - static type call(Sequence& seq) - { - return gen::call(fusion::begin(seq)); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/container/set/detail/convert_impl.hpp b/include/boost/fusion/container/set/detail/convert_impl.hpp deleted file mode 100644 index 1aa79fb1..00000000 --- a/include/boost/fusion/container/set/detail/convert_impl.hpp +++ /dev/null @@ -1,45 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 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_CONVERT_IMPL_09232005_1341) -#define FUSION_CONVERT_IMPL_09232005_1341 - -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct set_tag; - - namespace extension - { - template - struct convert_impl; - - template <> - struct convert_impl - { - template - struct apply - { - typedef typename detail::as_set::value> gen; - typedef typename gen:: - template apply::type>::type - type; - - static type call(Sequence& seq) - { - return gen::call(fusion::begin(seq)); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/container/vector.hpp b/include/boost/fusion/container/vector.hpp deleted file mode 100644 index 389a102e..00000000 --- a/include/boost/fusion/container/vector.hpp +++ /dev/null @@ -1,21 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - Distributed under the 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_SEQUENCE_CLASS_VECTOR_10022005_0602) -#define FUSION_SEQUENCE_CLASS_VECTOR_10022005_0602 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif diff --git a/include/boost/fusion/container/vector/detail/convert_impl.hpp b/include/boost/fusion/container/vector/detail/convert_impl.hpp deleted file mode 100644 index 5e1d080f..00000000 --- a/include/boost/fusion/container/vector/detail/convert_impl.hpp +++ /dev/null @@ -1,45 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 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_CONVERT_IMPL_09222005_1104) -#define FUSION_CONVERT_IMPL_09222005_1104 - -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct vector_tag; - - namespace extension - { - template - struct convert_impl; - - template <> - struct convert_impl - { - template - struct apply - { - typedef typename detail::as_vector::value> gen; - typedef typename gen:: - template apply::type>::type - type; - - static type call(Sequence& seq) - { - return gen::call(fusion::begin(seq)); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/functional/adapter/limits.hpp b/include/boost/fusion/functional/adapter/limits.hpp index cf6701c4..476fe021 100644 --- a/include/boost/fusion/functional/adapter/limits.hpp +++ b/include/boost/fusion/functional/adapter/limits.hpp @@ -9,7 +9,7 @@ #if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_LIMITS_HPP_INCLUDED) # define BOOST_FUSION_FUNCTIONAL_ADAPTER_LIMITS_HPP_INCLUDED -# include +# include # if !defined(BOOST_FUSION_UNFUSED_GENERIC_MAX_ARITY) # define BOOST_FUSION_UNFUSED_GENERIC_MAX_ARITY 6 diff --git a/include/boost/fusion/functional/adapter/unfused_generic.hpp b/include/boost/fusion/functional/adapter/unfused_generic.hpp index 82b1e4b0..69191ef3 100644 --- a/include/boost/fusion/functional/adapter/unfused_generic.hpp +++ b/include/boost/fusion/functional/adapter/unfused_generic.hpp @@ -18,7 +18,7 @@ #include #include -#include +#include #include #include diff --git a/include/boost/fusion/functional/adapter/unfused_lvalue_args.hpp b/include/boost/fusion/functional/adapter/unfused_lvalue_args.hpp index ba2f31b6..7b801cf7 100644 --- a/include/boost/fusion/functional/adapter/unfused_lvalue_args.hpp +++ b/include/boost/fusion/functional/adapter/unfused_lvalue_args.hpp @@ -17,7 +17,7 @@ #include -#include +#include #include #include diff --git a/include/boost/fusion/functional/adapter/unfused_rvalue_args.hpp b/include/boost/fusion/functional/adapter/unfused_rvalue_args.hpp index 3c80475e..eea0fec9 100644 --- a/include/boost/fusion/functional/adapter/unfused_rvalue_args.hpp +++ b/include/boost/fusion/functional/adapter/unfused_rvalue_args.hpp @@ -17,7 +17,7 @@ #include -#include +#include #include #include diff --git a/include/boost/fusion/functional/adapter/unfused_typed.hpp b/include/boost/fusion/functional/adapter/unfused_typed.hpp index 9ee3a7a6..94385a35 100644 --- a/include/boost/fusion/functional/adapter/unfused_typed.hpp +++ b/include/boost/fusion/functional/adapter/unfused_typed.hpp @@ -22,8 +22,8 @@ #include #include #include -#include -#include +#include +#include #include #include diff --git a/include/boost/fusion/include/adapt_struct.hpp b/include/boost/fusion/include/adapt_struct.hpp index facc8970..2fab5de7 100644 --- a/include/boost/fusion/include/adapt_struct.hpp +++ b/include/boost/fusion/include/adapt_struct.hpp @@ -7,6 +7,6 @@ #if !defined(FUSION_INCLUDE_ADAPT_STRUCT) #define FUSION_INCLUDE_ADAPT_STRUCT -#include +#include #endif diff --git a/include/boost/fusion/include/as_vector.hpp b/include/boost/fusion/include/as_vector.hpp index 4c9b39d0..2136b492 100644 --- a/include/boost/fusion/include/as_vector.hpp +++ b/include/boost/fusion/include/as_vector.hpp @@ -7,6 +7,6 @@ #if !defined(FUSION_INCLUDE_AS_VECTOR) #define FUSION_INCLUDE_AS_VECTOR -#include +#include #endif diff --git a/include/boost/fusion/include/joint_view.hpp b/include/boost/fusion/include/joint_view.hpp index e3d1e204..c60e34e5 100644 --- a/include/boost/fusion/include/joint_view.hpp +++ b/include/boost/fusion/include/joint_view.hpp @@ -7,6 +7,6 @@ #if !defined(FUSION_INCLUDE_JOINT_VIEW) #define FUSION_INCLUDE_JOINT_VIEW -#include +#include #endif diff --git a/include/boost/fusion/include/list.hpp b/include/boost/fusion/include/list.hpp index 4eb8e767..fb5c0b42 100644 --- a/include/boost/fusion/include/list.hpp +++ b/include/boost/fusion/include/list.hpp @@ -7,6 +7,6 @@ #if !defined(FUSION_INCLUDE_LIST) #define FUSION_INCLUDE_LIST -#include +#include #endif diff --git a/include/boost/fusion/include/mpl.hpp b/include/boost/fusion/include/mpl.hpp index 8a1cbfd0..5e3f906d 100644 --- a/include/boost/fusion/include/mpl.hpp +++ b/include/boost/fusion/include/mpl.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_INCLUDE_MPL) #define FUSION_INCLUDE_MPL -#include -#include +#include +#include #endif diff --git a/include/boost/fusion/include/single_view.hpp b/include/boost/fusion/include/single_view.hpp index a95d04a8..ae60d867 100644 --- a/include/boost/fusion/include/single_view.hpp +++ b/include/boost/fusion/include/single_view.hpp @@ -7,6 +7,6 @@ #if !defined(FUSION_INCLUDE_SINGLE_VIEW) #define FUSION_INCLUDE_SINGLE_VIEW -#include +#include #endif diff --git a/include/boost/fusion/include/std_pair.hpp b/include/boost/fusion/include/std_pair.hpp index 98f37c86..bb4d5952 100644 --- a/include/boost/fusion/include/std_pair.hpp +++ b/include/boost/fusion/include/std_pair.hpp @@ -7,6 +7,6 @@ #if !defined(FUSION_INCLUDE_STD_PAIR) #define FUSION_INCLUDE_STD_PAIR -#include +#include #endif diff --git a/include/boost/fusion/include/transform_view.hpp b/include/boost/fusion/include/transform_view.hpp index 3aceaaee..7564c6ab 100644 --- a/include/boost/fusion/include/transform_view.hpp +++ b/include/boost/fusion/include/transform_view.hpp @@ -7,6 +7,6 @@ #if !defined(FUSION_INCLUDE_TRANSFORM_VIEW) #define FUSION_INCLUDE_TRANSFORM_VIEW -#include +#include #endif diff --git a/include/boost/fusion/include/variant.hpp b/include/boost/fusion/include/variant.hpp index 3d013b8e..824b8a6a 100644 --- a/include/boost/fusion/include/variant.hpp +++ b/include/boost/fusion/include/variant.hpp @@ -7,6 +7,6 @@ #if !defined(FUSION_INCLUDE_VARIANT) #define FUSION_INCLUDE_VARIANT -#include +#include #endif diff --git a/include/boost/fusion/include/vector.hpp b/include/boost/fusion/include/vector.hpp index d1495c0a..e49568e2 100644 --- a/include/boost/fusion/include/vector.hpp +++ b/include/boost/fusion/include/vector.hpp @@ -7,6 +7,6 @@ #if !defined(FUSION_INCLUDE_VECTOR) #define FUSION_INCLUDE_VECTOR -#include +#include #endif diff --git a/include/boost/fusion/iterator/mpl/convert_iterator.hpp b/include/boost/fusion/iterator/mpl/convert_iterator.hpp index 5716ce4e..fc2efacf 100644 --- a/include/boost/fusion/iterator/mpl/convert_iterator.hpp +++ b/include/boost/fusion/iterator/mpl/convert_iterator.hpp @@ -1,21 +1,19 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_CONVERT_ITERATOR_05062005_1218) #define FUSION_CONVERT_ITERATOR_05062005_1218 #include +#include #include #include namespace boost { namespace fusion { - template - struct mpl_iterator; // forward declaration - // Test T. If it is a fusion iterator, return a reference to it. // else, assume it is an mpl iterator. diff --git a/include/boost/fusion/mpl.hpp b/include/boost/fusion/mpl.hpp index e499df93..6eb2538b 100644 --- a/include/boost/fusion/mpl.hpp +++ b/include/boost/fusion/mpl.hpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_MPL_09172006_2049) @@ -9,24 +9,7 @@ // The fusion <--> MPL link headers #include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include #endif diff --git a/include/boost/fusion/sequence.hpp b/include/boost/fusion/sequence.hpp index e60fdd7d..9a794c2e 100644 --- a/include/boost/fusion/sequence.hpp +++ b/include/boost/fusion/sequence.hpp @@ -8,10 +8,13 @@ #define FUSION_ITERATOR_10022005_0559 #include +#include #include +#include #include #include #include -#include +#include +#include #endif diff --git a/include/boost/fusion/adapted.hpp b/include/boost/fusion/sequence/adapted.hpp similarity index 65% rename from include/boost/fusion/adapted.hpp rename to include/boost/fusion/sequence/adapted.hpp index 23693645..ea951f19 100644 --- a/include/boost/fusion/adapted.hpp +++ b/include/boost/fusion/sequence/adapted.hpp @@ -8,10 +8,10 @@ #if !defined(BOOST_FUSION_ADAPTED_30122005_1420) #define BOOST_FUSION_ADAPTED_30122005_1420 -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #endif diff --git a/include/boost/fusion/sequence/adapted/array.hpp b/include/boost/fusion/sequence/adapted/array.hpp new file mode 100644 index 00000000..0e1537f8 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/array.hpp @@ -0,0 +1,22 @@ +/*============================================================================= + Copyright (c) 2001-2006 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_ARRAY_27122005_1035) +#define BOOST_FUSION_ARRAY_27122005_1035 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#endif diff --git a/include/boost/fusion/adapted/array/array_iterator.hpp b/include/boost/fusion/sequence/adapted/array/array_iterator.hpp similarity index 100% rename from include/boost/fusion/adapted/array/array_iterator.hpp rename to include/boost/fusion/sequence/adapted/array/array_iterator.hpp diff --git a/include/boost/fusion/adapted/array/detail/at_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/at_impl.hpp similarity index 100% rename from include/boost/fusion/adapted/array/detail/at_impl.hpp rename to include/boost/fusion/sequence/adapted/array/detail/at_impl.hpp diff --git a/include/boost/fusion/adapted/array/detail/begin_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/begin_impl.hpp similarity index 94% rename from include/boost/fusion/adapted/array/detail/begin_impl.hpp rename to include/boost/fusion/sequence/adapted/array/detail/begin_impl.hpp index 06dc8c51..fc4fb6a3 100644 --- a/include/boost/fusion/adapted/array/detail/begin_impl.hpp +++ b/include/boost/fusion/sequence/adapted/array/detail/begin_impl.hpp @@ -8,7 +8,7 @@ #if !defined(BOOST_FUSION_BEGIN_IMPL_27122005_1117) #define BOOST_FUSION_BEGIN_IMPL_27122005_1117 -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/adapted/array/detail/category_of_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/category_of_impl.hpp similarity index 100% rename from include/boost/fusion/adapted/array/detail/category_of_impl.hpp rename to include/boost/fusion/sequence/adapted/array/detail/category_of_impl.hpp diff --git a/include/boost/fusion/adapted/array/detail/end_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/end_impl.hpp similarity index 94% rename from include/boost/fusion/adapted/array/detail/end_impl.hpp rename to include/boost/fusion/sequence/adapted/array/detail/end_impl.hpp index c9432c9b..a3ffbed4 100644 --- a/include/boost/fusion/adapted/array/detail/end_impl.hpp +++ b/include/boost/fusion/sequence/adapted/array/detail/end_impl.hpp @@ -8,7 +8,7 @@ #if !defined(BOOST_FUSION_END_IMPL_27122005_1120) #define BOOST_FUSION_END_IMPL_27122005_1120 -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/adapted/array/detail/is_sequence_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/is_sequence_impl.hpp similarity index 100% rename from include/boost/fusion/adapted/array/detail/is_sequence_impl.hpp rename to include/boost/fusion/sequence/adapted/array/detail/is_sequence_impl.hpp diff --git a/include/boost/fusion/adapted/array/detail/is_view_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/is_view_impl.hpp similarity index 100% rename from include/boost/fusion/adapted/array/detail/is_view_impl.hpp rename to include/boost/fusion/sequence/adapted/array/detail/is_view_impl.hpp diff --git a/include/boost/fusion/adapted/array/detail/size_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/size_impl.hpp similarity index 100% rename from include/boost/fusion/adapted/array/detail/size_impl.hpp rename to include/boost/fusion/sequence/adapted/array/detail/size_impl.hpp diff --git a/include/boost/fusion/adapted/array/detail/value_at_impl.hpp b/include/boost/fusion/sequence/adapted/array/detail/value_at_impl.hpp similarity index 100% rename from include/boost/fusion/adapted/array/detail/value_at_impl.hpp rename to include/boost/fusion/sequence/adapted/array/detail/value_at_impl.hpp diff --git a/include/boost/fusion/adapted/array/tag_of.hpp b/include/boost/fusion/sequence/adapted/array/tag_of.hpp similarity index 100% rename from include/boost/fusion/adapted/array/tag_of.hpp rename to include/boost/fusion/sequence/adapted/array/tag_of.hpp diff --git a/include/boost/fusion/sequence/adapted/boost_tuple.hpp b/include/boost/fusion/sequence/adapted/boost_tuple.hpp new file mode 100644 index 00000000..14288087 --- /dev/null +++ b/include/boost/fusion/sequence/adapted/boost_tuple.hpp @@ -0,0 +1,20 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Distributed under the 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_BOOST_TUPLE_09272006_0732) +#define BOOST_FUSION_BOOST_TUPLE_09272006_0732 + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#endif diff --git a/include/boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp b/include/boost/fusion/sequence/adapted/boost_tuple/boost_tuple_iterator.hpp similarity index 100% rename from include/boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp rename to include/boost/fusion/sequence/adapted/boost_tuple/boost_tuple_iterator.hpp diff --git a/include/boost/fusion/adapted/boost_tuple/detail/at_impl.hpp b/include/boost/fusion/sequence/adapted/boost_tuple/detail/at_impl.hpp similarity index 100% rename from include/boost/fusion/adapted/boost_tuple/detail/at_impl.hpp rename to include/boost/fusion/sequence/adapted/boost_tuple/detail/at_impl.hpp diff --git a/include/boost/fusion/adapted/boost_tuple/detail/begin_impl.hpp b/include/boost/fusion/sequence/adapted/boost_tuple/detail/begin_impl.hpp similarity index 92% rename from include/boost/fusion/adapted/boost_tuple/detail/begin_impl.hpp rename to include/boost/fusion/sequence/adapted/boost_tuple/detail/begin_impl.hpp index ee9a89eb..aaa6a670 100644 --- a/include/boost/fusion/adapted/boost_tuple/detail/begin_impl.hpp +++ b/include/boost/fusion/sequence/adapted/boost_tuple/detail/begin_impl.hpp @@ -7,7 +7,7 @@ #if !defined(BOOST_FUSION_BEGIN_IMPL_09272006_0719) #define BOOST_FUSION_BEGIN_IMPL_09272006_0719 -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/adapted/boost_tuple/detail/category_of_impl.hpp b/include/boost/fusion/sequence/adapted/boost_tuple/detail/category_of_impl.hpp similarity index 100% rename from include/boost/fusion/adapted/boost_tuple/detail/category_of_impl.hpp rename to include/boost/fusion/sequence/adapted/boost_tuple/detail/category_of_impl.hpp diff --git a/include/boost/fusion/adapted/boost_tuple/detail/end_impl.hpp b/include/boost/fusion/sequence/adapted/boost_tuple/detail/end_impl.hpp similarity index 94% rename from include/boost/fusion/adapted/boost_tuple/detail/end_impl.hpp rename to include/boost/fusion/sequence/adapted/boost_tuple/detail/end_impl.hpp index 2fb27a7a..016bca3f 100644 --- a/include/boost/fusion/adapted/boost_tuple/detail/end_impl.hpp +++ b/include/boost/fusion/sequence/adapted/boost_tuple/detail/end_impl.hpp @@ -7,7 +7,7 @@ #if !defined(BOOST_FUSION_END_IMPL_09272006_0721) #define BOOST_FUSION_END_IMPL_09272006_0721 -#include +#include #include #include diff --git a/include/boost/fusion/adapted/boost_tuple/detail/is_sequence_impl.hpp b/include/boost/fusion/sequence/adapted/boost_tuple/detail/is_sequence_impl.hpp similarity index 100% rename from include/boost/fusion/adapted/boost_tuple/detail/is_sequence_impl.hpp rename to include/boost/fusion/sequence/adapted/boost_tuple/detail/is_sequence_impl.hpp diff --git a/include/boost/fusion/adapted/boost_tuple/detail/is_view_impl.hpp b/include/boost/fusion/sequence/adapted/boost_tuple/detail/is_view_impl.hpp similarity index 100% rename from include/boost/fusion/adapted/boost_tuple/detail/is_view_impl.hpp rename to include/boost/fusion/sequence/adapted/boost_tuple/detail/is_view_impl.hpp diff --git a/include/boost/fusion/adapted/boost_tuple/detail/size_impl.hpp b/include/boost/fusion/sequence/adapted/boost_tuple/detail/size_impl.hpp similarity index 100% rename from include/boost/fusion/adapted/boost_tuple/detail/size_impl.hpp rename to include/boost/fusion/sequence/adapted/boost_tuple/detail/size_impl.hpp diff --git a/include/boost/fusion/adapted/boost_tuple/detail/value_at_impl.hpp b/include/boost/fusion/sequence/adapted/boost_tuple/detail/value_at_impl.hpp similarity index 100% rename from include/boost/fusion/adapted/boost_tuple/detail/value_at_impl.hpp rename to include/boost/fusion/sequence/adapted/boost_tuple/detail/value_at_impl.hpp diff --git a/include/boost/fusion/adapted/boost_tuple/tag_of.hpp b/include/boost/fusion/sequence/adapted/boost_tuple/tag_of.hpp similarity index 100% rename from include/boost/fusion/adapted/boost_tuple/tag_of.hpp rename to include/boost/fusion/sequence/adapted/boost_tuple/tag_of.hpp diff --git a/include/boost/fusion/sequence/adapted/mpl.hpp b/include/boost/fusion/sequence/adapted/mpl.hpp new file mode 100644 index 00000000..94f4967a --- /dev/null +++ b/include/boost/fusion/sequence/adapted/mpl.hpp @@ -0,0 +1,21 @@ +/*============================================================================= + Copyright (c) 2001-2006 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_MPL_31122005_1152) +#define BOOST_FUSION_MPL_31122005_1152 + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#endif diff --git a/include/boost/fusion/adapted/mpl/detail/at_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/at_impl.hpp similarity index 100% rename from include/boost/fusion/adapted/mpl/detail/at_impl.hpp rename to include/boost/fusion/sequence/adapted/mpl/detail/at_impl.hpp diff --git a/include/boost/fusion/adapted/mpl/detail/begin_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/begin_impl.hpp similarity index 95% rename from include/boost/fusion/adapted/mpl/detail/begin_impl.hpp rename to include/boost/fusion/sequence/adapted/mpl/detail/begin_impl.hpp index 1ec77d8b..04e09e44 100644 --- a/include/boost/fusion/adapted/mpl/detail/begin_impl.hpp +++ b/include/boost/fusion/sequence/adapted/mpl/detail/begin_impl.hpp @@ -8,7 +8,7 @@ #if !defined(BOOST_FUSION_BEGIN_IMPL_31122005_1209) #define BOOST_FUSION_BEGIN_IMPL_31122005_1209 -#include +#include #include #include diff --git a/include/boost/fusion/adapted/mpl/detail/category_of_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/category_of_impl.hpp similarity index 100% rename from include/boost/fusion/adapted/mpl/detail/category_of_impl.hpp rename to include/boost/fusion/sequence/adapted/mpl/detail/category_of_impl.hpp diff --git a/include/boost/fusion/adapted/mpl/detail/empty_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/empty_impl.hpp similarity index 100% rename from include/boost/fusion/adapted/mpl/detail/empty_impl.hpp rename to include/boost/fusion/sequence/adapted/mpl/detail/empty_impl.hpp diff --git a/include/boost/fusion/adapted/mpl/detail/end_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/end_impl.hpp similarity index 95% rename from include/boost/fusion/adapted/mpl/detail/end_impl.hpp rename to include/boost/fusion/sequence/adapted/mpl/detail/end_impl.hpp index e3466956..6b3d7933 100644 --- a/include/boost/fusion/adapted/mpl/detail/end_impl.hpp +++ b/include/boost/fusion/sequence/adapted/mpl/detail/end_impl.hpp @@ -8,7 +8,7 @@ #if !defined(BOOST_FUSION_END_IMPL_31122005_1237) #define BOOST_FUSION_END_IMPL_31122005_1237 -#include +#include #include #include diff --git a/include/boost/fusion/adapted/mpl/detail/has_key_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/has_key_impl.hpp similarity index 100% rename from include/boost/fusion/adapted/mpl/detail/has_key_impl.hpp rename to include/boost/fusion/sequence/adapted/mpl/detail/has_key_impl.hpp diff --git a/include/boost/fusion/adapted/mpl/detail/is_sequence_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/is_sequence_impl.hpp similarity index 100% rename from include/boost/fusion/adapted/mpl/detail/is_sequence_impl.hpp rename to include/boost/fusion/sequence/adapted/mpl/detail/is_sequence_impl.hpp diff --git a/include/boost/fusion/adapted/mpl/detail/is_view_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/is_view_impl.hpp similarity index 100% rename from include/boost/fusion/adapted/mpl/detail/is_view_impl.hpp rename to include/boost/fusion/sequence/adapted/mpl/detail/is_view_impl.hpp diff --git a/include/boost/fusion/adapted/mpl/detail/size_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/size_impl.hpp similarity index 100% rename from include/boost/fusion/adapted/mpl/detail/size_impl.hpp rename to include/boost/fusion/sequence/adapted/mpl/detail/size_impl.hpp diff --git a/include/boost/fusion/adapted/mpl/detail/value_at_impl.hpp b/include/boost/fusion/sequence/adapted/mpl/detail/value_at_impl.hpp similarity index 100% rename from include/boost/fusion/adapted/mpl/detail/value_at_impl.hpp rename to include/boost/fusion/sequence/adapted/mpl/detail/value_at_impl.hpp diff --git a/include/boost/fusion/adapted/mpl/mpl_iterator.hpp b/include/boost/fusion/sequence/adapted/mpl/mpl_iterator.hpp similarity index 100% rename from include/boost/fusion/adapted/mpl/mpl_iterator.hpp rename to include/boost/fusion/sequence/adapted/mpl/mpl_iterator.hpp diff --git a/include/boost/fusion/adapted/std_pair.hpp b/include/boost/fusion/sequence/adapted/std_pair.hpp similarity index 96% rename from include/boost/fusion/adapted/std_pair.hpp rename to include/boost/fusion/sequence/adapted/std_pair.hpp index d13b810a..0b755a0b 100644 --- a/include/boost/fusion/adapted/std_pair.hpp +++ b/include/boost/fusion/sequence/adapted/std_pair.hpp @@ -9,7 +9,7 @@ #define BOOST_FUSION_STD_PAIR_24122005_1744 #include -#include +#include #include #include diff --git a/include/boost/fusion/adapted/std_pair/detail/at_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/at_impl.hpp similarity index 100% rename from include/boost/fusion/adapted/std_pair/detail/at_impl.hpp rename to include/boost/fusion/sequence/adapted/std_pair/detail/at_impl.hpp diff --git a/include/boost/fusion/adapted/std_pair/detail/begin_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/begin_impl.hpp similarity index 93% rename from include/boost/fusion/adapted/std_pair/detail/begin_impl.hpp rename to include/boost/fusion/sequence/adapted/std_pair/detail/begin_impl.hpp index 1fd48f51..1b77b7a7 100644 --- a/include/boost/fusion/adapted/std_pair/detail/begin_impl.hpp +++ b/include/boost/fusion/sequence/adapted/std_pair/detail/begin_impl.hpp @@ -8,7 +8,7 @@ #if !defined(BOOST_FUSION_BEGIN_IMPL_24122005_1752) #define BOOST_FUSION_BEGIN_IMPL_24122005_1752 -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/adapted/std_pair/detail/category_of_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/category_of_impl.hpp similarity index 100% rename from include/boost/fusion/adapted/std_pair/detail/category_of_impl.hpp rename to include/boost/fusion/sequence/adapted/std_pair/detail/category_of_impl.hpp diff --git a/include/boost/fusion/adapted/std_pair/detail/end_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/end_impl.hpp similarity index 93% rename from include/boost/fusion/adapted/std_pair/detail/end_impl.hpp rename to include/boost/fusion/sequence/adapted/std_pair/detail/end_impl.hpp index 747f2c6f..9aab76c5 100644 --- a/include/boost/fusion/adapted/std_pair/detail/end_impl.hpp +++ b/include/boost/fusion/sequence/adapted/std_pair/detail/end_impl.hpp @@ -8,7 +8,7 @@ #if !defined(BOOST_FUSION_END_IMPL_24122005_1755) #define BOOST_FUSION_END_IMPL_24122005_1755 -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/adapted/std_pair/detail/is_sequence_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/is_sequence_impl.hpp similarity index 100% rename from include/boost/fusion/adapted/std_pair/detail/is_sequence_impl.hpp rename to include/boost/fusion/sequence/adapted/std_pair/detail/is_sequence_impl.hpp diff --git a/include/boost/fusion/adapted/std_pair/detail/is_view_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/is_view_impl.hpp similarity index 100% rename from include/boost/fusion/adapted/std_pair/detail/is_view_impl.hpp rename to include/boost/fusion/sequence/adapted/std_pair/detail/is_view_impl.hpp diff --git a/include/boost/fusion/adapted/std_pair/detail/size_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/size_impl.hpp similarity index 100% rename from include/boost/fusion/adapted/std_pair/detail/size_impl.hpp rename to include/boost/fusion/sequence/adapted/std_pair/detail/size_impl.hpp diff --git a/include/boost/fusion/adapted/std_pair/detail/value_at_impl.hpp b/include/boost/fusion/sequence/adapted/std_pair/detail/value_at_impl.hpp similarity index 100% rename from include/boost/fusion/adapted/std_pair/detail/value_at_impl.hpp rename to include/boost/fusion/sequence/adapted/std_pair/detail/value_at_impl.hpp diff --git a/include/boost/fusion/adapted/std_pair/std_pair_iterator.hpp b/include/boost/fusion/sequence/adapted/std_pair/std_pair_iterator.hpp similarity index 100% rename from include/boost/fusion/adapted/std_pair/std_pair_iterator.hpp rename to include/boost/fusion/sequence/adapted/std_pair/std_pair_iterator.hpp diff --git a/include/boost/fusion/adapted/std_pair/tag_of.hpp b/include/boost/fusion/sequence/adapted/std_pair/tag_of.hpp similarity index 100% rename from include/boost/fusion/adapted/std_pair/tag_of.hpp rename to include/boost/fusion/sequence/adapted/std_pair/tag_of.hpp diff --git a/include/boost/fusion/sequence/adapted/struct.hpp b/include/boost/fusion/sequence/adapted/struct.hpp new file mode 100644 index 00000000..f4aed34e --- /dev/null +++ b/include/boost/fusion/sequence/adapted/struct.hpp @@ -0,0 +1,23 @@ +/*============================================================================= + Copyright (c) 2001-2006 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_STRUCT_24122005_1744) +#define BOOST_FUSION_STD_STRUCT_24122005_1744 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#endif diff --git a/include/boost/fusion/adapted/struct/adapt_assoc_struct.hpp b/include/boost/fusion/sequence/adapted/struct/adapt_assoc_struct.hpp similarity index 83% rename from include/boost/fusion/adapted/struct/adapt_assoc_struct.hpp rename to include/boost/fusion/sequence/adapted/struct/adapt_assoc_struct.hpp index e621187f..44357c00 100644 --- a/include/boost/fusion/adapted/struct/adapt_assoc_struct.hpp +++ b/include/boost/fusion/sequence/adapted/struct/adapt_assoc_struct.hpp @@ -9,19 +9,19 @@ #define BOOST_FUSION_ADAPT_ASSOC_STRUCT_20070508_2207 #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 diff --git a/include/boost/fusion/adapted/struct/adapt_struct.hpp b/include/boost/fusion/sequence/adapted/struct/adapt_struct.hpp similarity index 84% rename from include/boost/fusion/adapted/struct/adapt_struct.hpp rename to include/boost/fusion/sequence/adapted/struct/adapt_struct.hpp index e8eb6a67..38d03edb 100644 --- a/include/boost/fusion/adapted/struct/adapt_struct.hpp +++ b/include/boost/fusion/sequence/adapted/struct/adapt_struct.hpp @@ -8,16 +8,16 @@ #define BOOST_FUSION_ADAPT_STRUCT_APRIL_2_2007_1158AM #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include diff --git a/include/boost/fusion/adapted/struct/detail/at_impl.hpp b/include/boost/fusion/sequence/adapted/struct/detail/at_impl.hpp similarity index 100% rename from include/boost/fusion/adapted/struct/detail/at_impl.hpp rename to include/boost/fusion/sequence/adapted/struct/detail/at_impl.hpp diff --git a/include/boost/fusion/adapted/struct/detail/at_key_impl.hpp b/include/boost/fusion/sequence/adapted/struct/detail/at_key_impl.hpp similarity index 100% rename from include/boost/fusion/adapted/struct/detail/at_key_impl.hpp rename to include/boost/fusion/sequence/adapted/struct/detail/at_key_impl.hpp diff --git a/include/boost/fusion/adapted/struct/detail/begin_impl.hpp b/include/boost/fusion/sequence/adapted/struct/detail/begin_impl.hpp similarity index 93% rename from include/boost/fusion/adapted/struct/detail/begin_impl.hpp rename to include/boost/fusion/sequence/adapted/struct/detail/begin_impl.hpp index bf5a00bc..14817726 100644 --- a/include/boost/fusion/adapted/struct/detail/begin_impl.hpp +++ b/include/boost/fusion/sequence/adapted/struct/detail/begin_impl.hpp @@ -8,7 +8,7 @@ #if !defined(BOOST_FUSION_BEGIN_IMPL_24122005_1752) #define BOOST_FUSION_BEGIN_IMPL_24122005_1752 -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/adapted/struct/detail/category_of_impl.hpp b/include/boost/fusion/sequence/adapted/struct/detail/category_of_impl.hpp similarity index 100% rename from include/boost/fusion/adapted/struct/detail/category_of_impl.hpp rename to include/boost/fusion/sequence/adapted/struct/detail/category_of_impl.hpp diff --git a/include/boost/fusion/adapted/struct/detail/end_impl.hpp b/include/boost/fusion/sequence/adapted/struct/detail/end_impl.hpp similarity index 93% rename from include/boost/fusion/adapted/struct/detail/end_impl.hpp rename to include/boost/fusion/sequence/adapted/struct/detail/end_impl.hpp index 42d7f394..91830cea 100644 --- a/include/boost/fusion/adapted/struct/detail/end_impl.hpp +++ b/include/boost/fusion/sequence/adapted/struct/detail/end_impl.hpp @@ -8,7 +8,7 @@ #if !defined(BOOST_FUSION_END_IMPL_24122005_1755) #define BOOST_FUSION_END_IMPL_24122005_1755 -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/adapted/struct/detail/has_key_impl.hpp b/include/boost/fusion/sequence/adapted/struct/detail/has_key_impl.hpp similarity index 100% rename from include/boost/fusion/adapted/struct/detail/has_key_impl.hpp rename to include/boost/fusion/sequence/adapted/struct/detail/has_key_impl.hpp diff --git a/include/boost/fusion/adapted/struct/detail/is_sequence_impl.hpp b/include/boost/fusion/sequence/adapted/struct/detail/is_sequence_impl.hpp similarity index 100% rename from include/boost/fusion/adapted/struct/detail/is_sequence_impl.hpp rename to include/boost/fusion/sequence/adapted/struct/detail/is_sequence_impl.hpp diff --git a/include/boost/fusion/adapted/struct/detail/is_view_impl.hpp b/include/boost/fusion/sequence/adapted/struct/detail/is_view_impl.hpp similarity index 100% rename from include/boost/fusion/adapted/struct/detail/is_view_impl.hpp rename to include/boost/fusion/sequence/adapted/struct/detail/is_view_impl.hpp diff --git a/include/boost/fusion/adapted/struct/detail/size_impl.hpp b/include/boost/fusion/sequence/adapted/struct/detail/size_impl.hpp similarity index 100% rename from include/boost/fusion/adapted/struct/detail/size_impl.hpp rename to include/boost/fusion/sequence/adapted/struct/detail/size_impl.hpp diff --git a/include/boost/fusion/adapted/struct/detail/value_at_impl.hpp b/include/boost/fusion/sequence/adapted/struct/detail/value_at_impl.hpp similarity index 100% rename from include/boost/fusion/adapted/struct/detail/value_at_impl.hpp rename to include/boost/fusion/sequence/adapted/struct/detail/value_at_impl.hpp diff --git a/include/boost/fusion/adapted/struct/detail/value_at_key_impl.hpp b/include/boost/fusion/sequence/adapted/struct/detail/value_at_key_impl.hpp similarity index 100% rename from include/boost/fusion/adapted/struct/detail/value_at_key_impl.hpp rename to include/boost/fusion/sequence/adapted/struct/detail/value_at_key_impl.hpp diff --git a/include/boost/fusion/adapted/struct/extension.hpp b/include/boost/fusion/sequence/adapted/struct/extension.hpp similarity index 100% rename from include/boost/fusion/adapted/struct/extension.hpp rename to include/boost/fusion/sequence/adapted/struct/extension.hpp diff --git a/include/boost/fusion/adapted/struct/struct_iterator.hpp b/include/boost/fusion/sequence/adapted/struct/struct_iterator.hpp similarity index 97% rename from include/boost/fusion/adapted/struct/struct_iterator.hpp rename to include/boost/fusion/sequence/adapted/struct/struct_iterator.hpp index caea895b..b00251bb 100644 --- a/include/boost/fusion/adapted/struct/struct_iterator.hpp +++ b/include/boost/fusion/sequence/adapted/struct/struct_iterator.hpp @@ -9,7 +9,7 @@ #define FUSION_STRUCT_ITERATOR_APRIL_2_2007_1008AM #include -#include +#include #include #include #include diff --git a/include/boost/fusion/sequence/adapted/variant.hpp b/include/boost/fusion/sequence/adapted/variant.hpp new file mode 100644 index 00000000..2443312d --- /dev/null +++ b/include/boost/fusion/sequence/adapted/variant.hpp @@ -0,0 +1,20 @@ +/*============================================================================= + Copyright (c) 2001-2006 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_VARIANT_12112006_1614) +#define BOOST_FUSION_VARIANT_12112006_1614 + +#include +#include +#include +#include +#include +#include +#include +#include + +#endif diff --git a/include/boost/fusion/adapted/variant/detail/begin_impl.hpp b/include/boost/fusion/sequence/adapted/variant/detail/begin_impl.hpp similarity index 100% rename from include/boost/fusion/adapted/variant/detail/begin_impl.hpp rename to include/boost/fusion/sequence/adapted/variant/detail/begin_impl.hpp diff --git a/include/boost/fusion/adapted/variant/detail/category_of_impl.hpp b/include/boost/fusion/sequence/adapted/variant/detail/category_of_impl.hpp similarity index 100% rename from include/boost/fusion/adapted/variant/detail/category_of_impl.hpp rename to include/boost/fusion/sequence/adapted/variant/detail/category_of_impl.hpp diff --git a/include/boost/fusion/adapted/variant/detail/end_impl.hpp b/include/boost/fusion/sequence/adapted/variant/detail/end_impl.hpp similarity index 100% rename from include/boost/fusion/adapted/variant/detail/end_impl.hpp rename to include/boost/fusion/sequence/adapted/variant/detail/end_impl.hpp diff --git a/include/boost/fusion/adapted/variant/detail/is_sequence_impl.hpp b/include/boost/fusion/sequence/adapted/variant/detail/is_sequence_impl.hpp similarity index 100% rename from include/boost/fusion/adapted/variant/detail/is_sequence_impl.hpp rename to include/boost/fusion/sequence/adapted/variant/detail/is_sequence_impl.hpp diff --git a/include/boost/fusion/adapted/variant/detail/is_view_impl.hpp b/include/boost/fusion/sequence/adapted/variant/detail/is_view_impl.hpp similarity index 100% rename from include/boost/fusion/adapted/variant/detail/is_view_impl.hpp rename to include/boost/fusion/sequence/adapted/variant/detail/is_view_impl.hpp diff --git a/include/boost/fusion/adapted/variant/detail/size_impl.hpp b/include/boost/fusion/sequence/adapted/variant/detail/size_impl.hpp similarity index 100% rename from include/boost/fusion/adapted/variant/detail/size_impl.hpp rename to include/boost/fusion/sequence/adapted/variant/detail/size_impl.hpp diff --git a/include/boost/fusion/adapted/variant/tag_of.hpp b/include/boost/fusion/sequence/adapted/variant/tag_of.hpp similarity index 100% rename from include/boost/fusion/adapted/variant/tag_of.hpp rename to include/boost/fusion/sequence/adapted/variant/tag_of.hpp diff --git a/include/boost/fusion/adapted/variant/variant_iterator.hpp b/include/boost/fusion/sequence/adapted/variant/variant_iterator.hpp similarity index 100% rename from include/boost/fusion/adapted/variant/variant_iterator.hpp rename to include/boost/fusion/sequence/adapted/variant/variant_iterator.hpp diff --git a/include/boost/fusion/container.hpp b/include/boost/fusion/sequence/container.hpp similarity index 64% rename from include/boost/fusion/container.hpp rename to include/boost/fusion/sequence/container.hpp index e41c9cb3..6a1047cc 100644 --- a/include/boost/fusion/container.hpp +++ b/include/boost/fusion/sequence/container.hpp @@ -7,10 +7,10 @@ #if !defined(FUSION_SEQUENCE_CLASS_10022005_0614) #define FUSION_SEQUENCE_CLASS_10022005_0614 -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #endif diff --git a/include/boost/fusion/container/deque.hpp b/include/boost/fusion/sequence/container/deque.hpp similarity index 81% rename from include/boost/fusion/container/deque.hpp rename to include/boost/fusion/sequence/container/deque.hpp index bb29ce2f..0c9614a9 100644 --- a/include/boost/fusion/container/deque.hpp +++ b/include/boost/fusion/sequence/container/deque.hpp @@ -2,14 +2,13 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - 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_SEQUENCE_CONTAINER_DEQUE_24112006_2036) #define BOOST_FUSION_SEQUENCE_CONTAINER_DEQUE_24112006_2036 -#include -#include +#include #endif diff --git a/include/boost/fusion/container/deque/back_extended_deque.hpp b/include/boost/fusion/sequence/container/deque/back_extended_deque.hpp similarity index 95% rename from include/boost/fusion/container/deque/back_extended_deque.hpp rename to include/boost/fusion/sequence/container/deque/back_extended_deque.hpp index 28d5ceca..6310bb59 100644 --- a/include/boost/fusion/container/deque/back_extended_deque.hpp +++ b/include/boost/fusion/sequence/container/deque/back_extended_deque.hpp @@ -8,7 +8,7 @@ #if !defined(BOOST_FUSION_BACK_EXTENDED_DEQUE_26112006_2209) #define BOOST_FUSION_BACK_EXTENDED_DEQUE_26112006_2209 -#include +#include #include #include #include diff --git a/include/boost/fusion/container/deque/deque.hpp b/include/boost/fusion/sequence/container/deque/deque.hpp similarity index 77% rename from include/boost/fusion/container/deque/deque.hpp rename to include/boost/fusion/sequence/container/deque/deque.hpp index 27d9ce78..884899f8 100644 --- a/include/boost/fusion/container/deque/deque.hpp +++ b/include/boost/fusion/sequence/container/deque/deque.hpp @@ -8,13 +8,13 @@ #if !defined(BOOST_FUSION_DEQUE_26112006_1649) #define BOOST_FUSION_DEQUE_26112006_1649 -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include -#include +#include #include #include #include @@ -22,11 +22,11 @@ #include #include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include #include @@ -52,7 +52,7 @@ namespace boost { namespace fusion { mpl::if_ >, mpl::int_<0>, mpl::int_<-1> >::type::value> next_down; typedef mpl::false_ is_view; -#include +#include deque() {} diff --git a/include/boost/fusion/container/deque/deque_fwd.hpp b/include/boost/fusion/sequence/container/deque/deque_fwd.hpp similarity index 92% rename from include/boost/fusion/container/deque/deque_fwd.hpp rename to include/boost/fusion/sequence/container/deque/deque_fwd.hpp index 415bb2f2..ce47bf62 100644 --- a/include/boost/fusion/container/deque/deque_fwd.hpp +++ b/include/boost/fusion/sequence/container/deque/deque_fwd.hpp @@ -8,7 +8,7 @@ #if !defined(FUSION_DEQUE_FORWARD_02092007_0749) #define FUSION_DEQUE_FORWARD_02092007_0749 -#include +#include #include namespace boost { namespace fusion diff --git a/include/boost/fusion/container/deque/deque_iterator.hpp b/include/boost/fusion/sequence/container/deque/deque_iterator.hpp similarity index 97% rename from include/boost/fusion/container/deque/deque_iterator.hpp rename to include/boost/fusion/sequence/container/deque/deque_iterator.hpp index 90c68918..8fb6f009 100644 --- a/include/boost/fusion/container/deque/deque_iterator.hpp +++ b/include/boost/fusion/sequence/container/deque/deque_iterator.hpp @@ -9,7 +9,7 @@ #define BOOST_FUSION_DEQUE_ITERATOR_26112006_2154 #include -#include +#include #include #include diff --git a/include/boost/fusion/container/deque/detail/at_impl.hpp b/include/boost/fusion/sequence/container/deque/detail/at_impl.hpp similarity index 96% rename from include/boost/fusion/container/deque/detail/at_impl.hpp rename to include/boost/fusion/sequence/container/deque/detail/at_impl.hpp index 3dc7cde9..7edf37f1 100644 --- a/include/boost/fusion/container/deque/detail/at_impl.hpp +++ b/include/boost/fusion/sequence/container/deque/detail/at_impl.hpp @@ -8,7 +8,7 @@ #if !defined(BOOST_FUSION_DEQUE_AT_IMPL_09122006_2017) #define BOOST_FUSION_DEQUE_AT_IMPL_09122006_2017 -#include +#include #include #include diff --git a/include/boost/fusion/container/deque/detail/begin_impl.hpp b/include/boost/fusion/sequence/container/deque/detail/begin_impl.hpp similarity index 95% rename from include/boost/fusion/container/deque/detail/begin_impl.hpp rename to include/boost/fusion/sequence/container/deque/detail/begin_impl.hpp index 13b50143..867cab8e 100644 --- a/include/boost/fusion/container/deque/detail/begin_impl.hpp +++ b/include/boost/fusion/sequence/container/deque/detail/begin_impl.hpp @@ -8,7 +8,7 @@ #if !defined(BOOST_FUSION_DEQUE_BEGIN_IMPL_09122006_2034) #define BOOST_FUSION_DEQUE_BEGIN_IMPL_09122006_2034 -#include +#include #include #include diff --git a/include/boost/fusion/container/deque/detail/deque_forward_ctor.hpp b/include/boost/fusion/sequence/container/deque/detail/deque_forward_ctor.hpp similarity index 93% rename from include/boost/fusion/container/deque/detail/deque_forward_ctor.hpp rename to include/boost/fusion/sequence/container/deque/detail/deque_forward_ctor.hpp index 813c0491..f79a02e5 100644 --- a/include/boost/fusion/container/deque/detail/deque_forward_ctor.hpp +++ b/include/boost/fusion/sequence/container/deque/detail/deque_forward_ctor.hpp @@ -14,7 +14,7 @@ #include #define BOOST_PP_FILENAME_1 \ - + #define BOOST_PP_ITERATION_LIMITS (2, FUSION_MAX_DEQUE_SIZE) #include BOOST_PP_ITERATE() diff --git a/include/boost/fusion/container/deque/detail/deque_initial_size.hpp b/include/boost/fusion/sequence/container/deque/detail/deque_initial_size.hpp similarity index 100% rename from include/boost/fusion/container/deque/detail/deque_initial_size.hpp rename to include/boost/fusion/sequence/container/deque/detail/deque_initial_size.hpp diff --git a/include/boost/fusion/container/deque/detail/deque_keyed_values.hpp b/include/boost/fusion/sequence/container/deque/detail/deque_keyed_values.hpp similarity index 91% rename from include/boost/fusion/container/deque/detail/deque_keyed_values.hpp rename to include/boost/fusion/sequence/container/deque/detail/deque_keyed_values.hpp index 11b229b2..26a76512 100644 --- a/include/boost/fusion/container/deque/detail/deque_keyed_values.hpp +++ b/include/boost/fusion/sequence/container/deque/detail/deque_keyed_values.hpp @@ -8,8 +8,8 @@ #if !defined(BOOST_FUSION_DEQUE_DETAIL_DEQUE_KEYED_VALUES_26112006_1330) #define BOOST_FUSION_DEQUE_DETAIL_DEQUE_KEYED_VALUES_26112006_1330 -#include -#include +#include +#include #include #include @@ -59,7 +59,7 @@ namespace detail { BOOST_PP_ENUM_SHIFTED_PARAMS(FUSION_MAX_DEQUE_SIZE, T)>::type tail; typedef keyed_element type; -#include +#include }; diff --git a/include/boost/fusion/container/deque/detail/deque_keyed_values_call.hpp b/include/boost/fusion/sequence/container/deque/detail/deque_keyed_values_call.hpp similarity index 94% rename from include/boost/fusion/container/deque/detail/deque_keyed_values_call.hpp rename to include/boost/fusion/sequence/container/deque/detail/deque_keyed_values_call.hpp index 0a39add6..ab31c43c 100644 --- a/include/boost/fusion/container/deque/detail/deque_keyed_values_call.hpp +++ b/include/boost/fusion/sequence/container/deque/detail/deque_keyed_values_call.hpp @@ -14,7 +14,7 @@ #include #define BOOST_PP_FILENAME_1 \ - + #define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_DEQUE_SIZE) #include BOOST_PP_ITERATE() diff --git a/include/boost/fusion/container/deque/detail/end_impl.hpp b/include/boost/fusion/sequence/container/deque/detail/end_impl.hpp similarity index 95% rename from include/boost/fusion/container/deque/detail/end_impl.hpp rename to include/boost/fusion/sequence/container/deque/detail/end_impl.hpp index 96a1b17d..505dfdac 100644 --- a/include/boost/fusion/container/deque/detail/end_impl.hpp +++ b/include/boost/fusion/sequence/container/deque/detail/end_impl.hpp @@ -8,7 +8,7 @@ #if !defined(BOOST_FUSION_DEQUE_END_IMPL_09122006_2034) #define BOOST_FUSION_DEQUE_END_IMPL_09122006_2034 -#include +#include #include #include diff --git a/include/boost/fusion/container/deque/detail/keyed_element.hpp b/include/boost/fusion/sequence/container/deque/detail/keyed_element.hpp similarity index 100% rename from include/boost/fusion/container/deque/detail/keyed_element.hpp rename to include/boost/fusion/sequence/container/deque/detail/keyed_element.hpp diff --git a/include/boost/fusion/container/deque/detail/value_at_impl.hpp b/include/boost/fusion/sequence/container/deque/detail/value_at_impl.hpp similarity index 95% rename from include/boost/fusion/container/deque/detail/value_at_impl.hpp rename to include/boost/fusion/sequence/container/deque/detail/value_at_impl.hpp index ec0351de..6c08231d 100644 --- a/include/boost/fusion/container/deque/detail/value_at_impl.hpp +++ b/include/boost/fusion/sequence/container/deque/detail/value_at_impl.hpp @@ -8,7 +8,7 @@ #if !defined(BOOST_FUSION_DEQUE_VALUE_AT_IMPL_08122006_0756) #define BOOST_FUSION_DEQUE_VALUE_AT_IMPL_08122006_0756 -#include +#include #include #include diff --git a/include/boost/fusion/container/deque/front_extended_deque.hpp b/include/boost/fusion/sequence/container/deque/front_extended_deque.hpp similarity index 95% rename from include/boost/fusion/container/deque/front_extended_deque.hpp rename to include/boost/fusion/sequence/container/deque/front_extended_deque.hpp index 156e66a4..b52508e7 100644 --- a/include/boost/fusion/container/deque/front_extended_deque.hpp +++ b/include/boost/fusion/sequence/container/deque/front_extended_deque.hpp @@ -8,7 +8,7 @@ #if !defined(BOOST_FUSION_FRONT_EXTENDED_DEQUE_26112006_2209) #define BOOST_FUSION_FRONT_EXTENDED_DEQUE_26112006_2209 -#include +#include #include #include #include diff --git a/include/boost/fusion/container/deque/limits.hpp b/include/boost/fusion/sequence/container/deque/limits.hpp similarity index 100% rename from include/boost/fusion/container/deque/limits.hpp rename to include/boost/fusion/sequence/container/deque/limits.hpp diff --git a/include/boost/fusion/container/ext_/tree.hpp b/include/boost/fusion/sequence/container/ext_/tree.hpp similarity index 93% rename from include/boost/fusion/container/ext_/tree.hpp rename to include/boost/fusion/sequence/container/ext_/tree.hpp index cd8c5dcd..c6edc28c 100755 --- a/include/boost/fusion/container/ext_/tree.hpp +++ b/include/boost/fusion/sequence/container/ext_/tree.hpp @@ -14,13 +14,13 @@ #include #include #include -#include -#include // for nil -#include +#include +#include // for nil +#include #include #include #include -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/container/list.hpp b/include/boost/fusion/sequence/container/list.hpp similarity index 58% rename from include/boost/fusion/container/list.hpp rename to include/boost/fusion/sequence/container/list.hpp index 8a0d6456..47024b9c 100644 --- a/include/boost/fusion/container/list.hpp +++ b/include/boost/fusion/sequence/container/list.hpp @@ -1,17 +1,16 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_SEQUENCE_CLASS_LIST_10022005_0605) #define FUSION_SEQUENCE_CLASS_LIST_10022005_0605 -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #endif diff --git a/include/boost/fusion/container/list/cons.hpp b/include/boost/fusion/sequence/container/list/cons.hpp similarity index 91% rename from include/boost/fusion/container/list/cons.hpp rename to include/boost/fusion/sequence/container/list/cons.hpp index 8e500f66..877f2982 100644 --- a/include/boost/fusion/container/list/cons.hpp +++ b/include/boost/fusion/sequence/container/list/cons.hpp @@ -13,12 +13,12 @@ #include #include #include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include #include #include #include diff --git a/include/boost/fusion/container/list/cons_iterator.hpp b/include/boost/fusion/sequence/container/list/cons_iterator.hpp similarity index 86% rename from include/boost/fusion/container/list/cons_iterator.hpp rename to include/boost/fusion/sequence/container/list/cons_iterator.hpp index 7ef034e3..6455f04f 100644 --- a/include/boost/fusion/container/list/cons_iterator.hpp +++ b/include/boost/fusion/sequence/container/list/cons_iterator.hpp @@ -10,11 +10,11 @@ #include #include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/container/list/detail/at_impl.hpp b/include/boost/fusion/sequence/container/list/detail/at_impl.hpp similarity index 100% rename from include/boost/fusion/container/list/detail/at_impl.hpp rename to include/boost/fusion/sequence/container/list/detail/at_impl.hpp diff --git a/include/boost/fusion/container/list/detail/begin_impl.hpp b/include/boost/fusion/sequence/container/list/detail/begin_impl.hpp similarity index 100% rename from include/boost/fusion/container/list/detail/begin_impl.hpp rename to include/boost/fusion/sequence/container/list/detail/begin_impl.hpp diff --git a/include/boost/fusion/container/list/detail/deref_impl.hpp b/include/boost/fusion/sequence/container/list/detail/deref_impl.hpp similarity index 100% rename from include/boost/fusion/container/list/detail/deref_impl.hpp rename to include/boost/fusion/sequence/container/list/detail/deref_impl.hpp diff --git a/include/boost/fusion/container/list/detail/empty_impl.hpp b/include/boost/fusion/sequence/container/list/detail/empty_impl.hpp similarity index 100% rename from include/boost/fusion/container/list/detail/empty_impl.hpp rename to include/boost/fusion/sequence/container/list/detail/empty_impl.hpp diff --git a/include/boost/fusion/container/list/detail/end_impl.hpp b/include/boost/fusion/sequence/container/list/detail/end_impl.hpp similarity index 100% rename from include/boost/fusion/container/list/detail/end_impl.hpp rename to include/boost/fusion/sequence/container/list/detail/end_impl.hpp diff --git a/include/boost/fusion/container/list/detail/equal_to_impl.hpp b/include/boost/fusion/sequence/container/list/detail/equal_to_impl.hpp similarity index 100% rename from include/boost/fusion/container/list/detail/equal_to_impl.hpp rename to include/boost/fusion/sequence/container/list/detail/equal_to_impl.hpp diff --git a/include/boost/fusion/container/list/detail/list_forward_ctor.hpp b/include/boost/fusion/sequence/container/list/detail/list_forward_ctor.hpp similarity index 95% rename from include/boost/fusion/container/list/detail/list_forward_ctor.hpp rename to include/boost/fusion/sequence/container/list/detail/list_forward_ctor.hpp index 39471809..7922f382 100644 --- a/include/boost/fusion/container/list/detail/list_forward_ctor.hpp +++ b/include/boost/fusion/sequence/container/list/detail/list_forward_ctor.hpp @@ -18,7 +18,7 @@ #define FUSION_LIST_CL_PAREN(z, n, type) ) #define BOOST_PP_FILENAME_1 \ - + #define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_LIST_SIZE) #include BOOST_PP_ITERATE() diff --git a/include/boost/fusion/container/list/detail/list_to_cons.hpp b/include/boost/fusion/sequence/container/list/detail/list_to_cons.hpp similarity index 87% rename from include/boost/fusion/container/list/detail/list_to_cons.hpp rename to include/boost/fusion/sequence/container/list/detail/list_to_cons.hpp index 8e6d6912..fa5c7bb9 100644 --- a/include/boost/fusion/container/list/detail/list_to_cons.hpp +++ b/include/boost/fusion/sequence/container/list/detail/list_to_cons.hpp @@ -7,8 +7,8 @@ #if !defined(FUSION_LIST_TO_CONS_07172005_1041) #define FUSION_LIST_TO_CONS_07172005_1041 -#include -#include +#include +#include #include #include #include @@ -35,7 +35,7 @@ namespace boost { namespace fusion { namespace detail typedef cons type; - #include + #include }; template <> diff --git a/include/boost/fusion/container/list/detail/list_to_cons_call.hpp b/include/boost/fusion/sequence/container/list/detail/list_to_cons_call.hpp similarity index 95% rename from include/boost/fusion/container/list/detail/list_to_cons_call.hpp rename to include/boost/fusion/sequence/container/list/detail/list_to_cons_call.hpp index 069f0598..c8e63e95 100644 --- a/include/boost/fusion/container/list/detail/list_to_cons_call.hpp +++ b/include/boost/fusion/sequence/container/list/detail/list_to_cons_call.hpp @@ -13,7 +13,7 @@ #include #define BOOST_PP_FILENAME_1 \ - + #define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_LIST_SIZE) #include BOOST_PP_ITERATE() diff --git a/include/boost/fusion/container/list/detail/next_impl.hpp b/include/boost/fusion/sequence/container/list/detail/next_impl.hpp similarity index 100% rename from include/boost/fusion/container/list/detail/next_impl.hpp rename to include/boost/fusion/sequence/container/list/detail/next_impl.hpp diff --git a/include/boost/fusion/container/list/detail/value_at_impl.hpp b/include/boost/fusion/sequence/container/list/detail/value_at_impl.hpp similarity index 100% rename from include/boost/fusion/container/list/detail/value_at_impl.hpp rename to include/boost/fusion/sequence/container/list/detail/value_at_impl.hpp diff --git a/include/boost/fusion/container/list/detail/value_of_impl.hpp b/include/boost/fusion/sequence/container/list/detail/value_of_impl.hpp similarity index 100% rename from include/boost/fusion/container/list/detail/value_of_impl.hpp rename to include/boost/fusion/sequence/container/list/detail/value_of_impl.hpp diff --git a/include/boost/fusion/container/list/limits.hpp b/include/boost/fusion/sequence/container/list/limits.hpp similarity index 100% rename from include/boost/fusion/container/list/limits.hpp rename to include/boost/fusion/sequence/container/list/limits.hpp diff --git a/include/boost/fusion/container/list/list.hpp b/include/boost/fusion/sequence/container/list/list.hpp similarity index 90% rename from include/boost/fusion/container/list/list.hpp rename to include/boost/fusion/sequence/container/list/list.hpp index 7516df48..e34e648f 100644 --- a/include/boost/fusion/container/list/list.hpp +++ b/include/boost/fusion/sequence/container/list/list.hpp @@ -7,8 +7,8 @@ #if !defined(FUSION_LIST_07172005_1153) #define FUSION_LIST_07172005_1153 -#include -#include +#include +#include namespace boost { namespace fusion { @@ -45,7 +45,7 @@ namespace boost { namespace fusion // typename detail::call_param::type _0 // , typename detail::call_param::type _1) // : inherited_type(list_to_cons::call(_0, _1)) {} - #include + #include template list& diff --git a/include/boost/fusion/container/list/list_fwd.hpp b/include/boost/fusion/sequence/container/list/list_fwd.hpp similarity index 92% rename from include/boost/fusion/container/list/list_fwd.hpp rename to include/boost/fusion/sequence/container/list/list_fwd.hpp index 90c088b4..cfd4e370 100644 --- a/include/boost/fusion/container/list/list_fwd.hpp +++ b/include/boost/fusion/sequence/container/list/list_fwd.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_LIST_FORWARD_07172005_0224) #define FUSION_LIST_FORWARD_07172005_0224 -#include +#include #include namespace boost { namespace fusion diff --git a/include/boost/fusion/container/map.hpp b/include/boost/fusion/sequence/container/map.hpp similarity index 68% rename from include/boost/fusion/container/map.hpp rename to include/boost/fusion/sequence/container/map.hpp index 69518311..100905cf 100644 --- a/include/boost/fusion/container/map.hpp +++ b/include/boost/fusion/sequence/container/map.hpp @@ -1,15 +1,14 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_SEQUENCE_CLASS_MAP_10022005_0606) #define FUSION_SEQUENCE_CLASS_MAP_10022005_0606 -#include -#include -#include -#include +#include +#include +#include #endif diff --git a/include/boost/fusion/container/map/detail/at_key_impl.hpp b/include/boost/fusion/sequence/container/map/detail/at_key_impl.hpp similarity index 100% rename from include/boost/fusion/container/map/detail/at_key_impl.hpp rename to include/boost/fusion/sequence/container/map/detail/at_key_impl.hpp diff --git a/include/boost/fusion/container/map/detail/begin_impl.hpp b/include/boost/fusion/sequence/container/map/detail/begin_impl.hpp similarity index 100% rename from include/boost/fusion/container/map/detail/begin_impl.hpp rename to include/boost/fusion/sequence/container/map/detail/begin_impl.hpp diff --git a/include/boost/fusion/container/map/detail/end_impl.hpp b/include/boost/fusion/sequence/container/map/detail/end_impl.hpp similarity index 100% rename from include/boost/fusion/container/map/detail/end_impl.hpp rename to include/boost/fusion/sequence/container/map/detail/end_impl.hpp diff --git a/include/boost/fusion/container/map/detail/lookup_key.hpp b/include/boost/fusion/sequence/container/map/detail/lookup_key.hpp similarity index 100% rename from include/boost/fusion/container/map/detail/lookup_key.hpp rename to include/boost/fusion/sequence/container/map/detail/lookup_key.hpp diff --git a/include/boost/fusion/container/map/detail/map_forward_ctor.hpp b/include/boost/fusion/sequence/container/map/detail/map_forward_ctor.hpp similarity index 94% rename from include/boost/fusion/container/map/detail/map_forward_ctor.hpp rename to include/boost/fusion/sequence/container/map/detail/map_forward_ctor.hpp index c35168ba..34b81830 100644 --- a/include/boost/fusion/container/map/detail/map_forward_ctor.hpp +++ b/include/boost/fusion/sequence/container/map/detail/map_forward_ctor.hpp @@ -13,7 +13,7 @@ #include #define BOOST_PP_FILENAME_1 \ - + #define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_MAP_SIZE) #include BOOST_PP_ITERATE() diff --git a/include/boost/fusion/container/map/detail/map_lookup.hpp b/include/boost/fusion/sequence/container/map/detail/map_lookup.hpp similarity index 98% rename from include/boost/fusion/container/map/detail/map_lookup.hpp rename to include/boost/fusion/sequence/container/map/detail/map_lookup.hpp index 2f792cbd..aef42c62 100644 --- a/include/boost/fusion/container/map/detail/map_lookup.hpp +++ b/include/boost/fusion/sequence/container/map/detail/map_lookup.hpp @@ -52,14 +52,10 @@ } #define BOOST_PP_FILENAME_1 \ - + #define BOOST_PP_ITERATION_LIMITS (0, BOOST_PP_DEC(FUSION_MAX_MAP_SIZE)) #include BOOST_PP_ITERATE() -#if defined(BOOST_MSVC) && (BOOST_MSVC == 1310) -#pragma warning (pop) -#endif - #endif #else // defined(BOOST_PP_IS_ITERATING) /////////////////////////////////////////////////////////////////////////////// @@ -124,5 +120,10 @@ } #undef N + +#if defined(BOOST_MSVC) && (BOOST_MSVC == 1310) +#pragma warning (pop) +#endif + #endif // defined(BOOST_PP_IS_ITERATING) diff --git a/include/boost/fusion/container/map/detail/value_at_key_impl.hpp b/include/boost/fusion/sequence/container/map/detail/value_at_key_impl.hpp similarity index 100% rename from include/boost/fusion/container/map/detail/value_at_key_impl.hpp rename to include/boost/fusion/sequence/container/map/detail/value_at_key_impl.hpp diff --git a/include/boost/fusion/container/map/limits.hpp b/include/boost/fusion/sequence/container/map/limits.hpp similarity index 92% rename from include/boost/fusion/container/map/limits.hpp rename to include/boost/fusion/sequence/container/map/limits.hpp index 738abff4..33cbc832 100644 --- a/include/boost/fusion/container/map/limits.hpp +++ b/include/boost/fusion/sequence/container/map/limits.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_MAP_LIMITS_07212005_1104) #define FUSION_MAP_LIMITS_07212005_1104 -#include +#include #if !defined(FUSION_MAX_MAP_SIZE) # define FUSION_MAX_MAP_SIZE FUSION_MAX_VECTOR_SIZE diff --git a/include/boost/fusion/container/map/map.hpp b/include/boost/fusion/sequence/container/map/map.hpp similarity index 73% rename from include/boost/fusion/container/map/map.hpp rename to include/boost/fusion/sequence/container/map/map.hpp index 5f5fb1cc..bf6a0fa8 100644 --- a/include/boost/fusion/container/map/map.hpp +++ b/include/boost/fusion/sequence/container/map/map.hpp @@ -10,13 +10,13 @@ #include #include #include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include #include #include @@ -48,8 +48,8 @@ namespace boost { namespace fusion map(Sequence const& rhs) : data(rhs) {} - #include - #include + #include + #include template map& diff --git a/include/boost/fusion/container/map/map_fwd.hpp b/include/boost/fusion/sequence/container/map/map_fwd.hpp similarity index 92% rename from include/boost/fusion/container/map/map_fwd.hpp rename to include/boost/fusion/sequence/container/map/map_fwd.hpp index 660466bd..311dce5a 100644 --- a/include/boost/fusion/container/map/map_fwd.hpp +++ b/include/boost/fusion/sequence/container/map/map_fwd.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_MAP_FORWARD_07212005_1105) #define FUSION_MAP_FORWARD_07212005_1105 -#include +#include #include namespace boost { namespace fusion diff --git a/include/boost/fusion/container/set.hpp b/include/boost/fusion/sequence/container/set.hpp similarity index 68% rename from include/boost/fusion/container/set.hpp rename to include/boost/fusion/sequence/container/set.hpp index 6b7674d6..24ec2c67 100644 --- a/include/boost/fusion/container/set.hpp +++ b/include/boost/fusion/sequence/container/set.hpp @@ -1,15 +1,14 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_SEQUENCE_CLASS_SET_10022005_0607) #define FUSION_SEQUENCE_CLASS_SET_10022005_0607 -#include -#include -#include -#include +#include +#include +#include #endif diff --git a/include/boost/fusion/container/set/detail/at_key_impl.hpp b/include/boost/fusion/sequence/container/set/detail/at_key_impl.hpp similarity index 100% rename from include/boost/fusion/container/set/detail/at_key_impl.hpp rename to include/boost/fusion/sequence/container/set/detail/at_key_impl.hpp diff --git a/include/boost/fusion/container/set/detail/begin_impl.hpp b/include/boost/fusion/sequence/container/set/detail/begin_impl.hpp similarity index 100% rename from include/boost/fusion/container/set/detail/begin_impl.hpp rename to include/boost/fusion/sequence/container/set/detail/begin_impl.hpp diff --git a/include/boost/fusion/container/set/detail/end_impl.hpp b/include/boost/fusion/sequence/container/set/detail/end_impl.hpp similarity index 100% rename from include/boost/fusion/container/set/detail/end_impl.hpp rename to include/boost/fusion/sequence/container/set/detail/end_impl.hpp diff --git a/include/boost/fusion/container/set/detail/lookup_key.hpp b/include/boost/fusion/sequence/container/set/detail/lookup_key.hpp similarity index 100% rename from include/boost/fusion/container/set/detail/lookup_key.hpp rename to include/boost/fusion/sequence/container/set/detail/lookup_key.hpp diff --git a/include/boost/fusion/container/set/detail/set_forward_ctor.hpp b/include/boost/fusion/sequence/container/set/detail/set_forward_ctor.hpp similarity index 94% rename from include/boost/fusion/container/set/detail/set_forward_ctor.hpp rename to include/boost/fusion/sequence/container/set/detail/set_forward_ctor.hpp index d105b150..6eddd650 100644 --- a/include/boost/fusion/container/set/detail/set_forward_ctor.hpp +++ b/include/boost/fusion/sequence/container/set/detail/set_forward_ctor.hpp @@ -13,7 +13,7 @@ #include #define BOOST_PP_FILENAME_1 \ - + #define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_SET_SIZE) #include BOOST_PP_ITERATE() diff --git a/include/boost/fusion/container/set/detail/set_lookup.hpp b/include/boost/fusion/sequence/container/set/detail/set_lookup.hpp similarity index 98% rename from include/boost/fusion/container/set/detail/set_lookup.hpp rename to include/boost/fusion/sequence/container/set/detail/set_lookup.hpp index 6df4b401..fd300457 100644 --- a/include/boost/fusion/container/set/detail/set_lookup.hpp +++ b/include/boost/fusion/sequence/container/set/detail/set_lookup.hpp @@ -52,14 +52,10 @@ } #define BOOST_PP_FILENAME_1 \ - + #define BOOST_PP_ITERATION_LIMITS (0, BOOST_PP_DEC(FUSION_MAX_SET_SIZE)) #include BOOST_PP_ITERATE() -#if defined(BOOST_MSVC) && (BOOST_MSVC == 1310) -#pragma warning (pop) -#endif - #endif #else // defined(BOOST_PP_IS_ITERATING) /////////////////////////////////////////////////////////////////////////////// @@ -124,5 +120,10 @@ } #undef N + +#if defined(BOOST_MSVC) && (BOOST_MSVC == 1310) +#pragma warning (pop) +#endif + #endif // defined(BOOST_PP_IS_ITERATING) diff --git a/include/boost/fusion/container/set/detail/value_at_key_impl.hpp b/include/boost/fusion/sequence/container/set/detail/value_at_key_impl.hpp similarity index 100% rename from include/boost/fusion/container/set/detail/value_at_key_impl.hpp rename to include/boost/fusion/sequence/container/set/detail/value_at_key_impl.hpp diff --git a/include/boost/fusion/container/set/limits.hpp b/include/boost/fusion/sequence/container/set/limits.hpp similarity index 92% rename from include/boost/fusion/container/set/limits.hpp rename to include/boost/fusion/sequence/container/set/limits.hpp index 35eb0803..0b03b4dc 100644 --- a/include/boost/fusion/container/set/limits.hpp +++ b/include/boost/fusion/sequence/container/set/limits.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_SET_LIMITS_09162005_1103) #define FUSION_SET_LIMITS_09162005_1103 -#include +#include #if !defined(FUSION_MAX_SET_SIZE) # define FUSION_MAX_SET_SIZE FUSION_MAX_VECTOR_SIZE diff --git a/include/boost/fusion/container/set/set.hpp b/include/boost/fusion/sequence/container/set/set.hpp similarity index 73% rename from include/boost/fusion/container/set/set.hpp rename to include/boost/fusion/sequence/container/set/set.hpp index 07580bb6..f5e7f152 100644 --- a/include/boost/fusion/container/set/set.hpp +++ b/include/boost/fusion/sequence/container/set/set.hpp @@ -10,13 +10,13 @@ #include #include #include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include #include #include @@ -48,8 +48,8 @@ namespace boost { namespace fusion set(Sequence const& rhs) : data(rhs) {} - #include - #include + #include + #include template set& diff --git a/include/boost/fusion/container/set/set_fwd.hpp b/include/boost/fusion/sequence/container/set/set_fwd.hpp similarity index 92% rename from include/boost/fusion/container/set/set_fwd.hpp rename to include/boost/fusion/sequence/container/set/set_fwd.hpp index 7facb513..38ca9d22 100644 --- a/include/boost/fusion/container/set/set_fwd.hpp +++ b/include/boost/fusion/sequence/container/set/set_fwd.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_SET_FORWARD_09162005_1102) #define FUSION_SET_FORWARD_09162005_1102 -#include +#include #include namespace boost { namespace fusion diff --git a/include/boost/fusion/sequence/container/vector.hpp b/include/boost/fusion/sequence/container/vector.hpp new file mode 100644 index 00000000..dd7f4333 --- /dev/null +++ b/include/boost/fusion/sequence/container/vector.hpp @@ -0,0 +1,20 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Distributed under the 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_SEQUENCE_CLASS_VECTOR_10022005_0602) +#define FUSION_SEQUENCE_CLASS_VECTOR_10022005_0602 + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#endif diff --git a/include/boost/fusion/container/vector/detail/advance_impl.hpp b/include/boost/fusion/sequence/container/vector/detail/advance_impl.hpp similarity index 100% rename from include/boost/fusion/container/vector/detail/advance_impl.hpp rename to include/boost/fusion/sequence/container/vector/detail/advance_impl.hpp diff --git a/include/boost/fusion/container/vector/detail/at_impl.hpp b/include/boost/fusion/sequence/container/vector/detail/at_impl.hpp similarity index 100% rename from include/boost/fusion/container/vector/detail/at_impl.hpp rename to include/boost/fusion/sequence/container/vector/detail/at_impl.hpp diff --git a/include/boost/fusion/container/vector/detail/begin_impl.hpp b/include/boost/fusion/sequence/container/vector/detail/begin_impl.hpp similarity index 93% rename from include/boost/fusion/container/vector/detail/begin_impl.hpp rename to include/boost/fusion/sequence/container/vector/detail/begin_impl.hpp index d2d687be..31d5643c 100644 --- a/include/boost/fusion/container/vector/detail/begin_impl.hpp +++ b/include/boost/fusion/sequence/container/vector/detail/begin_impl.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_BEGIN_IMPL_05042005_1136) #define FUSION_BEGIN_IMPL_05042005_1136 -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/container/vector/detail/deref_impl.hpp b/include/boost/fusion/sequence/container/vector/detail/deref_impl.hpp similarity index 100% rename from include/boost/fusion/container/vector/detail/deref_impl.hpp rename to include/boost/fusion/sequence/container/vector/detail/deref_impl.hpp diff --git a/include/boost/fusion/container/vector/detail/distance_impl.hpp b/include/boost/fusion/sequence/container/vector/detail/distance_impl.hpp similarity index 100% rename from include/boost/fusion/container/vector/detail/distance_impl.hpp rename to include/boost/fusion/sequence/container/vector/detail/distance_impl.hpp diff --git a/include/boost/fusion/container/vector/detail/end_impl.hpp b/include/boost/fusion/sequence/container/vector/detail/end_impl.hpp similarity index 93% rename from include/boost/fusion/container/vector/detail/end_impl.hpp rename to include/boost/fusion/sequence/container/vector/detail/end_impl.hpp index f33282dc..795cabaa 100644 --- a/include/boost/fusion/container/vector/detail/end_impl.hpp +++ b/include/boost/fusion/sequence/container/vector/detail/end_impl.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_END_IMPL_05042005_1142) #define FUSION_END_IMPL_05042005_1142 -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/container/vector/detail/equal_to_impl.hpp b/include/boost/fusion/sequence/container/vector/detail/equal_to_impl.hpp similarity index 100% rename from include/boost/fusion/container/vector/detail/equal_to_impl.hpp rename to include/boost/fusion/sequence/container/vector/detail/equal_to_impl.hpp diff --git a/include/boost/fusion/container/vector/detail/next_impl.hpp b/include/boost/fusion/sequence/container/vector/detail/next_impl.hpp similarity index 94% rename from include/boost/fusion/container/vector/detail/next_impl.hpp rename to include/boost/fusion/sequence/container/vector/detail/next_impl.hpp index b11cfdb2..1bbe16f1 100644 --- a/include/boost/fusion/container/vector/detail/next_impl.hpp +++ b/include/boost/fusion/sequence/container/vector/detail/next_impl.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_NEXT_IMPL_05042005_1058) #define FUSION_NEXT_IMPL_05042005_1058 -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/container/vector/detail/prior_impl.hpp b/include/boost/fusion/sequence/container/vector/detail/prior_impl.hpp similarity index 94% rename from include/boost/fusion/container/vector/detail/prior_impl.hpp rename to include/boost/fusion/sequence/container/vector/detail/prior_impl.hpp index 610591b6..3caaa590 100644 --- a/include/boost/fusion/container/vector/detail/prior_impl.hpp +++ b/include/boost/fusion/sequence/container/vector/detail/prior_impl.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_PRIOR_IMPL_05042005_1145) #define FUSION_PRIOR_IMPL_05042005_1145 -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/container/vector/detail/value_at_impl.hpp b/include/boost/fusion/sequence/container/vector/detail/value_at_impl.hpp similarity index 100% rename from include/boost/fusion/container/vector/detail/value_at_impl.hpp rename to include/boost/fusion/sequence/container/vector/detail/value_at_impl.hpp diff --git a/include/boost/fusion/container/vector/detail/value_of_impl.hpp b/include/boost/fusion/sequence/container/vector/detail/value_of_impl.hpp similarity index 100% rename from include/boost/fusion/container/vector/detail/value_of_impl.hpp rename to include/boost/fusion/sequence/container/vector/detail/value_of_impl.hpp diff --git a/include/boost/fusion/container/vector/detail/vector_forward_ctor.hpp b/include/boost/fusion/sequence/container/vector/detail/vector_forward_ctor.hpp similarity index 94% rename from include/boost/fusion/container/vector/detail/vector_forward_ctor.hpp rename to include/boost/fusion/sequence/container/vector/detail/vector_forward_ctor.hpp index e4680bb8..0dadc05d 100644 --- a/include/boost/fusion/container/vector/detail/vector_forward_ctor.hpp +++ b/include/boost/fusion/sequence/container/vector/detail/vector_forward_ctor.hpp @@ -13,7 +13,7 @@ #include #define BOOST_PP_FILENAME_1 \ - + #define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) #include BOOST_PP_ITERATE() diff --git a/include/boost/fusion/container/vector/detail/vector_n.hpp b/include/boost/fusion/sequence/container/vector/detail/vector_n.hpp similarity index 100% rename from include/boost/fusion/container/vector/detail/vector_n.hpp rename to include/boost/fusion/sequence/container/vector/detail/vector_n.hpp diff --git a/include/boost/fusion/container/vector/detail/vector_n_chooser.hpp b/include/boost/fusion/sequence/container/vector/detail/vector_n_chooser.hpp similarity index 85% rename from include/boost/fusion/container/vector/detail/vector_n_chooser.hpp rename to include/boost/fusion/sequence/container/vector/detail/vector_n_chooser.hpp index 29248907..8f372b9b 100644 --- a/include/boost/fusion/container/vector/detail/vector_n_chooser.hpp +++ b/include/boost/fusion/sequence/container/vector/detail/vector_n_chooser.hpp @@ -8,21 +8,21 @@ #if !defined(FUSION_VECTOR_N_CHOOSER_07072005_1248) #define FUSION_VECTOR_N_CHOOSER_07072005_1248 -#include +#include // include vector0..N where N is FUSION_MAX_VECTOR_SIZE -#include +#include #if (FUSION_MAX_VECTOR_SIZE > 10) -#include +#include #endif #if (FUSION_MAX_VECTOR_SIZE > 20) -#include +#include #endif #if (FUSION_MAX_VECTOR_SIZE > 30) -#include +#include #endif #if (FUSION_MAX_VECTOR_SIZE > 40) -#include +#include #endif #include @@ -52,7 +52,7 @@ namespace boost { namespace fusion { namespace detail }; #define BOOST_PP_FILENAME_1 \ - + #define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) #include BOOST_PP_ITERATE() diff --git a/include/boost/fusion/container/vector/limits.hpp b/include/boost/fusion/sequence/container/vector/limits.hpp similarity index 100% rename from include/boost/fusion/container/vector/limits.hpp rename to include/boost/fusion/sequence/container/vector/limits.hpp diff --git a/include/boost/fusion/container/vector/vector.hpp b/include/boost/fusion/sequence/container/vector/vector.hpp similarity index 93% rename from include/boost/fusion/container/vector/vector.hpp rename to include/boost/fusion/sequence/container/vector/vector.hpp index bd05badd..a2fa9bc4 100644 --- a/include/boost/fusion/container/vector/vector.hpp +++ b/include/boost/fusion/sequence/container/vector/vector.hpp @@ -7,9 +7,9 @@ #if !defined(FUSION_VECTOR_07072005_1244) #define FUSION_VECTOR_07072005_1244 -#include -#include -#include +#include +#include +#include #include #include #include @@ -70,7 +70,7 @@ namespace boost { namespace fusion // typename detail::call_param::type _0 // , typename detail::call_param::type _1) // : vec(_0, _1) {} - #include + #include template vector& diff --git a/include/boost/fusion/container/vector/vector10.hpp b/include/boost/fusion/sequence/container/vector/vector10.hpp similarity index 84% rename from include/boost/fusion/container/vector/vector10.hpp rename to include/boost/fusion/sequence/container/vector/vector10.hpp index 28531b6f..6ff80a0c 100644 --- a/include/boost/fusion/container/vector/vector10.hpp +++ b/include/boost/fusion/sequence/container/vector/vector10.hpp @@ -12,10 +12,10 @@ #include #include #include -#include -#include -#include -#include +#include +#include +#include +#include #include #include @@ -56,7 +56,7 @@ namespace boost { namespace fusion }; // expand vector1 to vector10 -#define BOOST_PP_FILENAME_1 +#define BOOST_PP_FILENAME_1 #define BOOST_PP_ITERATION_LIMITS (1, 10) #include BOOST_PP_ITERATE() diff --git a/include/boost/fusion/container/vector/vector20.hpp b/include/boost/fusion/sequence/container/vector/vector20.hpp similarity index 80% rename from include/boost/fusion/container/vector/vector20.hpp rename to include/boost/fusion/sequence/container/vector/vector20.hpp index be711006..63809dfb 100644 --- a/include/boost/fusion/container/vector/vector20.hpp +++ b/include/boost/fusion/sequence/container/vector/vector20.hpp @@ -12,10 +12,10 @@ #include #include #include -#include -#include -#include -#include +#include +#include +#include +#include #include #include @@ -40,7 +40,7 @@ namespace boost { namespace fusion struct random_access_traversal_tag; // expand vector11 to vector20 -#define BOOST_PP_FILENAME_1 +#define BOOST_PP_FILENAME_1 #define BOOST_PP_ITERATION_LIMITS (11, 20) #include BOOST_PP_ITERATE() diff --git a/include/boost/fusion/container/vector/vector30.hpp b/include/boost/fusion/sequence/container/vector/vector30.hpp similarity index 80% rename from include/boost/fusion/container/vector/vector30.hpp rename to include/boost/fusion/sequence/container/vector/vector30.hpp index efbe9293..0c094ebd 100644 --- a/include/boost/fusion/container/vector/vector30.hpp +++ b/include/boost/fusion/sequence/container/vector/vector30.hpp @@ -12,10 +12,10 @@ #include #include #include -#include -#include -#include -#include +#include +#include +#include +#include #include #include @@ -40,7 +40,7 @@ namespace boost { namespace fusion struct random_access_traversal_tag; // expand vector21 to vector30 -#define BOOST_PP_FILENAME_1 +#define BOOST_PP_FILENAME_1 #define BOOST_PP_ITERATION_LIMITS (21, 30) #include BOOST_PP_ITERATE() diff --git a/include/boost/fusion/container/vector/vector40.hpp b/include/boost/fusion/sequence/container/vector/vector40.hpp similarity index 80% rename from include/boost/fusion/container/vector/vector40.hpp rename to include/boost/fusion/sequence/container/vector/vector40.hpp index b72a23c5..ecb13b71 100644 --- a/include/boost/fusion/container/vector/vector40.hpp +++ b/include/boost/fusion/sequence/container/vector/vector40.hpp @@ -12,10 +12,10 @@ #include #include #include -#include -#include -#include -#include +#include +#include +#include +#include #include #include @@ -40,7 +40,7 @@ namespace boost { namespace fusion struct random_access_traversal_tag; // expand vector31 to vector40 -#define BOOST_PP_FILENAME_1 +#define BOOST_PP_FILENAME_1 #define BOOST_PP_ITERATION_LIMITS (31, 40) #include BOOST_PP_ITERATE() diff --git a/include/boost/fusion/container/vector/vector50.hpp b/include/boost/fusion/sequence/container/vector/vector50.hpp similarity index 80% rename from include/boost/fusion/container/vector/vector50.hpp rename to include/boost/fusion/sequence/container/vector/vector50.hpp index ab8515d7..f5109448 100644 --- a/include/boost/fusion/container/vector/vector50.hpp +++ b/include/boost/fusion/sequence/container/vector/vector50.hpp @@ -12,10 +12,10 @@ #include #include #include -#include -#include -#include -#include +#include +#include +#include +#include #include #include @@ -40,7 +40,7 @@ namespace boost { namespace fusion struct random_access_traversal_tag; // expand vector41 to vector50 -#define BOOST_PP_FILENAME_1 +#define BOOST_PP_FILENAME_1 #define BOOST_PP_ITERATION_LIMITS (41, 50) #include BOOST_PP_ITERATE() diff --git a/include/boost/fusion/container/vector/vector_fwd.hpp b/include/boost/fusion/sequence/container/vector/vector_fwd.hpp similarity index 92% rename from include/boost/fusion/container/vector/vector_fwd.hpp rename to include/boost/fusion/sequence/container/vector/vector_fwd.hpp index a6b9cc66..8d1e23d6 100644 --- a/include/boost/fusion/container/vector/vector_fwd.hpp +++ b/include/boost/fusion/sequence/container/vector/vector_fwd.hpp @@ -8,7 +8,7 @@ #if !defined(FUSION_VECTOR_FORWARD_07072005_0125) #define FUSION_VECTOR_FORWARD_07072005_0125 -#include +#include #include namespace boost { namespace fusion diff --git a/include/boost/fusion/container/vector/vector_iterator.hpp b/include/boost/fusion/sequence/container/vector/vector_iterator.hpp similarity index 70% rename from include/boost/fusion/container/vector/vector_iterator.hpp rename to include/boost/fusion/sequence/container/vector/vector_iterator.hpp index 9feeb520..fee4f6b0 100644 --- a/include/boost/fusion/container/vector/vector_iterator.hpp +++ b/include/boost/fusion/sequence/container/vector/vector_iterator.hpp @@ -8,13 +8,13 @@ #define FUSION_VECTOR_ITERATOR_05042005_0635 #include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include #include #include diff --git a/include/boost/fusion/sequence/conversion.hpp b/include/boost/fusion/sequence/conversion.hpp new file mode 100644 index 00000000..e70cc88a --- /dev/null +++ b/include/boost/fusion/sequence/conversion.hpp @@ -0,0 +1,16 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Distributed under the 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_SEQUENCE_CONVERSION_10022005_0622) +#define FUSION_SEQUENCE_CONVERSION_10022005_0622 + +#include +#include +#include +#include +#include + +#endif diff --git a/include/boost/fusion/container/deque/convert.hpp b/include/boost/fusion/sequence/conversion/as_deque.hpp similarity index 81% rename from include/boost/fusion/container/deque/convert.hpp rename to include/boost/fusion/sequence/conversion/as_deque.hpp index 0f3a75e2..78ae1273 100644 --- a/include/boost/fusion/container/deque/convert.hpp +++ b/include/boost/fusion/sequence/conversion/as_deque.hpp @@ -2,19 +2,18 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - 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(FUSION_CONVERT_20061213_2207) -#define FUSION_CONVERT_20061213_2207 +#if !defined(FUSION_AS_DEQUE_20061213_2207) +#define FUSION_AS_DEQUE_20061213_2207 -#include -#include -#include +#include +#include #include #include -namespace boost { namespace fusion +namespace boost { namespace fusion { namespace result_of { diff --git a/include/boost/fusion/container/list/convert.hpp b/include/boost/fusion/sequence/conversion/as_list.hpp similarity index 81% rename from include/boost/fusion/container/list/convert.hpp rename to include/boost/fusion/sequence/conversion/as_list.hpp index 418158cf..21b70bee 100644 --- a/include/boost/fusion/container/list/convert.hpp +++ b/include/boost/fusion/sequence/conversion/as_list.hpp @@ -1,27 +1,26 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_CONVERT_09232005_1215) -#define FUSION_CONVERT_09232005_1215 +#if !defined(FUSION_AS_LIST_09232005_1215) +#define FUSION_AS_LIST_09232005_1215 -#include -#include -#include +#include #include #include #include +#include -namespace boost { namespace fusion +namespace boost { namespace fusion { namespace result_of { template struct as_list { - typedef typename + typedef typename detail::build_cons< typename result_of::begin::type , typename result_of::end::type diff --git a/include/boost/fusion/container/map/convert.hpp b/include/boost/fusion/sequence/conversion/as_map.hpp similarity index 81% rename from include/boost/fusion/container/map/convert.hpp rename to include/boost/fusion/sequence/conversion/as_map.hpp index f174da58..4195dc25 100644 --- a/include/boost/fusion/container/map/convert.hpp +++ b/include/boost/fusion/sequence/conversion/as_map.hpp @@ -1,19 +1,18 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_CONVERT_09232005_1340) -#define FUSION_CONVERT_09232005_1340 +#if !defined(FUSION_AS_MAP_09232005_1340) +#define FUSION_AS_MAP_09232005_1340 -#include -#include -#include +#include +#include #include #include -namespace boost { namespace fusion +namespace boost { namespace fusion { namespace result_of { diff --git a/include/boost/fusion/container/set/convert.hpp b/include/boost/fusion/sequence/conversion/as_set.hpp similarity index 81% rename from include/boost/fusion/container/set/convert.hpp rename to include/boost/fusion/sequence/conversion/as_set.hpp index 1aaddf0c..9d9c02df 100644 --- a/include/boost/fusion/container/set/convert.hpp +++ b/include/boost/fusion/sequence/conversion/as_set.hpp @@ -1,19 +1,18 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_CONVERT_09232005_1341) -#define FUSION_CONVERT_09232005_1341 +#if !defined(FUSION_AS_SET_09232005_1341) +#define FUSION_AS_SET_09232005_1341 -#include -#include -#include +#include +#include #include #include -namespace boost { namespace fusion +namespace boost { namespace fusion { namespace result_of { diff --git a/include/boost/fusion/container/vector/convert.hpp b/include/boost/fusion/sequence/conversion/as_vector.hpp similarity index 80% rename from include/boost/fusion/container/vector/convert.hpp rename to include/boost/fusion/sequence/conversion/as_vector.hpp index a31578a2..3e8cfab1 100644 --- a/include/boost/fusion/container/vector/convert.hpp +++ b/include/boost/fusion/sequence/conversion/as_vector.hpp @@ -1,19 +1,18 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_CONVERT_09222005_1104) -#define FUSION_CONVERT_09222005_1104 +#if !defined(FUSION_AS_VECTOR_09222005_1104) +#define FUSION_AS_VECTOR_09222005_1104 -#include -#include -#include +#include +#include #include #include -namespace boost { namespace fusion +namespace boost { namespace fusion { namespace result_of { diff --git a/include/boost/fusion/container/deque/detail/as_deque.hpp b/include/boost/fusion/sequence/conversion/detail/as_deque.hpp similarity index 95% rename from include/boost/fusion/container/deque/detail/as_deque.hpp rename to include/boost/fusion/sequence/conversion/detail/as_deque.hpp index e48b7910..04e2a559 100644 --- a/include/boost/fusion/container/deque/detail/as_deque.hpp +++ b/include/boost/fusion/sequence/conversion/detail/as_deque.hpp @@ -16,7 +16,7 @@ #include #include #include -#include +#include #include #include #include @@ -55,7 +55,7 @@ namespace boost { namespace fusion { namespace detail typedef typename fusion::result_of::value_of::type \ BOOST_PP_CAT(T, n); -#define BOOST_PP_FILENAME_1 +#define BOOST_PP_FILENAME_1 #define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_DEQUE_SIZE) #include BOOST_PP_ITERATE() diff --git a/include/boost/fusion/container/map/detail/as_map.hpp b/include/boost/fusion/sequence/conversion/detail/as_map.hpp similarity index 95% rename from include/boost/fusion/container/map/detail/as_map.hpp rename to include/boost/fusion/sequence/conversion/detail/as_map.hpp index 326877f9..d163311c 100644 --- a/include/boost/fusion/container/map/detail/as_map.hpp +++ b/include/boost/fusion/sequence/conversion/detail/as_map.hpp @@ -15,7 +15,7 @@ #include #include #include -#include +#include #include #include #include @@ -54,7 +54,7 @@ namespace boost { namespace fusion { namespace detail typedef typename fusion::result_of::value_of::type \ BOOST_PP_CAT(T, n); -#define BOOST_PP_FILENAME_1 +#define BOOST_PP_FILENAME_1 #define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_MAP_SIZE) #include BOOST_PP_ITERATE() diff --git a/include/boost/fusion/container/set/detail/as_set.hpp b/include/boost/fusion/sequence/conversion/detail/as_set.hpp similarity index 95% rename from include/boost/fusion/container/set/detail/as_set.hpp rename to include/boost/fusion/sequence/conversion/detail/as_set.hpp index 33786338..bd21f3c0 100644 --- a/include/boost/fusion/container/set/detail/as_set.hpp +++ b/include/boost/fusion/sequence/conversion/detail/as_set.hpp @@ -15,7 +15,7 @@ #include #include #include -#include +#include #include #include #include @@ -54,7 +54,7 @@ namespace boost { namespace fusion { namespace detail typedef typename fusion::result_of::value_of::type \ BOOST_PP_CAT(T, n); -#define BOOST_PP_FILENAME_1 +#define BOOST_PP_FILENAME_1 #define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_SET_SIZE) #include BOOST_PP_ITERATE() diff --git a/include/boost/fusion/container/vector/detail/as_vector.hpp b/include/boost/fusion/sequence/conversion/detail/as_vector.hpp similarity index 95% rename from include/boost/fusion/container/vector/detail/as_vector.hpp rename to include/boost/fusion/sequence/conversion/detail/as_vector.hpp index fa8dadcf..ffd79df0 100644 --- a/include/boost/fusion/container/vector/detail/as_vector.hpp +++ b/include/boost/fusion/sequence/conversion/detail/as_vector.hpp @@ -15,7 +15,7 @@ #include #include #include -#include +#include #include #include #include @@ -54,7 +54,7 @@ namespace boost { namespace fusion { namespace detail typedef typename fusion::result_of::value_of::type \ BOOST_PP_CAT(T, n); -#define BOOST_PP_FILENAME_1 +#define BOOST_PP_FILENAME_1 #define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) #include BOOST_PP_ITERATE() diff --git a/include/boost/fusion/container/list/detail/build_cons.hpp b/include/boost/fusion/sequence/conversion/detail/build_cons.hpp similarity index 96% rename from include/boost/fusion/container/list/detail/build_cons.hpp rename to include/boost/fusion/sequence/conversion/detail/build_cons.hpp index befbd4e9..4b08447f 100644 --- a/include/boost/fusion/container/list/detail/build_cons.hpp +++ b/include/boost/fusion/sequence/conversion/detail/build_cons.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_BUILD_CONS_09232005_1222) #define FUSION_BUILD_CONS_09232005_1222 -#include +#include #include #include #include diff --git a/include/boost/fusion/sequence/convert.hpp b/include/boost/fusion/sequence/convert.hpp deleted file mode 100644 index a6e3ccca..00000000 --- a/include/boost/fusion/sequence/convert.hpp +++ /dev/null @@ -1,48 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - Distributed under the 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_CONVERT_10022005_1442) -#define FUSION_CONVERT_10022005_1442 - -namespace boost { namespace fusion -{ - namespace extension - { - template - struct convert_impl; - } - - namespace result_of - { - template - struct convert - { - typedef typename extension::convert_impl gen; - - typedef typename - gen::template apply::type - type; - }; - } - - template - inline typename result_of::convert::type - convert(Sequence& seq) - { - typedef typename result_of::convert::gen gen; - return gen::call(seq); - } - - template - inline typename result_of::convert::type - convert(Sequence const& seq) - { - typedef typename result_of::convert::gen gen; - return gen::call(seq); - } -}} - -#endif diff --git a/include/boost/fusion/sequence/generation/cons_tie.hpp b/include/boost/fusion/sequence/generation/cons_tie.hpp index 88ce0aa4..2b695d25 100644 --- a/include/boost/fusion/sequence/generation/cons_tie.hpp +++ b/include/boost/fusion/sequence/generation/cons_tie.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_CONS_TIE_07182005_0854) #define FUSION_CONS_TIE_07182005_0854 -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/sequence/generation/deque_tie.hpp b/include/boost/fusion/sequence/generation/deque_tie.hpp index 5f8a2f08..77478c03 100644 --- a/include/boost/fusion/sequence/generation/deque_tie.hpp +++ b/include/boost/fusion/sequence/generation/deque_tie.hpp @@ -14,7 +14,7 @@ #include #include #include -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/sequence/generation/list_tie.hpp b/include/boost/fusion/sequence/generation/list_tie.hpp index 946fdbc3..56fb6823 100644 --- a/include/boost/fusion/sequence/generation/list_tie.hpp +++ b/include/boost/fusion/sequence/generation/list_tie.hpp @@ -13,7 +13,7 @@ #include #include #include -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/sequence/generation/make_cons.hpp b/include/boost/fusion/sequence/generation/make_cons.hpp index 47a2f461..704b35e2 100644 --- a/include/boost/fusion/sequence/generation/make_cons.hpp +++ b/include/boost/fusion/sequence/generation/make_cons.hpp @@ -9,7 +9,7 @@ #define FUSION_MAKE_CONS_07172005_0918 #include -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/sequence/generation/make_deque.hpp b/include/boost/fusion/sequence/generation/make_deque.hpp index 5bcd4962..4c8544c2 100644 --- a/include/boost/fusion/sequence/generation/make_deque.hpp +++ b/include/boost/fusion/sequence/generation/make_deque.hpp @@ -19,7 +19,7 @@ #include #include #include -#include +#include #include namespace boost { namespace fusion diff --git a/include/boost/fusion/sequence/generation/make_list.hpp b/include/boost/fusion/sequence/generation/make_list.hpp index 122fe751..a37a2367 100644 --- a/include/boost/fusion/sequence/generation/make_list.hpp +++ b/include/boost/fusion/sequence/generation/make_list.hpp @@ -12,7 +12,7 @@ #include #include #include -#include +#include #include namespace boost { namespace fusion diff --git a/include/boost/fusion/sequence/generation/make_map.hpp b/include/boost/fusion/sequence/generation/make_map.hpp index 5bc054e3..885cea2b 100644 --- a/include/boost/fusion/sequence/generation/make_map.hpp +++ b/include/boost/fusion/sequence/generation/make_map.hpp @@ -12,7 +12,7 @@ #include #include #include -#include +#include #include #include diff --git a/include/boost/fusion/sequence/generation/make_set.hpp b/include/boost/fusion/sequence/generation/make_set.hpp index b434923f..7f56159c 100644 --- a/include/boost/fusion/sequence/generation/make_set.hpp +++ b/include/boost/fusion/sequence/generation/make_set.hpp @@ -12,7 +12,7 @@ #include #include #include -#include +#include #include #include diff --git a/include/boost/fusion/sequence/generation/make_vector.hpp b/include/boost/fusion/sequence/generation/make_vector.hpp index b73598d6..2dc292fd 100644 --- a/include/boost/fusion/sequence/generation/make_vector.hpp +++ b/include/boost/fusion/sequence/generation/make_vector.hpp @@ -12,7 +12,7 @@ #include #include #include -#include +#include #include namespace boost { namespace fusion diff --git a/include/boost/fusion/sequence/generation/map_tie.hpp b/include/boost/fusion/sequence/generation/map_tie.hpp index a5cb08c9..523a22d4 100644 --- a/include/boost/fusion/sequence/generation/map_tie.hpp +++ b/include/boost/fusion/sequence/generation/map_tie.hpp @@ -13,8 +13,8 @@ #include #include #include -#include -#include +#include +#include #include #include #include diff --git a/include/boost/fusion/sequence/generation/vector_tie.hpp b/include/boost/fusion/sequence/generation/vector_tie.hpp index f70c4e89..b8cfe527 100644 --- a/include/boost/fusion/sequence/generation/vector_tie.hpp +++ b/include/boost/fusion/sequence/generation/vector_tie.hpp @@ -13,7 +13,7 @@ #include #include #include -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/sequence/intrinsic.hpp b/include/boost/fusion/sequence/intrinsic.hpp index 8c5f4abd..59aaf9ff 100644 --- a/include/boost/fusion/sequence/intrinsic.hpp +++ b/include/boost/fusion/sequence/intrinsic.hpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_SEQUENCE_INTRINSIC_10022005_0618) @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include diff --git a/include/boost/fusion/sequence/intrinsic/mpl.hpp b/include/boost/fusion/sequence/intrinsic/mpl.hpp new file mode 100644 index 00000000..9d5bb609 --- /dev/null +++ b/include/boost/fusion/sequence/intrinsic/mpl.hpp @@ -0,0 +1,28 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Distributed under the 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_SEQUENCE_INTRINSIC_MPL_10022005_1641) +#define FUSION_SEQUENCE_INTRINSIC_MPL_10022005_1641 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#endif diff --git a/include/boost/fusion/mpl/at.hpp b/include/boost/fusion/sequence/intrinsic/mpl/at.hpp similarity index 100% rename from include/boost/fusion/mpl/at.hpp rename to include/boost/fusion/sequence/intrinsic/mpl/at.hpp diff --git a/include/boost/fusion/mpl/back.hpp b/include/boost/fusion/sequence/intrinsic/mpl/back.hpp similarity index 100% rename from include/boost/fusion/mpl/back.hpp rename to include/boost/fusion/sequence/intrinsic/mpl/back.hpp diff --git a/include/boost/fusion/mpl/begin.hpp b/include/boost/fusion/sequence/intrinsic/mpl/begin.hpp similarity index 93% rename from include/boost/fusion/mpl/begin.hpp rename to include/boost/fusion/sequence/intrinsic/mpl/begin.hpp index be8b3142..6d344d75 100644 --- a/include/boost/fusion/mpl/begin.hpp +++ b/include/boost/fusion/sequence/intrinsic/mpl/begin.hpp @@ -9,7 +9,7 @@ #include #include -#include +#include #include namespace boost { namespace mpl diff --git a/include/boost/fusion/mpl/clear.hpp b/include/boost/fusion/sequence/intrinsic/mpl/clear.hpp similarity index 93% rename from include/boost/fusion/mpl/clear.hpp rename to include/boost/fusion/sequence/intrinsic/mpl/clear.hpp index 14b3489e..0f2d492b 100644 --- a/include/boost/fusion/mpl/clear.hpp +++ b/include/boost/fusion/sequence/intrinsic/mpl/clear.hpp @@ -9,7 +9,7 @@ #include #include -#include +#include namespace boost { namespace mpl { diff --git a/include/boost/fusion/sequence/intrinsic/mpl/detail/as.hpp b/include/boost/fusion/sequence/intrinsic/mpl/detail/as.hpp new file mode 100644 index 00000000..1537e549 --- /dev/null +++ b/include/boost/fusion/sequence/intrinsic/mpl/detail/as.hpp @@ -0,0 +1,80 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Distributed under the 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_AS_10022005_1442) +#define FUSION_AS_10022005_1442 + +namespace boost { namespace fusion +{ + namespace result_of + { + template + struct as_list; + + template + struct as_map; + + template + struct as_set; + + template + struct as_vector; + + template + struct as_deque; + } + + namespace detail + { + template + struct as_impl; + + template <> + struct as_impl + { + template + struct apply : result_of::as_list {}; + }; + + template <> + struct as_impl + { + template + struct apply : result_of::as_map {}; + }; + + template <> + struct as_impl + { + template + struct apply : result_of::as_set {}; + }; + + template <> + struct as_impl + { + template + struct apply : result_of::as_vector {}; + }; + + template<> + struct as_impl + { + template + struct apply : result_of::as_deque {}; + }; + + template + struct as + { + typedef typename + as_impl::template apply::type + type; + }; + } +}} + +#endif diff --git a/include/boost/fusion/mpl/detail/clear.hpp b/include/boost/fusion/sequence/intrinsic/mpl/detail/clear.hpp similarity index 77% rename from include/boost/fusion/mpl/detail/clear.hpp rename to include/boost/fusion/sequence/intrinsic/mpl/detail/clear.hpp index d8c32d5a..28807cc7 100644 --- a/include/boost/fusion/mpl/detail/clear.hpp +++ b/include/boost/fusion/sequence/intrinsic/mpl/detail/clear.hpp @@ -7,11 +7,11 @@ #if !defined(FUSION_CLEAR_10022005_1442) #define FUSION_CLEAR_10022005_1442 -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/mpl/empty.hpp b/include/boost/fusion/sequence/intrinsic/mpl/empty.hpp similarity index 100% rename from include/boost/fusion/mpl/empty.hpp rename to include/boost/fusion/sequence/intrinsic/mpl/empty.hpp diff --git a/include/boost/fusion/mpl/end.hpp b/include/boost/fusion/sequence/intrinsic/mpl/end.hpp similarity index 93% rename from include/boost/fusion/mpl/end.hpp rename to include/boost/fusion/sequence/intrinsic/mpl/end.hpp index ed3320b2..7d84a81b 100644 --- a/include/boost/fusion/mpl/end.hpp +++ b/include/boost/fusion/sequence/intrinsic/mpl/end.hpp @@ -9,7 +9,7 @@ #include #include -#include +#include #include namespace boost { namespace mpl diff --git a/include/boost/fusion/mpl/erase.hpp b/include/boost/fusion/sequence/intrinsic/mpl/erase.hpp similarity index 78% rename from include/boost/fusion/mpl/erase.hpp rename to include/boost/fusion/sequence/intrinsic/mpl/erase.hpp index a8b092ae..0ee650e0 100644 --- a/include/boost/fusion/mpl/erase.hpp +++ b/include/boost/fusion/sequence/intrinsic/mpl/erase.hpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_ERASE_10022005_1835) @@ -10,7 +10,7 @@ #include #include #include -#include +#include namespace boost { namespace mpl { @@ -23,13 +23,12 @@ namespace boost { namespace mpl template struct apply { - typedef typename - fusion::result_of::erase::type + typedef typename + fusion::result_of::erase::type result; - - typedef typename - fusion::result_of::convert< - typename fusion::detail::tag_of::type, result>::type + + typedef typename + fusion::detail::as::type, result>::type type; }; }; diff --git a/include/boost/fusion/mpl/erase_key.hpp b/include/boost/fusion/sequence/intrinsic/mpl/erase_key.hpp similarity index 78% rename from include/boost/fusion/mpl/erase_key.hpp rename to include/boost/fusion/sequence/intrinsic/mpl/erase_key.hpp index 3cda2686..6c8ba6cf 100644 --- a/include/boost/fusion/mpl/erase_key.hpp +++ b/include/boost/fusion/sequence/intrinsic/mpl/erase_key.hpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_ERASE_KEY_10022005_1907) @@ -10,7 +10,7 @@ #include #include #include -#include +#include namespace boost { namespace mpl { @@ -23,13 +23,12 @@ namespace boost { namespace mpl template struct apply { - typedef typename - fusion::result_of::erase_key::type + typedef typename + fusion::result_of::erase_key::type result; - - typedef typename - fusion::result_of::convert< - typename fusion::detail::tag_of::type, result>::type + + typedef typename + fusion::detail::as::type, result>::type type; }; }; diff --git a/include/boost/fusion/mpl/front.hpp b/include/boost/fusion/sequence/intrinsic/mpl/front.hpp similarity index 100% rename from include/boost/fusion/mpl/front.hpp rename to include/boost/fusion/sequence/intrinsic/mpl/front.hpp diff --git a/include/boost/fusion/mpl/has_key.hpp b/include/boost/fusion/sequence/intrinsic/mpl/has_key.hpp similarity index 100% rename from include/boost/fusion/mpl/has_key.hpp rename to include/boost/fusion/sequence/intrinsic/mpl/has_key.hpp diff --git a/include/boost/fusion/mpl/insert.hpp b/include/boost/fusion/sequence/intrinsic/mpl/insert.hpp similarity index 78% rename from include/boost/fusion/mpl/insert.hpp rename to include/boost/fusion/sequence/intrinsic/mpl/insert.hpp index 76918ce9..7df943a5 100644 --- a/include/boost/fusion/mpl/insert.hpp +++ b/include/boost/fusion/sequence/intrinsic/mpl/insert.hpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_INSERT_10022005_1837) @@ -10,7 +10,7 @@ #include #include #include -#include +#include namespace boost { namespace mpl { @@ -23,13 +23,12 @@ namespace boost { namespace mpl template struct apply { - typedef typename - fusion::result_of::insert::type + typedef typename + fusion::result_of::insert::type result; - - typedef typename - fusion::result_of::convert< - typename fusion::detail::tag_of::type, result>::type + + typedef typename + fusion::detail::as::type, result>::type type; }; }; diff --git a/include/boost/fusion/mpl/insert_range.hpp b/include/boost/fusion/sequence/intrinsic/mpl/insert_range.hpp similarity index 78% rename from include/boost/fusion/mpl/insert_range.hpp rename to include/boost/fusion/sequence/intrinsic/mpl/insert_range.hpp index 4da39365..1c7abc89 100644 --- a/include/boost/fusion/mpl/insert_range.hpp +++ b/include/boost/fusion/sequence/intrinsic/mpl/insert_range.hpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_INSERT_RANGE_10022005_1838) @@ -10,7 +10,7 @@ #include #include #include -#include +#include namespace boost { namespace mpl { @@ -23,13 +23,12 @@ namespace boost { namespace mpl template struct apply { - typedef typename - fusion::result_of::insert_range::type + typedef typename + fusion::result_of::insert_range::type result; - - typedef typename - fusion::result_of::convert< - typename fusion::detail::tag_of::type, result>::type + + typedef typename + fusion::detail::as::type, result>::type type; }; }; diff --git a/include/boost/fusion/mpl/pop_back.hpp b/include/boost/fusion/sequence/intrinsic/mpl/pop_back.hpp similarity index 73% rename from include/boost/fusion/mpl/pop_back.hpp rename to include/boost/fusion/sequence/intrinsic/mpl/pop_back.hpp index 84bd75a4..94dbba3a 100644 --- a/include/boost/fusion/mpl/pop_back.hpp +++ b/include/boost/fusion/sequence/intrinsic/mpl/pop_back.hpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_POP_BACK_10022005_1801) @@ -10,7 +10,7 @@ #include #include #include -#include +#include namespace boost { namespace mpl { @@ -23,13 +23,12 @@ namespace boost { namespace mpl template struct apply { - typedef typename - fusion::result_of::pop_back::type + typedef typename + fusion::result_of::pop_back::type result; - - typedef typename - fusion::result_of::convert< - typename fusion::detail::tag_of::type, result>::type + + typedef typename + fusion::detail::as::type, result>::type type; }; }; diff --git a/include/boost/fusion/mpl/pop_front.hpp b/include/boost/fusion/sequence/intrinsic/mpl/pop_front.hpp similarity index 73% rename from include/boost/fusion/mpl/pop_front.hpp rename to include/boost/fusion/sequence/intrinsic/mpl/pop_front.hpp index ffe6c302..957a673e 100644 --- a/include/boost/fusion/mpl/pop_front.hpp +++ b/include/boost/fusion/sequence/intrinsic/mpl/pop_front.hpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_POP_FRONT_10022005_1800) @@ -10,7 +10,7 @@ #include #include #include -#include +#include namespace boost { namespace mpl { @@ -23,13 +23,12 @@ namespace boost { namespace mpl template struct apply { - typedef typename - fusion::result_of::pop_front::type + typedef typename + fusion::result_of::pop_front::type result; - - typedef typename - fusion::result_of::convert< - typename fusion::detail::tag_of::type, result>::type + + typedef typename + fusion::detail::as::type, result>::type type; }; }; diff --git a/include/boost/fusion/mpl/push_back.hpp b/include/boost/fusion/sequence/intrinsic/mpl/push_back.hpp similarity index 73% rename from include/boost/fusion/mpl/push_back.hpp rename to include/boost/fusion/sequence/intrinsic/mpl/push_back.hpp index e96faa06..e828af9e 100644 --- a/include/boost/fusion/mpl/push_back.hpp +++ b/include/boost/fusion/sequence/intrinsic/mpl/push_back.hpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_PUSH_BACK_10022005_1647) @@ -10,7 +10,7 @@ #include #include #include -#include +#include namespace boost { namespace mpl { @@ -23,13 +23,12 @@ namespace boost { namespace mpl template struct apply { - typedef typename - fusion::result_of::push_back::type + typedef typename + fusion::result_of::push_back::type result; - - typedef typename - fusion::result_of::convert< - typename fusion::detail::tag_of::type, result>::type + + typedef typename + fusion::detail::as::type, result>::type type; }; }; diff --git a/include/boost/fusion/mpl/push_front.hpp b/include/boost/fusion/sequence/intrinsic/mpl/push_front.hpp similarity index 79% rename from include/boost/fusion/mpl/push_front.hpp rename to include/boost/fusion/sequence/intrinsic/mpl/push_front.hpp index c508d652..00431af2 100644 --- a/include/boost/fusion/mpl/push_front.hpp +++ b/include/boost/fusion/sequence/intrinsic/mpl/push_front.hpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_PUSH_FRONT_10022005_1720) @@ -10,7 +10,7 @@ #include #include #include -#include +#include namespace boost { namespace mpl { @@ -23,13 +23,12 @@ namespace boost { namespace mpl template struct apply { - typedef typename - fusion::result_of::push_front::type + typedef typename + fusion::result_of::push_front::type result; - - typedef typename - fusion::result_of::convert< - typename fusion::detail::tag_of::type, result>::type + + typedef typename + fusion::detail::as::type, result>::type type; }; }; diff --git a/include/boost/fusion/mpl/size.hpp b/include/boost/fusion/sequence/intrinsic/mpl/size.hpp similarity index 100% rename from include/boost/fusion/mpl/size.hpp rename to include/boost/fusion/sequence/intrinsic/mpl/size.hpp diff --git a/include/boost/fusion/sequence/intrinsic/swap.hpp b/include/boost/fusion/sequence/intrinsic/swap.hpp index 7a385ae8..90570c1f 100644 --- a/include/boost/fusion/sequence/intrinsic/swap.hpp +++ b/include/boost/fusion/sequence/intrinsic/swap.hpp @@ -11,7 +11,7 @@ #include #include -#include +#include #include #include #include diff --git a/include/boost/fusion/view.hpp b/include/boost/fusion/sequence/view.hpp similarity index 58% rename from include/boost/fusion/view.hpp rename to include/boost/fusion/sequence/view.hpp index 12d5cc5d..712a9ac5 100644 --- a/include/boost/fusion/view.hpp +++ b/include/boost/fusion/sequence/view.hpp @@ -7,11 +7,11 @@ #if !defined(FUSION_SEQUENCE_VIEW_10022005_0620) #define FUSION_SEQUENCE_VIEW_10022005_0620 -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include #endif diff --git a/include/boost/fusion/view/ext_/multiple_view.hpp b/include/boost/fusion/sequence/view/ext_/multiple_view.hpp similarity index 100% rename from include/boost/fusion/view/ext_/multiple_view.hpp rename to include/boost/fusion/sequence/view/ext_/multiple_view.hpp diff --git a/include/boost/fusion/view/ext_/segmented_iterator.hpp b/include/boost/fusion/sequence/view/ext_/segmented_iterator.hpp similarity index 99% rename from include/boost/fusion/view/ext_/segmented_iterator.hpp rename to include/boost/fusion/sequence/view/ext_/segmented_iterator.hpp index 2216929b..2f6c1f74 100755 --- a/include/boost/fusion/view/ext_/segmented_iterator.hpp +++ b/include/boost/fusion/sequence/view/ext_/segmented_iterator.hpp @@ -17,8 +17,8 @@ #include #include #include -#include -#include // for nil +#include +#include // for nil #include #include #include diff --git a/include/boost/fusion/view/ext_/segmented_iterator_range.hpp b/include/boost/fusion/sequence/view/ext_/segmented_iterator_range.hpp similarity index 97% rename from include/boost/fusion/view/ext_/segmented_iterator_range.hpp rename to include/boost/fusion/sequence/view/ext_/segmented_iterator_range.hpp index c4dcd01c..7bab8789 100755 --- a/include/boost/fusion/view/ext_/segmented_iterator_range.hpp +++ b/include/boost/fusion/sequence/view/ext_/segmented_iterator_range.hpp @@ -12,15 +12,13 @@ #include #include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/view/filter_view.hpp b/include/boost/fusion/sequence/view/filter_view.hpp similarity index 77% rename from include/boost/fusion/view/filter_view.hpp rename to include/boost/fusion/sequence/view/filter_view.hpp index c649407f..d8fb4936 100644 --- a/include/boost/fusion/view/filter_view.hpp +++ b/include/boost/fusion/sequence/view/filter_view.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_SEQUENCE_VIEW_FILTER_VIEW_10022005_0608) #define FUSION_SEQUENCE_VIEW_FILTER_VIEW_10022005_0608 -#include -#include +#include +#include #endif diff --git a/include/boost/fusion/view/filter_view/detail/begin_impl.hpp b/include/boost/fusion/sequence/view/filter_view/detail/begin_impl.hpp similarity index 100% rename from include/boost/fusion/view/filter_view/detail/begin_impl.hpp rename to include/boost/fusion/sequence/view/filter_view/detail/begin_impl.hpp diff --git a/include/boost/fusion/view/filter_view/detail/deref_impl.hpp b/include/boost/fusion/sequence/view/filter_view/detail/deref_impl.hpp similarity index 100% rename from include/boost/fusion/view/filter_view/detail/deref_impl.hpp rename to include/boost/fusion/sequence/view/filter_view/detail/deref_impl.hpp diff --git a/include/boost/fusion/view/filter_view/detail/end_impl.hpp b/include/boost/fusion/sequence/view/filter_view/detail/end_impl.hpp similarity index 100% rename from include/boost/fusion/view/filter_view/detail/end_impl.hpp rename to include/boost/fusion/sequence/view/filter_view/detail/end_impl.hpp diff --git a/include/boost/fusion/view/filter_view/detail/equal_to_impl.hpp b/include/boost/fusion/sequence/view/filter_view/detail/equal_to_impl.hpp similarity index 100% rename from include/boost/fusion/view/filter_view/detail/equal_to_impl.hpp rename to include/boost/fusion/sequence/view/filter_view/detail/equal_to_impl.hpp diff --git a/include/boost/fusion/view/filter_view/detail/next_impl.hpp b/include/boost/fusion/sequence/view/filter_view/detail/next_impl.hpp similarity index 100% rename from include/boost/fusion/view/filter_view/detail/next_impl.hpp rename to include/boost/fusion/sequence/view/filter_view/detail/next_impl.hpp diff --git a/include/boost/fusion/view/filter_view/detail/size_impl.hpp b/include/boost/fusion/sequence/view/filter_view/detail/size_impl.hpp similarity index 100% rename from include/boost/fusion/view/filter_view/detail/size_impl.hpp rename to include/boost/fusion/sequence/view/filter_view/detail/size_impl.hpp diff --git a/include/boost/fusion/view/filter_view/detail/value_of_impl.hpp b/include/boost/fusion/sequence/view/filter_view/detail/value_of_impl.hpp similarity index 100% rename from include/boost/fusion/view/filter_view/detail/value_of_impl.hpp rename to include/boost/fusion/sequence/view/filter_view/detail/value_of_impl.hpp diff --git a/include/boost/fusion/view/filter_view/filter_view.hpp b/include/boost/fusion/sequence/view/filter_view/filter_view.hpp similarity index 85% rename from include/boost/fusion/view/filter_view/filter_view.hpp rename to include/boost/fusion/sequence/view/filter_view/filter_view.hpp index a34747e6..e09ec97f 100644 --- a/include/boost/fusion/view/filter_view/filter_view.hpp +++ b/include/boost/fusion/sequence/view/filter_view/filter_view.hpp @@ -10,10 +10,10 @@ #include #include #include -#include -#include -#include -#include +#include +#include +#include +#include #include #include #include diff --git a/include/boost/fusion/view/filter_view/filter_view_iterator.hpp b/include/boost/fusion/sequence/view/filter_view/filter_view_iterator.hpp similarity index 82% rename from include/boost/fusion/view/filter_view/filter_view_iterator.hpp rename to include/boost/fusion/sequence/view/filter_view/filter_view_iterator.hpp index be93c657..aaf1d6e0 100644 --- a/include/boost/fusion/view/filter_view/filter_view_iterator.hpp +++ b/include/boost/fusion/sequence/view/filter_view/filter_view_iterator.hpp @@ -1,19 +1,18 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_FILTER_VIEW_ITERATOR_05062005_0849) #define FUSION_FILTER_VIEW_ITERATOR_05062005_0849 #include -#include #include -#include -#include -#include -#include +#include +#include +#include +#include #include namespace boost { namespace fusion diff --git a/include/boost/fusion/view/iterator_range.hpp b/include/boost/fusion/sequence/view/iterator_range.hpp similarity index 87% rename from include/boost/fusion/view/iterator_range.hpp rename to include/boost/fusion/sequence/view/iterator_range.hpp index f8d30221..16485eb4 100644 --- a/include/boost/fusion/view/iterator_range.hpp +++ b/include/boost/fusion/sequence/view/iterator_range.hpp @@ -7,6 +7,6 @@ #if !defined(FUSION_SEQUENCE_VIEW_ITERATOR_RANGE_10022005_0610) #define FUSION_SEQUENCE_VIEW_ITERATOR_RANGE_10022005_0610 -#include +#include #endif diff --git a/include/boost/fusion/view/iterator_range/detail/at_impl.hpp b/include/boost/fusion/sequence/view/iterator_range/detail/at_impl.hpp similarity index 100% rename from include/boost/fusion/view/iterator_range/detail/at_impl.hpp rename to include/boost/fusion/sequence/view/iterator_range/detail/at_impl.hpp diff --git a/include/boost/fusion/view/iterator_range/detail/begin_impl.hpp b/include/boost/fusion/sequence/view/iterator_range/detail/begin_impl.hpp similarity index 100% rename from include/boost/fusion/view/iterator_range/detail/begin_impl.hpp rename to include/boost/fusion/sequence/view/iterator_range/detail/begin_impl.hpp diff --git a/include/boost/fusion/view/iterator_range/detail/end_impl.hpp b/include/boost/fusion/sequence/view/iterator_range/detail/end_impl.hpp similarity index 100% rename from include/boost/fusion/view/iterator_range/detail/end_impl.hpp rename to include/boost/fusion/sequence/view/iterator_range/detail/end_impl.hpp diff --git a/include/boost/fusion/view/iterator_range/detail/value_at_impl.hpp b/include/boost/fusion/sequence/view/iterator_range/detail/value_at_impl.hpp similarity index 100% rename from include/boost/fusion/view/iterator_range/detail/value_at_impl.hpp rename to include/boost/fusion/sequence/view/iterator_range/detail/value_at_impl.hpp diff --git a/include/boost/fusion/view/iterator_range/iterator_range.hpp b/include/boost/fusion/sequence/view/iterator_range/iterator_range.hpp similarity index 83% rename from include/boost/fusion/view/iterator_range/iterator_range.hpp rename to include/boost/fusion/sequence/view/iterator_range/iterator_range.hpp index 0036f0ae..dee6c00a 100644 --- a/include/boost/fusion/view/iterator_range/iterator_range.hpp +++ b/include/boost/fusion/sequence/view/iterator_range/iterator_range.hpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_ITERATOR_RANGE_05062005_1224) @@ -10,13 +10,12 @@ #include #include #include -#include +#include +#include +#include +#include #include -#include -#include -#include -#include -#include +#include #include namespace boost { namespace fusion diff --git a/include/boost/fusion/view/joint_view.hpp b/include/boost/fusion/sequence/view/joint_view.hpp similarity index 77% rename from include/boost/fusion/view/joint_view.hpp rename to include/boost/fusion/sequence/view/joint_view.hpp index cd1b8571..6d9209a8 100644 --- a/include/boost/fusion/view/joint_view.hpp +++ b/include/boost/fusion/sequence/view/joint_view.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_SEQUENCE_VIEW_JOINT_VIEW_10022005_0610) #define FUSION_SEQUENCE_VIEW_JOINT_VIEW_10022005_0610 -#include -#include +#include +#include #endif diff --git a/include/boost/fusion/view/joint_view/detail/begin_impl.hpp b/include/boost/fusion/sequence/view/joint_view/detail/begin_impl.hpp similarity index 100% rename from include/boost/fusion/view/joint_view/detail/begin_impl.hpp rename to include/boost/fusion/sequence/view/joint_view/detail/begin_impl.hpp diff --git a/include/boost/fusion/view/joint_view/detail/deref_impl.hpp b/include/boost/fusion/sequence/view/joint_view/detail/deref_impl.hpp similarity index 100% rename from include/boost/fusion/view/joint_view/detail/deref_impl.hpp rename to include/boost/fusion/sequence/view/joint_view/detail/deref_impl.hpp diff --git a/include/boost/fusion/view/joint_view/detail/end_impl.hpp b/include/boost/fusion/sequence/view/joint_view/detail/end_impl.hpp similarity index 100% rename from include/boost/fusion/view/joint_view/detail/end_impl.hpp rename to include/boost/fusion/sequence/view/joint_view/detail/end_impl.hpp diff --git a/include/boost/fusion/view/joint_view/detail/next_impl.hpp b/include/boost/fusion/sequence/view/joint_view/detail/next_impl.hpp similarity index 100% rename from include/boost/fusion/view/joint_view/detail/next_impl.hpp rename to include/boost/fusion/sequence/view/joint_view/detail/next_impl.hpp diff --git a/include/boost/fusion/view/joint_view/detail/value_of_impl.hpp b/include/boost/fusion/sequence/view/joint_view/detail/value_of_impl.hpp similarity index 100% rename from include/boost/fusion/view/joint_view/detail/value_of_impl.hpp rename to include/boost/fusion/sequence/view/joint_view/detail/value_of_impl.hpp diff --git a/include/boost/fusion/view/joint_view/joint_view.hpp b/include/boost/fusion/sequence/view/joint_view/joint_view.hpp similarity index 91% rename from include/boost/fusion/view/joint_view/joint_view.hpp rename to include/boost/fusion/sequence/view/joint_view/joint_view.hpp index 9cc798d3..d0c48200 100644 --- a/include/boost/fusion/view/joint_view/joint_view.hpp +++ b/include/boost/fusion/sequence/view/joint_view/joint_view.hpp @@ -12,9 +12,9 @@ #include #include #include -#include -#include -#include +#include +#include +#include #include #include #include diff --git a/include/boost/fusion/view/joint_view/joint_view_iterator.hpp b/include/boost/fusion/sequence/view/joint_view/joint_view_iterator.hpp similarity index 86% rename from include/boost/fusion/view/joint_view/joint_view_iterator.hpp rename to include/boost/fusion/sequence/view/joint_view/joint_view_iterator.hpp index 18696d7e..0bdfae07 100644 --- a/include/boost/fusion/view/joint_view/joint_view_iterator.hpp +++ b/include/boost/fusion/sequence/view/joint_view/joint_view_iterator.hpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_JOINT_VIEW_ITERATOR_07162005_0140) @@ -10,10 +10,9 @@ #include #include #include -#include -#include -#include -#include +#include +#include +#include #include namespace boost { namespace fusion diff --git a/include/boost/fusion/view/repetitive_view.hpp b/include/boost/fusion/sequence/view/repetitive_view.hpp similarity index 75% rename from include/boost/fusion/view/repetitive_view.hpp rename to include/boost/fusion/sequence/view/repetitive_view.hpp index fef1462f..8940174b 100644 --- a/include/boost/fusion/view/repetitive_view.hpp +++ b/include/boost/fusion/sequence/view/repetitive_view.hpp @@ -8,8 +8,8 @@ #if !defined(BOOST_FUSION_REPETITIVE_VIEW_HPP_INCLUDED) #define BOOST_FUSION_REPETITIVE_VIEW_HPP_INCLUDED -#include -#include +#include +#include #endif diff --git a/include/boost/fusion/view/repetitive_view/detail/begin_impl.hpp b/include/boost/fusion/sequence/view/repetitive_view/detail/begin_impl.hpp similarity index 94% rename from include/boost/fusion/view/repetitive_view/detail/begin_impl.hpp rename to include/boost/fusion/sequence/view/repetitive_view/detail/begin_impl.hpp index 321d7b8d..b5c4c29a 100644 --- a/include/boost/fusion/view/repetitive_view/detail/begin_impl.hpp +++ b/include/boost/fusion/sequence/view/repetitive_view/detail/begin_impl.hpp @@ -9,7 +9,7 @@ #define BOOST_FUSION_REPETITIVE_VIEW_BEGIN_IMPL_HPP_INCLUDED #include -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/view/repetitive_view/detail/deref_impl.hpp b/include/boost/fusion/sequence/view/repetitive_view/detail/deref_impl.hpp similarity index 100% rename from include/boost/fusion/view/repetitive_view/detail/deref_impl.hpp rename to include/boost/fusion/sequence/view/repetitive_view/detail/deref_impl.hpp diff --git a/include/boost/fusion/view/repetitive_view/detail/end_impl.hpp b/include/boost/fusion/sequence/view/repetitive_view/detail/end_impl.hpp similarity index 94% rename from include/boost/fusion/view/repetitive_view/detail/end_impl.hpp rename to include/boost/fusion/sequence/view/repetitive_view/detail/end_impl.hpp index 52e36da5..00ac0874 100644 --- a/include/boost/fusion/view/repetitive_view/detail/end_impl.hpp +++ b/include/boost/fusion/sequence/view/repetitive_view/detail/end_impl.hpp @@ -9,7 +9,7 @@ #define BOOST_FUSION_REPETITIVE_VIEW_END_IMPL_HPP_INCLUDED #include -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/view/repetitive_view/detail/next_impl.hpp b/include/boost/fusion/sequence/view/repetitive_view/detail/next_impl.hpp similarity index 100% rename from include/boost/fusion/view/repetitive_view/detail/next_impl.hpp rename to include/boost/fusion/sequence/view/repetitive_view/detail/next_impl.hpp diff --git a/include/boost/fusion/view/repetitive_view/detail/value_of_impl.hpp b/include/boost/fusion/sequence/view/repetitive_view/detail/value_of_impl.hpp similarity index 100% rename from include/boost/fusion/view/repetitive_view/detail/value_of_impl.hpp rename to include/boost/fusion/sequence/view/repetitive_view/detail/value_of_impl.hpp diff --git a/include/boost/fusion/view/repetitive_view/repetitive_view.hpp b/include/boost/fusion/sequence/view/repetitive_view/repetitive_view.hpp similarity index 90% rename from include/boost/fusion/view/repetitive_view/repetitive_view.hpp rename to include/boost/fusion/sequence/view/repetitive_view/repetitive_view.hpp index 050affb1..2e06fd80 100644 --- a/include/boost/fusion/view/repetitive_view/repetitive_view.hpp +++ b/include/boost/fusion/sequence/view/repetitive_view/repetitive_view.hpp @@ -14,8 +14,8 @@ #include #include -#include -#include +#include +#include namespace boost { namespace fusion diff --git a/include/boost/fusion/view/repetitive_view/repetitive_view_fwd.hpp b/include/boost/fusion/sequence/view/repetitive_view/repetitive_view_fwd.hpp similarity index 100% rename from include/boost/fusion/view/repetitive_view/repetitive_view_fwd.hpp rename to include/boost/fusion/sequence/view/repetitive_view/repetitive_view_fwd.hpp diff --git a/include/boost/fusion/view/repetitive_view/repetitive_view_iterator.hpp b/include/boost/fusion/sequence/view/repetitive_view/repetitive_view_iterator.hpp similarity index 84% rename from include/boost/fusion/view/repetitive_view/repetitive_view_iterator.hpp rename to include/boost/fusion/sequence/view/repetitive_view/repetitive_view_iterator.hpp index 9a7334de..6b2a9a5e 100644 --- a/include/boost/fusion/view/repetitive_view/repetitive_view_iterator.hpp +++ b/include/boost/fusion/sequence/view/repetitive_view/repetitive_view_iterator.hpp @@ -11,18 +11,17 @@ #include #include #include -#include #include #include -#include -#include -#include +#include +#include +#include namespace boost { namespace fusion { struct repetitive_view_iterator_tag; - template::type> struct repetitive_view_iterator : iterator_base< repetitive_view_iterator > diff --git a/include/boost/fusion/view/reverse_view.hpp b/include/boost/fusion/sequence/view/reverse_view.hpp similarity index 77% rename from include/boost/fusion/view/reverse_view.hpp rename to include/boost/fusion/sequence/view/reverse_view.hpp index 634b398c..6aa499e3 100644 --- a/include/boost/fusion/view/reverse_view.hpp +++ b/include/boost/fusion/sequence/view/reverse_view.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_SEQUENCE_VIEW_REVERSE_VIEW_10022005_0612) #define FUSION_SEQUENCE_VIEW_REVERSE_VIEW_10022005_0612 -#include -#include +#include +#include #endif diff --git a/include/boost/fusion/view/reverse_view/detail/advance_impl.hpp b/include/boost/fusion/sequence/view/reverse_view/detail/advance_impl.hpp similarity index 100% rename from include/boost/fusion/view/reverse_view/detail/advance_impl.hpp rename to include/boost/fusion/sequence/view/reverse_view/detail/advance_impl.hpp diff --git a/include/boost/fusion/view/reverse_view/detail/begin_impl.hpp b/include/boost/fusion/sequence/view/reverse_view/detail/begin_impl.hpp similarity index 100% rename from include/boost/fusion/view/reverse_view/detail/begin_impl.hpp rename to include/boost/fusion/sequence/view/reverse_view/detail/begin_impl.hpp diff --git a/include/boost/fusion/view/reverse_view/detail/deref_impl.hpp b/include/boost/fusion/sequence/view/reverse_view/detail/deref_impl.hpp similarity index 100% rename from include/boost/fusion/view/reverse_view/detail/deref_impl.hpp rename to include/boost/fusion/sequence/view/reverse_view/detail/deref_impl.hpp diff --git a/include/boost/fusion/view/reverse_view/detail/distance_impl.hpp b/include/boost/fusion/sequence/view/reverse_view/detail/distance_impl.hpp similarity index 100% rename from include/boost/fusion/view/reverse_view/detail/distance_impl.hpp rename to include/boost/fusion/sequence/view/reverse_view/detail/distance_impl.hpp diff --git a/include/boost/fusion/view/reverse_view/detail/end_impl.hpp b/include/boost/fusion/sequence/view/reverse_view/detail/end_impl.hpp similarity index 100% rename from include/boost/fusion/view/reverse_view/detail/end_impl.hpp rename to include/boost/fusion/sequence/view/reverse_view/detail/end_impl.hpp diff --git a/include/boost/fusion/view/reverse_view/detail/next_impl.hpp b/include/boost/fusion/sequence/view/reverse_view/detail/next_impl.hpp similarity index 100% rename from include/boost/fusion/view/reverse_view/detail/next_impl.hpp rename to include/boost/fusion/sequence/view/reverse_view/detail/next_impl.hpp diff --git a/include/boost/fusion/view/reverse_view/detail/prior_impl.hpp b/include/boost/fusion/sequence/view/reverse_view/detail/prior_impl.hpp similarity index 100% rename from include/boost/fusion/view/reverse_view/detail/prior_impl.hpp rename to include/boost/fusion/sequence/view/reverse_view/detail/prior_impl.hpp diff --git a/include/boost/fusion/view/reverse_view/detail/value_of_impl.hpp b/include/boost/fusion/sequence/view/reverse_view/detail/value_of_impl.hpp similarity index 100% rename from include/boost/fusion/view/reverse_view/detail/value_of_impl.hpp rename to include/boost/fusion/sequence/view/reverse_view/detail/value_of_impl.hpp diff --git a/include/boost/fusion/view/reverse_view/reverse_view.hpp b/include/boost/fusion/sequence/view/reverse_view/reverse_view.hpp similarity index 90% rename from include/boost/fusion/view/reverse_view/reverse_view.hpp rename to include/boost/fusion/sequence/view/reverse_view/reverse_view.hpp index c939f7ce..6e6f4c09 100644 --- a/include/boost/fusion/view/reverse_view/reverse_view.hpp +++ b/include/boost/fusion/sequence/view/reverse_view/reverse_view.hpp @@ -10,9 +10,9 @@ #include #include #include -#include -#include -#include +#include +#include +#include #include #include #include diff --git a/include/boost/fusion/view/reverse_view/reverse_view_iterator.hpp b/include/boost/fusion/sequence/view/reverse_view/reverse_view_iterator.hpp similarity index 75% rename from include/boost/fusion/view/reverse_view/reverse_view_iterator.hpp rename to include/boost/fusion/sequence/view/reverse_view/reverse_view_iterator.hpp index 0a890437..5f44b8b5 100644 --- a/include/boost/fusion/view/reverse_view/reverse_view_iterator.hpp +++ b/include/boost/fusion/sequence/view/reverse_view/reverse_view_iterator.hpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_REVERSE_VIEW_ITERATOR_07202005_0835) @@ -10,13 +10,12 @@ #include #include #include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include #include #include diff --git a/include/boost/fusion/view/single_view.hpp b/include/boost/fusion/sequence/view/single_view.hpp similarity index 76% rename from include/boost/fusion/view/single_view.hpp rename to include/boost/fusion/sequence/view/single_view.hpp index 3640fae8..e4a59476 100644 --- a/include/boost/fusion/view/single_view.hpp +++ b/include/boost/fusion/sequence/view/single_view.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_SINGLE_VIEW_03192006_2216) #define FUSION_SINGLE_VIEW_03192006_2216 -#include -#include +#include +#include #endif diff --git a/include/boost/fusion/view/single_view/detail/begin_impl.hpp b/include/boost/fusion/sequence/view/single_view/detail/begin_impl.hpp similarity index 100% rename from include/boost/fusion/view/single_view/detail/begin_impl.hpp rename to include/boost/fusion/sequence/view/single_view/detail/begin_impl.hpp diff --git a/include/boost/fusion/view/single_view/detail/deref_impl.hpp b/include/boost/fusion/sequence/view/single_view/detail/deref_impl.hpp similarity index 100% rename from include/boost/fusion/view/single_view/detail/deref_impl.hpp rename to include/boost/fusion/sequence/view/single_view/detail/deref_impl.hpp diff --git a/include/boost/fusion/view/single_view/detail/end_impl.hpp b/include/boost/fusion/sequence/view/single_view/detail/end_impl.hpp similarity index 100% rename from include/boost/fusion/view/single_view/detail/end_impl.hpp rename to include/boost/fusion/sequence/view/single_view/detail/end_impl.hpp diff --git a/include/boost/fusion/view/single_view/detail/next_impl.hpp b/include/boost/fusion/sequence/view/single_view/detail/next_impl.hpp similarity index 100% rename from include/boost/fusion/view/single_view/detail/next_impl.hpp rename to include/boost/fusion/sequence/view/single_view/detail/next_impl.hpp diff --git a/include/boost/fusion/view/single_view/detail/value_of_impl.hpp b/include/boost/fusion/sequence/view/single_view/detail/value_of_impl.hpp similarity index 100% rename from include/boost/fusion/view/single_view/detail/value_of_impl.hpp rename to include/boost/fusion/sequence/view/single_view/detail/value_of_impl.hpp diff --git a/include/boost/fusion/view/single_view/single_view.hpp b/include/boost/fusion/sequence/view/single_view/single_view.hpp similarity index 87% rename from include/boost/fusion/view/single_view/single_view.hpp rename to include/boost/fusion/sequence/view/single_view/single_view.hpp index 7c10afe6..31b68e20 100644 --- a/include/boost/fusion/view/single_view/single_view.hpp +++ b/include/boost/fusion/sequence/view/single_view/single_view.hpp @@ -10,9 +10,9 @@ #include #include #include -#include -#include -#include +#include +#include +#include #include #include diff --git a/include/boost/fusion/view/single_view/single_view_iterator.hpp b/include/boost/fusion/sequence/view/single_view/single_view_iterator.hpp similarity index 86% rename from include/boost/fusion/view/single_view/single_view_iterator.hpp rename to include/boost/fusion/sequence/view/single_view/single_view_iterator.hpp index 1a44bb15..68155d37 100644 --- a/include/boost/fusion/view/single_view/single_view_iterator.hpp +++ b/include/boost/fusion/sequence/view/single_view/single_view_iterator.hpp @@ -9,9 +9,9 @@ #include #include -#include -#include -#include +#include +#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/view/transform_view.hpp b/include/boost/fusion/sequence/view/transform_view.hpp similarity index 76% rename from include/boost/fusion/view/transform_view.hpp rename to include/boost/fusion/sequence/view/transform_view.hpp index 744d063c..714f8784 100644 --- a/include/boost/fusion/view/transform_view.hpp +++ b/include/boost/fusion/sequence/view/transform_view.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_SEQUENCE_VIEW_TRANSFORM_VIEW_10022005_0612) #define FUSION_SEQUENCE_VIEW_TRANSFORM_VIEW_10022005_0612 -#include -#include +#include +#include #endif diff --git a/include/boost/fusion/view/transform_view/detail/advance_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/advance_impl.hpp similarity index 100% rename from include/boost/fusion/view/transform_view/detail/advance_impl.hpp rename to include/boost/fusion/sequence/view/transform_view/detail/advance_impl.hpp diff --git a/include/boost/fusion/view/transform_view/detail/apply_transform_result.hpp b/include/boost/fusion/sequence/view/transform_view/detail/apply_transform_result.hpp similarity index 100% rename from include/boost/fusion/view/transform_view/detail/apply_transform_result.hpp rename to include/boost/fusion/sequence/view/transform_view/detail/apply_transform_result.hpp diff --git a/include/boost/fusion/view/transform_view/detail/at_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/at_impl.hpp similarity index 96% rename from include/boost/fusion/view/transform_view/detail/at_impl.hpp rename to include/boost/fusion/sequence/view/transform_view/detail/at_impl.hpp index 620d96fe..eb48cfa0 100644 --- a/include/boost/fusion/view/transform_view/detail/at_impl.hpp +++ b/include/boost/fusion/sequence/view/transform_view/detail/at_impl.hpp @@ -9,7 +9,7 @@ #define BOOST_FUSION_AT_IMPL_20061029_1946 #include -#include +#include #include namespace boost { namespace fusion { diff --git a/include/boost/fusion/view/transform_view/detail/begin_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/begin_impl.hpp similarity index 96% rename from include/boost/fusion/view/transform_view/detail/begin_impl.hpp rename to include/boost/fusion/sequence/view/transform_view/detail/begin_impl.hpp index 75b04382..b5f4bc29 100644 --- a/include/boost/fusion/view/transform_view/detail/begin_impl.hpp +++ b/include/boost/fusion/sequence/view/transform_view/detail/begin_impl.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_BEGIN_IMPL_07162005_1031) #define FUSION_BEGIN_IMPL_07162005_1031 -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/view/transform_view/detail/deref_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/deref_impl.hpp similarity index 96% rename from include/boost/fusion/view/transform_view/detail/deref_impl.hpp rename to include/boost/fusion/sequence/view/transform_view/detail/deref_impl.hpp index 3849f80a..d466cfd3 100644 --- a/include/boost/fusion/view/transform_view/detail/deref_impl.hpp +++ b/include/boost/fusion/sequence/view/transform_view/detail/deref_impl.hpp @@ -10,7 +10,7 @@ #include #include #include -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/view/transform_view/detail/distance_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/distance_impl.hpp similarity index 100% rename from include/boost/fusion/view/transform_view/detail/distance_impl.hpp rename to include/boost/fusion/sequence/view/transform_view/detail/distance_impl.hpp diff --git a/include/boost/fusion/view/transform_view/detail/end_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/end_impl.hpp similarity index 96% rename from include/boost/fusion/view/transform_view/detail/end_impl.hpp rename to include/boost/fusion/sequence/view/transform_view/detail/end_impl.hpp index 465a2cbe..a689d933 100644 --- a/include/boost/fusion/view/transform_view/detail/end_impl.hpp +++ b/include/boost/fusion/sequence/view/transform_view/detail/end_impl.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_END_IMPL_07162005_1028) #define FUSION_END_IMPL_07162005_1028 -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/view/transform_view/detail/equal_to_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/equal_to_impl.hpp similarity index 100% rename from include/boost/fusion/view/transform_view/detail/equal_to_impl.hpp rename to include/boost/fusion/sequence/view/transform_view/detail/equal_to_impl.hpp diff --git a/include/boost/fusion/view/transform_view/detail/next_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/next_impl.hpp similarity index 100% rename from include/boost/fusion/view/transform_view/detail/next_impl.hpp rename to include/boost/fusion/sequence/view/transform_view/detail/next_impl.hpp diff --git a/include/boost/fusion/view/transform_view/detail/prior_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/prior_impl.hpp similarity index 100% rename from include/boost/fusion/view/transform_view/detail/prior_impl.hpp rename to include/boost/fusion/sequence/view/transform_view/detail/prior_impl.hpp diff --git a/include/boost/fusion/view/transform_view/detail/value_at_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/value_at_impl.hpp similarity index 95% rename from include/boost/fusion/view/transform_view/detail/value_at_impl.hpp rename to include/boost/fusion/sequence/view/transform_view/detail/value_at_impl.hpp index cb581583..cc5bbf46 100644 --- a/include/boost/fusion/view/transform_view/detail/value_at_impl.hpp +++ b/include/boost/fusion/sequence/view/transform_view/detail/value_at_impl.hpp @@ -9,7 +9,7 @@ #define BOOST_FUSION_VALUE_AT_IMPL_20061101_0745 #include -#include +#include #include namespace boost { namespace fusion { diff --git a/include/boost/fusion/view/transform_view/detail/value_of_impl.hpp b/include/boost/fusion/sequence/view/transform_view/detail/value_of_impl.hpp similarity index 95% rename from include/boost/fusion/view/transform_view/detail/value_of_impl.hpp rename to include/boost/fusion/sequence/view/transform_view/detail/value_of_impl.hpp index 08bbf209..28e9942c 100644 --- a/include/boost/fusion/view/transform_view/detail/value_of_impl.hpp +++ b/include/boost/fusion/sequence/view/transform_view/detail/value_of_impl.hpp @@ -9,7 +9,7 @@ #include #include -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/view/transform_view/transform_view.hpp b/include/boost/fusion/sequence/view/transform_view/transform_view.hpp similarity index 89% rename from include/boost/fusion/view/transform_view/transform_view.hpp rename to include/boost/fusion/sequence/view/transform_view/transform_view.hpp index 27ddc273..853bdf61 100644 --- a/include/boost/fusion/view/transform_view/transform_view.hpp +++ b/include/boost/fusion/sequence/view/transform_view/transform_view.hpp @@ -11,12 +11,12 @@ #include #include #include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include #include #include #include diff --git a/include/boost/fusion/view/transform_view/transform_view_fwd.hpp b/include/boost/fusion/sequence/view/transform_view/transform_view_fwd.hpp similarity index 100% rename from include/boost/fusion/view/transform_view/transform_view_fwd.hpp rename to include/boost/fusion/sequence/view/transform_view/transform_view_fwd.hpp diff --git a/include/boost/fusion/view/transform_view/transform_view_iterator.hpp b/include/boost/fusion/sequence/view/transform_view/transform_view_iterator.hpp similarity index 79% rename from include/boost/fusion/view/transform_view/transform_view_iterator.hpp rename to include/boost/fusion/sequence/view/transform_view/transform_view_iterator.hpp index bb4b6afd..4d63f7e0 100644 --- a/include/boost/fusion/view/transform_view/transform_view_iterator.hpp +++ b/include/boost/fusion/sequence/view/transform_view/transform_view_iterator.hpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_TRANSFORM_VIEW_ITERATOR_07162005_1033) @@ -10,14 +10,13 @@ #include #include #include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/view/zip_view.hpp b/include/boost/fusion/sequence/view/zip_view.hpp similarity index 79% rename from include/boost/fusion/view/zip_view.hpp rename to include/boost/fusion/sequence/view/zip_view.hpp index f7a16ea0..74f71421 100644 --- a/include/boost/fusion/view/zip_view.hpp +++ b/include/boost/fusion/sequence/view/zip_view.hpp @@ -8,7 +8,7 @@ #if !defined(FUSION_ZIP_VIEW_23012006_0811) #define FUSION_ZIP_VIEW_23012006_0811 -#include -#include +#include +#include #endif diff --git a/include/boost/fusion/view/zip_view/detail/advance_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/advance_impl.hpp similarity index 96% rename from include/boost/fusion/view/zip_view/detail/advance_impl.hpp rename to include/boost/fusion/sequence/view/zip_view/detail/advance_impl.hpp index 9aa00deb..36da0444 100644 --- a/include/boost/fusion/view/zip_view/detail/advance_impl.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/advance_impl.hpp @@ -8,7 +8,7 @@ #if !defined(FUSION_ADVANCE_IMPL_20061024_2021) #define FUSION_ADVANCE_IMPL_20061024_2021 -#include +#include #include #include #include diff --git a/include/boost/fusion/view/zip_view/detail/at_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/at_impl.hpp similarity index 96% rename from include/boost/fusion/view/zip_view/detail/at_impl.hpp rename to include/boost/fusion/sequence/view/zip_view/detail/at_impl.hpp index b01b8cfa..d90b5d05 100644 --- a/include/boost/fusion/view/zip_view/detail/at_impl.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/at_impl.hpp @@ -8,9 +8,9 @@ #if !defined(FUSION_AT_IMPL_20060124_1933) #define FUSION_AT_IMPL_20060124_1933 -#include +#include #include -#include +#include #include #include #include diff --git a/include/boost/fusion/view/zip_view/detail/begin_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/begin_impl.hpp similarity index 97% rename from include/boost/fusion/view/zip_view/detail/begin_impl.hpp rename to include/boost/fusion/sequence/view/zip_view/detail/begin_impl.hpp index 674dea38..c98eb7fc 100644 --- a/include/boost/fusion/view/zip_view/detail/begin_impl.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/begin_impl.hpp @@ -9,7 +9,7 @@ #define FUSION_BEGIN_IMPL_20060123_2147 #include -#include +#include #include #include #include diff --git a/include/boost/fusion/view/zip_view/detail/deref_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/deref_impl.hpp similarity index 95% rename from include/boost/fusion/view/zip_view/detail/deref_impl.hpp rename to include/boost/fusion/sequence/view/zip_view/detail/deref_impl.hpp index 69cc8825..70b95d55 100644 --- a/include/boost/fusion/view/zip_view/detail/deref_impl.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/deref_impl.hpp @@ -8,10 +8,10 @@ #if !defined(FUSION_DEREF_IMPL_20061024_1959) #define FUSION_DEREF_IMPL_20061024_1959 -#include +#include #include #include -#include +#include #include #include #include diff --git a/include/boost/fusion/view/zip_view/detail/distance_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/distance_impl.hpp similarity index 100% rename from include/boost/fusion/view/zip_view/detail/distance_impl.hpp rename to include/boost/fusion/sequence/view/zip_view/detail/distance_impl.hpp diff --git a/include/boost/fusion/view/zip_view/detail/end_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/end_impl.hpp similarity index 97% rename from include/boost/fusion/view/zip_view/detail/end_impl.hpp rename to include/boost/fusion/sequence/view/zip_view/detail/end_impl.hpp index fa9c31db..a19b5c1f 100644 --- a/include/boost/fusion/view/zip_view/detail/end_impl.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/end_impl.hpp @@ -8,7 +8,7 @@ #if !defined(FUSION_END_IMPL_20060123_2208) #define FUSION_END_IMPL_20060123_2208 -#include +#include #include #include #include diff --git a/include/boost/fusion/view/zip_view/detail/equal_to_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/equal_to_impl.hpp similarity index 97% rename from include/boost/fusion/view/zip_view/detail/equal_to_impl.hpp rename to include/boost/fusion/sequence/view/zip_view/detail/equal_to_impl.hpp index c3962a63..7def2030 100644 --- a/include/boost/fusion/view/zip_view/detail/equal_to_impl.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/equal_to_impl.hpp @@ -8,7 +8,7 @@ #if !defined(FUSION_EQUAL_TO_IMPL_20060128_1423) #define FUSION_EQUAL_TO_IMPL_20060128_1423 -#include +#include #include #include diff --git a/include/boost/fusion/view/zip_view/detail/next_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/next_impl.hpp similarity index 97% rename from include/boost/fusion/view/zip_view/detail/next_impl.hpp rename to include/boost/fusion/sequence/view/zip_view/detail/next_impl.hpp index 1c9c0245..cae95eec 100644 --- a/include/boost/fusion/view/zip_view/detail/next_impl.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/next_impl.hpp @@ -8,7 +8,7 @@ #if !defined(FUSION_NEXT_IMPL_20060124_2006) #define FUSION_NEXT_IMPL_20060124_2006 -#include +#include #include #include #include diff --git a/include/boost/fusion/view/zip_view/detail/prior_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/prior_impl.hpp similarity index 97% rename from include/boost/fusion/view/zip_view/detail/prior_impl.hpp rename to include/boost/fusion/sequence/view/zip_view/detail/prior_impl.hpp index 49b99397..787eb4f9 100644 --- a/include/boost/fusion/view/zip_view/detail/prior_impl.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/prior_impl.hpp @@ -8,7 +8,7 @@ #if !defined(FUSION_PRIOR_IMPL_20060124_2006) #define FUSION_PRIOR_IMPL_20060124_2006 -#include +#include #include #include #include diff --git a/include/boost/fusion/view/zip_view/detail/size_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/size_impl.hpp similarity index 100% rename from include/boost/fusion/view/zip_view/detail/size_impl.hpp rename to include/boost/fusion/sequence/view/zip_view/detail/size_impl.hpp diff --git a/include/boost/fusion/view/zip_view/detail/strictest_traversal.hpp b/include/boost/fusion/sequence/view/zip_view/detail/strictest_traversal.hpp similarity index 92% rename from include/boost/fusion/view/zip_view/detail/strictest_traversal.hpp rename to include/boost/fusion/sequence/view/zip_view/detail/strictest_traversal.hpp index e74ffbfc..60abb57c 100644 --- a/include/boost/fusion/view/zip_view/detail/strictest_traversal.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/strictest_traversal.hpp @@ -2,7 +2,7 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - 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(FUSION_STRICTEST_TRAVERSAL_20060123_2101) @@ -11,13 +11,13 @@ #include #include #include -#include +#include #include #include #include -namespace boost { namespace fusion -{ +namespace boost { namespace fusion { + struct forward_traversal_tag; struct bidirectional_traversal_tag; struct random_access_traversal_tag; @@ -58,7 +58,7 @@ namespace boost { namespace fusion template struct strictest_traversal : result_of::fold< - Sequence, fusion::random_access_traversal_tag, + Sequence, fusion::random_access_traversal_tag, strictest_traversal_impl> {}; diff --git a/include/boost/fusion/view/zip_view/detail/value_at_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/value_at_impl.hpp similarity index 97% rename from include/boost/fusion/view/zip_view/detail/value_at_impl.hpp rename to include/boost/fusion/sequence/view/zip_view/detail/value_at_impl.hpp index 7905b063..ed5475ba 100644 --- a/include/boost/fusion/view/zip_view/detail/value_at_impl.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/value_at_impl.hpp @@ -8,7 +8,7 @@ #if !defined(FUSION_VALUE_AT_IMPL_20060124_2129) #define FUSION_VALUE_AT_IMPL_20060124_2129 -#include +#include #include #include #include diff --git a/include/boost/fusion/view/zip_view/detail/value_of_impl.hpp b/include/boost/fusion/sequence/view/zip_view/detail/value_of_impl.hpp similarity index 93% rename from include/boost/fusion/view/zip_view/detail/value_of_impl.hpp rename to include/boost/fusion/sequence/view/zip_view/detail/value_of_impl.hpp index 4ba4c3c5..9ea84a17 100644 --- a/include/boost/fusion/view/zip_view/detail/value_of_impl.hpp +++ b/include/boost/fusion/sequence/view/zip_view/detail/value_of_impl.hpp @@ -2,13 +2,13 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2006 Dan Marsden - 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(FUSION_VALUE_OF_IMPL_20060124_2147) #define FUSION_VALUE_OF_IMPL_20060124_2147 -#include +#include #include #include #include @@ -17,8 +17,8 @@ #include #include -namespace boost { namespace fusion -{ +namespace boost { namespace fusion { + struct zip_view_iterator_tag; namespace detail diff --git a/include/boost/fusion/view/zip_view/zip_view.hpp b/include/boost/fusion/sequence/view/zip_view/zip_view.hpp similarity index 87% rename from include/boost/fusion/view/zip_view/zip_view.hpp rename to include/boost/fusion/sequence/view/zip_view/zip_view.hpp index 5f152eb0..563d853f 100644 --- a/include/boost/fusion/view/zip_view/zip_view.hpp +++ b/include/boost/fusion/sequence/view/zip_view/zip_view.hpp @@ -11,17 +11,17 @@ #include #include #include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include #include #include #include -#include +#include #include #include diff --git a/include/boost/fusion/view/zip_view/zip_view_iterator.hpp b/include/boost/fusion/sequence/view/zip_view/zip_view_iterator.hpp similarity index 65% rename from include/boost/fusion/view/zip_view/zip_view_iterator.hpp rename to include/boost/fusion/sequence/view/zip_view/zip_view_iterator.hpp index 66b514dc..d4ebcc58 100644 --- a/include/boost/fusion/view/zip_view/zip_view_iterator.hpp +++ b/include/boost/fusion/sequence/view/zip_view/zip_view_iterator.hpp @@ -8,17 +8,17 @@ #if !defined(FUSION_ZIP_VIEW_ITERATOR_23012006_0814) #define FUSION_ZIP_VIEW_ITERATOR_23012006_0814 -#include +#include #include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/view/zip_view/zip_view_iterator_fwd.hpp b/include/boost/fusion/sequence/view/zip_view/zip_view_iterator_fwd.hpp similarity index 89% rename from include/boost/fusion/view/zip_view/zip_view_iterator_fwd.hpp rename to include/boost/fusion/sequence/view/zip_view/zip_view_iterator_fwd.hpp index 6edf4d68..6e8bf3f2 100644 --- a/include/boost/fusion/view/zip_view/zip_view_iterator_fwd.hpp +++ b/include/boost/fusion/sequence/view/zip_view/zip_view_iterator_fwd.hpp @@ -8,7 +8,7 @@ #if !defined(FUSION_ZIP_VIEW_ITERATOR_FWD) #define FUSION_ZIP_VIEW_ITERATOR_FWD -#include +#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/support/deduce_sequence.hpp b/include/boost/fusion/support/deduce_sequence.hpp index 9cf97922..41ecbd1b 100644 --- a/include/boost/fusion/support/deduce_sequence.hpp +++ b/include/boost/fusion/support/deduce_sequence.hpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2007 Tobias Schwinger - - Use modification and distribution are subject to the Boost Software + + 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). ==============================================================================*/ @@ -10,8 +10,8 @@ #define BOOST_FUSION_SUPPORT_DEDUCE_SEQUENCE_HPP_INCLUDED #include -#include -#include +#include +#include #include namespace boost { namespace fusion { namespace traits @@ -29,7 +29,7 @@ namespace boost { namespace fusion { namespace traits }; } - // We cannot use fusion::transform_view here as result_of loses cv qualifiers + // We cannot use fusion::transform_view here as result_of looses cv qualifiers // on built in types template struct deduce_sequence diff --git a/include/boost/fusion/support/detail/compiler_config.hpp b/include/boost/fusion/support/detail/compiler_config.hpp new file mode 100644 index 00000000..3859ef78 --- /dev/null +++ b/include/boost/fusion/support/detail/compiler_config.hpp @@ -0,0 +1,17 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + + Distributed under the 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_COMPILER_CONFIG_01052006_1200) +#define FUSION_COMPILER_CONFIG_01052006_1200 + +#include +#include + +#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1310)) +#pragma warning(disable : 4512 4244 4100 4305) +#endif + +#endif diff --git a/include/boost/fusion/support/iterator_base.hpp b/include/boost/fusion/support/iterator_base.hpp index 2f909b2e..39d05c40 100644 --- a/include/boost/fusion/support/iterator_base.hpp +++ b/include/boost/fusion/support/iterator_base.hpp @@ -1,12 +1,14 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_ITERATOR_BASE_05042005_1008) #define FUSION_ITERATOR_BASE_05042005_1008 +#include + namespace boost { namespace fusion { struct iterator_root {}; diff --git a/include/boost/fusion/support/pair.hpp b/include/boost/fusion/support/pair.hpp index cf285714..67758071 100644 --- a/include/boost/fusion/support/pair.hpp +++ b/include/boost/fusion/support/pair.hpp @@ -2,12 +2,13 @@ Copyright (c) 2005 Joel de Guzman Copyright (c) 2006 Tobias Schwinger - 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(FUSION_PAIR_07222005_1203) #define FUSION_PAIR_07222005_1203 +#include #include #include @@ -22,7 +23,7 @@ namespace boost { namespace fusion pair(typename detail::call_param::type val) : second(val) {} - + template pair(pair const& rhs) : second(rhs.second) {} @@ -44,7 +45,7 @@ namespace boost { namespace fusion template struct make_pair { - typedef fusion::pair::type> type; }; @@ -83,16 +84,16 @@ namespace boost { namespace fusion is >> p.second; return is; } - + template - inline bool + inline bool operator==(pair const& l, pair const& r) { return l.second == r.second; } template - inline bool + inline bool operator!=(pair const& l, pair const& r) { return l.second != r.second; diff --git a/include/boost/fusion/support/sequence_base.hpp b/include/boost/fusion/support/sequence_base.hpp index 1d436ef1..1a82848d 100644 --- a/include/boost/fusion/support/sequence_base.hpp +++ b/include/boost/fusion/support/sequence_base.hpp @@ -2,12 +2,13 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2007 Tobias Schwinger - 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(FUSION_SEQUENCE_BASE_04182005_0737) #define FUSION_SEQUENCE_BASE_04182005_0737 +#include #include namespace boost { namespace fusion @@ -36,7 +37,7 @@ namespace boost { namespace fusion namespace boost { namespace mpl { // Deliberately break mpl::begin, so it doesn't lie that a Fusion sequence - // is not an MPL sequence by returning mpl::void_. + // is not an MPL sequence by returning mpl::void_. // In other words: Fusion Sequences are always MPL Sequences, but they can // be incompletely defined. template<> struct begin_impl< boost::fusion::fusion_sequence_tag >; diff --git a/include/boost/fusion/support/tag_of.hpp b/include/boost/fusion/support/tag_of.hpp index 209ceeff..a1ccf12d 100644 --- a/include/boost/fusion/support/tag_of.hpp +++ b/include/boost/fusion/support/tag_of.hpp @@ -1,17 +1,17 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman - 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(FUSION_TAG_OF_09232005_0845) #define FUSION_TAG_OF_09232005_0845 -#include #include #include #include #include +#include #include #include #include @@ -26,13 +26,13 @@ namespace boost namespace tuples { struct null_type; - + template < - class T0, class T1, class T2, class T3, class T4, + class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9 > class tuple; - + template struct cons; } @@ -53,7 +53,7 @@ namespace boost { namespace fusion {}; template < - class T0, class T1, class T2, class T3, class T4, + class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9 > struct is_specialized > diff --git a/include/boost/fusion/support/tag_of_fwd.hpp b/include/boost/fusion/support/tag_of_fwd.hpp index e6c883d5..053cacaf 100644 --- a/include/boost/fusion/support/tag_of_fwd.hpp +++ b/include/boost/fusion/support/tag_of_fwd.hpp @@ -2,14 +2,14 @@ Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - 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_TAG_OF_FWD_31122005_1445) #define BOOST_FUSION_TAG_OF_FWD_31122005_1445 -namespace boost { namespace fusion -{ +namespace boost { namespace fusion { + namespace traits { template diff --git a/include/boost/fusion/support/void.hpp b/include/boost/fusion/support/void.hpp index 7dd11e5c..63275b11 100644 --- a/include/boost/fusion/support/void.hpp +++ b/include/boost/fusion/support/void.hpp @@ -1,14 +1,7 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - Distributed under the 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_SUPPORT_VOID_20070706_2125) #define BOOST_FUSION_SUPPORT_VOID_20070706_2125 -namespace boost { namespace fusion -{ +namespace boost { namespace fusion { struct void_ {}; }} diff --git a/include/boost/fusion/tuple/tuple.hpp b/include/boost/fusion/tuple/tuple.hpp index d9860323..a32e6b3e 100644 --- a/include/boost/fusion/tuple/tuple.hpp +++ b/include/boost/fusion/tuple/tuple.hpp @@ -8,7 +8,7 @@ #define FUSION_TUPLE_10032005_0810 #include -#include +#include #include #include #include diff --git a/include/boost/fusion/tuple/tuple_fwd.hpp b/include/boost/fusion/tuple/tuple_fwd.hpp index 1a127cab..f3e660e5 100644 --- a/include/boost/fusion/tuple/tuple_fwd.hpp +++ b/include/boost/fusion/tuple/tuple_fwd.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_TUPLE_FORWARD_10032005_0956) #define FUSION_TUPLE_FORWARD_10032005_0956 -#include +#include #include namespace boost { namespace fusion